updated
authorChristian Urban <urbanc@in.tum.de>
Mon, 03 Feb 2020 01:10:16 +0000
changeset 710 183663740fb7
parent 709 c112a6cb5e52
child 711 6f3f3dd01786
updated
Attic/bench.prs
Attic/fact.prs
Attic/fibs.prs
Attic/mand.prs
Attic/sier.prs
handouts/ho05.tex
handouts/ho07.pdf
handouts/ho07.tex
progs/compile_arr.scala
progs/compile_arr2.scala
progs/loops.j
progs/test-small.j
--- /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
Binary file Attic/fact.prs has changed
--- /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
--- /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
--- /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
--- 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)}
Binary file handouts/ho07.pdf has changed
--- 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
--- 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")
+*/
--- 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")
+
+
--- 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 <init>()V
-   aload_0
-   invokenonvirtual java/lang/Object/<init>()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
--- 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