# HG changeset patch # User Christian Urban # Date 1580692216 0 # Node ID 183663740fb787fe748bf102a386b96f7a181533 # Parent c112a6cb5e52b525f447c7be627b3a2e740ebd6c updated diff -r c112a6cb5e52 -r 183663740fb7 Attic/bench.prs --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Attic/bench.prs Mon Feb 03 01:10:16 2020 +0000 @@ -0,0 +1,133 @@ +val bench = List( + ArrayDef("mem", 30000), + Assign("ptr", Num(15000)), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(2))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(13))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Skip + ) + ), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(8))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(8))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + Assign("x", Ref("mem", Var("ptr"))), + Write("x"), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(10))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(10))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(2))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(8))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(10))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(10))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(10))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(9))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Skip + ) + ), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(10))), + Assign("x", Ref("mem", Var("ptr"))), + Write("x"), + Skip +) \ No newline at end of file diff -r c112a6cb5e52 -r 183663740fb7 Attic/fact.prs Binary file Attic/fact.prs has changed diff -r c112a6cb5e52 -r 183663740fb7 Attic/fibs.prs --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Attic/fibs.prs Mon Feb 03 01:10:16 2020 +0000 @@ -0,0 +1,284 @@ +val fibs = List( + ArrayDef("mem", 30000), + Assign("ptr", Num(15000)), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(11))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(44))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(32))), + Assign("ptr", Aop("-", Var("ptr"), Num(6))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(6))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(7))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(7))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("-", Var("ptr"), Num(7))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(7))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(10))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Skip + ) + ), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Num(0)), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Skip + ) + ), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Num(0)), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(7))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(25))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(23))), + Assign("x", Ref("mem", Var("ptr"))), + Write("x"), + AssignA("mem", Var("ptr"), Num(0)), + Skip + ) + ), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(10))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(4))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(44))), + Assign("x", Ref("mem", Var("ptr"))), + Write("x"), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + Assign("ptr", Aop("-", Var("ptr"), Num(10))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + Assign("x", Ref("mem", Var("ptr"))), + Write("x"), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + Assign("x", Ref("mem", Var("ptr"))), + Write("x"), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Num(0)), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Skip + ) + ), + Skip +) \ No newline at end of file diff -r c112a6cb5e52 -r 183663740fb7 Attic/mand.prs --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Attic/mand.prs Mon Feb 03 01:10:16 2020 +0000 @@ -0,0 +1,6104 @@ +val mand = List( + ArrayDef("mem", 30000), + Assign("ptr", Num(15000)), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(13))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(2))), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(5))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(2))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(6))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(6))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(3))), + Assign("ptr", Aop("+", Var("ptr"), Num(10))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(15))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("+", Var("ptr"), Num(9))), Skip) + ), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Skip + ) + ), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(8))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(8))), + AssignA("mem", Var("ptr"), Num(0)), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(7))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(5))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(7))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(26))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(17))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Num(0)), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(6))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(7))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + AssignA("mem", Var("ptr"), Num(0)), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(6))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(4))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(6))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(6))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(7))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + Assign("ptr", Aop("+", Var("ptr"), Num(6))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(6))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(16))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("+", Var("ptr"), Num(6))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(6))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(6))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(6))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(6))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(8))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(8))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(7))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(7))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(7))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(7))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(8))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("-", Var("ptr"), Num(7))), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(7))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(7))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(7))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(7))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(7))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(5))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(15))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("+", Var("ptr"), Num(9))), Skip) + ), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Skip + ) + ), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(8))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(5))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + Skip + ) + ), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(8))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("+", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(7))), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(10))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(8))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(6))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(6))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(8))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(5))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(5))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(6))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + Skip + ) + ), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(8))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + Assign("ptr", Aop("+", Var("ptr"), Num(7))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(11))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(8))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(6))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(6))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(36))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(13))), + Assign("ptr", Aop("+", Var("ptr"), Num(23))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(15))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Skip + ) + ), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(21))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("-", Var("ptr"), Num(6))), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + Skip + ) + ), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(13))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("-", Var("ptr"), Num(5))), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Num(0)), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("+", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + Skip + ) + ), + Skip + ) + ), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + Skip + ) + ), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(12))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Num(0)), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(6))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("+", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + Skip + ) + ), + Skip + ) + ), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("+", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(6))), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(8))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(7))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(19))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(7))), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("-", Var("ptr"), Num(7))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Num(0)), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(13))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("+", Var("ptr"), Num(6))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(8))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(8))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(7))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(15))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("+", Var("ptr"), Num(9))), Skip) + ), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Skip + ) + ), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(8))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + Assign("ptr", Aop("-", Var("ptr"), Num(6))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(5))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(5))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(6))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + Skip + ) + ), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(8))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("+", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(10))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(8))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(7))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(7))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(6))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(5))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(8))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(8))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(5))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(5))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(6))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + Skip + ) + ), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(8))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("+", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(10))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(8))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), Skip) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(6))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(6))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(36))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(36))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(36))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(35))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(6))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(8))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(7))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("+", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Skip + ) + ), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(8))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(7))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(7))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(7))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(7))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(6))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(8))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(6))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(6))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(2))), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(5))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(5))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(6))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("-", Var("ptr"), Num(6))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + Skip + ) + ), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + Skip + ) + ), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(12))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Num(0)), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(6))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("+", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + Skip + ) + ), + Skip + ) + ), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + Skip + ) + ), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(11))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("-", Var("ptr"), Num(5))), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Num(0)), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("+", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + Skip + ) + ), + Skip + ) + ), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("+", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(8))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(8))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(8))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(5))), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA( + "mem", + Var("ptr"), + Aop("-", Ref("mem", Var("ptr")), Num(1)) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + AssignA( + "mem", + Var("ptr"), + Aop("-", Ref("mem", Var("ptr")), Num(1)) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(14))), + AssignA( + "mem", + Var("ptr"), + Aop("+", Ref("mem", Var("ptr")), Num(1)) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(11))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA( + "mem", + Var("ptr"), + Aop("-", Ref("mem", Var("ptr")), Num(1)) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + AssignA( + "mem", + Var("ptr"), + Aop("+", Ref("mem", Var("ptr")), Num(1)) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA( + "mem", + Var("ptr"), + Aop("-", Ref("mem", Var("ptr")), Num(1)) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + AssignA( + "mem", + Var("ptr"), + Aop("-", Ref("mem", Var("ptr")), Num(1)) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + Assign("ptr", Aop("-", Var("ptr"), Num(5))), + AssignA( + "mem", + Var("ptr"), + Aop("+", Ref("mem", Var("ptr")), Num(1)) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(11))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA( + "mem", + Var("ptr"), + Aop("-", Ref("mem", Var("ptr")), Num(1)) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + AssignA( + "mem", + Var("ptr"), + Aop("-", Ref("mem", Var("ptr")), Num(1)) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(14))), + AssignA( + "mem", + Var("ptr"), + Aop("+", Ref("mem", Var("ptr")), Num(1)) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(11))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + Assign("ptr", Aop("-", Var("ptr"), Num(10))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(6))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(8))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + Assign("ptr", Aop("-", Var("ptr"), Num(5))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA( + "mem", + Var("ptr"), + Aop("-", Ref("mem", Var("ptr")), Num(1)) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + AssignA( + "mem", + Var("ptr"), + Aop("-", Ref("mem", Var("ptr")), Num(1)) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(14))), + AssignA( + "mem", + Var("ptr"), + Aop("+", Ref("mem", Var("ptr")), Num(1)) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(10))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA( + "mem", + Var("ptr"), + Aop("-", Ref("mem", Var("ptr")), Num(1)) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + AssignA( + "mem", + Var("ptr"), + Aop("+", Ref("mem", Var("ptr")), Num(1)) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA( + "mem", + Var("ptr"), + Aop("-", Ref("mem", Var("ptr")), Num(1)) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + AssignA( + "mem", + Var("ptr"), + Aop("-", Ref("mem", Var("ptr")), Num(1)) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(7))), + Assign("ptr", Aop("-", Var("ptr"), Num(7))), + AssignA( + "mem", + Var("ptr"), + Aop("+", Ref("mem", Var("ptr")), Num(1)) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(10))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA( + "mem", + Var("ptr"), + Aop("-", Ref("mem", Var("ptr")), Num(1)) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + AssignA( + "mem", + Var("ptr"), + Aop("-", Ref("mem", Var("ptr")), Num(1)) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(14))), + AssignA( + "mem", + Var("ptr"), + Aop("+", Ref("mem", Var("ptr")), Num(1)) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(10))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(11))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(6))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(6))), + Skip + ) + ), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("+", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(14))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(11))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA( + "mem", + Var("ptr"), + Aop("-", Ref("mem", Var("ptr")), Num(1)) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + AssignA( + "mem", + Var("ptr"), + Aop("+", Ref("mem", Var("ptr")), Num(1)) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(14))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(11))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(14))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(11))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(7))), + Assign("ptr", Aop("-", Var("ptr"), Num(5))), + Skip + ) + ), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("+", Var("ptr"), Num(6))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(8))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(15))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("+", Var("ptr"), Num(9))), Skip) + ), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Skip + ) + ), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(8))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(5))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + Skip + ) + ), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(8))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("+", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(8))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(10))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(8))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(7))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(7))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(36))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(36))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(15))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("+", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(5))), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Skip + ) + ), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + Skip + ) + ), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(5))), + Assign("ptr", Aop("-", Var("ptr"), Num(8))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Num(0)), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("+", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + Skip + ) + ), + Skip + ) + ), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + Skip + ) + ), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(12))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Num(0)), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(6))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("+", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + Skip + ) + ), + Skip + ) + ), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + Assign("ptr", Aop("+", Var("ptr"), Num(7))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(8))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(8))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(6))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(8))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(8))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(10))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(12))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA( + "mem", + Var("ptr"), + Aop("-", Ref("mem", Var("ptr")), Num(1)) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + AssignA( + "mem", + Var("ptr"), + Aop("+", Ref("mem", Var("ptr")), Num(1)) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(10))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(12))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(10))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(12))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(13))), + Skip + ) + ), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + Assign("ptr", Aop("+", Var("ptr"), Num(6))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(8))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(10))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(11))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA( + "mem", + Var("ptr"), + Aop("-", Ref("mem", Var("ptr")), Num(1)) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + AssignA( + "mem", + Var("ptr"), + Aop("+", Ref("mem", Var("ptr")), Num(1)) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(10))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + Assign("ptr", Aop("+", Var("ptr"), Num(7))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(10))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(11))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(12))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(5))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(7))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(5))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(6))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(6))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(6))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(8))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(7))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(2))), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(5))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(5))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + Skip + ) + ), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + Skip + ) + ), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + Skip + ) + ), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Num(0)), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("+", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + Skip + ) + ), + Skip + ) + ), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + Skip + ) + ), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(12))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Num(0)), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(6))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("+", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + Skip + ) + ), + Skip + ) + ), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("+", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(7))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(8))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(6))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(8))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(8))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA( + "mem", + Var("ptr"), + Aop("-", Ref("mem", Var("ptr")), Num(1)) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + AssignA( + "mem", + Var("ptr"), + Aop("-", Ref("mem", Var("ptr")), Num(1)) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(13))), + AssignA( + "mem", + Var("ptr"), + Aop("+", Ref("mem", Var("ptr")), Num(1)) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(10))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA( + "mem", + Var("ptr"), + Aop("-", Ref("mem", Var("ptr")), Num(1)) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + AssignA( + "mem", + Var("ptr"), + Aop("+", Ref("mem", Var("ptr")), Num(1)) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA( + "mem", + Var("ptr"), + Aop("-", Ref("mem", Var("ptr")), Num(1)) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + AssignA( + "mem", + Var("ptr"), + Aop("-", Ref("mem", Var("ptr")), Num(1)) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(13))), + AssignA( + "mem", + Var("ptr"), + Aop("+", Ref("mem", Var("ptr")), Num(1)) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(10))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA( + "mem", + Var("ptr"), + Aop("-", Ref("mem", Var("ptr")), Num(1)) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + AssignA( + "mem", + Var("ptr"), + Aop("-", Ref("mem", Var("ptr")), Num(1)) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(13))), + AssignA( + "mem", + Var("ptr"), + Aop("+", Ref("mem", Var("ptr")), Num(1)) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(10))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(11))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(7))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(7))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(7))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(7))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(5))), + Skip + ) + ), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(8))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(8))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA( + "mem", + Var("ptr"), + Aop("-", Ref("mem", Var("ptr")), Num(1)) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + AssignA( + "mem", + Var("ptr"), + Aop("-", Ref("mem", Var("ptr")), Num(1)) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(13))), + AssignA( + "mem", + Var("ptr"), + Aop("+", Ref("mem", Var("ptr")), Num(1)) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(11))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA( + "mem", + Var("ptr"), + Aop("-", Ref("mem", Var("ptr")), Num(1)) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + AssignA( + "mem", + Var("ptr"), + Aop("+", Ref("mem", Var("ptr")), Num(1)) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA( + "mem", + Var("ptr"), + Aop("-", Ref("mem", Var("ptr")), Num(1)) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + AssignA( + "mem", + Var("ptr"), + Aop("-", Ref("mem", Var("ptr")), Num(1)) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(13))), + AssignA( + "mem", + Var("ptr"), + Aop("+", Ref("mem", Var("ptr")), Num(1)) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(11))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA( + "mem", + Var("ptr"), + Aop("-", Ref("mem", Var("ptr")), Num(1)) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + AssignA( + "mem", + Var("ptr"), + Aop("-", Ref("mem", Var("ptr")), Num(1)) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(13))), + AssignA( + "mem", + Var("ptr"), + Aop("+", Ref("mem", Var("ptr")), Num(1)) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(11))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(12))), + Skip + ) + ), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(7))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(7))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(7))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(7))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(5))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(6))), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(13))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(11))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA( + "mem", + Var("ptr"), + Aop("-", Ref("mem", Var("ptr")), Num(1)) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + AssignA( + "mem", + Var("ptr"), + Aop("+", Ref("mem", Var("ptr")), Num(1)) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(8))), + Assign("ptr", Aop("-", Var("ptr"), Num(5))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(11))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(13))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(11))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(8))), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + Skip + ) + ), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("+", Var("ptr"), Num(6))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(8))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(6))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(5))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(5))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(8))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(15))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + Skip + ) + ), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Skip + ) + ), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + Assign("ptr", Aop("+", Var("ptr"), Num(6))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(5))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + Skip + ) + ), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(8))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("+", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(10))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(8))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), Skip) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(6))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(6))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(8))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(5))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(5))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + Skip + ) + ), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(8))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(6))), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(11))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(6))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(6))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(36))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(17))), + Assign("ptr", Aop("+", Var("ptr"), Num(19))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(15))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(8))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Skip + ) + ), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(21))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + Skip + ) + ), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(13))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Num(0)), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("+", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + Skip + ) + ), + Skip + ) + ), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + Skip + ) + ), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(11))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Num(0)), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(6))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("+", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + Skip + ) + ), + Skip + ) + ), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("+", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(8))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(7))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + Skip + ) + ), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(6))), + Assign("x", Ref("mem", Var("ptr"))), + Write("x"), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(7))), + Assign("x", Ref("mem", Var("ptr"))), + Write("x"), + Assign("ptr", Aop("+", Var("ptr"), Num(7))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(11))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(8))), + Assign("ptr", Aop("-", Var("ptr"), Num(6))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(7))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(7))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(7))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(7))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(7))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("+", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(5))), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(7))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(6))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(6))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(6))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(6))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(7))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(7))), + AssignA("mem", Var("ptr"), Num(0)), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + Assign("ptr", Aop("-", Var("ptr"), Num(6))), + Skip + ) + ), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(7))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(7))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(7))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(7))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(7))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(8))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(7))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(14))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("+", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(5))), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(7))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(7))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(7))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(6))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(6))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(6))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(7))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Num(0)), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + Skip + ) + ), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(7))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(7))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(7))), + Skip + ) + ), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(7))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(7))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(7))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(7))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(7))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(6))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(6))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(5))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(5))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + Skip + ) + ), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(5))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(7))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(7))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(7))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(16))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Num(0)), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("+", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + Skip + ) + ), + Skip + ) + ), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(7))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(6))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(7))), + Skip + ) + ), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(7))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(7))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(5))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(5))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(14))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + Assign("ptr", Aop("-", Var("ptr"), Num(6))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Num(0)), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(6))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("+", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + Skip + ) + ), + Skip + ) + ), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("+", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(8))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(8))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(7))), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(5))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(5))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("-", Var("ptr"), Num(7))), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + Skip + ) + ), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + Assign("x", Ref("mem", Var("ptr"))), + Write("x"), + Assign("ptr", Aop("+", Var("ptr"), Num(10))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(6))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(10))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(8))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(15))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(8))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(6))), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(8))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(8))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(8))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("+", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(8))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(7))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(6))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(7))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(7))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(8))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(8))), + AssignA("mem", Var("ptr"), Num(0)), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(10))), + Skip + ) + ), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(8))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(5))), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(8))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(8))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(8))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(5))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(5))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(5))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(6))), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(8))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(6))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(15))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("+", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(8))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(8))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(8))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(7))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(7))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(7))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(6))), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(8))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(5))), + AssignA("mem", Var("ptr"), Num(0)), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + Skip + ) + ), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(8))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(8))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(8))), + Skip + ) + ), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(8))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(8))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(8))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(8))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(8))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + Assign("ptr", Aop("-", Var("ptr"), Num(5))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(7))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(7))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(5))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(27))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(6))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(6))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(6))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(6))), + Skip + ) + ), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(5))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(6))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(8))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(8))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(8))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(8))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(17))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("-", Var("ptr"), Num(7))), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Num(0)), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("+", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + Skip + ) + ), + Skip + ) + ), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(8))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(8))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(8))), + Skip + ) + ), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(8))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(8))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(6))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(6))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(6))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(6))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(15))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Num(0)), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(6))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(6))), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + Skip + ) + ), + Skip + ) + ), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("+", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(8))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(8))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(9))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(4))), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(4))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(9))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(9))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(5))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(27))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(6))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("-", Var("ptr"), Num(4))), + Assign("ptr", Aop("-", Var("ptr"), Num(5))), + Skip + ) + ), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + Skip + ) + ), + Skip +) \ No newline at end of file diff -r c112a6cb5e52 -r 183663740fb7 Attic/sier.prs --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Attic/sier.prs Mon Feb 03 01:10:16 2020 +0000 @@ -0,0 +1,109 @@ +val sier = List( + ArrayDef("mem", 30000), + Assign("ptr", Num(15000)), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(8))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(4))), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(2))), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Skip + ) + ), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(3))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + AssignA("mem", Var("ptr"), Num(0)), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(2))), + Assign("ptr", Aop("+", Var("ptr"), Num(3))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + Skip + ) + ), + Assign("ptr", Aop("-", Var("ptr"), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("-", Var("ptr"), Num(1))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(6))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List( + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(5))), + Assign("ptr", Aop("+", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))), + Skip + ) + ), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(2))), + Assign("x", Ref("mem", Var("ptr"))), + Write("x"), + AssignA("mem", Var("ptr"), Num(0)), + Assign("ptr", Aop("-", Var("ptr"), Num(2))), + Skip + ) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + Assign("x", Ref("mem", Var("ptr"))), + Write("x"), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + While( + Bop("!=", Ref("mem", Var("ptr")), Num(0)), + List(Assign("ptr", Aop("+", Var("ptr"), Num(2))), Skip) + ), + Assign("ptr", Aop("+", Var("ptr"), Num(1))), + AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))), + Skip + ) + ), + Skip +) \ No newline at end of file diff -r c112a6cb5e52 -r 183663740fb7 handouts/ho05.tex --- a/handouts/ho05.tex Tue Jan 28 12:23:53 2020 +0000 +++ b/handouts/ho05.tex Mon Feb 03 01:10:16 2020 +0000 @@ -13,6 +13,9 @@ % chomsky normal form transformation % https://youtu.be/FNPSlnj3Vt0 +% Language hierachy is about complexity +% How hard is it to recognise an element in a language + \begin{document} \section*{Handout 5 (Grammars \& Parser)} diff -r c112a6cb5e52 -r 183663740fb7 handouts/ho07.pdf Binary file handouts/ho07.pdf has changed diff -r c112a6cb5e52 -r 183663740fb7 handouts/ho07.tex --- a/handouts/ho07.tex Tue Jan 28 12:23:53 2020 +0000 +++ b/handouts/ho07.tex Mon Feb 03 01:10:16 2020 +0000 @@ -4,9 +4,8 @@ \usepackage{../langs} \usepackage{../grammar} \usepackage{../graphics} - -%% add safety check on references...whether it is above 0 and below the -%% index +\usepackage{framed} +\usepackage[belowskip=7pt,aboveskip=0pt]{caption} @@ -21,15 +20,16 @@ code would be machine code the CPU can run directly, but it is often good enough for improving the speed of a program to target a virtual machine instead. This produces not the fastest possible code, but code -that is often pretty fast. This way of producing code has the advantage -that the virtual machine takes care of things a compiler would normally -need to take care of (hairy things like explicit memory management). +that is often pretty fast. This way of producing code has also the +advantage that the virtual machine takes care of things a compiler would +normally need to take care of (hairy things like explicit memory +management). As a first example in this module we will implement a compiler for the very simple WHILE-language that we parsed in the last lecture. The compiler will target the Java Virtual Machine (JVM), but not directly. Pictorially the compiler will work as follows: - + \begin{center} \begin{tikzpicture}[scale=1,font=\bf, node/.style={ @@ -55,11 +55,11 @@ human-readable machine code, meaning they are not just bits and bytes, but rather something you can read and understand---with a bit of practice of course. An \emph{assembler} will then translate the assembly -files into unreadable class or binary files the JVM can run. +files into unreadable class- or binary-files the JVM can run. Unfortunately, the Java ecosystem does not come with an assembler which would be handy for our compiler-endeavour (unlike Microsoft's Common Language Infrastructure for the .Net platform which has an assembler -out-of-the-box). As a substitute we shall therefore use the 3rd-party +out-of-the-box). As a substitute we shall use the 3rd-party programs Jasmin and Krakatau \begin{itemize} @@ -72,13 +72,13 @@ Each of them allow us to generate \emph{assembly} files that are still readable by humans, as opposed to class-files which are pretty much just (horrible) zeros and ones. Jasmin (respectively Krakatau) will then take -an assembly file as input and generate the corresponding class file for +our assembly files as input and generate the corresponding class-files for us. -Good about the JVM is that it is a stack-based virtual machine, a fact -which will make it easy to generate code for arithmetic expressions. For -example when compiling the expression $1 + 2$ we need to generate the -following three instructions +What is good about the JVM is that it is a stack-based virtual machine, +a fact which will make it easy to generate code for arithmetic +expressions. For example when compiling the expression $1 + 2$ we need +to generate the following three instructions \begin{lstlisting}[language=JVMIS,numbers=none] ldc 1 @@ -89,11 +89,12 @@ \noindent The first instruction loads the constant $1$ onto the stack, the next one loads $2$, the third instruction adds both numbers together replacing the top two elements of the stack with the result $3$. For -simplicity, we will consider throughout only integer numbers. This means -our main JVM instructions for arithmetic will be \code{iadd}, -\code{isub}, \code{imul}, \code{idiv} and so on. The \code{i} stands for -integer instructions in the JVM (alternatives are \code{d} for doubles, -\code{l} for longs and \code{f} for floats etc). +simplicity, we will consider throughout only arithmetic involving +integer numbers. This means our main JVM instructions for arithmetic +will be \code{iadd}, \code{isub}, \code{imul}, \code{idiv} and so on. +The \code{i} stands for integer instructions in the JVM (alternatives +are \code{d} for doubles, \code{l} for longs and \code{f} for floats +etc). Recall our grammar for arithmetic expressions (\meta{E} is the starting symbol): @@ -172,7 +173,7 @@ \noindent This is all fine, but our arithmetic expressions can contain variables and we have not considered them yet. To fix this we will represent our -variables as the \emph{local variables} of the JVM. Essentially, local +variables as \emph{local variables} of the JVM. Essentially, local variables are an array or pointers to memory cells, containing in our case only integers. Looking up a variable can be done with the instruction @@ -268,7 +269,7 @@ in the program, then we have to augment the environment and assign $x$ with the largest index in $E$ plus one (that is $E' = E(x \mapsto largest\_index + 1)$). To sum up, for the assignment $x := x + 1$ we -generate the following code +generate the following code snippet \begin{lstlisting}[language=JVMIS,mathescape,numbers=none] iload $n_x$ @@ -645,17 +646,17 @@ \ldots{};} for the \texttt{PrintStream} type is not an typo. Somehow the designers of Jasmin decided that this syntax is pleasing to the eye. So if you wanted to have strings in your Jasmin code, you would need to -write \texttt{Ljava/lang/String;}\;. If you want arrays of one dimension, -then use \texttt{[\ldots}; two dimensions, use \texttt{[[\ldots} and -so on. Looks all very ugly to my eyes.} Line~5 copies the integer we -want to print out onto the stack. In the line after that we call the -method \pcode{println} (from the class \pcode{java/io/PrintStream}). We -want to print out an integer and do not expect anything back (that is -why the type annotation is \pcode{(I)V}). The \pcode{return}-instruction -in the next line changes the control-flow back to the place from where -\pcode{write} was called. This method needs to be part of a header that -is included in any code we generate. The helper-method \pcode{write} can -be invoked with the two instructions +write \texttt{Ljava/lang/String;}\;. If you want arrays of one +dimension, then use \texttt{[\ldots}; two dimensions, use +\texttt{[[\ldots} and so on. Looks all very ugly to my eyes.} Line~5 +copies the integer we want to print out onto the stack. In the line +after that we call the method \pcode{println} (from the class +\pcode{java/io/PrintStream}). We want to print out an integer and do not +expect anything back (that is why the type annotation is \pcode{(I)V}). +The \pcode{return}-instruction in the next line changes the control-flow +back to the place from where \pcode{write} was called. This method needs +to be part of a header that is included in any code we generate. The +helper-method \pcode{write} can be invoked with the two instructions \begin{lstlisting}[mathescape,language=JVMIS] iload $E(x)$ @@ -683,6 +684,7 @@ local variables. \begin{figure}[t] +\begin{framed} \begin{lstlisting}[mathescape,language=JVMIS,numbers=left] .class public XXX.XXX .super java/lang/Object @@ -696,6 +698,7 @@ return .end method \end{lstlisting} +\end{framed} \caption{The boilerplate code needed for running generated code. It hardwires limits for stack space and number of local variables.\label{boiler}} @@ -718,13 +721,15 @@ \begin{figure}[p] +\begin{framed} \lstinputlisting[language=JVMIS,mathescape,basicstyle=\ttfamily\small]{../progs/test-small.j} \begin{tikzpicture}[remember picture,overlay] \draw[|<->|,very thick] (LA.north) -- (LB.south) - node[left=0mm,midway] {\footnotesize\texttt{x\,:=\,1\,+\,2}}; + node[left=-0.5mm,midway] {\footnotesize\texttt{x\,:=\,1\,+\,2}}; \draw[|<->|,very thick] (LC.north) -- (LD.south) - node[left=0mm,midway] {\footnotesize\texttt{write x}}; + node[left=-0.5mm,midway] {\footnotesize\texttt{write x}}; \end{tikzpicture} +\end{framed} \caption{The generated code for the test program \texttt{x := 1 + 2; write x}. This code can be processed by a Java assembler producing a class-file, which can then be run by the {\tt{}java}-program.\label{test}} @@ -852,36 +857,86 @@ \noindent The idea behind the translation is that BF-programs operate on an array, -called here \texttt{mem}. The BP-memory pointer into this array is +called here \texttt{mem}. The BF-memory pointer into this array is represented as the variable \texttt{ptr}. As usual the BF-instructions \code{>} and \code{<} increase, respectively decrease, \texttt{ptr}. The instructions \code{+} and \code{-} update a cell in \texttt{mem}. In -Line 6 we need to first assign a \texttt{mem}-cell to an auxiliary variable -since we have not changed our write functions in order to cope with -writing out any array-content directly. Lines 7 and 8 are for +Line 6 we need to first assign a \texttt{mem}-cell to an auxiliary +variable since we have not changed our write functions in order to cope +with writing out any array-content directly. Lines 7 and 8 are for translating BF-loops. Line 8 is interesting in the sense that we need to generate a \code{skip} instruction just before finishing with the closing \code{"\}"}. The reason is that we are rather pedantic about semicolons in our WHILE-grammar: the last command cannot have a -semicolon---adding a \code{skip} works around this snag. Putting all -this together is we can generate WHILE-programs with more than 400 -instructions and then run the compiled JVM code for such programs. -\bigskip +semicolon---adding a \code{skip} works around this snag. + +Putting all this together and we can generate WHILE-programs with more +than 15K JVM-instructions; run the compiled JVM code for such +programs and marvel at the output\ldots\medskip \noindent -Hooooray, we can finally run the BF-mandelbrot program on the JVM and it -completes within 20 seconds (after nearly 10 minutes of parsing the -corresponding WHILE-program and generating 270K of a class file). Try -replicating the 20 secs with an interpreter! OK, we now face the -nagging question about what to do next\ldots +\ldots{}Hooooray, we can finally run the BF-mandelbrot program on the JVM: it +completes within 20 or so seconds (after nearly 10 minutes of parsing +the corresponding WHILE-program; the size of the resulting class files +is around 32K). Try replicating the 20 secs with an interpreter! The +good point is that we now have a sufficiently complicated program in our +WHILE-language in order to do some benchmarking. Which means we now face +the question about what to do next\ldots + +\subsection*{Optimisations \& Co} + +Every compiler that deserves its name performs some optimisation on the +code. If we make the extra effort of writing a compiler for a language, +then obviously we want to have our code to run as fast as possible. -\subsection*{Added Value} +So let's optimise a bit the code we generate. There is actually one +aspect in our generated code where we can make easily efficiency gains: +this has to do with some of the quirks of the JVM. Whenever we push a +constant onto the stack, we used the JVM instruction \code{ldc +some_const}. This is a rather generic instructions in the sense that it +works not just for integers but also for strings, objects and so on. +What this instruction does is to put the constant into a constant pool +and then to use an index to this constant pool. This means \code{ldc} +will be represented by at least two bytes in the class file. While this +is sensible for ``large'' constants like strings, it is a bit of +overkill for small integers (which many integers will be when compiling +a BF-program). To counter this ``waste'', the JVM has specific +instructions for small integers, for example + +\begin{itemize} +\item \code{iconst_0},\ldots, \code{iconst_5} +\item \code{bipush n} +\end{itemize} -% 33296 bytes -> 21882 -% shave off 2 seconds +\noindent +where the \code{n} is \code{bipush} is between -128 and 128. By having +dedicated instructions such as \code{iconst_0} to \code{iconst_5} (and +\code{iconst_m1}), we can make the generated code size smaller as these +instructions only require 1 Byte (as opposed the generic \code{ldc} +which needs 1 Byte plus another for the index into the constant pool). +While in theory the use of such special instructions should make the +code only smaller, it actually makes the code also run faster. Probably +because the JVM has to process less code and uses a specific instruction +in the underlying CPU. The story with \code{bipush} is slightly +different, because it also uses two Bytes---so it does not result in a +reduction in code size. But probably it uses specific instruction in +the underlying CPU which make the JVM code run faster. + + + + +\begin{itemize} +\item \code{iload_0},\ldots, \code{iload_3} +\item \code{istore_0},\ldots, \code{istore_3} +\item \code{aload_0},\ldots, \code{aload_3} +\item \code{astore_0},\ldots, \code{astore_3} +\end{itemize} + +% 33296 bytes -> 21787 +% 21 -> 16 seconds As you have probably seen, the compiler writer has a lot of freedom -about how to generate code from what the progarmmer wrote as program. +about how to generate code from what the programmer wrote as program. The only condition is that generated code should behave as expected by the programmer. Then all is fine\ldots mission accomplished! But sometimes the compiler writer is expected to go an extra mile, or even diff -r c112a6cb5e52 -r 183663740fb7 progs/compile_arr.scala --- a/progs/compile_arr.scala Tue Jan 28 12:23:53 2020 +0000 +++ b/progs/compile_arr.scala Mon Feb 03 01:10:16 2020 +0000 @@ -8,9 +8,13 @@ // // Call with // -// scala compiler_arr.scala +// scala compile_arr.scala +// Mandelbrot +// mand.j size 236241 +// mand.class size 33296 +// running time 21 secs // the abstract syntax trees abstract class Stmt @@ -101,49 +105,34 @@ case "*" => i"imul" } -def compile_num(i: Int) = - if (0 <= i && i <= 5) i"iconst_$i" else i"ldc $i" - -def compile_aload(i: Int) = - if (0 <= i && i <= 3) i"aload_$i" else i"aload $i" - -def compile_iload(i: Int) = - if (0 <= i && i <= 3) i"iload_$i" else i"iload $i" - -def compile_istore(i: Int) = - if (0 <= i && i <= 3) i"istore_$i" else i"istore $i" - // arithmetic expression compilation def compile_aexp(a: AExp, env : Env) : String = a match { - case Num(i) => compile_num(i) - case Var(s) => compile_iload(env(s)) + case Num(i) => i"ldc $i" + case Var(s) => i"iload ${env(s)}" case Aop(op, a1, a2) => compile_aexp(a1, env) ++ compile_aexp(a2, env) ++ compile_op(op) - case Ref(s, a) => - compile_aload(env(s)) ++ compile_aexp(a, env) ++ i"iaload" + case Ref(s, a) => + i"aload ${env(s)}" ++ compile_aexp(a, env) ++ i"iaload" } -def compile_bop(op: String, jmp: String) = op match { - case "==" => i"if_icmpne $jmp" - case "!=" => i"if_icmpeq $jmp" - case "<" => i"if_icmpge $jmp" -} - - // boolean expression compilation def compile_bexp(b: BExp, env : Env, jmp: String) : String = b match { case True => "" case False => i"goto $jmp" - case Bop(op, a1, a2) => - compile_aexp(a1, env) ++ compile_aexp(a2, env) ++ compile_bop(op, jmp) + case Bop("==", a1, a2) => + compile_aexp(a1, env) ++ compile_aexp(a2, env) ++ i"if_icmpne $jmp" + case Bop("!=", a1, a2) => + compile_aexp(a1, env) ++ compile_aexp(a2, env) ++ i"if_icmpeq $jmp" + case Bop("<", a1, a2) => + compile_aexp(a1, env) ++ compile_aexp(a2, env) ++ i"if_icmpge $jmp" } // statement compilation def compile_stmt(s: Stmt, env: Env) : (String, Env) = s match { case Skip => ("", env) case Assign(x, a) => { - val index = env.getOrElse(x, env.keys.size) // - (compile_aexp(a, env) ++ compile_istore(index), env + (x -> index)) + val index = env.getOrElse(x, env.keys.size) + (compile_aexp(a, env) ++ i"istore $index \t\t; $x", env + (x -> index)) } case If(b, bl1, bl2) => { val if_else = Fresh("If_else") @@ -168,12 +157,12 @@ l"$loop_end", env1) } case Write(x) => - (compile_iload(env(x)) ++ + (i"iload ${env(x)} \t\t; $x" ++ i"invokestatic XXX/XXX/write(I)V", env) case Read(x) => { val index = env.getOrElse(x, env.keys.size) - (i"invokestatic XXX/XXX/read()I" ++ - compile_istore(index), env + (x -> index)) + (i"invokestatic XXX/XXX/read()I" ++ + i"istore $index \t\t; $x", env + (x -> index)) } case ArrayDef(s: String, n: Int) => { val index = if (env.isDefinedAt(s)) throw new Exception("array def error") else @@ -185,7 +174,7 @@ case AssignA(s, a1, a2) => { val index = if (env.isDefinedAt(s)) env(s) else throw new Exception("array not defined") - (compile_aload(env(s)) ++ + (i"aload ${env(s)}" ++ compile_aexp(a1, env) ++ compile_aexp(a2, env) ++ i"iastore", env) @@ -378,7 +367,7 @@ ("while" ~ BExp ~ "do" ~ Block) ==> { case _ ~ y ~ _ ~ w => While(y, w) } | ("new(" ~ IdParser ~ "[" ~ NumParser ~ "])") ==> { case _ ~ y ~ _ ~ u ~ _ => ArrayDef(y, u) } | - ("write" ~ IdParser) ==> { case _ ~ y => Write(y) } + ("write(" ~ IdParser ~ ")") ==> { case _ ~ y ~ _ => Write(y) } lazy val Stmts: Parser[String, Block] = (Stmt ~ ";" ~ Stmts) ==> { case x ~ _ ~ z => x :: z : Block } | @@ -408,7 +397,7 @@ minus1 := temp; n := n - 1}; result := minus2; - write result + write(result) """.replaceAll("\\s+", "") val fib_prog = Stmts.parse_all(fib).toList @@ -525,9 +514,10 @@ // Mandelbrot Set //---------------- // -// Note: Parsing of the generated WHILE program (around 56K in size) -// takes approximately 10 minutes. The final class file runs -// for around 23 seconds. +// Note: Parsing of the generated WHILE program (around 60K in size) +// takes approximately 10 minutes + + bf_run("""A mandelbrot set fractal viewer in brainf*** written by Erik Bosman +++++++++++++[->++>>>+++++>++>+<<<<<<]>>>>>++++++>--->>>>>>>>>>+++++++++++++++[[ @@ -676,3 +666,28 @@ <<<<<]]>>>]""", "mand") + + +//=============== +// For peephole profiling +// +/* +val loops = """ + start := 180000; + x1 := start; + x2 := start; + x3 := start; + while (0 < x1) do { + while (0 < x2) do { + while (0 < x3) do { x3 := x3 - 1 }; + x3 := start; + x2 := x2 - 1 + }; + x2 := start; + x1 := x1 - 1 + }""".replaceAll("\\s+", "") + +val loops_prog = Stmts.parse_all(loops).toList +compile_to_file(loops_prog.head, "loops") +compile_and_run(loops_prog.head, "loops") +*/ diff -r c112a6cb5e52 -r 183663740fb7 progs/compile_arr2.scala --- a/progs/compile_arr2.scala Tue Jan 28 12:23:53 2020 +0000 +++ b/progs/compile_arr2.scala Mon Feb 03 01:10:16 2020 +0000 @@ -8,9 +8,12 @@ // // Call with // -// scala compiler_arr.scala +// scala compile_arr.scala - +// Mandelbrot +// mand.j size 232266 +// mand.class size 21787 +// running time 16 secs // the abstract syntax trees abstract class Stmt @@ -101,14 +104,28 @@ case "*" => i"imul" } + +def compile_num(i: Int) = + if (0 <= i && i <= 5) i"iconst_$i" else + if (-128 <= i && i <= 127) i"bipush $i" else i"ldc $i" + +def compile_aload(i: Int) = + if (0 <= i && i <= 3) i"aload_$i" else i"aload $i" + +def compile_iload(i: Int) = + if (0 <= i && i <= 3) i"iload_$i" else i"iload $i" + +def compile_istore(i: Int) = + if (0 <= i && i <= 3) i"istore_$i" else i"istore $i" + // arithmetic expression compilation def compile_aexp(a: AExp, env : Env) : String = a match { - case Num(i) => i"ldc $i" - case Var(s) => i"iload ${env(s)}" + case Num(i) => compile_num(i) + case Var(s) => compile_iload(env(s)) case Aop(op, a1, a2) => compile_aexp(a1, env) ++ compile_aexp(a2, env) ++ compile_op(op) - case Ref(s, a) => - i"aload ${env(s)}" ++ compile_aexp(a, env) ++ i"iaload" + case Ref(s, a) => + compile_aload(env(s)) ++ compile_aexp(a, env) ++ i"iaload" } def compile_bop(op: String, jmp: String) = op match { @@ -117,6 +134,7 @@ case "<" => i"if_icmpge $jmp" } + // boolean expression compilation def compile_bexp(b: BExp, env : Env, jmp: String) : String = b match { case True => "" @@ -129,8 +147,8 @@ def compile_stmt(s: Stmt, env: Env) : (String, Env) = s match { case Skip => ("", env) case Assign(x, a) => { - val index = env.getOrElse(x, env.keys.size) - (compile_aexp(a, env) ++ i"istore $index \t\t; $x", env + (x -> index)) + val index = env.getOrElse(x, env.keys.size) // + (compile_aexp(a, env) ++ compile_istore(index), env + (x -> index)) } case If(b, bl1, bl2) => { val if_else = Fresh("If_else") @@ -155,12 +173,12 @@ l"$loop_end", env1) } case Write(x) => - (i"iload ${env(x)} \t\t; $x" ++ + (compile_iload(env(x)) ++ i"invokestatic XXX/XXX/write(I)V", env) case Read(x) => { val index = env.getOrElse(x, env.keys.size) - (i"invokestatic XXX/XXX/read()I" ++ - i"istore $index \t\t; $x", env + (x -> index)) + (i"invokestatic XXX/XXX/read()I" ++ + compile_istore(index), env + (x -> index)) } case ArrayDef(s: String, n: Int) => { val index = if (env.isDefinedAt(s)) throw new Exception("array def error") else @@ -172,7 +190,7 @@ case AssignA(s, a1, a2) => { val index = if (env.isDefinedAt(s)) env(s) else throw new Exception("array not defined") - (i"aload ${env(s)}" ++ + (compile_aload(env(s)) ++ compile_aexp(a1, env) ++ compile_aexp(a2, env) ++ i"iastore", env) @@ -197,6 +215,32 @@ } +// Fibonacci numbers as a test-case +val fib_test = + List(Read("n"), // read n; + Assign("minus1",Num(0)), // minus1 := 0; + Assign("minus2",Num(1)), // minus2 := 1; + Assign("temp",Num(0)), // temp := 0; + While(Bop("<",Num(0),Var("n")), // while n > 0 do { + List(Assign("temp",Var("minus2")), // temp := minus2; + Assign("minus2",Aop("+",Var("minus1"),Var("minus2"))), + // minus2 := minus1 + minus2; + Assign("minus1",Var("temp")), // minus1 := temp; + Assign("n",Aop("-",Var("n"),Num(1))))), // n := n - 1 }; + Write("minus1")) // write minus1 + +// prints out the JVM-assembly instructions for fib +// +// println(compile(fib_test, "fib")) +// +// can be assembled by hand with +// +// java -jar jvm/jasmin-2.4/jasmin.jar fib.j +// +// and started with +// +// java fib/fib + import scala.util._ import scala.sys.process._ @@ -219,20 +263,422 @@ println("generated .j file") (s"java -jar jvm/jasmin-2.4/jasmin.jar ${class_name}.j").!! println("generated .class file ") - println("Time: " + time_needed(1, (s"java ${class_name}/${class_name}").!)._1) + println("Time: " + time_needed(3, (s"java ${class_name}/${class_name}").!)._1) } val arr_test = - List(ArrayDef("a", 10), // new(a[10]) - ArrayDef("b", 2), // new(b[2]) - AssignA("a", Num(0), Num(10)), // a[0] := 10 - Assign("x", Ref("a", Num(0))), // x := a[0] - Write("x"), // write x - AssignA("b", Num(2), Num(5)), // b[2] := 5 - Assign("x", Ref("b", Num(1))), // x := b[1] - Write("x")) // write x + List(ArrayDef("a", 10), + ArrayDef("b", 2), + AssignA("a", Num(0), Num(10)), + Assign("x", Ref("a", Num(0))), + Write("x"), + AssignA("b", Num(1), Num(5)), + Assign("x", Ref("b", Num(1))), + Write("x")) + + +//compile_and_run(arr_test, "a") + +//==================== +// Parser Combinators +//==================== + +import scala.language.implicitConversions +import scala.language.reflectiveCalls + +// more convenience for the semantic actions later on +case class ~[+A, +B](_1: A, _2: B) + +type IsSeq[A] = A => Seq[_] + +abstract class Parser[I : IsSeq, T] { + def parse(ts: I): Set[(T, I)] + + def parse_all(ts: I) : Set[T] = + for ((head, tail) <- parse(ts); if (tail.isEmpty)) yield head +} + +class SeqParser[I : IsSeq, T, S](p: => Parser[I, T], q: => Parser[I, S]) extends Parser[I, ~[T, S]] { + def parse(sb: I) = + for ((head1, tail1) <- p.parse(sb); + (head2, tail2) <- q.parse(tail1)) yield (new ~(head1, head2), tail2) +} + +class AltParser[I : IsSeq, T](p: => Parser[I, T], q: => Parser[I, T]) extends Parser[I, T] { + def parse(sb: I) = p.parse(sb) ++ q.parse(sb) +} + +class FunParser[I : IsSeq, T, S](p: => Parser[I, T], f: T => S) extends Parser[I, S] { + def parse(sb: I) = + for ((head, tail) <- p.parse(sb)) yield (f(head), tail) +} + + +import scala.util.matching.Regex +case class RegexParser(reg: Regex) extends Parser[String, String] { + def parse(sb: String) = reg.findPrefixMatchOf(sb) match { + case None => Set() + case Some(m) => Set((m.matched, m.after.toString)) + } +} + +def StringParser(s: String) = RegexParser(Regex.quote(s).r) + + +implicit def string2parser(s : String) = StringParser(s) + +implicit def ParserOps[I : IsSeq, T](p: Parser[I, T]) = new { + def | (q : => Parser[I, T]) = new AltParser[I, T](p, q) + def ==>[S] (f: => T => S) = new FunParser[I, T, S](p, f) + def ~[S] (q : => Parser[I, S]) = new SeqParser[I, T, S](p, q) +} + +implicit def StringOps(s: String) = new { + def | (q : => Parser[String, String]) = new AltParser[String, String](s, q) + def | (r: String) = new AltParser[String, String](s, r) + def ==>[S] (f: => String => S) = new FunParser[String, String, S](s, f) + def ~[S](q : => Parser[String, S]) = + new SeqParser[String, String, S](s, q) + def ~ (r: String) = + new SeqParser[String, String, String](s, r) +} + + +val NumParser = RegexParser("[0-9]+".r) ==> (s => s.toInt : Int) +val IdParser = RegexParser("[a-z][a-z,0-9]*".r) + + + +// Grammar Rules for WHILE with arrays + +lazy val AExp: Parser[String, AExp] = + (Te ~ "+" ~ AExp) ==> { case x ~ _ ~ z => Aop("+", x, z):AExp } | + (Te ~ "-" ~ AExp) ==> { case x ~ _ ~ z => Aop("-", x, z):AExp } | Te +lazy val Te: Parser[String, AExp] = + (Fa ~ "*" ~ Te) ==> { case x ~ _ ~ z => Aop("*", x, z):AExp } | Fa +lazy val Fa: Parser[String, AExp] = + ("(" ~ AExp ~ ")") ==> { case _ ~ y ~ _ => y } | + (IdParser ~ "[" ~ AExp ~ "]") ==> { case x ~ _ ~ y ~ _ => Ref(x, y) } | + IdParser ==> Var | + NumParser ==> Num + +// boolean expressions +lazy val BExp: Parser[String, BExp] = + (AExp ~ "=" ~ AExp) ==> { case x ~ y ~ z => Bop("=", x, z):BExp } | + (AExp ~ "!=" ~ AExp) ==> { case x ~ y ~ z => Bop("!=", x, z):BExp } | + (AExp ~ "<" ~ AExp) ==> { case x ~ y ~ z => Bop("<", x, z):BExp } | + (AExp ~ ">" ~ AExp) ==> { case x ~ y ~ z => Bop("<", z, x):BExp } | + ("true" ==> ((_) => True:BExp )) | + ("false" ==> ((_) => False:BExp )) | + ("(" ~ BExp ~ ")") ==> { case x ~ y ~ z => y} + +lazy val Stmt: Parser[String, Stmt] = + ("skip" ==> (_ => Skip: Stmt)) | + (IdParser ~ ":=" ~ AExp) ==> { case x ~ y ~z => Assign(x, z): Stmt } | + (IdParser ~ "[" ~ AExp ~ "]" ~ ":=" ~ AExp) ==> { + case x ~ _ ~ z ~ _ ~ _ ~ u => AssignA(x, z, u): Stmt } | + ("if" ~ BExp ~ "then" ~ Block ~ "else" ~ Block) ==> + { case _ ~ y ~ _ ~ u ~ _ ~w => If(y, u, w): Stmt } | + ("while" ~ BExp ~ "do" ~ Block) ==> { case _ ~ y ~ _ ~ w => While(y, w) } | + ("new(" ~ IdParser ~ "[" ~ NumParser ~ "])") ==> { + case _ ~ y ~ _ ~ u ~ _ => ArrayDef(y, u) } | + ("write" ~ IdParser) ==> { case _ ~ y => Write(y) } + +lazy val Stmts: Parser[String, Block] = + (Stmt ~ ";" ~ Stmts) ==> { case x ~ _ ~ z => x :: z : Block } | + (Stmt ==> ((s) => List(s) : Block)) + + +lazy val Block: Parser[String, Block] = + ("{" ~ Stmts ~ "}") ==> { case _ ~ y ~ _ => y} | + (Stmt ==> (s => List(s))) + +//Stmts.parse_all("x2:=5+a") +//Stmts.parse_all("x2:=5+a[3+a]") +//Stmts.parse_all("a[x2+3]:=5+a[3+a]") +//Block.parse_all("{x:=5;y:=8}") +//Block.parse_all("if(false)then{x:=5}else{x:=10}") + + + +val fib = """ + n := 10; + minus1 := 0; + minus2 := 1; + temp:=0; + while (n > 0) do { + temp := minus2; + minus2 := minus1 + minus2; + minus1 := temp; + n := n - 1}; + result := minus2; + write result + """.replaceAll("\\s+", "") + +val fib_prog = Stmts.parse_all(fib).toList +//compile_and_run(fib_prog.head, "fib") + +//====================================== +// BF transpiler into WHILE with arrays +//====================================== + +// simple BF instructions translation +def instr(c: Char) : String = c match { + case '>' => "ptr := ptr + 1;" + case '<' => "ptr := ptr - 1;" + case '+' => "mem[ptr] := mem[ptr] + 1;" + case '-' => "mem[ptr] := mem[ptr] - 1;" + case '.' => "x := mem[ptr]; write x;" + //case ',' => "XXX" // "ptr = getchar();\n" + case '[' => "while (mem[ptr] != 0) do {" + case ']' => "skip};" + case _ => "" +} + +def instrs(prog: String) : String = + prog.toList.map(instr).mkString -compile_and_run(arr_test, "a") +// Note: the mandelbrot.bf program is so large that +// it does not fit inside the limitations of what the +// JVM imposes on methods (only 64K of instructions). +// Therefore some optimisations are first applied to +// BF programs before WHILE programs are created. The +// optimisations are +// +// - replacing BF-loops of the form [-] +// - combining single increment/decrement instructions +// +// The size of the resulting .j-file is 270K. + +def splice(cs: List[Char], acc: List[(Char, Int)]) : List[(Char, Int)] = (cs, acc) match { + case (Nil, acc) => acc + case (c :: cs, Nil) => splice(cs, List((c, 1))) + case (c :: cs, (d, n) :: acc) => + if (c == d) splice(cs, (c, n + 1) :: acc) + else splice(cs, (c, 1) :: (d, n) :: acc) +} + +def spl(s: String) = splice(s.toList, Nil).reverse + +def instr2(c: Char, n: Int) : String = c match { + case '>' => s"ptr := ptr + $n;" + case '<' => s"ptr := ptr - $n;" + case '0' => s"mem[ptr] := 0;" + case '+' => s"mem[ptr] := mem[ptr] + $n;" + case '-' => s"mem[ptr] := mem[ptr] - $n;" + case '.' => s"x := mem[ptr]; write x;" + case '[' => "while (mem[ptr] != 0) do {" * n + case ']' => "skip};" * n + case _ => "" +} + +def instrs2(prog: String) : String = + spl(prog.replaceAll("""\[-\]""", "0")).map{ case (c, n) => instr2(c, n) }.mkString + +def bf_str(prog: String) : String = { + "new(mem[30000]);" ++ + "ptr := 15000;" ++ + instrs2(prog) ++ + "skip" +} + +def bf_run(prog: String, name: String) = { + println(s"BF pre-processing of $name") + val bf_string = bf_str(prog).replaceAll("\\s", "") + println(s"BF parsing (program length ${bf_string.length} characters)") + val (time, bf_prog) = time_needed(1, Stmts.parse_all(bf_string).toList.head) + println(s"BF generated WHILE program (needed $time for parsing)") + compile_and_run(bf_prog, name) +} + +// a benchmark program (counts down from 'Z' to 'A') +val bf0 = """>++[<+++++++++++++>-]<[[>+>+<<-]>[<+>-]++++++++ + [>++++++++<-]>.[-]<<>++++++++++[>++++++++++[>++ + ++++++++[>++++++++++[>++++++++++[>++++++++++[>+ + +++++++++[-]<-]<-]<-]<-]<-]<-]<-]++++++++++.""" + +bf_run(bf0, "bench") + +// Sierpinski triangle +val bf1 = """++++++++[>+>++++<<-]>++>>+<[-[>>+<<-]+>>]>+[-<<<[ + ->[+[-]+>++>>>-<<]<[<]>>++++++[<<+++++>>-]+<<++.[-]<< + ]>.>+[>>]>+]""" + +bf_run(bf1, "sier") + +// Helo World! +bf_run("""++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++ + ..+++.>>.<-.<.+++.------.--------.>>+.>++.""", "hello") + +// Fibonacci +val bf2 = """+++++++++++ + >+>>>>++++++++++++++++++++++++++++++++++++++++++++ + >++++++++++++++++++++++++++++++++<<<<<<[>[>>>>>>+> + +<<<<<<<-]>>>>>>>[<<<<<<<+>>>>>>>-]<[>++++++++++[- + <-[>>+>+<<<-]>>>[<<<+>>>-]+<[>[-]<[-]]>[<<[>>>+<<< + -]>>[-]]<<]>>>[>>+>+<<<-]>>>[<<<+>>>-]+<[>[-]<[-]] + >[<<+>>[-]]<<<<<<<]>>>>>[+++++++++++++++++++++++++ + +++++++++++++++++++++++.[-]]++++++++++<[->-<]>++++ + ++++++++++++++++++++++++++++++++++++++++++++.[-]<< + <<<<<<<<<<[>>>+>+<<<<-]>>>>[<<<<+>>>>-]<-[>>.>.<<< + [-]]<<[>>+>+<<<-]>>>[<<<+>>>-]<<[<+>-]>[<+>-]<<<-]""" + +bf_run(bf2, "fibs") + +// Mandelbrot Set +//---------------- +// +// Note: Parsing of the generated WHILE program (around 60K in size) +// takes approximately 10 minutes + + +bf_run("""A mandelbrot set fractal viewer in brainf*** written by Erik Bosman ++++++++++++++[->++>>>+++++>++>+<<<<<<]>>>>>++++++>--->>>>>>>>>>+++++++++++++++[[ +>>>>>>>>>]+[<<<<<<<<<]>>>>>>>>>-]+[>>>>>>>>[-]>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>[-]+ +<<<<<<<+++++[-[->>>>>>>>>+<<<<<<<<<]>>>>>>>>>]>>>>>>>+>>>>>>>>>>>>>>>>>>>>>>>>>> +>+<<<<<<<<<<<<<<<<<[<<<<<<<<<]>>>[-]+[>>>>>>[>>>>>>>[-]>>]<<<<<<<<<[<<<<<<<<<]>> +>>>>>[-]+<<<<<<++++[-[->>>>>>>>>+<<<<<<<<<]>>>>>>>>>]>>>>>>+<<<<<<+++++++[-[->>> +>>>>>>+<<<<<<<<<]>>>>>>>>>]>>>>>>+<<<<<<<<<<<<<<<<[<<<<<<<<<]>>>[[-]>>>>>>[>>>>> +>>[-<<<<<<+>>>>>>]<<<<<<[->>>>>>+<<+<<<+<]>>>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>> +[>>>>>>>>[-<<<<<<<+>>>>>>>]<<<<<<<[->>>>>>>+<<+<<<+<<]>>>>>>>>]<<<<<<<<<[<<<<<<< +<<]>>>>>>>[-<<<<<<<+>>>>>>>]<<<<<<<[->>>>>>>+<<+<<<<<]>>>>>>>>>+++++++++++++++[[ +>>>>>>>>>]+>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>-]+[ +>+>>>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>[>->>>>[-<<<<+>>>>]<<<<[->>>>+<<<<<[->>[ +-<<+>>]<<[->>+>>+<<<<]+>>>>>>>>>]<<<<<<<<[<<<<<<<<<]]>>>>>>>>>[>>>>>>>>>]<<<<<<< +<<[>[->>>>>>>>>+<<<<<<<<<]<<<<<<<<<<]>[->>>>>>>>>+<<<<<<<<<]<+>>>>>>>>]<<<<<<<<< +[>[-]<->>>>[-<<<<+>[<->-<<<<<<+>>>>>>]<[->+<]>>>>]<<<[->>>+<<<]<+<<<<<<<<<]>>>>> +>>>>[>+>>>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>[>->>>>>[-<<<<<+>>>>>]<<<<<[->>>>>+ +<<<<<<[->>>[-<<<+>>>]<<<[->>>+>+<<<<]+>>>>>>>>>]<<<<<<<<[<<<<<<<<<]]>>>>>>>>>[>> +>>>>>>>]<<<<<<<<<[>>[->>>>>>>>>+<<<<<<<<<]<<<<<<<<<<<]>>[->>>>>>>>>+<<<<<<<<<]<< ++>>>>>>>>]<<<<<<<<<[>[-]<->>>>[-<<<<+>[<->-<<<<<<+>>>>>>]<[->+<]>>>>]<<<[->>>+<< +<]<+<<<<<<<<<]>>>>>>>>>[>>>>[-<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>> +>>>>>>>>>>>>>>>>>>>>>>>]>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>+++++++++++++++[[>>>> +>>>>>]<<<<<<<<<-<<<<<<<<<[<<<<<<<<<]>>>>>>>>>-]+>>>>>>>>>>>>>>>>>>>>>+<<<[<<<<<< +<<<]>>>>>>>>>[>>>[-<<<->>>]+<<<[->>>->[-<<<<+>>>>]<<<<[->>>>+<<<<<<<<<<<<<[<<<<< +<<<<]>>>>[-]+>>>>>[>>>>>>>>>]>+<]]+>>>>[-<<<<->>>>]+<<<<[->>>>-<[-<<<+>>>]<<<[-> +>>+<<<<<<<<<<<<[<<<<<<<<<]>>>[-]+>>>>>>[>>>>>>>>>]>[-]+<]]+>[-<[>>>>>>>>>]<<<<<< +<<]>>>>>>>>]<<<<<<<<<[<<<<<<<<<]<<<<<<<[->+>>>-<<<<]>>>>>>>>>+++++++++++++++++++ ++++++++>>[-<<<<+>>>>]<<<<[->>>>+<<[-]<<]>>[<<<<<<<+<[-<+>>>>+<<[-]]>[-<<[->+>>>- +<<<<]>>>]>>>>>>>>>>>>>[>>[-]>[-]>[-]>>>>>]<<<<<<<<<[<<<<<<<<<]>>>[-]>>>>>>[>>>>> +[-<<<<+>>>>]<<<<[->>>>+<<<+<]>>>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>[>>[-<<<<<<<< +<+>>>>>>>>>]>>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>+++++++++++++++[[>>>>>>>>>]+>[- +]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>-]+[>+>>>>>>>>]<<< +<<<<<<[<<<<<<<<<]>>>>>>>>>[>->>>>>[-<<<<<+>>>>>]<<<<<[->>>>>+<<<<<<[->>[-<<+>>]< +<[->>+>+<<<]+>>>>>>>>>]<<<<<<<<[<<<<<<<<<]]>>>>>>>>>[>>>>>>>>>]<<<<<<<<<[>[->>>> +>>>>>+<<<<<<<<<]<<<<<<<<<<]>[->>>>>>>>>+<<<<<<<<<]<+>>>>>>>>]<<<<<<<<<[>[-]<->>> +[-<<<+>[<->-<<<<<<<+>>>>>>>]<[->+<]>>>]<<[->>+<<]<+<<<<<<<<<]>>>>>>>>>[>>>>>>[-< +<<<<+>>>>>]<<<<<[->>>>>+<<<<+<]>>>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>[>+>>>>>>>> +]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>[>->>>>>[-<<<<<+>>>>>]<<<<<[->>>>>+<<<<<<[->>[-<<+ +>>]<<[->>+>>+<<<<]+>>>>>>>>>]<<<<<<<<[<<<<<<<<<]]>>>>>>>>>[>>>>>>>>>]<<<<<<<<<[> +[->>>>>>>>>+<<<<<<<<<]<<<<<<<<<<]>[->>>>>>>>>+<<<<<<<<<]<+>>>>>>>>]<<<<<<<<<[>[- +]<->>>>[-<<<<+>[<->-<<<<<<+>>>>>>]<[->+<]>>>>]<<<[->>>+<<<]<+<<<<<<<<<]>>>>>>>>> +[>>>>[-<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +]>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>[>>>[-<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<+> +>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>]>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>++++++++ ++++++++[[>>>>>>>>>]<<<<<<<<<-<<<<<<<<<[<<<<<<<<<]>>>>>>>>>-]+[>>>>>>>>[-<<<<<<<+ +>>>>>>>]<<<<<<<[->>>>>>>+<<<<<<+<]>>>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>[>>>>>>[ +-]>>>]<<<<<<<<<[<<<<<<<<<]>>>>+>[-<-<<<<+>>>>>]>[-<<<<<<[->>>>>+<++<<<<]>>>>>[-< +<<<<+>>>>>]<->+>]<[->+<]<<<<<[->>>>>+<<<<<]>>>>>>[-]<<<<<<+>>>>[-<<<<->>>>]+<<<< +[->>>>->>>>>[>>[-<<->>]+<<[->>->[-<<<+>>>]<<<[->>>+<<<<<<<<<<<<[<<<<<<<<<]>>>[-] ++>>>>>>[>>>>>>>>>]>+<]]+>>>[-<<<->>>]+<<<[->>>-<[-<<+>>]<<[->>+<<<<<<<<<<<[<<<<< +<<<<]>>>>[-]+>>>>>[>>>>>>>>>]>[-]+<]]+>[-<[>>>>>>>>>]<<<<<<<<]>>>>>>>>]<<<<<<<<< +[<<<<<<<<<]>>>>[-<<<<+>>>>]<<<<[->>>>+>>>>>[>+>>[-<<->>]<<[->>+<<]>>>>>>>>]<<<<< +<<<+<[>[->>>>>+<<<<[->>>>-<<<<<<<<<<<<<<+>>>>>>>>>>>[->>>+<<<]<]>[->>>-<<<<<<<<< +<<<<<+>>>>>>>>>>>]<<]>[->>>>+<<<[->>>-<<<<<<<<<<<<<<+>>>>>>>>>>>]<]>[->>>+<<<]<< +<<<<<<<<<<]>>>>[-]<<<<]>>>[-<<<+>>>]<<<[->>>+>>>>>>[>+>[-<->]<[->+<]>>>>>>>>]<<< +<<<<<+<[>[->>>>>+<<<[->>>-<<<<<<<<<<<<<<+>>>>>>>>>>[->>>>+<<<<]>]<[->>>>-<<<<<<< +<<<<<<<+>>>>>>>>>>]<]>>[->>>+<<<<[->>>>-<<<<<<<<<<<<<<+>>>>>>>>>>]>]<[->>>>+<<<< +]<<<<<<<<<<<]>>>>>>+<<<<<<]]>>>>[-<<<<+>>>>]<<<<[->>>>+>>>>>[>>>>>>>>>]<<<<<<<<< +[>[->>>>>+<<<<[->>>>-<<<<<<<<<<<<<<+>>>>>>>>>>>[->>>+<<<]<]>[->>>-<<<<<<<<<<<<<< ++>>>>>>>>>>>]<<]>[->>>>+<<<[->>>-<<<<<<<<<<<<<<+>>>>>>>>>>>]<]>[->>>+<<<]<<<<<<< +<<<<<]]>[-]>>[-]>[-]>>>>>[>>[-]>[-]>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>[>>>>>[-< +<<<+>>>>]<<<<[->>>>+<<<+<]>>>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>+++++++++++++++[ +[>>>>>>>>>]+>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>-]+ +[>+>>>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>[>->>>>[-<<<<+>>>>]<<<<[->>>>+<<<<<[->> +[-<<+>>]<<[->>+>+<<<]+>>>>>>>>>]<<<<<<<<[<<<<<<<<<]]>>>>>>>>>[>>>>>>>>>]<<<<<<<< +<[>[->>>>>>>>>+<<<<<<<<<]<<<<<<<<<<]>[->>>>>>>>>+<<<<<<<<<]<+>>>>>>>>]<<<<<<<<<[ +>[-]<->>>[-<<<+>[<->-<<<<<<<+>>>>>>>]<[->+<]>>>]<<[->>+<<]<+<<<<<<<<<]>>>>>>>>>[ +>>>[-<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>]> +>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>[-]>>>>+++++++++++++++[[>>>>>>>>>]<<<<<<<<<-<<<<< +<<<<[<<<<<<<<<]>>>>>>>>>-]+[>>>[-<<<->>>]+<<<[->>>->[-<<<<+>>>>]<<<<[->>>>+<<<<< +<<<<<<<<[<<<<<<<<<]>>>>[-]+>>>>>[>>>>>>>>>]>+<]]+>>>>[-<<<<->>>>]+<<<<[->>>>-<[- +<<<+>>>]<<<[->>>+<<<<<<<<<<<<[<<<<<<<<<]>>>[-]+>>>>>>[>>>>>>>>>]>[-]+<]]+>[-<[>> +>>>>>>>]<<<<<<<<]>>>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>[-<<<+>>>]<<<[->>>+>>>>>>[>+>>> +[-<<<->>>]<<<[->>>+<<<]>>>>>>>>]<<<<<<<<+<[>[->+>[-<-<<<<<<<<<<+>>>>>>>>>>>>[-<< ++>>]<]>[-<<-<<<<<<<<<<+>>>>>>>>>>>>]<<<]>>[-<+>>[-<<-<<<<<<<<<<+>>>>>>>>>>>>]<]> +[-<<+>>]<<<<<<<<<<<<<]]>>>>[-<<<<+>>>>]<<<<[->>>>+>>>>>[>+>>[-<<->>]<<[->>+<<]>> +>>>>>>]<<<<<<<<+<[>[->+>>[-<<-<<<<<<<<<<+>>>>>>>>>>>[-<+>]>]<[-<-<<<<<<<<<<+>>>> +>>>>>>>]<<]>>>[-<<+>[-<-<<<<<<<<<<+>>>>>>>>>>>]>]<[-<+>]<<<<<<<<<<<<]>>>>>+<<<<< +]>>>>>>>>>[>>>[-]>[-]>[-]>>>>]<<<<<<<<<[<<<<<<<<<]>>>[-]>[-]>>>>>[>>>>>>>[-<<<<< +<+>>>>>>]<<<<<<[->>>>>>+<<<<+<<]>>>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>+>[-<-<<<<+>>>> +>]>>[-<<<<<<<[->>>>>+<++<<<<]>>>>>[-<<<<<+>>>>>]<->+>>]<<[->>+<<]<<<<<[->>>>>+<< +<<<]+>>>>[-<<<<->>>>]+<<<<[->>>>->>>>>[>>>[-<<<->>>]+<<<[->>>-<[-<<+>>]<<[->>+<< +<<<<<<<<<[<<<<<<<<<]>>>>[-]+>>>>>[>>>>>>>>>]>+<]]+>>[-<<->>]+<<[->>->[-<<<+>>>]< +<<[->>>+<<<<<<<<<<<<[<<<<<<<<<]>>>[-]+>>>>>>[>>>>>>>>>]>[-]+<]]+>[-<[>>>>>>>>>]< +<<<<<<<]>>>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>[-<<<+>>>]<<<[->>>+>>>>>>[>+>[-<->]<[->+ +<]>>>>>>>>]<<<<<<<<+<[>[->>>>+<<[->>-<<<<<<<<<<<<<+>>>>>>>>>>[->>>+<<<]>]<[->>>- +<<<<<<<<<<<<<+>>>>>>>>>>]<]>>[->>+<<<[->>>-<<<<<<<<<<<<<+>>>>>>>>>>]>]<[->>>+<<< +]<<<<<<<<<<<]>>>>>[-]>>[-<<<<<<<+>>>>>>>]<<<<<<<[->>>>>>>+<<+<<<<<]]>>>>[-<<<<+> +>>>]<<<<[->>>>+>>>>>[>+>>[-<<->>]<<[->>+<<]>>>>>>>>]<<<<<<<<+<[>[->>>>+<<<[->>>- +<<<<<<<<<<<<<+>>>>>>>>>>>[->>+<<]<]>[->>-<<<<<<<<<<<<<+>>>>>>>>>>>]<<]>[->>>+<<[ +->>-<<<<<<<<<<<<<+>>>>>>>>>>>]<]>[->>+<<]<<<<<<<<<<<<]]>>>>[-]<<<<]>>>>[-<<<<+>> +>>]<<<<[->>>>+>[-]>>[-<<<<<<<+>>>>>>>]<<<<<<<[->>>>>>>+<<+<<<<<]>>>>>>>>>[>>>>>> +>>>]<<<<<<<<<[>[->>>>+<<<[->>>-<<<<<<<<<<<<<+>>>>>>>>>>>[->>+<<]<]>[->>-<<<<<<<< +<<<<<+>>>>>>>>>>>]<<]>[->>>+<<[->>-<<<<<<<<<<<<<+>>>>>>>>>>>]<]>[->>+<<]<<<<<<<< +<<<<]]>>>>>>>>>[>>[-]>[-]>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>[-]>[-]>>>>>[>>>>>[-<<<<+ +>>>>]<<<<[->>>>+<<<+<]>>>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>[>>>>>>[-<<<<<+>>>>> +]<<<<<[->>>>>+<<<+<<]>>>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>+++++++++++++++[[>>>> +>>>>>]+>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>-]+[>+>> +>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>[>->>>>[-<<<<+>>>>]<<<<[->>>>+<<<<<[->>[-<<+ +>>]<<[->>+>>+<<<<]+>>>>>>>>>]<<<<<<<<[<<<<<<<<<]]>>>>>>>>>[>>>>>>>>>]<<<<<<<<<[> +[->>>>>>>>>+<<<<<<<<<]<<<<<<<<<<]>[->>>>>>>>>+<<<<<<<<<]<+>>>>>>>>]<<<<<<<<<[>[- +]<->>>>[-<<<<+>[<->-<<<<<<+>>>>>>]<[->+<]>>>>]<<<[->>>+<<<]<+<<<<<<<<<]>>>>>>>>> +[>+>>>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>[>->>>>>[-<<<<<+>>>>>]<<<<<[->>>>>+<<<< +<<[->>>[-<<<+>>>]<<<[->>>+>+<<<<]+>>>>>>>>>]<<<<<<<<[<<<<<<<<<]]>>>>>>>>>[>>>>>> +>>>]<<<<<<<<<[>>[->>>>>>>>>+<<<<<<<<<]<<<<<<<<<<<]>>[->>>>>>>>>+<<<<<<<<<]<<+>>> +>>>>>]<<<<<<<<<[>[-]<->>>>[-<<<<+>[<->-<<<<<<+>>>>>>]<[->+<]>>>>]<<<[->>>+<<<]<+ +<<<<<<<<<]>>>>>>>>>[>>>>[-<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>> +>>>>>>>>>>>>>>>>>>>]>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>+++++++++++++++[[>>>>>>>> +>]<<<<<<<<<-<<<<<<<<<[<<<<<<<<<]>>>>>>>>>-]+>>>>>>>>>>>>>>>>>>>>>+<<<[<<<<<<<<<] +>>>>>>>>>[>>>[-<<<->>>]+<<<[->>>->[-<<<<+>>>>]<<<<[->>>>+<<<<<<<<<<<<<[<<<<<<<<< +]>>>>[-]+>>>>>[>>>>>>>>>]>+<]]+>>>>[-<<<<->>>>]+<<<<[->>>>-<[-<<<+>>>]<<<[->>>+< +<<<<<<<<<<<[<<<<<<<<<]>>>[-]+>>>>>>[>>>>>>>>>]>[-]+<]]+>[-<[>>>>>>>>>]<<<<<<<<]> +>>>>>>>]<<<<<<<<<[<<<<<<<<<]>>->>[-<<<<+>>>>]<<<<[->>>>+<<[-]<<]>>]<<+>>>>[-<<<< +->>>>]+<<<<[->>>>-<<<<<<.>>]>>>>[-<<<<<<<.>>>>>>>]<<<[-]>[-]>[-]>[-]>[-]>[-]>>>[ +>[-]>[-]>[-]>[-]>[-]>[-]>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>[>>>>>[-]>>>>]<<<<<<<<< +[<<<<<<<<<]>+++++++++++[-[->>>>>>>>>+<<<<<<<<<]>>>>>>>>>]>>>>+>>>>>>>>>+<<<<<<<< +<<<<<<[<<<<<<<<<]>>>>>>>[-<<<<<<<+>>>>>>>]<<<<<<<[->>>>>>>+[-]>>[>>>>>>>>>]<<<<< +<<<<[>>>>>>>[-<<<<<<+>>>>>>]<<<<<<[->>>>>>+<<<<<<<[<<<<<<<<<]>>>>>>>[-]+>>>]<<<< +<<<<<<]]>>>>>>>[-<<<<<<<+>>>>>>>]<<<<<<<[->>>>>>>+>>[>+>>>>[-<<<<->>>>]<<<<[->>> +>+<<<<]>>>>>>>>]<<+<<<<<<<[>>>>>[->>+<<]<<<<<<<<<<<<<<]>>>>>>>>>[>>>>>>>>>]<<<<< +<<<<[>[-]<->>>>>>>[-<<<<<<<+>[<->-<<<+>>>]<[->+<]>>>>>>>]<<<<<<[->>>>>>+<<<<<<]< ++<<<<<<<<<]>>>>>>>-<<<<[-]+<<<]+>>>>>>>[-<<<<<<<->>>>>>>]+<<<<<<<[->>>>>>>->>[>> +>>>[->>+<<]>>>>]<<<<<<<<<[>[-]<->>>>>>>[-<<<<<<<+>[<->-<<<+>>>]<[->+<]>>>>>>>]<< +<<<<[->>>>>>+<<<<<<]<+<<<<<<<<<]>+++++[-[->>>>>>>>>+<<<<<<<<<]>>>>>>>>>]>>>>+<<< +<<[<<<<<<<<<]>>>>>>>>>[>>>>>[-<<<<<->>>>>]+<<<<<[->>>>>->>[-<<<<<<<+>>>>>>>]<<<< +<<<[->>>>>>>+<<<<<<<<<<<<<<<<[<<<<<<<<<]>>>>[-]+>>>>>[>>>>>>>>>]>+<]]+>>>>>>>[-< +<<<<<<->>>>>>>]+<<<<<<<[->>>>>>>-<<[-<<<<<+>>>>>]<<<<<[->>>>>+<<<<<<<<<<<<<<[<<< +<<<<<<]>>>[-]+>>>>>>[>>>>>>>>>]>[-]+<]]+>[-<[>>>>>>>>>]<<<<<<<<]>>>>>>>>]<<<<<<< +<<[<<<<<<<<<]>>>>[-]<<<+++++[-[->>>>>>>>>+<<<<<<<<<]>>>>>>>>>]>>>>-<<<<<[<<<<<<< +<<]]>>>]<<<<.>>>>>>>>>>[>>>>>>[-]>>>]<<<<<<<<<[<<<<<<<<<]>++++++++++[-[->>>>>>>> +>+<<<<<<<<<]>>>>>>>>>]>>>>>+>>>>>>>>>+<<<<<<<<<<<<<<<[<<<<<<<<<]>>>>>>>>[-<<<<<< +<<+>>>>>>>>]<<<<<<<<[->>>>>>>>+[-]>[>>>>>>>>>]<<<<<<<<<[>>>>>>>>[-<<<<<<<+>>>>>> +>]<<<<<<<[->>>>>>>+<<<<<<<<[<<<<<<<<<]>>>>>>>>[-]+>>]<<<<<<<<<<]]>>>>>>>>[-<<<<< +<<<+>>>>>>>>]<<<<<<<<[->>>>>>>>+>[>+>>>>>[-<<<<<->>>>>]<<<<<[->>>>>+<<<<<]>>>>>> +>>]<+<<<<<<<<[>>>>>>[->>+<<]<<<<<<<<<<<<<<<]>>>>>>>>>[>>>>>>>>>]<<<<<<<<<[>[-]<- +>>>>>>>>[-<<<<<<<<+>[<->-<<+>>]<[->+<]>>>>>>>>]<<<<<<<[->>>>>>>+<<<<<<<]<+<<<<<< +<<<]>>>>>>>>-<<<<<[-]+<<<]+>>>>>>>>[-<<<<<<<<->>>>>>>>]+<<<<<<<<[->>>>>>>>->[>>> +>>>[->>+<<]>>>]<<<<<<<<<[>[-]<->>>>>>>>[-<<<<<<<<+>[<->-<<+>>]<[->+<]>>>>>>>>]<< +<<<<<[->>>>>>>+<<<<<<<]<+<<<<<<<<<]>+++++[-[->>>>>>>>>+<<<<<<<<<]>>>>>>>>>]>>>>> ++>>>>>>>>>>>>>>>>>>>>>>>>>>>+<<<<<<[<<<<<<<<<]>>>>>>>>>[>>>>>>[-<<<<<<->>>>>>]+< +<<<<<[->>>>>>->>[-<<<<<<<<+>>>>>>>>]<<<<<<<<[->>>>>>>>+<<<<<<<<<<<<<<<<<[<<<<<<< +<<]>>>>[-]+>>>>>[>>>>>>>>>]>+<]]+>>>>>>>>[-<<<<<<<<->>>>>>>>]+<<<<<<<<[->>>>>>>> +-<<[-<<<<<<+>>>>>>]<<<<<<[->>>>>>+<<<<<<<<<<<<<<<[<<<<<<<<<]>>>[-]+>>>>>>[>>>>>> +>>>]>[-]+<]]+>[-<[>>>>>>>>>]<<<<<<<<]>>>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>[-]<<<++++ ++[-[->>>>>>>>>+<<<<<<<<<]>>>>>>>>>]>>>>>->>>>>>>>>>>>>>>>>>>>>>>>>>>-<<<<<<[<<<< +<<<<<]]>>>]""", "mand") + + diff -r c112a6cb5e52 -r 183663740fb7 progs/loops.j --- a/progs/loops.j Tue Jan 28 12:23:53 2020 +0000 +++ b/progs/loops.j Mon Feb 03 01:10:16 2020 +0000 @@ -2,29 +2,13 @@ .class public loops.loops .super java/lang/Object -.method public ()V - aload_0 - invokenonvirtual java/lang/Object/()V - return -.end method - .method public static write(I)V - .limit locals 5 - .limit stack 5 - iload 0 + .limit locals 1 + .limit stack 2 getstatic java/lang/System/out Ljava/io/PrintStream; - swap - invokevirtual java/io/PrintStream/println(I)V - return -.end method - -.method public static write(S)V - .limit locals 5 - .limit stack 5 - iload 0 - getstatic java/lang/System/out Ljava/io/PrintStream; - swap - invokevirtual java/io/PrintStream/println(S)V + iload 0 + i2c ; Int => Char + invokevirtual java/io/PrintStream/print(C)V ; println(I)V => print(C)V return .end method @@ -32,62 +16,62 @@ .limit locals 200 .limit stack 200 -ldc 1000 -istore 0 -iload 0 -istore 1 -iload 0 -istore 2 -iload 0 -istore 3 - -Loop_begin_0: - -ldc 0 -iload 1 -if_icmpge Loop_end_1 - -Loop_begin_2: - -ldc 0 -iload 2 -if_icmpge Loop_end_3 - -Loop_begin_4: +; COMPILED CODE STARTS -ldc 0 -iload 3 -if_icmpge Loop_end_5 -iload 3 -ldc 1 -isub -istore 3 -goto Loop_begin_4 - -Loop_end_5: + ldc 200000 + istore 0 ; start + iload 0 + istore 1 ; x1 + iload 0 + istore 2 ; x2 + iload 0 + istore 3 ; x3 +Loop_begin_90: + ldc 0 + iload 1 + if_icmpge Loop_end_91 +Loop_begin_92: + ldc 0 + iload 2 + if_icmpge Loop_end_93 +Loop_begin_94: + ldc 0 + iload 3 + if_icmpge Loop_end_95 + iload 3 + ldc 1 + isub + istore 3 ; x3 + ;; test start + bipush 1 + bipush 1 + bipush 1 + bipush 1 + pop + pop + pop + pop + ;; test end + goto Loop_begin_94 +Loop_end_95: + iload 0 + istore 3 ; x3 + iload 2 + ldc 1 + isub + istore 2 ; x2 + goto Loop_begin_92 +Loop_end_93: + iload 0 + istore 2 ; x2 + iload 1 + ldc 1 + isub + istore 1 ; x1 + goto Loop_begin_90 +Loop_end_91: -iload 0 -istore 3 -iload 2 -ldc 1 -isub -istore 2 -goto Loop_begin_2 - -Loop_end_3: - -iload 0 -istore 2 -iload 1 -ldc 1 -isub -istore 1 -goto Loop_begin_0 - -Loop_end_1: - - - +; COMPILED CODE ENDS return .end method diff -r c112a6cb5e52 -r 183663740fb7 progs/test-small.j --- a/progs/test-small.j Tue Jan 28 12:23:53 2020 +0000 +++ b/progs/test-small.j Mon Feb 03 01:10:16 2020 +0000 @@ -26,4 +26,4 @@ $\tikz[remember picture] \node[] (LC) {};$ iload 0 $\tikz[remember picture] \node[] (LD) {};$ invokestatic test/test/write(I)V return -.end method +.end method \ No newline at end of file