Prog "Random" ["Prelude","System","Time"] [] [Func ("Random","multiplier") 0 Private (TCons ("Prelude","Int") []) (Rule [] (Lit (Intc 25214903917))),Func ("Random","addend") 0 Private (TCons ("Prelude","Int") []) (Rule [] (Lit (Intc 11))),Func ("Random","powermask") 0 Private (TCons ("Prelude","Int") []) (Rule [] (Lit (Intc 48))),Func ("Random","mask") 0 Private (TCons ("Prelude","Int") []) (Rule [] (Lit (Intc 281474976710656))),Func ("Random","intsize") 0 Private (TCons ("Prelude","Int") []) (Rule [] (Lit (Intc 32))),Func ("Random","intspan") 0 Private (TCons ("Prelude","Int") []) (Rule [] (Lit (Intc 4294967296))),Func ("Random","intlimit") 0 Private (TCons ("Prelude","Int") []) (Rule [] (Lit (Intc 2147483648))),Func ("Random","sequence") 1 Private (FuncType (TCons ("Prelude","Int") []) (TCons ("Prelude","[]") [TCons ("Prelude","Int") []])) (Rule [1] (Let [(2,Comb FuncCall ("Random","nextseed") [Var 1])] (Comb ConsCall ("Prelude",":") [Var 2,Comb FuncCall ("Random","sequence") [Var 2]]))),Func ("Random","nextseed") 1 Private (FuncType (TCons ("Prelude","Int") []) (TCons ("Prelude","Int") [])) (Rule [1] (Comb FuncCall ("Prelude","mod") [Comb FuncCall ("Prelude","+") [Comb FuncCall ("Prelude","*") [Var 1,Comb FuncCall ("Random","multiplier") []],Comb FuncCall ("Random","addend") []],Comb FuncCall ("Random","mask") []])),Func ("Random","xor") 2 Private (FuncType (TCons ("Prelude","Int") []) (FuncType (TCons ("Prelude","Int") []) (TCons ("Prelude","Int") []))) (Rule [1,2] (Let [(3,Case Rigid (Comb FuncCall ("Prelude","==") [Comb FuncCall ("Prelude","mod") [Var 1,Lit (Intc 2)],Comb FuncCall ("Prelude","mod") [Var 2,Lit (Intc 2)]]) [Branch (Pattern ("Prelude","True") []) (Lit (Intc 0)),Branch (Pattern ("Prelude","False") []) (Lit (Intc 1))])] (Let [(4,Comb FuncCall ("Random","xor") [Comb FuncCall ("Prelude","div") [Var 1,Lit (Intc 2)],Comb FuncCall ("Prelude","div") [Var 2,Lit (Intc 2)]])] (Case Rigid (Comb FuncCall ("Prelude","&&") [Comb FuncCall ("Prelude","==") [Var 1,Lit (Intc 0)],Comb FuncCall ("Prelude","==") [Var 2,Lit (Intc 0)]]) [Branch (Pattern ("Prelude","True") []) (Lit (Intc 0)),Branch (Pattern ("Prelude","False") []) (Comb FuncCall ("Prelude","+") [Var 3,Comb FuncCall ("Prelude","*") [Lit (Intc 2),Var 4]])])))),Func ("Random","power") 2 Private (FuncType (TCons ("Prelude","Int") []) (FuncType (TCons ("Prelude","Int") []) (TCons ("Prelude","Int") []))) (Rule [1,2] (Comb FuncCall ("Random","power.binary.43") [Lit (Intc 1),Var 1,Var 2])),Func ("Random","power.binary.43") 3 Private (FuncType (TCons ("Prelude","Int") []) (FuncType (TCons ("Prelude","Int") []) (FuncType (TCons ("Prelude","Int") []) (TCons ("Prelude","Int") [])))) (Rule [1,2,3] (Case Rigid (Comb FuncCall ("Prelude","==") [Var 3,Lit (Intc 0)]) [Branch (Pattern ("Prelude","True") []) (Var 1),Branch (Pattern ("Prelude","False") []) (Comb FuncCall ("Random","power.binary.43") [Comb FuncCall ("Prelude","*") [Var 1,Case Rigid (Comb FuncCall ("Prelude","==") [Comb FuncCall ("Prelude","mod") [Var 3,Lit (Intc 2)],Lit (Intc 1)]) [Branch (Pattern ("Prelude","True") []) (Var 2),Branch (Pattern ("Prelude","False") []) (Lit (Intc 1))]],Comb FuncCall ("Prelude","*") [Var 2,Var 2],Comb FuncCall ("Prelude","div") [Var 3,Lit (Intc 2)]])])),Func ("Random","nextIntBits") 2 Private (FuncType (TCons ("Prelude","Int") []) (FuncType (TCons ("Prelude","Int") []) (TCons ("Prelude","[]") [TCons ("Prelude","Int") []]))) (Rule [1,2] (Let [(3,Comb FuncCall ("Prelude","mod") [Comb FuncCall ("Random","xor") [Var 1,Comb FuncCall ("Random","multiplier") []],Comb FuncCall ("Random","mask") []])] (Let [(4,Comb FuncCall ("Random","sequence") [Var 3])] (Let [(5,Comb FuncCall ("Random","power") [Lit (Intc 2),Comb FuncCall ("Prelude","-") [Comb FuncCall ("Random","powermask") [],Var 2]])] (Comb FuncCall ("Prelude","map") [Comb (FuncPartCall 1) ("Random","nextIntBits.adjust.53") [Var 5],Var 4]))))),Func ("Random","nextIntBits.adjust.53") 2 Private (FuncType (TCons ("Prelude","Int") []) (FuncType (TCons ("Prelude","Int") []) (TCons ("Prelude","Int") []))) (Rule [1,2] (Let [(3,Comb FuncCall ("Prelude","mod") [Comb FuncCall ("Prelude","div") [Var 2,Var 1],Comb FuncCall ("Random","intspan") []])] (Case Rigid (Comb FuncCall ("Prelude",">") [Var 3,Comb FuncCall ("Random","intlimit") []]) [Branch (Pattern ("Prelude","True") []) (Comb FuncCall ("Prelude","-") [Var 3,Comb FuncCall ("Random","intspan") []]),Branch (Pattern ("Prelude","False") []) (Var 3)]))),Func ("Random","nextInt") 1 Public (FuncType (TCons ("Prelude","Int") []) (TCons ("Prelude","[]") [TCons ("Prelude","Int") []])) (Rule [1] (Comb FuncCall ("Random","nextIntBits") [Var 1,Comb FuncCall ("Random","intsize") []])),Func ("Random","nextIntRange") 2 Public (FuncType (TCons ("Prelude","Int") []) (FuncType (TCons ("Prelude","Int") []) (TCons ("Prelude","[]") [TCons ("Prelude","Int") []]))) (Rule [1,2] (Let [(3,Comb FuncCall ("Random","nextIntBits") [Var 1,Comb FuncCall ("Prelude","-") [Comb FuncCall ("Random","intsize") [],Lit (Intc 1)]])] (Case Rigid (Comb FuncCall ("Prelude",">") [Var 2,Lit (Intc 0)]) [Branch (Pattern ("Prelude","True") []) (Case Rigid (Comb FuncCall ("Random","nextIntRange.power_of_2.64") [Var 2]) [Branch (Pattern ("Prelude","True") []) (Comb FuncCall ("Prelude","map") [Comb (FuncPartCall 1) ("Random","nextIntRange.adjust_a.64") [Var 2],Var 3]),Branch (Pattern ("Prelude","False") []) (Comb FuncCall ("Prelude","map") [Comb (FuncPartCall 1) ("Random","nextIntRange.adjust_b.64") [Var 2],Comb FuncCall ("Prelude","filter") [Comb (FuncPartCall 1) ("Random","nextIntRange.adjust_c.64") [Var 2],Var 3]])]),Branch (Pattern ("Prelude","False") []) (Comb FuncCall ("Prelude","failed") [])]))),Func ("Random","nextIntRange.adjust_a.64") 2 Private (FuncType (TCons ("Prelude","Int") []) (FuncType (TCons ("Prelude","Int") []) (TCons ("Prelude","Int") []))) (Rule [1,2] (Comb FuncCall ("Prelude","div") [Comb FuncCall ("Prelude","*") [Var 1,Var 2],Comb FuncCall ("Random","intlimit") []])),Func ("Random","nextIntRange.adjust_b.64") 2 Private (FuncType (TCons ("Prelude","Int") []) (FuncType (TCons ("Prelude","Int") []) (TCons ("Prelude","Int") []))) (Rule [1,2] (Comb FuncCall ("Prelude","mod") [Var 2,Var 1])),Func ("Random","nextIntRange.adjust_c.64") 2 Private (FuncType (TCons ("Prelude","Int") []) (FuncType (TCons ("Prelude","Int") []) (TCons ("Prelude","Bool") []))) (Rule [1,2] (Comb FuncCall ("Prelude",">=") [Comb FuncCall ("Prelude","+") [Comb FuncCall ("Prelude","-") [Var 2,Comb FuncCall ("Prelude","mod") [Var 2,Var 1]],Comb FuncCall ("Prelude","-") [Var 1,Lit (Intc 1)]],Lit (Intc 0)])),Func ("Random","nextIntRange.power_of_2.64") 1 Private (FuncType (TCons ("Prelude","Int") []) (TCons ("Prelude","Bool") [])) (Rule [1] (Comb FuncCall ("Prelude","||") [Comb FuncCall ("Prelude","==") [Var 1,Lit (Intc 2)],Comb FuncCall ("Prelude","&&") [Comb FuncCall ("Prelude",">") [Var 1,Lit (Intc 2)],Comb FuncCall ("Prelude","&&") [Comb FuncCall ("Prelude","==") [Comb FuncCall ("Prelude","mod") [Var 1,Lit (Intc 2)],Lit (Intc 0)],Comb FuncCall ("Random","nextIntRange.power_of_2.64") [Comb FuncCall ("Prelude","div") [Var 1,Lit (Intc 2)]]]]])),Func ("Random","nextBoolean") 1 Public (FuncType (TCons ("Prelude","Int") []) (TCons ("Prelude","[]") [TCons ("Prelude","Bool") []])) (Rule [1] (Comb FuncCall ("Prelude","map") [Comb (FuncPartCall 1) ("Prelude","flip") [Comb (FuncPartCall 2) ("Prelude","/=") [],Lit (Intc 0)],Comb FuncCall ("Random","nextIntBits") [Var 1,Lit (Intc 1)]])),Func ("Random","getRandomSeed") 0 Public (TCons ("Prelude","IO") [TCons ("Prelude","Int") []]) (Rule [] (Comb FuncCall ("Prelude",">>=") [Comb FuncCall ("Time","getClockTime") [],Comb (FuncPartCall 1) ("Random","getRandomSeed._#lambda2") []])),Func ("Random","getRandomSeed._#lambda2") 1 Private (FuncType (TCons ("Time","ClockTime") []) (TCons ("Prelude","IO") [TCons ("Prelude","Int") []])) (Rule [1] (Comb FuncCall ("Prelude",">>=") [Comb FuncCall ("System","getCPUTime") [],Comb (FuncPartCall 1) ("Random","getRandomSeed._#lambda2._#lambda3") [Var 1]])),Func ("Random","getRandomSeed._#lambda2._#lambda3") 2 Private (FuncType (TCons ("Time","ClockTime") []) (FuncType (TCons ("Prelude","Int") []) (TCons ("Prelude","IO") [TCons ("Prelude","Int") []]))) (Rule [1,2] (Let [(3,Comb FuncCall ("Time","toUTCTime") [Var 1])] (Let [(4,Comb FuncCall ("Random","getRandomSeed._#lambda2._#lambda3._#selFP3#y") [Var 3])] (Let [(5,Comb FuncCall ("Random","getRandomSeed._#lambda2._#lambda3._#selFP4#mo") [Var 3])] (Let [(6,Comb FuncCall ("Random","getRandomSeed._#lambda2._#lambda3._#selFP5#d") [Var 3])] (Let [(7,Comb FuncCall ("Random","getRandomSeed._#lambda2._#lambda3._#selFP6#h") [Var 3])] (Let [(8,Comb FuncCall ("Random","getRandomSeed._#lambda2._#lambda3._#selFP7#m") [Var 3])] (Let [(9,Comb FuncCall ("Random","getRandomSeed._#lambda2._#lambda3._#selFP8#s") [Var 3])] (Comb FuncCall ("Prelude","return") [Comb FuncCall ("Prelude","mod") [Comb FuncCall ("Prelude","+") [Comb FuncCall ("Prelude","+") [Comb FuncCall ("Prelude","+") [Comb FuncCall ("Prelude","+") [Var 4,Var 5],Var 6],Var 7],Comb FuncCall ("Prelude","*") [Comb FuncCall ("Prelude","*") [Var 8,Var 9],Var 2]],Comb FuncCall ("Random","mask") []]]))))))))),Func ("Random","getRandomSeed._#lambda2._#lambda3._#selFP3#y") 1 Private (FuncType (TCons ("Time","CalendarTime") []) (TCons ("Prelude","Int") [])) (Rule [1] (Case Flex (Var 1) [Branch (Pattern ("Time","CalendarTime") [2,3,4,5,6,7,8]) (Var 2)])),Func ("Random","getRandomSeed._#lambda2._#lambda3._#selFP4#mo") 1 Private (FuncType (TCons ("Time","CalendarTime") []) (TCons ("Prelude","Int") [])) (Rule [1] (Case Flex (Var 1) [Branch (Pattern ("Time","CalendarTime") [2,3,4,5,6,7,8]) (Var 3)])),Func ("Random","getRandomSeed._#lambda2._#lambda3._#selFP5#d") 1 Private (FuncType (TCons ("Time","CalendarTime") []) (TCons ("Prelude","Int") [])) (Rule [1] (Case Flex (Var 1) [Branch (Pattern ("Time","CalendarTime") [2,3,4,5,6,7,8]) (Var 4)])),Func ("Random","getRandomSeed._#lambda2._#lambda3._#selFP6#h") 1 Private (FuncType (TCons ("Time","CalendarTime") []) (TCons ("Prelude","Int") [])) (Rule [1] (Case Flex (Var 1) [Branch (Pattern ("Time","CalendarTime") [2,3,4,5,6,7,8]) (Var 5)])),Func ("Random","getRandomSeed._#lambda2._#lambda3._#selFP7#m") 1 Private (FuncType (TCons ("Time","CalendarTime") []) (TCons ("Prelude","Int") [])) (Rule [1] (Case Flex (Var 1) [Branch (Pattern ("Time","CalendarTime") [2,3,4,5,6,7,8]) (Var 6)])),Func ("Random","getRandomSeed._#lambda2._#lambda3._#selFP8#s") 1 Private (FuncType (TCons ("Time","CalendarTime") []) (TCons ("Prelude","Int") [])) (Rule [1] (Case Flex (Var 1) [Branch (Pattern ("Time","CalendarTime") [2,3,4,5,6,7,8]) (Var 7)]))] []