diff --git a/00/file.txt b/0/file.txt
similarity index 98%
rename from 00/file.txt
rename to 0/file.txt
index ff654e3..b7eeed1 100644
--- a/00/file.txt
+++ b/0/file.txt
@@ -1,6 +1,6 @@
The only purpose of this file is to practice submitting files
-in the Nand to Tetris course websites in Coursera.
-
-There is no need to modify the contents of this file.
-All you have to do is submit it as is, following the
+in the Nand to Tetris course websites in Coursera.
+
+There is no need to modify the contents of this file.
+All you have to do is submit it as is, following the
Project 0 guidelines in the website.
\ No newline at end of file
diff --git a/01/And.cmp b/01/And.cmp
deleted file mode 100644
index 75e709a..0000000
--- a/01/And.cmp
+++ /dev/null
@@ -1,5 +0,0 @@
-| a | b | out |
-| 0 | 0 | 0 |
-| 0 | 1 | 0 |
-| 1 | 0 | 0 |
-| 1 | 1 | 1 |
diff --git a/01/DMux.cmp b/01/DMux.cmp
deleted file mode 100644
index 6982094..0000000
--- a/01/DMux.cmp
+++ /dev/null
@@ -1,5 +0,0 @@
-| in | sel | a | b |
-| 0 | 0 | 0 | 0 |
-| 0 | 1 | 0 | 0 |
-| 1 | 0 | 1 | 0 |
-| 1 | 1 | 0 | 1 |
diff --git a/01/DMux4Way.cmp b/01/DMux4Way.cmp
deleted file mode 100644
index eac35c4..0000000
--- a/01/DMux4Way.cmp
+++ /dev/null
@@ -1,9 +0,0 @@
-| in | sel | a | b | c | d |
-| 0 | 00 | 0 | 0 | 0 | 0 |
-| 0 | 01 | 0 | 0 | 0 | 0 |
-| 0 | 10 | 0 | 0 | 0 | 0 |
-| 0 | 11 | 0 | 0 | 0 | 0 |
-| 1 | 00 | 1 | 0 | 0 | 0 |
-| 1 | 01 | 0 | 1 | 0 | 0 |
-| 1 | 10 | 0 | 0 | 1 | 0 |
-| 1 | 11 | 0 | 0 | 0 | 1 |
diff --git a/01/DMux4Way.hdl b/01/DMux4Way.hdl
deleted file mode 100644
index 24270c0..0000000
--- a/01/DMux4Way.hdl
+++ /dev/null
@@ -1,20 +0,0 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/01/DMux4Way.hdl
-
-/**
- * 4-way demultiplexor:
- * {a, b, c, d} = {in, 0, 0, 0} if sel == 00
- * {0, in, 0, 0} if sel == 01
- * {0, 0, in, 0} if sel == 10
- * {0, 0, 0, in} if sel == 11
- */
-
-CHIP DMux4Way {
- IN in, sel[2];
- OUT a, b, c, d;
-
- PARTS:
- // Put your code here:
-}
\ No newline at end of file
diff --git a/01/DMux8Way.cmp b/01/DMux8Way.cmp
deleted file mode 100644
index 375d44a..0000000
--- a/01/DMux8Way.cmp
+++ /dev/null
@@ -1,17 +0,0 @@
-| in | sel | a | b | c | d | e | f | g | h |
-| 0 | 000 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
-| 0 | 001 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
-| 0 | 010 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
-| 0 | 011 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
-| 0 | 100 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
-| 0 | 101 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
-| 0 | 110 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
-| 0 | 111 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
-| 1 | 000 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
-| 1 | 001 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
-| 1 | 010 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
-| 1 | 011 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
-| 1 | 100 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
-| 1 | 101 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
-| 1 | 110 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
-| 1 | 111 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
diff --git a/01/DMux8Way.hdl b/01/DMux8Way.hdl
deleted file mode 100644
index 75714a5..0000000
--- a/01/DMux8Way.hdl
+++ /dev/null
@@ -1,20 +0,0 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/01/DMux8Way.hdl
-
-/**
- * 8-way demultiplexor:
- * {a, b, c, d, e, f, g, h} = {in, 0, 0, 0, 0, 0, 0, 0} if sel == 000
- * {0, in, 0, 0, 0, 0, 0, 0} if sel == 001
- * etc.
- * {0, 0, 0, 0, 0, 0, 0, in} if sel == 111
- */
-
-CHIP DMux8Way {
- IN in, sel[3];
- OUT a, b, c, d, e, f, g, h;
-
- PARTS:
- // Put your code here:
-}
\ No newline at end of file
diff --git a/01/Mux.cmp b/01/Mux.cmp
deleted file mode 100644
index 7a5cc5b..0000000
--- a/01/Mux.cmp
+++ /dev/null
@@ -1,9 +0,0 @@
-| a | b | sel | out |
-| 0 | 0 | 0 | 0 |
-| 0 | 0 | 1 | 0 |
-| 0 | 1 | 0 | 0 |
-| 0 | 1 | 1 | 1 |
-| 1 | 0 | 0 | 1 |
-| 1 | 0 | 1 | 0 |
-| 1 | 1 | 0 | 1 |
-| 1 | 1 | 1 | 1 |
diff --git a/01/Mux16.cmp b/01/Mux16.cmp
deleted file mode 100644
index 661ee67..0000000
--- a/01/Mux16.cmp
+++ /dev/null
@@ -1,9 +0,0 @@
-| a | b | sel | out |
-| 0000000000000000 | 0000000000000000 | 0 | 0000000000000000 |
-| 0000000000000000 | 0000000000000000 | 1 | 0000000000000000 |
-| 0000000000000000 | 0001001000110100 | 0 | 0000000000000000 |
-| 0000000000000000 | 0001001000110100 | 1 | 0001001000110100 |
-| 1001100001110110 | 0000000000000000 | 0 | 1001100001110110 |
-| 1001100001110110 | 0000000000000000 | 1 | 0000000000000000 |
-| 1010101010101010 | 0101010101010101 | 0 | 1010101010101010 |
-| 1010101010101010 | 0101010101010101 | 1 | 0101010101010101 |
diff --git a/01/Not.cmp b/01/Not.cmp
deleted file mode 100644
index e8c1191..0000000
--- a/01/Not.cmp
+++ /dev/null
@@ -1,3 +0,0 @@
-| in | out |
-| 0 | 1 |
-| 1 | 0 |
diff --git a/01/Or.cmp b/01/Or.cmp
deleted file mode 100644
index dab924c..0000000
--- a/01/Or.cmp
+++ /dev/null
@@ -1,5 +0,0 @@
-| a | b | out |
-| 0 | 0 | 0 |
-| 0 | 1 | 1 |
-| 1 | 0 | 1 |
-| 1 | 1 | 1 |
diff --git a/01/Or8Way.cmp b/01/Or8Way.cmp
deleted file mode 100644
index 3f9fd54..0000000
--- a/01/Or8Way.cmp
+++ /dev/null
@@ -1,6 +0,0 @@
-| in | out |
-| 00000000 | 0 |
-| 11111111 | 1 |
-| 00010000 | 1 |
-| 00000001 | 1 |
-| 00100110 | 1 |
diff --git a/01/Xor.cmp b/01/Xor.cmp
deleted file mode 100644
index a1e07b2..0000000
--- a/01/Xor.cmp
+++ /dev/null
@@ -1,5 +0,0 @@
-| a | b | out |
-| 0 | 0 | 0 |
-| 0 | 1 | 1 |
-| 1 | 0 | 1 |
-| 1 | 1 | 0 |
diff --git a/02/ALU.hdl b/02/ALU.hdl
deleted file mode 100644
index 9a753e3..0000000
--- a/02/ALU.hdl
+++ /dev/null
@@ -1,46 +0,0 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/02/ALU.hdl
-
-/**
- * The ALU (Arithmetic Logic Unit).
- * Computes one of the following functions:
- * x+y, x-y, y-x, 0, 1, -1, x, y, -x, -y, !x, !y,
- * x+1, y+1, x-1, y-1, x&y, x|y on two 16-bit inputs,
- * according to 6 input bits denoted zx,nx,zy,ny,f,no.
- * In addition, the ALU computes two 1-bit outputs:
- * if the ALU output == 0, zr is set to 1; otherwise zr is set to 0;
- * if the ALU output < 0, ng is set to 1; otherwise ng is set to 0.
- */
-
-// Implementation: the ALU logic manipulates the x and y inputs
-// and operates on the resulting values, as follows:
-// if (zx == 1) set x = 0 // 16-bit constant
-// if (nx == 1) set x = !x // bitwise not
-// if (zy == 1) set y = 0 // 16-bit constant
-// if (ny == 1) set y = !y // bitwise not
-// if (f == 1) set out = x + y // integer 2's complement addition
-// if (f == 0) set out = x & y // bitwise and
-// if (no == 1) set out = !out // bitwise not
-// if (out == 0) set zr = 1
-// if (out < 0) set ng = 1
-
-CHIP ALU {
- IN
- x[16], y[16], // 16-bit inputs
- zx, // zero the x input?
- nx, // negate the x input?
- zy, // zero the y input?
- ny, // negate the y input?
- f, // compute out = x + y (if 1) or x & y (if 0)
- no; // negate the out output?
-
- OUT
- out[16], // 16-bit output
- zr, // 1 if (out == 0), 0 otherwise
- ng; // 1 if (out < 0), 0 otherwise
-
- PARTS:
- // Put you code here:
-}
\ No newline at end of file
diff --git a/02/FullAdder.cmp b/02/FullAdder.cmp
deleted file mode 100644
index 84551aa..0000000
--- a/02/FullAdder.cmp
+++ /dev/null
@@ -1,9 +0,0 @@
-| a | b | c | sum | carry |
-| 0 | 0 | 0 | 0 | 0 |
-| 0 | 0 | 1 | 1 | 0 |
-| 0 | 1 | 0 | 1 | 0 |
-| 0 | 1 | 1 | 0 | 1 |
-| 1 | 0 | 0 | 1 | 0 |
-| 1 | 0 | 1 | 0 | 1 |
-| 1 | 1 | 0 | 0 | 1 |
-| 1 | 1 | 1 | 1 | 1 |
diff --git a/02/HalfAdder.cmp b/02/HalfAdder.cmp
deleted file mode 100644
index 911c770..0000000
--- a/02/HalfAdder.cmp
+++ /dev/null
@@ -1,5 +0,0 @@
-| a | b | sum | carry |
-| 0 | 0 | 0 | 0 |
-| 0 | 1 | 1 | 0 |
-| 1 | 0 | 1 | 0 |
-| 1 | 1 | 0 | 1 |
diff --git a/03/a/Bit.cmp b/03/a/Bit.cmp
deleted file mode 100644
index e900ec7..0000000
--- a/03/a/Bit.cmp
+++ /dev/null
@@ -1,215 +0,0 @@
-| time | in |load | out |
-| 0+ | 0 | 0 | 0 |
-| 1 | 0 | 0 | 0 |
-| 1+ | 0 | 1 | 0 |
-| 2 | 0 | 1 | 0 |
-| 2+ | 1 | 0 | 0 |
-| 3 | 1 | 0 | 0 |
-| 3+ | 1 | 1 | 0 |
-| 4 | 1 | 1 | 1 |
-| 4+ | 0 | 0 | 1 |
-| 5 | 0 | 0 | 1 |
-| 5+ | 1 | 0 | 1 |
-| 6 | 1 | 0 | 1 |
-| 6+ | 0 | 1 | 1 |
-| 7 | 0 | 1 | 0 |
-| 7+ | 1 | 1 | 0 |
-| 8 | 1 | 1 | 1 |
-| 8+ | 0 | 0 | 1 |
-| 9 | 0 | 0 | 1 |
-| 9+ | 0 | 0 | 1 |
-| 10 | 0 | 0 | 1 |
-| 10+ | 0 | 0 | 1 |
-| 11 | 0 | 0 | 1 |
-| 11+ | 0 | 0 | 1 |
-| 12 | 0 | 0 | 1 |
-| 12+ | 0 | 0 | 1 |
-| 13 | 0 | 0 | 1 |
-| 13+ | 0 | 0 | 1 |
-| 14 | 0 | 0 | 1 |
-| 14+ | 0 | 0 | 1 |
-| 15 | 0 | 0 | 1 |
-| 15+ | 0 | 0 | 1 |
-| 16 | 0 | 0 | 1 |
-| 16+ | 0 | 0 | 1 |
-| 17 | 0 | 0 | 1 |
-| 17+ | 0 | 0 | 1 |
-| 18 | 0 | 0 | 1 |
-| 18+ | 0 | 0 | 1 |
-| 19 | 0 | 0 | 1 |
-| 19+ | 0 | 0 | 1 |
-| 20 | 0 | 0 | 1 |
-| 20+ | 0 | 0 | 1 |
-| 21 | 0 | 0 | 1 |
-| 21+ | 0 | 0 | 1 |
-| 22 | 0 | 0 | 1 |
-| 22+ | 0 | 0 | 1 |
-| 23 | 0 | 0 | 1 |
-| 23+ | 0 | 0 | 1 |
-| 24 | 0 | 0 | 1 |
-| 24+ | 0 | 0 | 1 |
-| 25 | 0 | 0 | 1 |
-| 25+ | 0 | 0 | 1 |
-| 26 | 0 | 0 | 1 |
-| 26+ | 0 | 0 | 1 |
-| 27 | 0 | 0 | 1 |
-| 27+ | 0 | 0 | 1 |
-| 28 | 0 | 0 | 1 |
-| 28+ | 0 | 0 | 1 |
-| 29 | 0 | 0 | 1 |
-| 29+ | 0 | 0 | 1 |
-| 30 | 0 | 0 | 1 |
-| 30+ | 0 | 0 | 1 |
-| 31 | 0 | 0 | 1 |
-| 31+ | 0 | 0 | 1 |
-| 32 | 0 | 0 | 1 |
-| 32+ | 0 | 0 | 1 |
-| 33 | 0 | 0 | 1 |
-| 33+ | 0 | 0 | 1 |
-| 34 | 0 | 0 | 1 |
-| 34+ | 0 | 0 | 1 |
-| 35 | 0 | 0 | 1 |
-| 35+ | 0 | 0 | 1 |
-| 36 | 0 | 0 | 1 |
-| 36+ | 0 | 0 | 1 |
-| 37 | 0 | 0 | 1 |
-| 37+ | 0 | 0 | 1 |
-| 38 | 0 | 0 | 1 |
-| 38+ | 0 | 0 | 1 |
-| 39 | 0 | 0 | 1 |
-| 39+ | 0 | 0 | 1 |
-| 40 | 0 | 0 | 1 |
-| 40+ | 0 | 0 | 1 |
-| 41 | 0 | 0 | 1 |
-| 41+ | 0 | 0 | 1 |
-| 42 | 0 | 0 | 1 |
-| 42+ | 0 | 0 | 1 |
-| 43 | 0 | 0 | 1 |
-| 43+ | 0 | 0 | 1 |
-| 44 | 0 | 0 | 1 |
-| 44+ | 0 | 0 | 1 |
-| 45 | 0 | 0 | 1 |
-| 45+ | 0 | 0 | 1 |
-| 46 | 0 | 0 | 1 |
-| 46+ | 0 | 0 | 1 |
-| 47 | 0 | 0 | 1 |
-| 47+ | 0 | 0 | 1 |
-| 48 | 0 | 0 | 1 |
-| 48+ | 0 | 0 | 1 |
-| 49 | 0 | 0 | 1 |
-| 49+ | 0 | 0 | 1 |
-| 50 | 0 | 0 | 1 |
-| 50+ | 0 | 0 | 1 |
-| 51 | 0 | 0 | 1 |
-| 51+ | 0 | 0 | 1 |
-| 52 | 0 | 0 | 1 |
-| 52+ | 0 | 0 | 1 |
-| 53 | 0 | 0 | 1 |
-| 53+ | 0 | 0 | 1 |
-| 54 | 0 | 0 | 1 |
-| 54+ | 0 | 0 | 1 |
-| 55 | 0 | 0 | 1 |
-| 55+ | 0 | 0 | 1 |
-| 56 | 0 | 0 | 1 |
-| 56+ | 0 | 0 | 1 |
-| 57 | 0 | 0 | 1 |
-| 57+ | 0 | 1 | 1 |
-| 58 | 0 | 1 | 0 |
-| 58+ | 1 | 0 | 0 |
-| 59 | 1 | 0 | 0 |
-| 59+ | 1 | 0 | 0 |
-| 60 | 1 | 0 | 0 |
-| 60+ | 1 | 0 | 0 |
-| 61 | 1 | 0 | 0 |
-| 61+ | 1 | 0 | 0 |
-| 62 | 1 | 0 | 0 |
-| 62+ | 1 | 0 | 0 |
-| 63 | 1 | 0 | 0 |
-| 63+ | 1 | 0 | 0 |
-| 64 | 1 | 0 | 0 |
-| 64+ | 1 | 0 | 0 |
-| 65 | 1 | 0 | 0 |
-| 65+ | 1 | 0 | 0 |
-| 66 | 1 | 0 | 0 |
-| 66+ | 1 | 0 | 0 |
-| 67 | 1 | 0 | 0 |
-| 67+ | 1 | 0 | 0 |
-| 68 | 1 | 0 | 0 |
-| 68+ | 1 | 0 | 0 |
-| 69 | 1 | 0 | 0 |
-| 69+ | 1 | 0 | 0 |
-| 70 | 1 | 0 | 0 |
-| 70+ | 1 | 0 | 0 |
-| 71 | 1 | 0 | 0 |
-| 71+ | 1 | 0 | 0 |
-| 72 | 1 | 0 | 0 |
-| 72+ | 1 | 0 | 0 |
-| 73 | 1 | 0 | 0 |
-| 73+ | 1 | 0 | 0 |
-| 74 | 1 | 0 | 0 |
-| 74+ | 1 | 0 | 0 |
-| 75 | 1 | 0 | 0 |
-| 75+ | 1 | 0 | 0 |
-| 76 | 1 | 0 | 0 |
-| 76+ | 1 | 0 | 0 |
-| 77 | 1 | 0 | 0 |
-| 77+ | 1 | 0 | 0 |
-| 78 | 1 | 0 | 0 |
-| 78+ | 1 | 0 | 0 |
-| 79 | 1 | 0 | 0 |
-| 79+ | 1 | 0 | 0 |
-| 80 | 1 | 0 | 0 |
-| 80+ | 1 | 0 | 0 |
-| 81 | 1 | 0 | 0 |
-| 81+ | 1 | 0 | 0 |
-| 82 | 1 | 0 | 0 |
-| 82+ | 1 | 0 | 0 |
-| 83 | 1 | 0 | 0 |
-| 83+ | 1 | 0 | 0 |
-| 84 | 1 | 0 | 0 |
-| 84+ | 1 | 0 | 0 |
-| 85 | 1 | 0 | 0 |
-| 85+ | 1 | 0 | 0 |
-| 86 | 1 | 0 | 0 |
-| 86+ | 1 | 0 | 0 |
-| 87 | 1 | 0 | 0 |
-| 87+ | 1 | 0 | 0 |
-| 88 | 1 | 0 | 0 |
-| 88+ | 1 | 0 | 0 |
-| 89 | 1 | 0 | 0 |
-| 89+ | 1 | 0 | 0 |
-| 90 | 1 | 0 | 0 |
-| 90+ | 1 | 0 | 0 |
-| 91 | 1 | 0 | 0 |
-| 91+ | 1 | 0 | 0 |
-| 92 | 1 | 0 | 0 |
-| 92+ | 1 | 0 | 0 |
-| 93 | 1 | 0 | 0 |
-| 93+ | 1 | 0 | 0 |
-| 94 | 1 | 0 | 0 |
-| 94+ | 1 | 0 | 0 |
-| 95 | 1 | 0 | 0 |
-| 95+ | 1 | 0 | 0 |
-| 96 | 1 | 0 | 0 |
-| 96+ | 1 | 0 | 0 |
-| 97 | 1 | 0 | 0 |
-| 97+ | 1 | 0 | 0 |
-| 98 | 1 | 0 | 0 |
-| 98+ | 1 | 0 | 0 |
-| 99 | 1 | 0 | 0 |
-| 99+ | 1 | 0 | 0 |
-| 100 | 1 | 0 | 0 |
-| 100+ | 1 | 0 | 0 |
-| 101 | 1 | 0 | 0 |
-| 101+ | 1 | 0 | 0 |
-| 102 | 1 | 0 | 0 |
-| 102+ | 1 | 0 | 0 |
-| 103 | 1 | 0 | 0 |
-| 103+ | 1 | 0 | 0 |
-| 104 | 1 | 0 | 0 |
-| 104+ | 1 | 0 | 0 |
-| 105 | 1 | 0 | 0 |
-| 105+ | 1 | 0 | 0 |
-| 106 | 1 | 0 | 0 |
-| 106+ | 1 | 0 | 0 |
-| 107 | 1 | 0 | 0 |
diff --git a/03/a/Bit.hdl b/03/a/Bit.hdl
deleted file mode 100644
index 3064198..0000000
--- a/03/a/Bit.hdl
+++ /dev/null
@@ -1,18 +0,0 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/03/a/Bit.hdl
-
-/**
- * 1-bit register:
- * If load[t] == 1 then out[t+1] = in[t]
- * else out does not change (out[t+1] = out[t])
- */
-
-CHIP Bit {
- IN in, load;
- OUT out;
-
- PARTS:
- // Put your code here:
-}
diff --git a/03/a/PC.cmp b/03/a/PC.cmp
deleted file mode 100644
index 6a050d9..0000000
--- a/03/a/PC.cmp
+++ /dev/null
@@ -1,31 +0,0 @@
-| time | in |reset|load | inc | out |
-| 0+ | 0 | 0 | 0 | 0 | 0 |
-| 1 | 0 | 0 | 0 | 0 | 0 |
-| 1+ | 0 | 0 | 0 | 1 | 0 |
-| 2 | 0 | 0 | 0 | 1 | 1 |
-| 2+ | -32123 | 0 | 0 | 1 | 1 |
-| 3 | -32123 | 0 | 0 | 1 | 2 |
-| 3+ | -32123 | 0 | 1 | 1 | 2 |
-| 4 | -32123 | 0 | 1 | 1 | -32123 |
-| 4+ | -32123 | 0 | 0 | 1 | -32123 |
-| 5 | -32123 | 0 | 0 | 1 | -32122 |
-| 5+ | -32123 | 0 | 0 | 1 | -32122 |
-| 6 | -32123 | 0 | 0 | 1 | -32121 |
-| 6+ | 12345 | 0 | 1 | 0 | -32121 |
-| 7 | 12345 | 0 | 1 | 0 | 12345 |
-| 7+ | 12345 | 1 | 1 | 0 | 12345 |
-| 8 | 12345 | 1 | 1 | 0 | 0 |
-| 8+ | 12345 | 0 | 1 | 1 | 0 |
-| 9 | 12345 | 0 | 1 | 1 | 12345 |
-| 9+ | 12345 | 1 | 1 | 1 | 12345 |
-| 10 | 12345 | 1 | 1 | 1 | 0 |
-| 10+ | 12345 | 0 | 0 | 1 | 0 |
-| 11 | 12345 | 0 | 0 | 1 | 1 |
-| 11+ | 12345 | 1 | 0 | 1 | 1 |
-| 12 | 12345 | 1 | 0 | 1 | 0 |
-| 12+ | 0 | 0 | 1 | 1 | 0 |
-| 13 | 0 | 0 | 1 | 1 | 0 |
-| 13+ | 0 | 0 | 0 | 1 | 0 |
-| 14 | 0 | 0 | 0 | 1 | 1 |
-| 14+ | 22222 | 1 | 0 | 0 | 1 |
-| 15 | 22222 | 1 | 0 | 0 | 0 |
diff --git a/03/a/PC.hdl b/03/a/PC.hdl
deleted file mode 100644
index a326e43..0000000
--- a/03/a/PC.hdl
+++ /dev/null
@@ -1,20 +0,0 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/03/a/PC.hdl
-
-/**
- * A 16-bit counter with load and reset control bits.
- * if (reset[t] == 1) out[t+1] = 0
- * else if (load[t] == 1) out[t+1] = in[t]
- * else if (inc[t] == 1) out[t+1] = out[t] + 1 (integer addition)
- * else out[t+1] = out[t]
- */
-
-CHIP PC {
- IN in[16],load,inc,reset;
- OUT out[16];
-
- PARTS:
- // Put your code here:
-}
diff --git a/03/a/RAM64.cmp b/03/a/RAM64.cmp
deleted file mode 100644
index fdb7745..0000000
--- a/03/a/RAM64.cmp
+++ /dev/null
@@ -1,320 +0,0 @@
-| time | in |load |address| out |
-| 0+ | 0 | 0 | 0 | 0 |
-| 1 | 0 | 0 | 0 | 0 |
-| 1+ | 0 | 1 | 0 | 0 |
-| 2 | 0 | 1 | 0 | 0 |
-| 2+ | 1313 | 0 | 0 | 0 |
-| 3 | 1313 | 0 | 0 | 0 |
-| 3+ | 1313 | 1 | 13 | 0 |
-| 4 | 1313 | 1 | 13 | 1313 |
-| 4+ | 1313 | 0 | 0 | 0 |
-| 5 | 1313 | 0 | 0 | 0 |
-| 5+ | 4747 | 0 | 47 | 0 |
-| 6 | 4747 | 0 | 47 | 0 |
-| 6+ | 4747 | 1 | 47 | 0 |
-| 7 | 4747 | 1 | 47 | 4747 |
-| 7+ | 4747 | 0 | 47 | 4747 |
-| 8 | 4747 | 0 | 47 | 4747 |
-| 8 | 4747 | 0 | 13 | 1313 |
-| 8+ | 6363 | 0 | 13 | 1313 |
-| 9 | 6363 | 0 | 13 | 1313 |
-| 9+ | 6363 | 1 | 63 | 0 |
-| 10 | 6363 | 1 | 63 | 6363 |
-| 10+ | 6363 | 0 | 63 | 6363 |
-| 11 | 6363 | 0 | 63 | 6363 |
-| 11 | 6363 | 0 | 47 | 4747 |
-| 11 | 6363 | 0 | 63 | 6363 |
-| 11+ | 6363 | 0 | 40 | 0 |
-| 12 | 6363 | 0 | 40 | 0 |
-| 12 | 6363 | 0 | 41 | 0 |
-| 12 | 6363 | 0 | 42 | 0 |
-| 12 | 6363 | 0 | 43 | 0 |
-| 12 | 6363 | 0 | 44 | 0 |
-| 12 | 6363 | 0 | 45 | 0 |
-| 12 | 6363 | 0 | 46 | 0 |
-| 12 | 6363 | 0 | 47 | 4747 |
-| 12+ | 21845 | 1 | 40 | 0 |
-| 13 | 21845 | 1 | 40 | 21845 |
-| 13+ | 21845 | 1 | 41 | 0 |
-| 14 | 21845 | 1 | 41 | 21845 |
-| 14+ | 21845 | 1 | 42 | 0 |
-| 15 | 21845 | 1 | 42 | 21845 |
-| 15+ | 21845 | 1 | 43 | 0 |
-| 16 | 21845 | 1 | 43 | 21845 |
-| 16+ | 21845 | 1 | 44 | 0 |
-| 17 | 21845 | 1 | 44 | 21845 |
-| 17+ | 21845 | 1 | 45 | 0 |
-| 18 | 21845 | 1 | 45 | 21845 |
-| 18+ | 21845 | 1 | 46 | 0 |
-| 19 | 21845 | 1 | 46 | 21845 |
-| 19+ | 21845 | 1 | 47 | 4747 |
-| 20 | 21845 | 1 | 47 | 21845 |
-| 20+ | 21845 | 0 | 40 | 21845 |
-| 21 | 21845 | 0 | 40 | 21845 |
-| 21 | 21845 | 0 | 41 | 21845 |
-| 21 | 21845 | 0 | 42 | 21845 |
-| 21 | 21845 | 0 | 43 | 21845 |
-| 21 | 21845 | 0 | 44 | 21845 |
-| 21 | 21845 | 0 | 45 | 21845 |
-| 21 | 21845 | 0 | 46 | 21845 |
-| 21 | 21845 | 0 | 47 | 21845 |
-| 21+ | -21846 | 1 | 40 | 21845 |
-| 22 | -21846 | 1 | 40 | -21846 |
-| 22+ | -21846 | 0 | 40 | -21846 |
-| 23 | -21846 | 0 | 40 | -21846 |
-| 23 | -21846 | 0 | 41 | 21845 |
-| 23 | -21846 | 0 | 42 | 21845 |
-| 23 | -21846 | 0 | 43 | 21845 |
-| 23 | -21846 | 0 | 44 | 21845 |
-| 23 | -21846 | 0 | 45 | 21845 |
-| 23 | -21846 | 0 | 46 | 21845 |
-| 23 | -21846 | 0 | 47 | 21845 |
-| 23+ | 21845 | 1 | 40 | -21846 |
-| 24 | 21845 | 1 | 40 | 21845 |
-| 24+ | -21846 | 1 | 41 | 21845 |
-| 25 | -21846 | 1 | 41 | -21846 |
-| 25+ | -21846 | 0 | 40 | 21845 |
-| 26 | -21846 | 0 | 40 | 21845 |
-| 26 | -21846 | 0 | 41 | -21846 |
-| 26 | -21846 | 0 | 42 | 21845 |
-| 26 | -21846 | 0 | 43 | 21845 |
-| 26 | -21846 | 0 | 44 | 21845 |
-| 26 | -21846 | 0 | 45 | 21845 |
-| 26 | -21846 | 0 | 46 | 21845 |
-| 26 | -21846 | 0 | 47 | 21845 |
-| 26+ | 21845 | 1 | 41 | -21846 |
-| 27 | 21845 | 1 | 41 | 21845 |
-| 27+ | -21846 | 1 | 42 | 21845 |
-| 28 | -21846 | 1 | 42 | -21846 |
-| 28+ | -21846 | 0 | 40 | 21845 |
-| 29 | -21846 | 0 | 40 | 21845 |
-| 29 | -21846 | 0 | 41 | 21845 |
-| 29 | -21846 | 0 | 42 | -21846 |
-| 29 | -21846 | 0 | 43 | 21845 |
-| 29 | -21846 | 0 | 44 | 21845 |
-| 29 | -21846 | 0 | 45 | 21845 |
-| 29 | -21846 | 0 | 46 | 21845 |
-| 29 | -21846 | 0 | 47 | 21845 |
-| 29+ | 21845 | 1 | 42 | -21846 |
-| 30 | 21845 | 1 | 42 | 21845 |
-| 30+ | -21846 | 1 | 43 | 21845 |
-| 31 | -21846 | 1 | 43 | -21846 |
-| 31+ | -21846 | 0 | 40 | 21845 |
-| 32 | -21846 | 0 | 40 | 21845 |
-| 32 | -21846 | 0 | 41 | 21845 |
-| 32 | -21846 | 0 | 42 | 21845 |
-| 32 | -21846 | 0 | 43 | -21846 |
-| 32 | -21846 | 0 | 44 | 21845 |
-| 32 | -21846 | 0 | 45 | 21845 |
-| 32 | -21846 | 0 | 46 | 21845 |
-| 32 | -21846 | 0 | 47 | 21845 |
-| 32+ | 21845 | 1 | 43 | -21846 |
-| 33 | 21845 | 1 | 43 | 21845 |
-| 33+ | -21846 | 1 | 44 | 21845 |
-| 34 | -21846 | 1 | 44 | -21846 |
-| 34+ | -21846 | 0 | 40 | 21845 |
-| 35 | -21846 | 0 | 40 | 21845 |
-| 35 | -21846 | 0 | 41 | 21845 |
-| 35 | -21846 | 0 | 42 | 21845 |
-| 35 | -21846 | 0 | 43 | 21845 |
-| 35 | -21846 | 0 | 44 | -21846 |
-| 35 | -21846 | 0 | 45 | 21845 |
-| 35 | -21846 | 0 | 46 | 21845 |
-| 35 | -21846 | 0 | 47 | 21845 |
-| 35+ | 21845 | 1 | 44 | -21846 |
-| 36 | 21845 | 1 | 44 | 21845 |
-| 36+ | -21846 | 1 | 45 | 21845 |
-| 37 | -21846 | 1 | 45 | -21846 |
-| 37+ | -21846 | 0 | 40 | 21845 |
-| 38 | -21846 | 0 | 40 | 21845 |
-| 38 | -21846 | 0 | 41 | 21845 |
-| 38 | -21846 | 0 | 42 | 21845 |
-| 38 | -21846 | 0 | 43 | 21845 |
-| 38 | -21846 | 0 | 44 | 21845 |
-| 38 | -21846 | 0 | 45 | -21846 |
-| 38 | -21846 | 0 | 46 | 21845 |
-| 38 | -21846 | 0 | 47 | 21845 |
-| 38+ | 21845 | 1 | 45 | -21846 |
-| 39 | 21845 | 1 | 45 | 21845 |
-| 39+ | -21846 | 1 | 46 | 21845 |
-| 40 | -21846 | 1 | 46 | -21846 |
-| 40+ | -21846 | 0 | 40 | 21845 |
-| 41 | -21846 | 0 | 40 | 21845 |
-| 41 | -21846 | 0 | 41 | 21845 |
-| 41 | -21846 | 0 | 42 | 21845 |
-| 41 | -21846 | 0 | 43 | 21845 |
-| 41 | -21846 | 0 | 44 | 21845 |
-| 41 | -21846 | 0 | 45 | 21845 |
-| 41 | -21846 | 0 | 46 | -21846 |
-| 41 | -21846 | 0 | 47 | 21845 |
-| 41+ | 21845 | 1 | 46 | -21846 |
-| 42 | 21845 | 1 | 46 | 21845 |
-| 42+ | -21846 | 1 | 47 | 21845 |
-| 43 | -21846 | 1 | 47 | -21846 |
-| 43+ | -21846 | 0 | 40 | 21845 |
-| 44 | -21846 | 0 | 40 | 21845 |
-| 44 | -21846 | 0 | 41 | 21845 |
-| 44 | -21846 | 0 | 42 | 21845 |
-| 44 | -21846 | 0 | 43 | 21845 |
-| 44 | -21846 | 0 | 44 | 21845 |
-| 44 | -21846 | 0 | 45 | 21845 |
-| 44 | -21846 | 0 | 46 | 21845 |
-| 44 | -21846 | 0 | 47 | -21846 |
-| 44+ | 21845 | 1 | 47 | -21846 |
-| 45 | 21845 | 1 | 47 | 21845 |
-| 45+ | 21845 | 0 | 40 | 21845 |
-| 46 | 21845 | 0 | 40 | 21845 |
-| 46 | 21845 | 0 | 41 | 21845 |
-| 46 | 21845 | 0 | 42 | 21845 |
-| 46 | 21845 | 0 | 43 | 21845 |
-| 46 | 21845 | 0 | 44 | 21845 |
-| 46 | 21845 | 0 | 45 | 21845 |
-| 46 | 21845 | 0 | 46 | 21845 |
-| 46 | 21845 | 0 | 47 | 21845 |
-| 46+ | 21845 | 0 | 5 | 0 |
-| 47 | 21845 | 0 | 5 | 0 |
-| 47 | 21845 | 0 | 13 | 1313 |
-| 47 | 21845 | 0 | 21 | 0 |
-| 47 | 21845 | 0 | 29 | 0 |
-| 47 | 21845 | 0 | 37 | 0 |
-| 47 | 21845 | 0 | 45 | 21845 |
-| 47 | 21845 | 0 | 53 | 0 |
-| 47 | 21845 | 0 | 61 | 0 |
-| 47+ | 21845 | 1 | 5 | 0 |
-| 48 | 21845 | 1 | 5 | 21845 |
-| 48+ | 21845 | 1 | 13 | 1313 |
-| 49 | 21845 | 1 | 13 | 21845 |
-| 49+ | 21845 | 1 | 21 | 0 |
-| 50 | 21845 | 1 | 21 | 21845 |
-| 50+ | 21845 | 1 | 29 | 0 |
-| 51 | 21845 | 1 | 29 | 21845 |
-| 51+ | 21845 | 1 | 37 | 0 |
-| 52 | 21845 | 1 | 37 | 21845 |
-| 52+ | 21845 | 1 | 45 | 21845 |
-| 53 | 21845 | 1 | 45 | 21845 |
-| 53+ | 21845 | 1 | 53 | 0 |
-| 54 | 21845 | 1 | 53 | 21845 |
-| 54+ | 21845 | 1 | 61 | 0 |
-| 55 | 21845 | 1 | 61 | 21845 |
-| 55+ | 21845 | 0 | 5 | 21845 |
-| 56 | 21845 | 0 | 5 | 21845 |
-| 56 | 21845 | 0 | 13 | 21845 |
-| 56 | 21845 | 0 | 21 | 21845 |
-| 56 | 21845 | 0 | 29 | 21845 |
-| 56 | 21845 | 0 | 37 | 21845 |
-| 56 | 21845 | 0 | 45 | 21845 |
-| 56 | 21845 | 0 | 53 | 21845 |
-| 56 | 21845 | 0 | 61 | 21845 |
-| 56+ | -21846 | 1 | 5 | 21845 |
-| 57 | -21846 | 1 | 5 | -21846 |
-| 57+ | -21846 | 0 | 5 | -21846 |
-| 58 | -21846 | 0 | 5 | -21846 |
-| 58 | -21846 | 0 | 13 | 21845 |
-| 58 | -21846 | 0 | 21 | 21845 |
-| 58 | -21846 | 0 | 29 | 21845 |
-| 58 | -21846 | 0 | 37 | 21845 |
-| 58 | -21846 | 0 | 45 | 21845 |
-| 58 | -21846 | 0 | 53 | 21845 |
-| 58 | -21846 | 0 | 61 | 21845 |
-| 58+ | 21845 | 1 | 5 | -21846 |
-| 59 | 21845 | 1 | 5 | 21845 |
-| 59+ | -21846 | 1 | 13 | 21845 |
-| 60 | -21846 | 1 | 13 | -21846 |
-| 60+ | -21846 | 0 | 5 | 21845 |
-| 61 | -21846 | 0 | 5 | 21845 |
-| 61 | -21846 | 0 | 13 | -21846 |
-| 61 | -21846 | 0 | 21 | 21845 |
-| 61 | -21846 | 0 | 29 | 21845 |
-| 61 | -21846 | 0 | 37 | 21845 |
-| 61 | -21846 | 0 | 45 | 21845 |
-| 61 | -21846 | 0 | 53 | 21845 |
-| 61 | -21846 | 0 | 61 | 21845 |
-| 61+ | 21845 | 1 | 13 | -21846 |
-| 62 | 21845 | 1 | 13 | 21845 |
-| 62+ | -21846 | 1 | 21 | 21845 |
-| 63 | -21846 | 1 | 21 | -21846 |
-| 63+ | -21846 | 0 | 5 | 21845 |
-| 64 | -21846 | 0 | 5 | 21845 |
-| 64 | -21846 | 0 | 13 | 21845 |
-| 64 | -21846 | 0 | 21 | -21846 |
-| 64 | -21846 | 0 | 29 | 21845 |
-| 64 | -21846 | 0 | 37 | 21845 |
-| 64 | -21846 | 0 | 45 | 21845 |
-| 64 | -21846 | 0 | 53 | 21845 |
-| 64 | -21846 | 0 | 61 | 21845 |
-| 64+ | 21845 | 1 | 21 | -21846 |
-| 65 | 21845 | 1 | 21 | 21845 |
-| 65+ | -21846 | 1 | 29 | 21845 |
-| 66 | -21846 | 1 | 29 | -21846 |
-| 66+ | -21846 | 0 | 5 | 21845 |
-| 67 | -21846 | 0 | 5 | 21845 |
-| 67 | -21846 | 0 | 13 | 21845 |
-| 67 | -21846 | 0 | 21 | 21845 |
-| 67 | -21846 | 0 | 29 | -21846 |
-| 67 | -21846 | 0 | 37 | 21845 |
-| 67 | -21846 | 0 | 45 | 21845 |
-| 67 | -21846 | 0 | 53 | 21845 |
-| 67 | -21846 | 0 | 61 | 21845 |
-| 67+ | 21845 | 1 | 29 | -21846 |
-| 68 | 21845 | 1 | 29 | 21845 |
-| 68+ | -21846 | 1 | 37 | 21845 |
-| 69 | -21846 | 1 | 37 | -21846 |
-| 69+ | -21846 | 0 | 5 | 21845 |
-| 70 | -21846 | 0 | 5 | 21845 |
-| 70 | -21846 | 0 | 13 | 21845 |
-| 70 | -21846 | 0 | 21 | 21845 |
-| 70 | -21846 | 0 | 29 | 21845 |
-| 70 | -21846 | 0 | 37 | -21846 |
-| 70 | -21846 | 0 | 45 | 21845 |
-| 70 | -21846 | 0 | 53 | 21845 |
-| 70 | -21846 | 0 | 61 | 21845 |
-| 70+ | 21845 | 1 | 37 | -21846 |
-| 71 | 21845 | 1 | 37 | 21845 |
-| 71+ | -21846 | 1 | 45 | 21845 |
-| 72 | -21846 | 1 | 45 | -21846 |
-| 72+ | -21846 | 0 | 5 | 21845 |
-| 73 | -21846 | 0 | 5 | 21845 |
-| 73 | -21846 | 0 | 13 | 21845 |
-| 73 | -21846 | 0 | 21 | 21845 |
-| 73 | -21846 | 0 | 29 | 21845 |
-| 73 | -21846 | 0 | 37 | 21845 |
-| 73 | -21846 | 0 | 45 | -21846 |
-| 73 | -21846 | 0 | 53 | 21845 |
-| 73 | -21846 | 0 | 61 | 21845 |
-| 73+ | 21845 | 1 | 45 | -21846 |
-| 74 | 21845 | 1 | 45 | 21845 |
-| 74+ | -21846 | 1 | 53 | 21845 |
-| 75 | -21846 | 1 | 53 | -21846 |
-| 75+ | -21846 | 0 | 5 | 21845 |
-| 76 | -21846 | 0 | 5 | 21845 |
-| 76 | -21846 | 0 | 13 | 21845 |
-| 76 | -21846 | 0 | 21 | 21845 |
-| 76 | -21846 | 0 | 29 | 21845 |
-| 76 | -21846 | 0 | 37 | 21845 |
-| 76 | -21846 | 0 | 45 | 21845 |
-| 76 | -21846 | 0 | 53 | -21846 |
-| 76 | -21846 | 0 | 61 | 21845 |
-| 76+ | 21845 | 1 | 53 | -21846 |
-| 77 | 21845 | 1 | 53 | 21845 |
-| 77+ | -21846 | 1 | 61 | 21845 |
-| 78 | -21846 | 1 | 61 | -21846 |
-| 78+ | -21846 | 0 | 5 | 21845 |
-| 79 | -21846 | 0 | 5 | 21845 |
-| 79 | -21846 | 0 | 13 | 21845 |
-| 79 | -21846 | 0 | 21 | 21845 |
-| 79 | -21846 | 0 | 29 | 21845 |
-| 79 | -21846 | 0 | 37 | 21845 |
-| 79 | -21846 | 0 | 45 | 21845 |
-| 79 | -21846 | 0 | 53 | 21845 |
-| 79 | -21846 | 0 | 61 | -21846 |
-| 79+ | 21845 | 1 | 61 | -21846 |
-| 80 | 21845 | 1 | 61 | 21845 |
-| 80+ | 21845 | 0 | 5 | 21845 |
-| 81 | 21845 | 0 | 5 | 21845 |
-| 81 | 21845 | 0 | 13 | 21845 |
-| 81 | 21845 | 0 | 21 | 21845 |
-| 81 | 21845 | 0 | 29 | 21845 |
-| 81 | 21845 | 0 | 37 | 21845 |
-| 81 | 21845 | 0 | 45 | 21845 |
-| 81 | 21845 | 0 | 53 | 21845 |
-| 81 | 21845 | 0 | 61 | 21845 |
diff --git a/03/a/RAM64.hdl b/03/a/RAM64.hdl
deleted file mode 100644
index 66efcbd..0000000
--- a/03/a/RAM64.hdl
+++ /dev/null
@@ -1,19 +0,0 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/03/a/RAM64.hdl
-
-/**
- * Memory of 64 registers, each 16 bit-wide. Out holds the value
- * stored at the memory location specified by address. If load==1, then
- * the in value is loaded into the memory location specified by address
- * (the loaded value will be emitted to out from the next time step onward).
- */
-
-CHIP RAM64 {
- IN in[16], load, address[6];
- OUT out[16];
-
- PARTS:
- // Put your code here:
-}
\ No newline at end of file
diff --git a/03/a/RAM8.cmp b/03/a/RAM8.cmp
deleted file mode 100644
index 536c6ef..0000000
--- a/03/a/RAM8.cmp
+++ /dev/null
@@ -1,173 +0,0 @@
-| time | in |load |address| out |
-| 0+ | 0 | 0 | 0 | 0 |
-| 1 | 0 | 0 | 0 | 0 |
-| 1+ | 0 | 1 | 0 | 0 |
-| 2 | 0 | 1 | 0 | 0 |
-| 2+ | 11111 | 0 | 0 | 0 |
-| 3 | 11111 | 0 | 0 | 0 |
-| 3+ | 11111 | 1 | 1 | 0 |
-| 4 | 11111 | 1 | 1 | 11111 |
-| 4+ | 11111 | 0 | 0 | 0 |
-| 5 | 11111 | 0 | 0 | 0 |
-| 5+ | 3333 | 0 | 3 | 0 |
-| 6 | 3333 | 0 | 3 | 0 |
-| 6+ | 3333 | 1 | 3 | 0 |
-| 7 | 3333 | 1 | 3 | 3333 |
-| 7+ | 3333 | 0 | 3 | 3333 |
-| 8 | 3333 | 0 | 3 | 3333 |
-| 8 | 3333 | 0 | 1 | 11111 |
-| 8+ | 7777 | 0 | 1 | 11111 |
-| 9 | 7777 | 0 | 1 | 11111 |
-| 9+ | 7777 | 1 | 7 | 0 |
-| 10 | 7777 | 1 | 7 | 7777 |
-| 10+ | 7777 | 0 | 7 | 7777 |
-| 11 | 7777 | 0 | 7 | 7777 |
-| 11 | 7777 | 0 | 3 | 3333 |
-| 11 | 7777 | 0 | 7 | 7777 |
-| 11+ | 7777 | 0 | 0 | 0 |
-| 12 | 7777 | 0 | 0 | 0 |
-| 12 | 7777 | 0 | 1 | 11111 |
-| 12 | 7777 | 0 | 2 | 0 |
-| 12 | 7777 | 0 | 3 | 3333 |
-| 12 | 7777 | 0 | 4 | 0 |
-| 12 | 7777 | 0 | 5 | 0 |
-| 12 | 7777 | 0 | 6 | 0 |
-| 12 | 7777 | 0 | 7 | 7777 |
-| 12+ | 21845 | 1 | 0 | 0 |
-| 13 | 21845 | 1 | 0 | 21845 |
-| 13+ | 21845 | 1 | 1 | 11111 |
-| 14 | 21845 | 1 | 1 | 21845 |
-| 14+ | 21845 | 1 | 2 | 0 |
-| 15 | 21845 | 1 | 2 | 21845 |
-| 15+ | 21845 | 1 | 3 | 3333 |
-| 16 | 21845 | 1 | 3 | 21845 |
-| 16+ | 21845 | 1 | 4 | 0 |
-| 17 | 21845 | 1 | 4 | 21845 |
-| 17+ | 21845 | 1 | 5 | 0 |
-| 18 | 21845 | 1 | 5 | 21845 |
-| 18+ | 21845 | 1 | 6 | 0 |
-| 19 | 21845 | 1 | 6 | 21845 |
-| 19+ | 21845 | 1 | 7 | 7777 |
-| 20 | 21845 | 1 | 7 | 21845 |
-| 20+ | 21845 | 0 | 0 | 21845 |
-| 21 | 21845 | 0 | 0 | 21845 |
-| 21 | 21845 | 0 | 1 | 21845 |
-| 21 | 21845 | 0 | 2 | 21845 |
-| 21 | 21845 | 0 | 3 | 21845 |
-| 21 | 21845 | 0 | 4 | 21845 |
-| 21 | 21845 | 0 | 5 | 21845 |
-| 21 | 21845 | 0 | 6 | 21845 |
-| 21 | 21845 | 0 | 7 | 21845 |
-| 21+ | -21846 | 1 | 0 | 21845 |
-| 22 | -21846 | 1 | 0 | -21846 |
-| 22+ | -21846 | 0 | 0 | -21846 |
-| 23 | -21846 | 0 | 0 | -21846 |
-| 23 | -21846 | 0 | 1 | 21845 |
-| 23 | -21846 | 0 | 2 | 21845 |
-| 23 | -21846 | 0 | 3 | 21845 |
-| 23 | -21846 | 0 | 4 | 21845 |
-| 23 | -21846 | 0 | 5 | 21845 |
-| 23 | -21846 | 0 | 6 | 21845 |
-| 23 | -21846 | 0 | 7 | 21845 |
-| 23+ | 21845 | 1 | 0 | -21846 |
-| 24 | 21845 | 1 | 0 | 21845 |
-| 24+ | -21846 | 1 | 1 | 21845 |
-| 25 | -21846 | 1 | 1 | -21846 |
-| 25+ | -21846 | 0 | 0 | 21845 |
-| 26 | -21846 | 0 | 0 | 21845 |
-| 26 | -21846 | 0 | 1 | -21846 |
-| 26 | -21846 | 0 | 2 | 21845 |
-| 26 | -21846 | 0 | 3 | 21845 |
-| 26 | -21846 | 0 | 4 | 21845 |
-| 26 | -21846 | 0 | 5 | 21845 |
-| 26 | -21846 | 0 | 6 | 21845 |
-| 26 | -21846 | 0 | 7 | 21845 |
-| 26+ | 21845 | 1 | 1 | -21846 |
-| 27 | 21845 | 1 | 1 | 21845 |
-| 27+ | -21846 | 1 | 2 | 21845 |
-| 28 | -21846 | 1 | 2 | -21846 |
-| 28+ | -21846 | 0 | 0 | 21845 |
-| 29 | -21846 | 0 | 0 | 21845 |
-| 29 | -21846 | 0 | 1 | 21845 |
-| 29 | -21846 | 0 | 2 | -21846 |
-| 29 | -21846 | 0 | 3 | 21845 |
-| 29 | -21846 | 0 | 4 | 21845 |
-| 29 | -21846 | 0 | 5 | 21845 |
-| 29 | -21846 | 0 | 6 | 21845 |
-| 29 | -21846 | 0 | 7 | 21845 |
-| 29+ | 21845 | 1 | 2 | -21846 |
-| 30 | 21845 | 1 | 2 | 21845 |
-| 30+ | -21846 | 1 | 3 | 21845 |
-| 31 | -21846 | 1 | 3 | -21846 |
-| 31+ | -21846 | 0 | 0 | 21845 |
-| 32 | -21846 | 0 | 0 | 21845 |
-| 32 | -21846 | 0 | 1 | 21845 |
-| 32 | -21846 | 0 | 2 | 21845 |
-| 32 | -21846 | 0 | 3 | -21846 |
-| 32 | -21846 | 0 | 4 | 21845 |
-| 32 | -21846 | 0 | 5 | 21845 |
-| 32 | -21846 | 0 | 6 | 21845 |
-| 32 | -21846 | 0 | 7 | 21845 |
-| 32+ | 21845 | 1 | 3 | -21846 |
-| 33 | 21845 | 1 | 3 | 21845 |
-| 33+ | -21846 | 1 | 4 | 21845 |
-| 34 | -21846 | 1 | 4 | -21846 |
-| 34+ | -21846 | 0 | 0 | 21845 |
-| 35 | -21846 | 0 | 0 | 21845 |
-| 35 | -21846 | 0 | 1 | 21845 |
-| 35 | -21846 | 0 | 2 | 21845 |
-| 35 | -21846 | 0 | 3 | 21845 |
-| 35 | -21846 | 0 | 4 | -21846 |
-| 35 | -21846 | 0 | 5 | 21845 |
-| 35 | -21846 | 0 | 6 | 21845 |
-| 35 | -21846 | 0 | 7 | 21845 |
-| 35+ | 21845 | 1 | 4 | -21846 |
-| 36 | 21845 | 1 | 4 | 21845 |
-| 36+ | -21846 | 1 | 5 | 21845 |
-| 37 | -21846 | 1 | 5 | -21846 |
-| 37+ | -21846 | 0 | 0 | 21845 |
-| 38 | -21846 | 0 | 0 | 21845 |
-| 38 | -21846 | 0 | 1 | 21845 |
-| 38 | -21846 | 0 | 2 | 21845 |
-| 38 | -21846 | 0 | 3 | 21845 |
-| 38 | -21846 | 0 | 4 | 21845 |
-| 38 | -21846 | 0 | 5 | -21846 |
-| 38 | -21846 | 0 | 6 | 21845 |
-| 38 | -21846 | 0 | 7 | 21845 |
-| 38+ | 21845 | 1 | 5 | -21846 |
-| 39 | 21845 | 1 | 5 | 21845 |
-| 39+ | -21846 | 1 | 6 | 21845 |
-| 40 | -21846 | 1 | 6 | -21846 |
-| 40+ | -21846 | 0 | 0 | 21845 |
-| 41 | -21846 | 0 | 0 | 21845 |
-| 41 | -21846 | 0 | 1 | 21845 |
-| 41 | -21846 | 0 | 2 | 21845 |
-| 41 | -21846 | 0 | 3 | 21845 |
-| 41 | -21846 | 0 | 4 | 21845 |
-| 41 | -21846 | 0 | 5 | 21845 |
-| 41 | -21846 | 0 | 6 | -21846 |
-| 41 | -21846 | 0 | 7 | 21845 |
-| 41+ | 21845 | 1 | 6 | -21846 |
-| 42 | 21845 | 1 | 6 | 21845 |
-| 42+ | -21846 | 1 | 7 | 21845 |
-| 43 | -21846 | 1 | 7 | -21846 |
-| 43+ | -21846 | 0 | 0 | 21845 |
-| 44 | -21846 | 0 | 0 | 21845 |
-| 44 | -21846 | 0 | 1 | 21845 |
-| 44 | -21846 | 0 | 2 | 21845 |
-| 44 | -21846 | 0 | 3 | 21845 |
-| 44 | -21846 | 0 | 4 | 21845 |
-| 44 | -21846 | 0 | 5 | 21845 |
-| 44 | -21846 | 0 | 6 | 21845 |
-| 44 | -21846 | 0 | 7 | -21846 |
-| 44+ | 21845 | 1 | 7 | -21846 |
-| 45 | 21845 | 1 | 7 | 21845 |
-| 45+ | 21845 | 0 | 0 | 21845 |
-| 46 | 21845 | 0 | 0 | 21845 |
-| 46 | 21845 | 0 | 1 | 21845 |
-| 46 | 21845 | 0 | 2 | 21845 |
-| 46 | 21845 | 0 | 3 | 21845 |
-| 46 | 21845 | 0 | 4 | 21845 |
-| 46 | 21845 | 0 | 5 | 21845 |
-| 46 | 21845 | 0 | 6 | 21845 |
-| 46 | 21845 | 0 | 7 | 21845 |
diff --git a/03/a/RAM8.hdl b/03/a/RAM8.hdl
deleted file mode 100644
index 4c0e070..0000000
--- a/03/a/RAM8.hdl
+++ /dev/null
@@ -1,19 +0,0 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/03/a/RAM8.hdl
-
-/**
- * Memory of 8 registers, each 16 bit-wide. Out holds the value
- * stored at the memory location specified by address. If load==1, then
- * the in value is loaded into the memory location specified by address
- * (the loaded value will be emitted to out from the next time step onward).
- */
-
-CHIP RAM8 {
- IN in[16], load, address[3];
- OUT out[16];
-
- PARTS:
- // Put your code here:
-}
\ No newline at end of file
diff --git a/03/a/Register.cmp b/03/a/Register.cmp
deleted file mode 100644
index a899f27..0000000
--- a/03/a/Register.cmp
+++ /dev/null
@@ -1,149 +0,0 @@
-| time | in |load | out |
-| 0+ | 0 | 0 | 0 |
-| 1 | 0 | 0 | 0 |
-| 1+ | 0 | 1 | 0 |
-| 2 | 0 | 1 | 0 |
-| 2+ | -32123 | 0 | 0 |
-| 3 | -32123 | 0 | 0 |
-| 3+ | 11111 | 0 | 0 |
-| 4 | 11111 | 0 | 0 |
-| 4+ | -32123 | 1 | 0 |
-| 5 | -32123 | 1 | -32123 |
-| 5+ | -32123 | 1 | -32123 |
-| 6 | -32123 | 1 | -32123 |
-| 6+ | -32123 | 0 | -32123 |
-| 7 | -32123 | 0 | -32123 |
-| 7+ | 12345 | 1 | -32123 |
-| 8 | 12345 | 1 | 12345 |
-| 8+ | 0 | 0 | 12345 |
-| 9 | 0 | 0 | 12345 |
-| 9+ | 0 | 1 | 12345 |
-| 10 | 0 | 1 | 0 |
-| 10+ | 1 | 0 | 0 |
-| 11 | 1 | 0 | 0 |
-| 11+ | 1 | 1 | 0 |
-| 12 | 1 | 1 | 1 |
-| 12+ | 2 | 0 | 1 |
-| 13 | 2 | 0 | 1 |
-| 13+ | 2 | 1 | 1 |
-| 14 | 2 | 1 | 2 |
-| 14+ | 4 | 0 | 2 |
-| 15 | 4 | 0 | 2 |
-| 15+ | 4 | 1 | 2 |
-| 16 | 4 | 1 | 4 |
-| 16+ | 8 | 0 | 4 |
-| 17 | 8 | 0 | 4 |
-| 17+ | 8 | 1 | 4 |
-| 18 | 8 | 1 | 8 |
-| 18+ | 16 | 0 | 8 |
-| 19 | 16 | 0 | 8 |
-| 19+ | 16 | 1 | 8 |
-| 20 | 16 | 1 | 16 |
-| 20+ | 32 | 0 | 16 |
-| 21 | 32 | 0 | 16 |
-| 21+ | 32 | 1 | 16 |
-| 22 | 32 | 1 | 32 |
-| 22+ | 64 | 0 | 32 |
-| 23 | 64 | 0 | 32 |
-| 23+ | 64 | 1 | 32 |
-| 24 | 64 | 1 | 64 |
-| 24+ | 128 | 0 | 64 |
-| 25 | 128 | 0 | 64 |
-| 25+ | 128 | 1 | 64 |
-| 26 | 128 | 1 | 128 |
-| 26+ | 256 | 0 | 128 |
-| 27 | 256 | 0 | 128 |
-| 27+ | 256 | 1 | 128 |
-| 28 | 256 | 1 | 256 |
-| 28+ | 512 | 0 | 256 |
-| 29 | 512 | 0 | 256 |
-| 29+ | 512 | 1 | 256 |
-| 30 | 512 | 1 | 512 |
-| 30+ | 1024 | 0 | 512 |
-| 31 | 1024 | 0 | 512 |
-| 31+ | 1024 | 1 | 512 |
-| 32 | 1024 | 1 | 1024 |
-| 32+ | 2048 | 0 | 1024 |
-| 33 | 2048 | 0 | 1024 |
-| 33+ | 2048 | 1 | 1024 |
-| 34 | 2048 | 1 | 2048 |
-| 34+ | 4096 | 0 | 2048 |
-| 35 | 4096 | 0 | 2048 |
-| 35+ | 4096 | 1 | 2048 |
-| 36 | 4096 | 1 | 4096 |
-| 36+ | 8192 | 0 | 4096 |
-| 37 | 8192 | 0 | 4096 |
-| 37+ | 8192 | 1 | 4096 |
-| 38 | 8192 | 1 | 8192 |
-| 38+ | 16384 | 0 | 8192 |
-| 39 | 16384 | 0 | 8192 |
-| 39+ | 16384 | 1 | 8192 |
-| 40 | 16384 | 1 | 16384 |
-| 40+ | -32768 | 0 | 16384 |
-| 41 | -32768 | 0 | 16384 |
-| 41+ | -32768 | 1 | 16384 |
-| 42 | -32768 | 1 | -32768 |
-| 42+ | -2 | 0 | -32768 |
-| 43 | -2 | 0 | -32768 |
-| 43+ | -2 | 1 | -32768 |
-| 44 | -2 | 1 | -2 |
-| 44+ | -3 | 0 | -2 |
-| 45 | -3 | 0 | -2 |
-| 45+ | -3 | 1 | -2 |
-| 46 | -3 | 1 | -3 |
-| 46+ | -5 | 0 | -3 |
-| 47 | -5 | 0 | -3 |
-| 47+ | -5 | 1 | -3 |
-| 48 | -5 | 1 | -5 |
-| 48+ | -9 | 0 | -5 |
-| 49 | -9 | 0 | -5 |
-| 49+ | -9 | 1 | -5 |
-| 50 | -9 | 1 | -9 |
-| 50+ | -17 | 0 | -9 |
-| 51 | -17 | 0 | -9 |
-| 51+ | -17 | 1 | -9 |
-| 52 | -17 | 1 | -17 |
-| 52+ | -33 | 0 | -17 |
-| 53 | -33 | 0 | -17 |
-| 53+ | -33 | 1 | -17 |
-| 54 | -33 | 1 | -33 |
-| 54+ | -65 | 0 | -33 |
-| 55 | -65 | 0 | -33 |
-| 55+ | -65 | 1 | -33 |
-| 56 | -65 | 1 | -65 |
-| 56+ | -129 | 0 | -65 |
-| 57 | -129 | 0 | -65 |
-| 57+ | -129 | 1 | -65 |
-| 58 | -129 | 1 | -129 |
-| 58+ | -257 | 0 | -129 |
-| 59 | -257 | 0 | -129 |
-| 59+ | -257 | 1 | -129 |
-| 60 | -257 | 1 | -257 |
-| 60+ | -513 | 0 | -257 |
-| 61 | -513 | 0 | -257 |
-| 61+ | -513 | 1 | -257 |
-| 62 | -513 | 1 | -513 |
-| 62+ | -1025 | 0 | -513 |
-| 63 | -1025 | 0 | -513 |
-| 63+ | -1025 | 1 | -513 |
-| 64 | -1025 | 1 | -1025 |
-| 64+ | -2049 | 0 | -1025 |
-| 65 | -2049 | 0 | -1025 |
-| 65+ | -2049 | 1 | -1025 |
-| 66 | -2049 | 1 | -2049 |
-| 66+ | -4097 | 0 | -2049 |
-| 67 | -4097 | 0 | -2049 |
-| 67+ | -4097 | 1 | -2049 |
-| 68 | -4097 | 1 | -4097 |
-| 68+ | -8193 | 0 | -4097 |
-| 69 | -8193 | 0 | -4097 |
-| 69+ | -8193 | 1 | -4097 |
-| 70 | -8193 | 1 | -8193 |
-| 70+ | -16385 | 0 | -8193 |
-| 71 | -16385 | 0 | -8193 |
-| 71+ | -16385 | 1 | -8193 |
-| 72 | -16385 | 1 | -16385 |
-| 72+ | 32767 | 0 | -16385 |
-| 73 | 32767 | 0 | -16385 |
-| 73+ | 32767 | 1 | -16385 |
-| 74 | 32767 | 1 | 32767 |
diff --git a/03/b/RAM16K.cmp b/03/b/RAM16K.cmp
deleted file mode 100644
index a1ad9db..0000000
--- a/03/b/RAM16K.cmp
+++ /dev/null
@@ -1,320 +0,0 @@
-| time | in |load | address | out |
-| 0+ | 0 | 0 | 0 | 0 |
-| 1 | 0 | 0 | 0 | 0 |
-| 1+ | 0 | 1 | 0 | 0 |
-| 2 | 0 | 1 | 0 | 0 |
-| 2+ | 4321 | 0 | 0 | 0 |
-| 3 | 4321 | 0 | 0 | 0 |
-| 3+ | 4321 | 1 | 4321 | 0 |
-| 4 | 4321 | 1 | 4321 | 4321 |
-| 4+ | 4321 | 0 | 0 | 0 |
-| 5 | 4321 | 0 | 0 | 0 |
-| 5+ | 12345 | 0 | 12345 | 0 |
-| 6 | 12345 | 0 | 12345 | 0 |
-| 6+ | 12345 | 1 | 12345 | 0 |
-| 7 | 12345 | 1 | 12345 | 12345 |
-| 7+ | 12345 | 0 | 12345 | 12345 |
-| 8 | 12345 | 0 | 12345 | 12345 |
-| 8 | 12345 | 0 | 4321 | 4321 |
-| 8+ | 16383 | 0 | 4321 | 4321 |
-| 9 | 16383 | 0 | 4321 | 4321 |
-| 9+ | 16383 | 1 | 16383 | 0 |
-| 10 | 16383 | 1 | 16383 | 16383 |
-| 10+ | 16383 | 0 | 16383 | 16383 |
-| 11 | 16383 | 0 | 16383 | 16383 |
-| 11 | 16383 | 0 | 12345 | 12345 |
-| 11 | 16383 | 0 | 16383 | 16383 |
-| 11+ | 16383 | 0 | 10920 | 0 |
-| 12 | 16383 | 0 | 10920 | 0 |
-| 12 | 16383 | 0 | 10921 | 0 |
-| 12 | 16383 | 0 | 10922 | 0 |
-| 12 | 16383 | 0 | 10923 | 0 |
-| 12 | 16383 | 0 | 10924 | 0 |
-| 12 | 16383 | 0 | 10925 | 0 |
-| 12 | 16383 | 0 | 10926 | 0 |
-| 12 | 16383 | 0 | 10927 | 0 |
-| 12+ | 21845 | 1 | 10920 | 0 |
-| 13 | 21845 | 1 | 10920 | 21845 |
-| 13+ | 21845 | 1 | 10921 | 0 |
-| 14 | 21845 | 1 | 10921 | 21845 |
-| 14+ | 21845 | 1 | 10922 | 0 |
-| 15 | 21845 | 1 | 10922 | 21845 |
-| 15+ | 21845 | 1 | 10923 | 0 |
-| 16 | 21845 | 1 | 10923 | 21845 |
-| 16+ | 21845 | 1 | 10924 | 0 |
-| 17 | 21845 | 1 | 10924 | 21845 |
-| 17+ | 21845 | 1 | 10925 | 0 |
-| 18 | 21845 | 1 | 10925 | 21845 |
-| 18+ | 21845 | 1 | 10926 | 0 |
-| 19 | 21845 | 1 | 10926 | 21845 |
-| 19+ | 21845 | 1 | 10927 | 0 |
-| 20 | 21845 | 1 | 10927 | 21845 |
-| 20+ | 21845 | 0 | 10920 | 21845 |
-| 21 | 21845 | 0 | 10920 | 21845 |
-| 21 | 21845 | 0 | 10921 | 21845 |
-| 21 | 21845 | 0 | 10922 | 21845 |
-| 21 | 21845 | 0 | 10923 | 21845 |
-| 21 | 21845 | 0 | 10924 | 21845 |
-| 21 | 21845 | 0 | 10925 | 21845 |
-| 21 | 21845 | 0 | 10926 | 21845 |
-| 21 | 21845 | 0 | 10927 | 21845 |
-| 21+ | -21846 | 1 | 10920 | 21845 |
-| 22 | -21846 | 1 | 10920 | -21846 |
-| 22+ | -21846 | 0 | 10920 | -21846 |
-| 23 | -21846 | 0 | 10920 | -21846 |
-| 23 | -21846 | 0 | 10921 | 21845 |
-| 23 | -21846 | 0 | 10922 | 21845 |
-| 23 | -21846 | 0 | 10923 | 21845 |
-| 23 | -21846 | 0 | 10924 | 21845 |
-| 23 | -21846 | 0 | 10925 | 21845 |
-| 23 | -21846 | 0 | 10926 | 21845 |
-| 23 | -21846 | 0 | 10927 | 21845 |
-| 23+ | 21845 | 1 | 10920 | -21846 |
-| 24 | 21845 | 1 | 10920 | 21845 |
-| 24+ | -21846 | 1 | 10921 | 21845 |
-| 25 | -21846 | 1 | 10921 | -21846 |
-| 25+ | -21846 | 0 | 10920 | 21845 |
-| 26 | -21846 | 0 | 10920 | 21845 |
-| 26 | -21846 | 0 | 10921 | -21846 |
-| 26 | -21846 | 0 | 10922 | 21845 |
-| 26 | -21846 | 0 | 10923 | 21845 |
-| 26 | -21846 | 0 | 10924 | 21845 |
-| 26 | -21846 | 0 | 10925 | 21845 |
-| 26 | -21846 | 0 | 10926 | 21845 |
-| 26 | -21846 | 0 | 10927 | 21845 |
-| 26+ | 21845 | 1 | 10921 | -21846 |
-| 27 | 21845 | 1 | 10921 | 21845 |
-| 27+ | -21846 | 1 | 10922 | 21845 |
-| 28 | -21846 | 1 | 10922 | -21846 |
-| 28+ | -21846 | 0 | 10920 | 21845 |
-| 29 | -21846 | 0 | 10920 | 21845 |
-| 29 | -21846 | 0 | 10921 | 21845 |
-| 29 | -21846 | 0 | 10922 | -21846 |
-| 29 | -21846 | 0 | 10923 | 21845 |
-| 29 | -21846 | 0 | 10924 | 21845 |
-| 29 | -21846 | 0 | 10925 | 21845 |
-| 29 | -21846 | 0 | 10926 | 21845 |
-| 29 | -21846 | 0 | 10927 | 21845 |
-| 29+ | 21845 | 1 | 10922 | -21846 |
-| 30 | 21845 | 1 | 10922 | 21845 |
-| 30+ | -21846 | 1 | 10923 | 21845 |
-| 31 | -21846 | 1 | 10923 | -21846 |
-| 31+ | -21846 | 0 | 10920 | 21845 |
-| 32 | -21846 | 0 | 10920 | 21845 |
-| 32 | -21846 | 0 | 10921 | 21845 |
-| 32 | -21846 | 0 | 10922 | 21845 |
-| 32 | -21846 | 0 | 10923 | -21846 |
-| 32 | -21846 | 0 | 10924 | 21845 |
-| 32 | -21846 | 0 | 10925 | 21845 |
-| 32 | -21846 | 0 | 10926 | 21845 |
-| 32 | -21846 | 0 | 10927 | 21845 |
-| 32+ | 21845 | 1 | 10923 | -21846 |
-| 33 | 21845 | 1 | 10923 | 21845 |
-| 33+ | -21846 | 1 | 10924 | 21845 |
-| 34 | -21846 | 1 | 10924 | -21846 |
-| 34+ | -21846 | 0 | 10920 | 21845 |
-| 35 | -21846 | 0 | 10920 | 21845 |
-| 35 | -21846 | 0 | 10921 | 21845 |
-| 35 | -21846 | 0 | 10922 | 21845 |
-| 35 | -21846 | 0 | 10923 | 21845 |
-| 35 | -21846 | 0 | 10924 | -21846 |
-| 35 | -21846 | 0 | 10925 | 21845 |
-| 35 | -21846 | 0 | 10926 | 21845 |
-| 35 | -21846 | 0 | 10927 | 21845 |
-| 35+ | 21845 | 1 | 10924 | -21846 |
-| 36 | 21845 | 1 | 10924 | 21845 |
-| 36+ | -21846 | 1 | 10925 | 21845 |
-| 37 | -21846 | 1 | 10925 | -21846 |
-| 37+ | -21846 | 0 | 10920 | 21845 |
-| 38 | -21846 | 0 | 10920 | 21845 |
-| 38 | -21846 | 0 | 10921 | 21845 |
-| 38 | -21846 | 0 | 10922 | 21845 |
-| 38 | -21846 | 0 | 10923 | 21845 |
-| 38 | -21846 | 0 | 10924 | 21845 |
-| 38 | -21846 | 0 | 10925 | -21846 |
-| 38 | -21846 | 0 | 10926 | 21845 |
-| 38 | -21846 | 0 | 10927 | 21845 |
-| 38+ | 21845 | 1 | 10925 | -21846 |
-| 39 | 21845 | 1 | 10925 | 21845 |
-| 39+ | -21846 | 1 | 10926 | 21845 |
-| 40 | -21846 | 1 | 10926 | -21846 |
-| 40+ | -21846 | 0 | 10920 | 21845 |
-| 41 | -21846 | 0 | 10920 | 21845 |
-| 41 | -21846 | 0 | 10921 | 21845 |
-| 41 | -21846 | 0 | 10922 | 21845 |
-| 41 | -21846 | 0 | 10923 | 21845 |
-| 41 | -21846 | 0 | 10924 | 21845 |
-| 41 | -21846 | 0 | 10925 | 21845 |
-| 41 | -21846 | 0 | 10926 | -21846 |
-| 41 | -21846 | 0 | 10927 | 21845 |
-| 41+ | 21845 | 1 | 10926 | -21846 |
-| 42 | 21845 | 1 | 10926 | 21845 |
-| 42+ | -21846 | 1 | 10927 | 21845 |
-| 43 | -21846 | 1 | 10927 | -21846 |
-| 43+ | -21846 | 0 | 10920 | 21845 |
-| 44 | -21846 | 0 | 10920 | 21845 |
-| 44 | -21846 | 0 | 10921 | 21845 |
-| 44 | -21846 | 0 | 10922 | 21845 |
-| 44 | -21846 | 0 | 10923 | 21845 |
-| 44 | -21846 | 0 | 10924 | 21845 |
-| 44 | -21846 | 0 | 10925 | 21845 |
-| 44 | -21846 | 0 | 10926 | 21845 |
-| 44 | -21846 | 0 | 10927 | -21846 |
-| 44+ | 21845 | 1 | 10927 | -21846 |
-| 45 | 21845 | 1 | 10927 | 21845 |
-| 45+ | 21845 | 0 | 10920 | 21845 |
-| 46 | 21845 | 0 | 10920 | 21845 |
-| 46 | 21845 | 0 | 10921 | 21845 |
-| 46 | 21845 | 0 | 10922 | 21845 |
-| 46 | 21845 | 0 | 10923 | 21845 |
-| 46 | 21845 | 0 | 10924 | 21845 |
-| 46 | 21845 | 0 | 10925 | 21845 |
-| 46 | 21845 | 0 | 10926 | 21845 |
-| 46 | 21845 | 0 | 10927 | 21845 |
-| 46+ | 21845 | 0 | 1365 | 0 |
-| 47 | 21845 | 0 | 1365 | 0 |
-| 47 | 21845 | 0 | 3413 | 0 |
-| 47 | 21845 | 0 | 5461 | 0 |
-| 47 | 21845 | 0 | 7509 | 0 |
-| 47 | 21845 | 0 | 9557 | 0 |
-| 47 | 21845 | 0 | 11605 | 0 |
-| 47 | 21845 | 0 | 13653 | 0 |
-| 47 | 21845 | 0 | 15701 | 0 |
-| 47+ | 21845 | 1 | 1365 | 0 |
-| 48 | 21845 | 1 | 1365 | 21845 |
-| 48+ | 21845 | 1 | 3413 | 0 |
-| 49 | 21845 | 1 | 3413 | 21845 |
-| 49+ | 21845 | 1 | 5461 | 0 |
-| 50 | 21845 | 1 | 5461 | 21845 |
-| 50+ | 21845 | 1 | 7509 | 0 |
-| 51 | 21845 | 1 | 7509 | 21845 |
-| 51+ | 21845 | 1 | 9557 | 0 |
-| 52 | 21845 | 1 | 9557 | 21845 |
-| 52+ | 21845 | 1 | 11605 | 0 |
-| 53 | 21845 | 1 | 11605 | 21845 |
-| 53+ | 21845 | 1 | 13653 | 0 |
-| 54 | 21845 | 1 | 13653 | 21845 |
-| 54+ | 21845 | 1 | 15701 | 0 |
-| 55 | 21845 | 1 | 15701 | 21845 |
-| 55+ | 21845 | 0 | 1365 | 21845 |
-| 56 | 21845 | 0 | 1365 | 21845 |
-| 56 | 21845 | 0 | 3413 | 21845 |
-| 56 | 21845 | 0 | 5461 | 21845 |
-| 56 | 21845 | 0 | 7509 | 21845 |
-| 56 | 21845 | 0 | 9557 | 21845 |
-| 56 | 21845 | 0 | 11605 | 21845 |
-| 56 | 21845 | 0 | 13653 | 21845 |
-| 56 | 21845 | 0 | 15701 | 21845 |
-| 56+ | -21846 | 1 | 1365 | 21845 |
-| 57 | -21846 | 1 | 1365 | -21846 |
-| 57+ | -21846 | 0 | 1365 | -21846 |
-| 58 | -21846 | 0 | 1365 | -21846 |
-| 58 | -21846 | 0 | 3413 | 21845 |
-| 58 | -21846 | 0 | 5461 | 21845 |
-| 58 | -21846 | 0 | 7509 | 21845 |
-| 58 | -21846 | 0 | 9557 | 21845 |
-| 58 | -21846 | 0 | 11605 | 21845 |
-| 58 | -21846 | 0 | 13653 | 21845 |
-| 58 | -21846 | 0 | 15701 | 21845 |
-| 58+ | 21845 | 1 | 1365 | -21846 |
-| 59 | 21845 | 1 | 1365 | 21845 |
-| 59+ | -21846 | 1 | 3413 | 21845 |
-| 60 | -21846 | 1 | 3413 | -21846 |
-| 60+ | -21846 | 0 | 1365 | 21845 |
-| 61 | -21846 | 0 | 1365 | 21845 |
-| 61 | -21846 | 0 | 3413 | -21846 |
-| 61 | -21846 | 0 | 5461 | 21845 |
-| 61 | -21846 | 0 | 7509 | 21845 |
-| 61 | -21846 | 0 | 9557 | 21845 |
-| 61 | -21846 | 0 | 11605 | 21845 |
-| 61 | -21846 | 0 | 13653 | 21845 |
-| 61 | -21846 | 0 | 15701 | 21845 |
-| 61+ | 21845 | 1 | 3413 | -21846 |
-| 62 | 21845 | 1 | 3413 | 21845 |
-| 62+ | -21846 | 1 | 5461 | 21845 |
-| 63 | -21846 | 1 | 5461 | -21846 |
-| 63+ | -21846 | 0 | 1365 | 21845 |
-| 64 | -21846 | 0 | 1365 | 21845 |
-| 64 | -21846 | 0 | 3413 | 21845 |
-| 64 | -21846 | 0 | 5461 | -21846 |
-| 64 | -21846 | 0 | 7509 | 21845 |
-| 64 | -21846 | 0 | 9557 | 21845 |
-| 64 | -21846 | 0 | 11605 | 21845 |
-| 64 | -21846 | 0 | 13653 | 21845 |
-| 64 | -21846 | 0 | 15701 | 21845 |
-| 64+ | 21845 | 1 | 5461 | -21846 |
-| 65 | 21845 | 1 | 5461 | 21845 |
-| 65+ | -21846 | 1 | 7509 | 21845 |
-| 66 | -21846 | 1 | 7509 | -21846 |
-| 66+ | -21846 | 0 | 1365 | 21845 |
-| 67 | -21846 | 0 | 1365 | 21845 |
-| 67 | -21846 | 0 | 3413 | 21845 |
-| 67 | -21846 | 0 | 5461 | 21845 |
-| 67 | -21846 | 0 | 7509 | -21846 |
-| 67 | -21846 | 0 | 9557 | 21845 |
-| 67 | -21846 | 0 | 11605 | 21845 |
-| 67 | -21846 | 0 | 13653 | 21845 |
-| 67 | -21846 | 0 | 15701 | 21845 |
-| 67+ | 21845 | 1 | 7509 | -21846 |
-| 68 | 21845 | 1 | 7509 | 21845 |
-| 68+ | -21846 | 1 | 9557 | 21845 |
-| 69 | -21846 | 1 | 9557 | -21846 |
-| 69+ | -21846 | 0 | 1365 | 21845 |
-| 70 | -21846 | 0 | 1365 | 21845 |
-| 70 | -21846 | 0 | 3413 | 21845 |
-| 70 | -21846 | 0 | 5461 | 21845 |
-| 70 | -21846 | 0 | 7509 | 21845 |
-| 70 | -21846 | 0 | 9557 | -21846 |
-| 70 | -21846 | 0 | 11605 | 21845 |
-| 70 | -21846 | 0 | 13653 | 21845 |
-| 70 | -21846 | 0 | 15701 | 21845 |
-| 70+ | 21845 | 1 | 9557 | -21846 |
-| 71 | 21845 | 1 | 9557 | 21845 |
-| 71+ | -21846 | 1 | 11605 | 21845 |
-| 72 | -21846 | 1 | 11605 | -21846 |
-| 72+ | -21846 | 0 | 1365 | 21845 |
-| 73 | -21846 | 0 | 1365 | 21845 |
-| 73 | -21846 | 0 | 3413 | 21845 |
-| 73 | -21846 | 0 | 5461 | 21845 |
-| 73 | -21846 | 0 | 7509 | 21845 |
-| 73 | -21846 | 0 | 9557 | 21845 |
-| 73 | -21846 | 0 | 11605 | -21846 |
-| 73 | -21846 | 0 | 13653 | 21845 |
-| 73 | -21846 | 0 | 15701 | 21845 |
-| 73+ | 21845 | 1 | 11605 | -21846 |
-| 74 | 21845 | 1 | 11605 | 21845 |
-| 74+ | -21846 | 1 | 13653 | 21845 |
-| 75 | -21846 | 1 | 13653 | -21846 |
-| 75+ | -21846 | 0 | 1365 | 21845 |
-| 76 | -21846 | 0 | 1365 | 21845 |
-| 76 | -21846 | 0 | 3413 | 21845 |
-| 76 | -21846 | 0 | 5461 | 21845 |
-| 76 | -21846 | 0 | 7509 | 21845 |
-| 76 | -21846 | 0 | 9557 | 21845 |
-| 76 | -21846 | 0 | 11605 | 21845 |
-| 76 | -21846 | 0 | 13653 | -21846 |
-| 76 | -21846 | 0 | 15701 | 21845 |
-| 76+ | 21845 | 1 | 13653 | -21846 |
-| 77 | 21845 | 1 | 13653 | 21845 |
-| 77+ | -21846 | 1 | 15701 | 21845 |
-| 78 | -21846 | 1 | 15701 | -21846 |
-| 78+ | -21846 | 0 | 1365 | 21845 |
-| 79 | -21846 | 0 | 1365 | 21845 |
-| 79 | -21846 | 0 | 3413 | 21845 |
-| 79 | -21846 | 0 | 5461 | 21845 |
-| 79 | -21846 | 0 | 7509 | 21845 |
-| 79 | -21846 | 0 | 9557 | 21845 |
-| 79 | -21846 | 0 | 11605 | 21845 |
-| 79 | -21846 | 0 | 13653 | 21845 |
-| 79 | -21846 | 0 | 15701 | -21846 |
-| 79+ | 21845 | 1 | 15701 | -21846 |
-| 80 | 21845 | 1 | 15701 | 21845 |
-| 80+ | 21845 | 0 | 1365 | 21845 |
-| 81 | 21845 | 0 | 1365 | 21845 |
-| 81 | 21845 | 0 | 3413 | 21845 |
-| 81 | 21845 | 0 | 5461 | 21845 |
-| 81 | 21845 | 0 | 7509 | 21845 |
-| 81 | 21845 | 0 | 9557 | 21845 |
-| 81 | 21845 | 0 | 11605 | 21845 |
-| 81 | 21845 | 0 | 13653 | 21845 |
-| 81 | 21845 | 0 | 15701 | 21845 |
diff --git a/03/b/RAM16K.hdl b/03/b/RAM16K.hdl
deleted file mode 100644
index 119a19e..0000000
--- a/03/b/RAM16K.hdl
+++ /dev/null
@@ -1,19 +0,0 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/03/b/RAM16K.hdl
-
-/**
- * Memory of 16K registers, each 16 bit-wide. Out holds the value
- * stored at the memory location specified by address. If load==1, then
- * the in value is loaded into the memory location specified by address
- * (the loaded value will be emitted to out from the next time step onward).
- */
-
-CHIP RAM16K {
- IN in[16], load, address[14];
- OUT out[16];
-
- PARTS:
- // Put your code here:
-}
\ No newline at end of file
diff --git a/03/b/RAM4K.cmp b/03/b/RAM4K.cmp
deleted file mode 100644
index a614796..0000000
--- a/03/b/RAM4K.cmp
+++ /dev/null
@@ -1,320 +0,0 @@
-| time | in |load |address | out |
-| 0+ | 0 | 0 | 0 | 0 |
-| 1 | 0 | 0 | 0 | 0 |
-| 1+ | 0 | 1 | 0 | 0 |
-| 2 | 0 | 1 | 0 | 0 |
-| 2+ | 1111 | 0 | 0 | 0 |
-| 3 | 1111 | 0 | 0 | 0 |
-| 3+ | 1111 | 1 | 1111 | 0 |
-| 4 | 1111 | 1 | 1111 | 1111 |
-| 4+ | 1111 | 0 | 0 | 0 |
-| 5 | 1111 | 0 | 0 | 0 |
-| 5+ | 3513 | 0 | 3513 | 0 |
-| 6 | 3513 | 0 | 3513 | 0 |
-| 6+ | 3513 | 1 | 3513 | 0 |
-| 7 | 3513 | 1 | 3513 | 3513 |
-| 7+ | 3513 | 0 | 3513 | 3513 |
-| 8 | 3513 | 0 | 3513 | 3513 |
-| 8 | 3513 | 0 | 1111 | 1111 |
-| 8+ | 4095 | 0 | 1111 | 1111 |
-| 9 | 4095 | 0 | 1111 | 1111 |
-| 9+ | 4095 | 1 | 4095 | 0 |
-| 10 | 4095 | 1 | 4095 | 4095 |
-| 10+ | 4095 | 0 | 4095 | 4095 |
-| 11 | 4095 | 0 | 4095 | 4095 |
-| 11 | 4095 | 0 | 3513 | 3513 |
-| 11 | 4095 | 0 | 4095 | 4095 |
-| 11+ | 4095 | 0 | 2728 | 0 |
-| 12 | 4095 | 0 | 2728 | 0 |
-| 12 | 4095 | 0 | 2729 | 0 |
-| 12 | 4095 | 0 | 2730 | 0 |
-| 12 | 4095 | 0 | 2731 | 0 |
-| 12 | 4095 | 0 | 2732 | 0 |
-| 12 | 4095 | 0 | 2733 | 0 |
-| 12 | 4095 | 0 | 2734 | 0 |
-| 12 | 4095 | 0 | 2735 | 0 |
-| 12+ | 21845 | 1 | 2728 | 0 |
-| 13 | 21845 | 1 | 2728 | 21845 |
-| 13+ | 21845 | 1 | 2729 | 0 |
-| 14 | 21845 | 1 | 2729 | 21845 |
-| 14+ | 21845 | 1 | 2730 | 0 |
-| 15 | 21845 | 1 | 2730 | 21845 |
-| 15+ | 21845 | 1 | 2731 | 0 |
-| 16 | 21845 | 1 | 2731 | 21845 |
-| 16+ | 21845 | 1 | 2732 | 0 |
-| 17 | 21845 | 1 | 2732 | 21845 |
-| 17+ | 21845 | 1 | 2733 | 0 |
-| 18 | 21845 | 1 | 2733 | 21845 |
-| 18+ | 21845 | 1 | 2734 | 0 |
-| 19 | 21845 | 1 | 2734 | 21845 |
-| 19+ | 21845 | 1 | 2735 | 0 |
-| 20 | 21845 | 1 | 2735 | 21845 |
-| 20+ | 21845 | 0 | 2728 | 21845 |
-| 21 | 21845 | 0 | 2728 | 21845 |
-| 21 | 21845 | 0 | 2729 | 21845 |
-| 21 | 21845 | 0 | 2730 | 21845 |
-| 21 | 21845 | 0 | 2731 | 21845 |
-| 21 | 21845 | 0 | 2732 | 21845 |
-| 21 | 21845 | 0 | 2733 | 21845 |
-| 21 | 21845 | 0 | 2734 | 21845 |
-| 21 | 21845 | 0 | 2735 | 21845 |
-| 21+ | -21846 | 1 | 2728 | 21845 |
-| 22 | -21846 | 1 | 2728 | -21846 |
-| 22+ | -21846 | 0 | 2728 | -21846 |
-| 23 | -21846 | 0 | 2728 | -21846 |
-| 23 | -21846 | 0 | 2729 | 21845 |
-| 23 | -21846 | 0 | 2730 | 21845 |
-| 23 | -21846 | 0 | 2731 | 21845 |
-| 23 | -21846 | 0 | 2732 | 21845 |
-| 23 | -21846 | 0 | 2733 | 21845 |
-| 23 | -21846 | 0 | 2734 | 21845 |
-| 23 | -21846 | 0 | 2735 | 21845 |
-| 23+ | 21845 | 1 | 2728 | -21846 |
-| 24 | 21845 | 1 | 2728 | 21845 |
-| 24+ | -21846 | 1 | 2729 | 21845 |
-| 25 | -21846 | 1 | 2729 | -21846 |
-| 25+ | -21846 | 0 | 2728 | 21845 |
-| 26 | -21846 | 0 | 2728 | 21845 |
-| 26 | -21846 | 0 | 2729 | -21846 |
-| 26 | -21846 | 0 | 2730 | 21845 |
-| 26 | -21846 | 0 | 2731 | 21845 |
-| 26 | -21846 | 0 | 2732 | 21845 |
-| 26 | -21846 | 0 | 2733 | 21845 |
-| 26 | -21846 | 0 | 2734 | 21845 |
-| 26 | -21846 | 0 | 2735 | 21845 |
-| 26+ | 21845 | 1 | 2729 | -21846 |
-| 27 | 21845 | 1 | 2729 | 21845 |
-| 27+ | -21846 | 1 | 2730 | 21845 |
-| 28 | -21846 | 1 | 2730 | -21846 |
-| 28+ | -21846 | 0 | 2728 | 21845 |
-| 29 | -21846 | 0 | 2728 | 21845 |
-| 29 | -21846 | 0 | 2729 | 21845 |
-| 29 | -21846 | 0 | 2730 | -21846 |
-| 29 | -21846 | 0 | 2731 | 21845 |
-| 29 | -21846 | 0 | 2732 | 21845 |
-| 29 | -21846 | 0 | 2733 | 21845 |
-| 29 | -21846 | 0 | 2734 | 21845 |
-| 29 | -21846 | 0 | 2735 | 21845 |
-| 29+ | 21845 | 1 | 2730 | -21846 |
-| 30 | 21845 | 1 | 2730 | 21845 |
-| 30+ | -21846 | 1 | 2731 | 21845 |
-| 31 | -21846 | 1 | 2731 | -21846 |
-| 31+ | -21846 | 0 | 2728 | 21845 |
-| 32 | -21846 | 0 | 2728 | 21845 |
-| 32 | -21846 | 0 | 2729 | 21845 |
-| 32 | -21846 | 0 | 2730 | 21845 |
-| 32 | -21846 | 0 | 2731 | -21846 |
-| 32 | -21846 | 0 | 2732 | 21845 |
-| 32 | -21846 | 0 | 2733 | 21845 |
-| 32 | -21846 | 0 | 2734 | 21845 |
-| 32 | -21846 | 0 | 2735 | 21845 |
-| 32+ | 21845 | 1 | 2731 | -21846 |
-| 33 | 21845 | 1 | 2731 | 21845 |
-| 33+ | -21846 | 1 | 2732 | 21845 |
-| 34 | -21846 | 1 | 2732 | -21846 |
-| 34+ | -21846 | 0 | 2728 | 21845 |
-| 35 | -21846 | 0 | 2728 | 21845 |
-| 35 | -21846 | 0 | 2729 | 21845 |
-| 35 | -21846 | 0 | 2730 | 21845 |
-| 35 | -21846 | 0 | 2731 | 21845 |
-| 35 | -21846 | 0 | 2732 | -21846 |
-| 35 | -21846 | 0 | 2733 | 21845 |
-| 35 | -21846 | 0 | 2734 | 21845 |
-| 35 | -21846 | 0 | 2735 | 21845 |
-| 35+ | 21845 | 1 | 2732 | -21846 |
-| 36 | 21845 | 1 | 2732 | 21845 |
-| 36+ | -21846 | 1 | 2733 | 21845 |
-| 37 | -21846 | 1 | 2733 | -21846 |
-| 37+ | -21846 | 0 | 2728 | 21845 |
-| 38 | -21846 | 0 | 2728 | 21845 |
-| 38 | -21846 | 0 | 2729 | 21845 |
-| 38 | -21846 | 0 | 2730 | 21845 |
-| 38 | -21846 | 0 | 2731 | 21845 |
-| 38 | -21846 | 0 | 2732 | 21845 |
-| 38 | -21846 | 0 | 2733 | -21846 |
-| 38 | -21846 | 0 | 2734 | 21845 |
-| 38 | -21846 | 0 | 2735 | 21845 |
-| 38+ | 21845 | 1 | 2733 | -21846 |
-| 39 | 21845 | 1 | 2733 | 21845 |
-| 39+ | -21846 | 1 | 2734 | 21845 |
-| 40 | -21846 | 1 | 2734 | -21846 |
-| 40+ | -21846 | 0 | 2728 | 21845 |
-| 41 | -21846 | 0 | 2728 | 21845 |
-| 41 | -21846 | 0 | 2729 | 21845 |
-| 41 | -21846 | 0 | 2730 | 21845 |
-| 41 | -21846 | 0 | 2731 | 21845 |
-| 41 | -21846 | 0 | 2732 | 21845 |
-| 41 | -21846 | 0 | 2733 | 21845 |
-| 41 | -21846 | 0 | 2734 | -21846 |
-| 41 | -21846 | 0 | 2735 | 21845 |
-| 41+ | 21845 | 1 | 2734 | -21846 |
-| 42 | 21845 | 1 | 2734 | 21845 |
-| 42+ | -21846 | 1 | 2735 | 21845 |
-| 43 | -21846 | 1 | 2735 | -21846 |
-| 43+ | -21846 | 0 | 2728 | 21845 |
-| 44 | -21846 | 0 | 2728 | 21845 |
-| 44 | -21846 | 0 | 2729 | 21845 |
-| 44 | -21846 | 0 | 2730 | 21845 |
-| 44 | -21846 | 0 | 2731 | 21845 |
-| 44 | -21846 | 0 | 2732 | 21845 |
-| 44 | -21846 | 0 | 2733 | 21845 |
-| 44 | -21846 | 0 | 2734 | 21845 |
-| 44 | -21846 | 0 | 2735 | -21846 |
-| 44+ | 21845 | 1 | 2735 | -21846 |
-| 45 | 21845 | 1 | 2735 | 21845 |
-| 45+ | 21845 | 0 | 2728 | 21845 |
-| 46 | 21845 | 0 | 2728 | 21845 |
-| 46 | 21845 | 0 | 2729 | 21845 |
-| 46 | 21845 | 0 | 2730 | 21845 |
-| 46 | 21845 | 0 | 2731 | 21845 |
-| 46 | 21845 | 0 | 2732 | 21845 |
-| 46 | 21845 | 0 | 2733 | 21845 |
-| 46 | 21845 | 0 | 2734 | 21845 |
-| 46 | 21845 | 0 | 2735 | 21845 |
-| 46+ | 21845 | 0 | 341 | 0 |
-| 47 | 21845 | 0 | 341 | 0 |
-| 47 | 21845 | 0 | 853 | 0 |
-| 47 | 21845 | 0 | 1365 | 0 |
-| 47 | 21845 | 0 | 1877 | 0 |
-| 47 | 21845 | 0 | 2389 | 0 |
-| 47 | 21845 | 0 | 2901 | 0 |
-| 47 | 21845 | 0 | 3413 | 0 |
-| 47 | 21845 | 0 | 3925 | 0 |
-| 47+ | 21845 | 1 | 341 | 0 |
-| 48 | 21845 | 1 | 341 | 21845 |
-| 48+ | 21845 | 1 | 853 | 0 |
-| 49 | 21845 | 1 | 853 | 21845 |
-| 49+ | 21845 | 1 | 1365 | 0 |
-| 50 | 21845 | 1 | 1365 | 21845 |
-| 50+ | 21845 | 1 | 1877 | 0 |
-| 51 | 21845 | 1 | 1877 | 21845 |
-| 51+ | 21845 | 1 | 2389 | 0 |
-| 52 | 21845 | 1 | 2389 | 21845 |
-| 52+ | 21845 | 1 | 2901 | 0 |
-| 53 | 21845 | 1 | 2901 | 21845 |
-| 53+ | 21845 | 1 | 3413 | 0 |
-| 54 | 21845 | 1 | 3413 | 21845 |
-| 54+ | 21845 | 1 | 3925 | 0 |
-| 55 | 21845 | 1 | 3925 | 21845 |
-| 55+ | 21845 | 0 | 341 | 21845 |
-| 56 | 21845 | 0 | 341 | 21845 |
-| 56 | 21845 | 0 | 853 | 21845 |
-| 56 | 21845 | 0 | 1365 | 21845 |
-| 56 | 21845 | 0 | 1877 | 21845 |
-| 56 | 21845 | 0 | 2389 | 21845 |
-| 56 | 21845 | 0 | 2901 | 21845 |
-| 56 | 21845 | 0 | 3413 | 21845 |
-| 56 | 21845 | 0 | 3925 | 21845 |
-| 56+ | -21846 | 1 | 341 | 21845 |
-| 57 | -21846 | 1 | 341 | -21846 |
-| 57+ | -21846 | 0 | 341 | -21846 |
-| 58 | -21846 | 0 | 341 | -21846 |
-| 58 | -21846 | 0 | 853 | 21845 |
-| 58 | -21846 | 0 | 1365 | 21845 |
-| 58 | -21846 | 0 | 1877 | 21845 |
-| 58 | -21846 | 0 | 2389 | 21845 |
-| 58 | -21846 | 0 | 2901 | 21845 |
-| 58 | -21846 | 0 | 3413 | 21845 |
-| 58 | -21846 | 0 | 3925 | 21845 |
-| 58+ | 21845 | 1 | 341 | -21846 |
-| 59 | 21845 | 1 | 341 | 21845 |
-| 59+ | -21846 | 1 | 853 | 21845 |
-| 60 | -21846 | 1 | 853 | -21846 |
-| 60+ | -21846 | 0 | 341 | 21845 |
-| 61 | -21846 | 0 | 341 | 21845 |
-| 61 | -21846 | 0 | 853 | -21846 |
-| 61 | -21846 | 0 | 1365 | 21845 |
-| 61 | -21846 | 0 | 1877 | 21845 |
-| 61 | -21846 | 0 | 2389 | 21845 |
-| 61 | -21846 | 0 | 2901 | 21845 |
-| 61 | -21846 | 0 | 3413 | 21845 |
-| 61 | -21846 | 0 | 3925 | 21845 |
-| 61+ | 21845 | 1 | 853 | -21846 |
-| 62 | 21845 | 1 | 853 | 21845 |
-| 62+ | -21846 | 1 | 1365 | 21845 |
-| 63 | -21846 | 1 | 1365 | -21846 |
-| 63+ | -21846 | 0 | 341 | 21845 |
-| 64 | -21846 | 0 | 341 | 21845 |
-| 64 | -21846 | 0 | 853 | 21845 |
-| 64 | -21846 | 0 | 1365 | -21846 |
-| 64 | -21846 | 0 | 1877 | 21845 |
-| 64 | -21846 | 0 | 2389 | 21845 |
-| 64 | -21846 | 0 | 2901 | 21845 |
-| 64 | -21846 | 0 | 3413 | 21845 |
-| 64 | -21846 | 0 | 3925 | 21845 |
-| 64+ | 21845 | 1 | 1365 | -21846 |
-| 65 | 21845 | 1 | 1365 | 21845 |
-| 65+ | -21846 | 1 | 1877 | 21845 |
-| 66 | -21846 | 1 | 1877 | -21846 |
-| 66+ | -21846 | 0 | 341 | 21845 |
-| 67 | -21846 | 0 | 341 | 21845 |
-| 67 | -21846 | 0 | 853 | 21845 |
-| 67 | -21846 | 0 | 1365 | 21845 |
-| 67 | -21846 | 0 | 1877 | -21846 |
-| 67 | -21846 | 0 | 2389 | 21845 |
-| 67 | -21846 | 0 | 2901 | 21845 |
-| 67 | -21846 | 0 | 3413 | 21845 |
-| 67 | -21846 | 0 | 3925 | 21845 |
-| 67+ | 21845 | 1 | 1877 | -21846 |
-| 68 | 21845 | 1 | 1877 | 21845 |
-| 68+ | -21846 | 1 | 2389 | 21845 |
-| 69 | -21846 | 1 | 2389 | -21846 |
-| 69+ | -21846 | 0 | 341 | 21845 |
-| 70 | -21846 | 0 | 341 | 21845 |
-| 70 | -21846 | 0 | 853 | 21845 |
-| 70 | -21846 | 0 | 1365 | 21845 |
-| 70 | -21846 | 0 | 1877 | 21845 |
-| 70 | -21846 | 0 | 2389 | -21846 |
-| 70 | -21846 | 0 | 2901 | 21845 |
-| 70 | -21846 | 0 | 3413 | 21845 |
-| 70 | -21846 | 0 | 3925 | 21845 |
-| 70+ | 21845 | 1 | 2389 | -21846 |
-| 71 | 21845 | 1 | 2389 | 21845 |
-| 71+ | -21846 | 1 | 2901 | 21845 |
-| 72 | -21846 | 1 | 2901 | -21846 |
-| 72+ | -21846 | 0 | 341 | 21845 |
-| 73 | -21846 | 0 | 341 | 21845 |
-| 73 | -21846 | 0 | 853 | 21845 |
-| 73 | -21846 | 0 | 1365 | 21845 |
-| 73 | -21846 | 0 | 1877 | 21845 |
-| 73 | -21846 | 0 | 2389 | 21845 |
-| 73 | -21846 | 0 | 2901 | -21846 |
-| 73 | -21846 | 0 | 3413 | 21845 |
-| 73 | -21846 | 0 | 3925 | 21845 |
-| 73+ | 21845 | 1 | 2901 | -21846 |
-| 74 | 21845 | 1 | 2901 | 21845 |
-| 74+ | -21846 | 1 | 3413 | 21845 |
-| 75 | -21846 | 1 | 3413 | -21846 |
-| 75+ | -21846 | 0 | 341 | 21845 |
-| 76 | -21846 | 0 | 341 | 21845 |
-| 76 | -21846 | 0 | 853 | 21845 |
-| 76 | -21846 | 0 | 1365 | 21845 |
-| 76 | -21846 | 0 | 1877 | 21845 |
-| 76 | -21846 | 0 | 2389 | 21845 |
-| 76 | -21846 | 0 | 2901 | 21845 |
-| 76 | -21846 | 0 | 3413 | -21846 |
-| 76 | -21846 | 0 | 3925 | 21845 |
-| 76+ | 21845 | 1 | 3413 | -21846 |
-| 77 | 21845 | 1 | 3413 | 21845 |
-| 77+ | -21846 | 1 | 3925 | 21845 |
-| 78 | -21846 | 1 | 3925 | -21846 |
-| 78+ | -21846 | 0 | 341 | 21845 |
-| 79 | -21846 | 0 | 341 | 21845 |
-| 79 | -21846 | 0 | 853 | 21845 |
-| 79 | -21846 | 0 | 1365 | 21845 |
-| 79 | -21846 | 0 | 1877 | 21845 |
-| 79 | -21846 | 0 | 2389 | 21845 |
-| 79 | -21846 | 0 | 2901 | 21845 |
-| 79 | -21846 | 0 | 3413 | 21845 |
-| 79 | -21846 | 0 | 3925 | -21846 |
-| 79+ | 21845 | 1 | 3925 | -21846 |
-| 80 | 21845 | 1 | 3925 | 21845 |
-| 80+ | 21845 | 0 | 341 | 21845 |
-| 81 | 21845 | 0 | 341 | 21845 |
-| 81 | 21845 | 0 | 853 | 21845 |
-| 81 | 21845 | 0 | 1365 | 21845 |
-| 81 | 21845 | 0 | 1877 | 21845 |
-| 81 | 21845 | 0 | 2389 | 21845 |
-| 81 | 21845 | 0 | 2901 | 21845 |
-| 81 | 21845 | 0 | 3413 | 21845 |
-| 81 | 21845 | 0 | 3925 | 21845 |
diff --git a/03/b/RAM4K.hdl b/03/b/RAM4K.hdl
deleted file mode 100644
index 1cee633..0000000
--- a/03/b/RAM4K.hdl
+++ /dev/null
@@ -1,19 +0,0 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/03/b/RAM4K.hdl
-
-/**
- * Memory of 4K registers, each 16 bit-wide. Out holds the value
- * stored at the memory location specified by address. If load==1, then
- * the in value is loaded into the memory location specified by address
- * (the loaded value will be emitted to out from the next time step onward).
- */
-
-CHIP RAM4K {
- IN in[16], load, address[12];
- OUT out[16];
-
- PARTS:
- // Put your code here:
-}
\ No newline at end of file
diff --git a/03/b/RAM512.cmp b/03/b/RAM512.cmp
deleted file mode 100644
index 6f756ca..0000000
--- a/03/b/RAM512.cmp
+++ /dev/null
@@ -1,320 +0,0 @@
-| time | in |load |address| out |
-| 0+ | 0 | 0 | 0 | 0 |
-| 1 | 0 | 0 | 0 | 0 |
-| 1+ | 0 | 1 | 0 | 0 |
-| 2 | 0 | 1 | 0 | 0 |
-| 2+ | 13099 | 0 | 0 | 0 |
-| 3 | 13099 | 0 | 0 | 0 |
-| 3+ | 13099 | 1 | 130 | 0 |
-| 4 | 13099 | 1 | 130 | 13099 |
-| 4+ | 13099 | 0 | 0 | 0 |
-| 5 | 13099 | 0 | 0 | 0 |
-| 5+ | 4729 | 0 | 472 | 0 |
-| 6 | 4729 | 0 | 472 | 0 |
-| 6+ | 4729 | 1 | 472 | 0 |
-| 7 | 4729 | 1 | 472 | 4729 |
-| 7+ | 4729 | 0 | 472 | 4729 |
-| 8 | 4729 | 0 | 472 | 4729 |
-| 8 | 4729 | 0 | 130 | 13099 |
-| 8+ | 5119 | 0 | 130 | 13099 |
-| 9 | 5119 | 0 | 130 | 13099 |
-| 9+ | 5119 | 1 | 511 | 0 |
-| 10 | 5119 | 1 | 511 | 5119 |
-| 10+ | 5119 | 0 | 511 | 5119 |
-| 11 | 5119 | 0 | 511 | 5119 |
-| 11 | 5119 | 0 | 472 | 4729 |
-| 11 | 5119 | 0 | 511 | 5119 |
-| 11+ | 5119 | 0 | 168 | 0 |
-| 12 | 5119 | 0 | 168 | 0 |
-| 12 | 5119 | 0 | 169 | 0 |
-| 12 | 5119 | 0 | 170 | 0 |
-| 12 | 5119 | 0 | 171 | 0 |
-| 12 | 5119 | 0 | 172 | 0 |
-| 12 | 5119 | 0 | 173 | 0 |
-| 12 | 5119 | 0 | 174 | 0 |
-| 12 | 5119 | 0 | 175 | 0 |
-| 12+ | 21845 | 1 | 168 | 0 |
-| 13 | 21845 | 1 | 168 | 21845 |
-| 13+ | 21845 | 1 | 169 | 0 |
-| 14 | 21845 | 1 | 169 | 21845 |
-| 14+ | 21845 | 1 | 170 | 0 |
-| 15 | 21845 | 1 | 170 | 21845 |
-| 15+ | 21845 | 1 | 171 | 0 |
-| 16 | 21845 | 1 | 171 | 21845 |
-| 16+ | 21845 | 1 | 172 | 0 |
-| 17 | 21845 | 1 | 172 | 21845 |
-| 17+ | 21845 | 1 | 173 | 0 |
-| 18 | 21845 | 1 | 173 | 21845 |
-| 18+ | 21845 | 1 | 174 | 0 |
-| 19 | 21845 | 1 | 174 | 21845 |
-| 19+ | 21845 | 1 | 175 | 0 |
-| 20 | 21845 | 1 | 175 | 21845 |
-| 20+ | 21845 | 0 | 168 | 21845 |
-| 21 | 21845 | 0 | 168 | 21845 |
-| 21 | 21845 | 0 | 169 | 21845 |
-| 21 | 21845 | 0 | 170 | 21845 |
-| 21 | 21845 | 0 | 171 | 21845 |
-| 21 | 21845 | 0 | 172 | 21845 |
-| 21 | 21845 | 0 | 173 | 21845 |
-| 21 | 21845 | 0 | 174 | 21845 |
-| 21 | 21845 | 0 | 175 | 21845 |
-| 21+ | -21846 | 1 | 168 | 21845 |
-| 22 | -21846 | 1 | 168 | -21846 |
-| 22+ | -21846 | 0 | 168 | -21846 |
-| 23 | -21846 | 0 | 168 | -21846 |
-| 23 | -21846 | 0 | 169 | 21845 |
-| 23 | -21846 | 0 | 170 | 21845 |
-| 23 | -21846 | 0 | 171 | 21845 |
-| 23 | -21846 | 0 | 172 | 21845 |
-| 23 | -21846 | 0 | 173 | 21845 |
-| 23 | -21846 | 0 | 174 | 21845 |
-| 23 | -21846 | 0 | 175 | 21845 |
-| 23+ | 21845 | 1 | 168 | -21846 |
-| 24 | 21845 | 1 | 168 | 21845 |
-| 24+ | -21846 | 1 | 169 | 21845 |
-| 25 | -21846 | 1 | 169 | -21846 |
-| 25+ | -21846 | 0 | 168 | 21845 |
-| 26 | -21846 | 0 | 168 | 21845 |
-| 26 | -21846 | 0 | 169 | -21846 |
-| 26 | -21846 | 0 | 170 | 21845 |
-| 26 | -21846 | 0 | 171 | 21845 |
-| 26 | -21846 | 0 | 172 | 21845 |
-| 26 | -21846 | 0 | 173 | 21845 |
-| 26 | -21846 | 0 | 174 | 21845 |
-| 26 | -21846 | 0 | 175 | 21845 |
-| 26+ | 21845 | 1 | 169 | -21846 |
-| 27 | 21845 | 1 | 169 | 21845 |
-| 27+ | -21846 | 1 | 170 | 21845 |
-| 28 | -21846 | 1 | 170 | -21846 |
-| 28+ | -21846 | 0 | 168 | 21845 |
-| 29 | -21846 | 0 | 168 | 21845 |
-| 29 | -21846 | 0 | 169 | 21845 |
-| 29 | -21846 | 0 | 170 | -21846 |
-| 29 | -21846 | 0 | 171 | 21845 |
-| 29 | -21846 | 0 | 172 | 21845 |
-| 29 | -21846 | 0 | 173 | 21845 |
-| 29 | -21846 | 0 | 174 | 21845 |
-| 29 | -21846 | 0 | 175 | 21845 |
-| 29+ | 21845 | 1 | 170 | -21846 |
-| 30 | 21845 | 1 | 170 | 21845 |
-| 30+ | -21846 | 1 | 171 | 21845 |
-| 31 | -21846 | 1 | 171 | -21846 |
-| 31+ | -21846 | 0 | 168 | 21845 |
-| 32 | -21846 | 0 | 168 | 21845 |
-| 32 | -21846 | 0 | 169 | 21845 |
-| 32 | -21846 | 0 | 170 | 21845 |
-| 32 | -21846 | 0 | 171 | -21846 |
-| 32 | -21846 | 0 | 172 | 21845 |
-| 32 | -21846 | 0 | 173 | 21845 |
-| 32 | -21846 | 0 | 174 | 21845 |
-| 32 | -21846 | 0 | 175 | 21845 |
-| 32+ | 21845 | 1 | 171 | -21846 |
-| 33 | 21845 | 1 | 171 | 21845 |
-| 33+ | -21846 | 1 | 172 | 21845 |
-| 34 | -21846 | 1 | 172 | -21846 |
-| 34+ | -21846 | 0 | 168 | 21845 |
-| 35 | -21846 | 0 | 168 | 21845 |
-| 35 | -21846 | 0 | 169 | 21845 |
-| 35 | -21846 | 0 | 170 | 21845 |
-| 35 | -21846 | 0 | 171 | 21845 |
-| 35 | -21846 | 0 | 172 | -21846 |
-| 35 | -21846 | 0 | 173 | 21845 |
-| 35 | -21846 | 0 | 174 | 21845 |
-| 35 | -21846 | 0 | 175 | 21845 |
-| 35+ | 21845 | 1 | 172 | -21846 |
-| 36 | 21845 | 1 | 172 | 21845 |
-| 36+ | -21846 | 1 | 173 | 21845 |
-| 37 | -21846 | 1 | 173 | -21846 |
-| 37+ | -21846 | 0 | 168 | 21845 |
-| 38 | -21846 | 0 | 168 | 21845 |
-| 38 | -21846 | 0 | 169 | 21845 |
-| 38 | -21846 | 0 | 170 | 21845 |
-| 38 | -21846 | 0 | 171 | 21845 |
-| 38 | -21846 | 0 | 172 | 21845 |
-| 38 | -21846 | 0 | 173 | -21846 |
-| 38 | -21846 | 0 | 174 | 21845 |
-| 38 | -21846 | 0 | 175 | 21845 |
-| 38+ | 21845 | 1 | 173 | -21846 |
-| 39 | 21845 | 1 | 173 | 21845 |
-| 39+ | -21846 | 1 | 174 | 21845 |
-| 40 | -21846 | 1 | 174 | -21846 |
-| 40+ | -21846 | 0 | 168 | 21845 |
-| 41 | -21846 | 0 | 168 | 21845 |
-| 41 | -21846 | 0 | 169 | 21845 |
-| 41 | -21846 | 0 | 170 | 21845 |
-| 41 | -21846 | 0 | 171 | 21845 |
-| 41 | -21846 | 0 | 172 | 21845 |
-| 41 | -21846 | 0 | 173 | 21845 |
-| 41 | -21846 | 0 | 174 | -21846 |
-| 41 | -21846 | 0 | 175 | 21845 |
-| 41+ | 21845 | 1 | 174 | -21846 |
-| 42 | 21845 | 1 | 174 | 21845 |
-| 42+ | -21846 | 1 | 175 | 21845 |
-| 43 | -21846 | 1 | 175 | -21846 |
-| 43+ | -21846 | 0 | 168 | 21845 |
-| 44 | -21846 | 0 | 168 | 21845 |
-| 44 | -21846 | 0 | 169 | 21845 |
-| 44 | -21846 | 0 | 170 | 21845 |
-| 44 | -21846 | 0 | 171 | 21845 |
-| 44 | -21846 | 0 | 172 | 21845 |
-| 44 | -21846 | 0 | 173 | 21845 |
-| 44 | -21846 | 0 | 174 | 21845 |
-| 44 | -21846 | 0 | 175 | -21846 |
-| 44+ | 21845 | 1 | 175 | -21846 |
-| 45 | 21845 | 1 | 175 | 21845 |
-| 45+ | 21845 | 0 | 168 | 21845 |
-| 46 | 21845 | 0 | 168 | 21845 |
-| 46 | 21845 | 0 | 169 | 21845 |
-| 46 | 21845 | 0 | 170 | 21845 |
-| 46 | 21845 | 0 | 171 | 21845 |
-| 46 | 21845 | 0 | 172 | 21845 |
-| 46 | 21845 | 0 | 173 | 21845 |
-| 46 | 21845 | 0 | 174 | 21845 |
-| 46 | 21845 | 0 | 175 | 21845 |
-| 46+ | 21845 | 0 | 42 | 0 |
-| 47 | 21845 | 0 | 42 | 0 |
-| 47 | 21845 | 0 | 106 | 0 |
-| 47 | 21845 | 0 | 170 | 21845 |
-| 47 | 21845 | 0 | 234 | 0 |
-| 47 | 21845 | 0 | 298 | 0 |
-| 47 | 21845 | 0 | 362 | 0 |
-| 47 | 21845 | 0 | 426 | 0 |
-| 47 | 21845 | 0 | 490 | 0 |
-| 47+ | 21845 | 1 | 42 | 0 |
-| 48 | 21845 | 1 | 42 | 21845 |
-| 48+ | 21845 | 1 | 106 | 0 |
-| 49 | 21845 | 1 | 106 | 21845 |
-| 49+ | 21845 | 1 | 170 | 21845 |
-| 50 | 21845 | 1 | 170 | 21845 |
-| 50+ | 21845 | 1 | 234 | 0 |
-| 51 | 21845 | 1 | 234 | 21845 |
-| 51+ | 21845 | 1 | 298 | 0 |
-| 52 | 21845 | 1 | 298 | 21845 |
-| 52+ | 21845 | 1 | 362 | 0 |
-| 53 | 21845 | 1 | 362 | 21845 |
-| 53+ | 21845 | 1 | 426 | 0 |
-| 54 | 21845 | 1 | 426 | 21845 |
-| 54+ | 21845 | 1 | 490 | 0 |
-| 55 | 21845 | 1 | 490 | 21845 |
-| 55+ | 21845 | 0 | 42 | 21845 |
-| 56 | 21845 | 0 | 42 | 21845 |
-| 56 | 21845 | 0 | 106 | 21845 |
-| 56 | 21845 | 0 | 170 | 21845 |
-| 56 | 21845 | 0 | 234 | 21845 |
-| 56 | 21845 | 0 | 298 | 21845 |
-| 56 | 21845 | 0 | 362 | 21845 |
-| 56 | 21845 | 0 | 426 | 21845 |
-| 56 | 21845 | 0 | 490 | 21845 |
-| 56+ | -21846 | 1 | 42 | 21845 |
-| 57 | -21846 | 1 | 42 | -21846 |
-| 57+ | -21846 | 0 | 42 | -21846 |
-| 58 | -21846 | 0 | 42 | -21846 |
-| 58 | -21846 | 0 | 106 | 21845 |
-| 58 | -21846 | 0 | 170 | 21845 |
-| 58 | -21846 | 0 | 234 | 21845 |
-| 58 | -21846 | 0 | 298 | 21845 |
-| 58 | -21846 | 0 | 362 | 21845 |
-| 58 | -21846 | 0 | 426 | 21845 |
-| 58 | -21846 | 0 | 490 | 21845 |
-| 58+ | 21845 | 1 | 42 | -21846 |
-| 59 | 21845 | 1 | 42 | 21845 |
-| 59+ | -21846 | 1 | 106 | 21845 |
-| 60 | -21846 | 1 | 106 | -21846 |
-| 60+ | -21846 | 0 | 42 | 21845 |
-| 61 | -21846 | 0 | 42 | 21845 |
-| 61 | -21846 | 0 | 106 | -21846 |
-| 61 | -21846 | 0 | 170 | 21845 |
-| 61 | -21846 | 0 | 234 | 21845 |
-| 61 | -21846 | 0 | 298 | 21845 |
-| 61 | -21846 | 0 | 362 | 21845 |
-| 61 | -21846 | 0 | 426 | 21845 |
-| 61 | -21846 | 0 | 490 | 21845 |
-| 61+ | 21845 | 1 | 106 | -21846 |
-| 62 | 21845 | 1 | 106 | 21845 |
-| 62+ | -21846 | 1 | 170 | 21845 |
-| 63 | -21846 | 1 | 170 | -21846 |
-| 63+ | -21846 | 0 | 42 | 21845 |
-| 64 | -21846 | 0 | 42 | 21845 |
-| 64 | -21846 | 0 | 106 | 21845 |
-| 64 | -21846 | 0 | 170 | -21846 |
-| 64 | -21846 | 0 | 234 | 21845 |
-| 64 | -21846 | 0 | 298 | 21845 |
-| 64 | -21846 | 0 | 362 | 21845 |
-| 64 | -21846 | 0 | 426 | 21845 |
-| 64 | -21846 | 0 | 490 | 21845 |
-| 64+ | 21845 | 1 | 170 | -21846 |
-| 65 | 21845 | 1 | 170 | 21845 |
-| 65+ | -21846 | 1 | 234 | 21845 |
-| 66 | -21846 | 1 | 234 | -21846 |
-| 66+ | -21846 | 0 | 42 | 21845 |
-| 67 | -21846 | 0 | 42 | 21845 |
-| 67 | -21846 | 0 | 106 | 21845 |
-| 67 | -21846 | 0 | 170 | 21845 |
-| 67 | -21846 | 0 | 234 | -21846 |
-| 67 | -21846 | 0 | 298 | 21845 |
-| 67 | -21846 | 0 | 362 | 21845 |
-| 67 | -21846 | 0 | 426 | 21845 |
-| 67 | -21846 | 0 | 490 | 21845 |
-| 67+ | 21845 | 1 | 234 | -21846 |
-| 68 | 21845 | 1 | 234 | 21845 |
-| 68+ | -21846 | 1 | 298 | 21845 |
-| 69 | -21846 | 1 | 298 | -21846 |
-| 69+ | -21846 | 0 | 42 | 21845 |
-| 70 | -21846 | 0 | 42 | 21845 |
-| 70 | -21846 | 0 | 106 | 21845 |
-| 70 | -21846 | 0 | 170 | 21845 |
-| 70 | -21846 | 0 | 234 | 21845 |
-| 70 | -21846 | 0 | 298 | -21846 |
-| 70 | -21846 | 0 | 362 | 21845 |
-| 70 | -21846 | 0 | 426 | 21845 |
-| 70 | -21846 | 0 | 490 | 21845 |
-| 70+ | 21845 | 1 | 298 | -21846 |
-| 71 | 21845 | 1 | 298 | 21845 |
-| 71+ | -21846 | 1 | 362 | 21845 |
-| 72 | -21846 | 1 | 362 | -21846 |
-| 72+ | -21846 | 0 | 42 | 21845 |
-| 73 | -21846 | 0 | 42 | 21845 |
-| 73 | -21846 | 0 | 106 | 21845 |
-| 73 | -21846 | 0 | 170 | 21845 |
-| 73 | -21846 | 0 | 234 | 21845 |
-| 73 | -21846 | 0 | 298 | 21845 |
-| 73 | -21846 | 0 | 362 | -21846 |
-| 73 | -21846 | 0 | 426 | 21845 |
-| 73 | -21846 | 0 | 490 | 21845 |
-| 73+ | 21845 | 1 | 362 | -21846 |
-| 74 | 21845 | 1 | 362 | 21845 |
-| 74+ | -21846 | 1 | 426 | 21845 |
-| 75 | -21846 | 1 | 426 | -21846 |
-| 75+ | -21846 | 0 | 42 | 21845 |
-| 76 | -21846 | 0 | 42 | 21845 |
-| 76 | -21846 | 0 | 106 | 21845 |
-| 76 | -21846 | 0 | 170 | 21845 |
-| 76 | -21846 | 0 | 234 | 21845 |
-| 76 | -21846 | 0 | 298 | 21845 |
-| 76 | -21846 | 0 | 362 | 21845 |
-| 76 | -21846 | 0 | 426 | -21846 |
-| 76 | -21846 | 0 | 490 | 21845 |
-| 76+ | 21845 | 1 | 426 | -21846 |
-| 77 | 21845 | 1 | 426 | 21845 |
-| 77+ | -21846 | 1 | 490 | 21845 |
-| 78 | -21846 | 1 | 490 | -21846 |
-| 78+ | -21846 | 0 | 42 | 21845 |
-| 79 | -21846 | 0 | 42 | 21845 |
-| 79 | -21846 | 0 | 106 | 21845 |
-| 79 | -21846 | 0 | 170 | 21845 |
-| 79 | -21846 | 0 | 234 | 21845 |
-| 79 | -21846 | 0 | 298 | 21845 |
-| 79 | -21846 | 0 | 362 | 21845 |
-| 79 | -21846 | 0 | 426 | 21845 |
-| 79 | -21846 | 0 | 490 | -21846 |
-| 79+ | 21845 | 1 | 490 | -21846 |
-| 80 | 21845 | 1 | 490 | 21845 |
-| 80+ | 21845 | 0 | 42 | 21845 |
-| 81 | 21845 | 0 | 42 | 21845 |
-| 81 | 21845 | 0 | 106 | 21845 |
-| 81 | 21845 | 0 | 170 | 21845 |
-| 81 | 21845 | 0 | 234 | 21845 |
-| 81 | 21845 | 0 | 298 | 21845 |
-| 81 | 21845 | 0 | 362 | 21845 |
-| 81 | 21845 | 0 | 426 | 21845 |
-| 81 | 21845 | 0 | 490 | 21845 |
diff --git a/03/b/RAM512.hdl b/03/b/RAM512.hdl
deleted file mode 100644
index 6c40f28..0000000
--- a/03/b/RAM512.hdl
+++ /dev/null
@@ -1,19 +0,0 @@
-// This file is part of the materials accompanying the book
-// "The Elements of Computing Systems" by Nisan and Schocken,
-// MIT Press. Book site: www.idc.ac.il/tecs
-// File name: projects/03/b/RAM512.hdl
-
-/**
- * Memory of 512 registers, each 16 bit-wide. Out holds the value
- * stored at the memory location specified by address. If load==1, then
- * the in value is loaded into the memory location specified by address
- * (the loaded value will be emitted to out from the next time step onward).
- */
-
-CHIP RAM512 {
- IN in[16], load, address[9];
- OUT out[16];
-
- PARTS:
- // Put your code here:
-}
\ No newline at end of file
diff --git a/04/fill/Fill.asm b/04/fill/Fill.asm
deleted file mode 100644
index 8f24a95..0000000
--- a/04/fill/Fill.asm
+++ /dev/null
@@ -1,14 +0,0 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/04/Fill.asm
-
-// Runs an infinite loop that listens to the keyboard input.
-// When a key is pressed (any key), the program blackens the screen,
-// i.e. writes "black" in every pixel;
-// the screen should remain fully black as long as the key is pressed.
-// When no key is pressed, the program clears the screen, i.e. writes
-// "white" in every pixel;
-// the screen should remain fully clear as long as no key is pressed.
-
-// Put your code here.
\ No newline at end of file
diff --git a/04/mult/Mult.tst b/04/mult/Mult.tst
deleted file mode 100644
index 9bf4fa8..0000000
--- a/04/mult/Mult.tst
+++ /dev/null
@@ -1,74 +0,0 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/04/mult/Mult.tst
-
-load Mult.asm,
-output-file Mult.out,
-compare-to Mult.cmp,
-output-list RAM[0]%D2.6.2 RAM[1]%D2.6.2 RAM[2]%D2.6.2;
-
-set RAM[0] 0, // Set test arguments
-set RAM[1] 0,
-set RAM[2] -1; // Test that program initialized product to 0
-repeat 20 {
- ticktock;
-}
-set RAM[0] 0, // Restore arguments in case program used them as loop counter
-set RAM[1] 0,
-output;
-
-set PC 0,
-set RAM[0] 1, // Set test arguments
-set RAM[1] 0,
-set RAM[2] -1; // Ensure that program initialized product to 0
-repeat 50 {
- ticktock;
-}
-set RAM[0] 1, // Restore arguments in case program used them as loop counter
-set RAM[1] 0,
-output;
-
-set PC 0,
-set RAM[0] 0, // Set test arguments
-set RAM[1] 2,
-set RAM[2] -1; // Ensure that program initialized product to 0
-repeat 80 {
- ticktock;
-}
-set RAM[0] 0, // Restore arguments in case program used them as loop counter
-set RAM[1] 2,
-output;
-
-set PC 0,
-set RAM[0] 3, // Set test arguments
-set RAM[1] 1,
-set RAM[2] -1; // Ensure that program initialized product to 0
-repeat 120 {
- ticktock;
-}
-set RAM[0] 3, // Restore arguments in case program used them as loop counter
-set RAM[1] 1,
-output;
-
-set PC 0,
-set RAM[0] 2, // Set test arguments
-set RAM[1] 4,
-set RAM[2] -1; // Ensure that program initialized product to 0
-repeat 150 {
- ticktock;
-}
-set RAM[0] 2, // Restore arguments in case program used them as loop counter
-set RAM[1] 4,
-output;
-
-set PC 0,
-set RAM[0] 6, // Set test arguments
-set RAM[1] 7,
-set RAM[2] -1; // Ensure that program initialized product to 0
-repeat 210 {
- ticktock;
-}
-set RAM[0] 6, // Restore arguments in case program used them as loop counter
-set RAM[1] 7,
-output;
diff --git a/05/CPU.cmp b/05/CPU.cmp
deleted file mode 100644
index 8025e61..0000000
--- a/05/CPU.cmp
+++ /dev/null
@@ -1,97 +0,0 @@
-|time| inM | instruction |reset| outM |writeM |addre| pc |DRegiste|
-|0+ | 0|0011000000111001| 0 |*******| 0 | 0| 0| 0 |
-|1 | 0|0011000000111001| 0 |*******| 0 |12345| 1| 0 |
-|1+ | 0|1110110000010000| 0 |*******| 0 |12345| 1| 12345 |
-|2 | 0|1110110000010000| 0 |*******| 0 |12345| 2| 12345 |
-|2+ | 0|0101101110100000| 0 |*******| 0 |12345| 2| 12345 |
-|3 | 0|0101101110100000| 0 |*******| 0 |23456| 3| 12345 |
-|3+ | 0|1110000111110000| 0 |*******| 0 |23456| 3| 11111 |
-|4 | 0|1110000111110000| 0 |*******| 0 |11111| 4| 11111 |
-|4+ | 0|0000001111101011| 0 |*******| 0 |11111| 4| 11111 |
-|5 | 0|0000001111101011| 0 |*******| 0 | 1003| 5| 11111 |
-|5+ | 0|1110001100001000| 0 | 11111| 1 | 1003| 5| 11111 |
-|6 | 0|1110001100001000| 0 | 11111| 1 | 1003| 6| 11111 |
-|6+ | 0|0000001111101100| 0 |*******| 0 | 1003| 6| 11111 |
-|7 | 0|0000001111101100| 0 |*******| 0 | 1004| 7| 11111 |
-|7+ | 0|1110001110011000| 0 | 11110| 1 | 1004| 7| 11110 |
-|8 | 0|1110001110011000| 0 | 11109| 1 | 1004| 8| 11110 |
-|8+ | 0|0000001111101000| 0 |*******| 0 | 1004| 8| 11110 |
-|9 | 0|0000001111101000| 0 |*******| 0 | 1000| 9| 11110 |
-|9+ | 11111|1111010011110000| 0 |*******| 0 | 1000| 9| -1 |
-|10 | 11111|1111010011110000| 0 |*******| 0 |32767| 10| -1 |
-|10+ | 11111|0000000000001110| 0 |*******| 0 |32767| 10| -1 |
-|11 | 11111|0000000000001110| 0 |*******| 0 | 14| 11| -1 |
-|11+ | 11111|1110001100000100| 0 |*******| 0 | 14| 11| -1 |
-|12 | 11111|1110001100000100| 0 |*******| 0 | 14| 14| -1 |
-|12+ | 11111|0000001111100111| 0 |*******| 0 | 14| 14| -1 |
-|13 | 11111|0000001111100111| 0 |*******| 0 | 999| 15| -1 |
-|13+ | 11111|1111110111100000| 0 |*******| 0 | 999| 15| -1 |
-|14 | 11111|1111110111100000| 0 |*******| 0 |11112| 16| -1 |
-|14+ | 11111|1110001100101000| 0 | -1| 1 |11112| 16| -1 |
-|15 | 11111|1110001100101000| 0 | -1| 1 |32767| 17| -1 |
-|15+ | 11111|0000000000010101| 0 |*******| 0 |32767| 17| -1 |
-|16 | 11111|0000000000010101| 0 |*******| 0 | 21| 18| -1 |
-|16+ | 11111|1110011111000010| 0 |*******| 0 | 21| 18| -1 |
-|17 | 11111|1110011111000010| 0 |*******| 0 | 21| 21| -1 |
-|17+ | 11111|0000000000000010| 0 |*******| 0 | 21| 21| -1 |
-|18 | 11111|0000000000000010| 0 |*******| 0 | 2| 22| -1 |
-|18+ | 11111|1110000010111000| 0 | 1| 1 | 2| 22| 1 |
-|19 | 11111|1110000010111000| 0 | 2| 1 | 1| 23| 1 |
-|19+ | 11111|1111110111001000| 0 | 11112| 1 | 1| 23| 1 |
-|20 | 11111|1111110111001000| 0 | 11112| 1 | 1| 24| 1 |
-|20+ | 11111|1111110010101000| 0 | 11110| 1 | 1| 24| 1 |
-|21 | 11111|1111110010101000| 0 | 11110| 1 |11110| 25| 1 |
-|21+ | 11111|0000001111101000| 0 |*******| 0 |11110| 25| 1 |
-|22 | 11111|0000001111101000| 0 |*******| 0 | 1000| 26| 1 |
-|22+ | 11111|1110111010010000| 0 |*******| 0 | 1000| 26| -1 |
-|23 | 11111|1110111010010000| 0 |*******| 0 | 1000| 27| -1 |
-|23+ | 11111|1110001100000001| 0 |*******| 0 | 1000| 27| -1 |
-|24 | 11111|1110001100000001| 0 |*******| 0 | 1000| 28| -1 |
-|24+ | 11111|1110001100000010| 0 |*******| 0 | 1000| 28| -1 |
-|25 | 11111|1110001100000010| 0 |*******| 0 | 1000| 29| -1 |
-|25+ | 11111|1110001100000011| 0 |*******| 0 | 1000| 29| -1 |
-|26 | 11111|1110001100000011| 0 |*******| 0 | 1000| 30| -1 |
-|26+ | 11111|1110001100000100| 0 |*******| 0 | 1000| 30| -1 |
-|27 | 11111|1110001100000100| 0 |*******| 0 | 1000| 1000| -1 |
-|27+ | 11111|1110001100000101| 0 |*******| 0 | 1000| 1000| -1 |
-|28 | 11111|1110001100000101| 0 |*******| 0 | 1000| 1000| -1 |
-|28+ | 11111|1110001100000110| 0 |*******| 0 | 1000| 1000| -1 |
-|29 | 11111|1110001100000110| 0 |*******| 0 | 1000| 1000| -1 |
-|29+ | 11111|1110001100000111| 0 |*******| 0 | 1000| 1000| -1 |
-|30 | 11111|1110001100000111| 0 |*******| 0 | 1000| 1000| -1 |
-|30+ | 11111|1110101010010000| 0 |*******| 0 | 1000| 1000| 0 |
-|31 | 11111|1110101010010000| 0 |*******| 0 | 1000| 1001| 0 |
-|31+ | 11111|1110001100000001| 0 |*******| 0 | 1000| 1001| 0 |
-|32 | 11111|1110001100000001| 0 |*******| 0 | 1000| 1002| 0 |
-|32+ | 11111|1110001100000010| 0 |*******| 0 | 1000| 1002| 0 |
-|33 | 11111|1110001100000010| 0 |*******| 0 | 1000| 1000| 0 |
-|33+ | 11111|1110001100000011| 0 |*******| 0 | 1000| 1000| 0 |
-|34 | 11111|1110001100000011| 0 |*******| 0 | 1000| 1000| 0 |
-|34+ | 11111|1110001100000100| 0 |*******| 0 | 1000| 1000| 0 |
-|35 | 11111|1110001100000100| 0 |*******| 0 | 1000| 1001| 0 |
-|35+ | 11111|1110001100000101| 0 |*******| 0 | 1000| 1001| 0 |
-|36 | 11111|1110001100000101| 0 |*******| 0 | 1000| 1002| 0 |
-|36+ | 11111|1110001100000110| 0 |*******| 0 | 1000| 1002| 0 |
-|37 | 11111|1110001100000110| 0 |*******| 0 | 1000| 1000| 0 |
-|37+ | 11111|1110001100000111| 0 |*******| 0 | 1000| 1000| 0 |
-|38 | 11111|1110001100000111| 0 |*******| 0 | 1000| 1000| 0 |
-|38+ | 11111|1110111111010000| 0 |*******| 0 | 1000| 1000| 1 |
-|39 | 11111|1110111111010000| 0 |*******| 0 | 1000| 1001| 1 |
-|39+ | 11111|1110001100000001| 0 |*******| 0 | 1000| 1001| 1 |
-|40 | 11111|1110001100000001| 0 |*******| 0 | 1000| 1000| 1 |
-|40+ | 11111|1110001100000010| 0 |*******| 0 | 1000| 1000| 1 |
-|41 | 11111|1110001100000010| 0 |*******| 0 | 1000| 1001| 1 |
-|41+ | 11111|1110001100000011| 0 |*******| 0 | 1000| 1001| 1 |
-|42 | 11111|1110001100000011| 0 |*******| 0 | 1000| 1000| 1 |
-|42+ | 11111|1110001100000100| 0 |*******| 0 | 1000| 1000| 1 |
-|43 | 11111|1110001100000100| 0 |*******| 0 | 1000| 1001| 1 |
-|43+ | 11111|1110001100000101| 0 |*******| 0 | 1000| 1001| 1 |
-|44 | 11111|1110001100000101| 0 |*******| 0 | 1000| 1000| 1 |
-|44+ | 11111|1110001100000110| 0 |*******| 0 | 1000| 1000| 1 |
-|45 | 11111|1110001100000110| 0 |*******| 0 | 1000| 1001| 1 |
-|45+ | 11111|1110001100000111| 0 |*******| 0 | 1000| 1001| 1 |
-|46 | 11111|1110001100000111| 0 |*******| 0 | 1000| 1000| 1 |
-|46+ | 11111|1110001100000111| 1 |*******| 0 | 1000| 1000| 1 |
-|47 | 11111|1110001100000111| 1 |*******| 0 | 1000| 0| 1 |
-|47+ | 11111|0111111111111111| 0 |*******| 0 | 1000| 0| 1 |
-|48 | 11111|0111111111111111| 0 |*******| 0 |32767| 1| 1 |
diff --git a/05/CPU.hdl b/05/CPU.hdl
deleted file mode 100644
index 7b73ca0..0000000
--- a/05/CPU.hdl
+++ /dev/null
@@ -1,43 +0,0 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/05/CPU.hdl
-
-/**
- * The Hack CPU (Central Processing unit), consisting of an ALU,
- * two registers named A and D, and a program counter named PC.
- * The CPU is designed to fetch and execute instructions written in
- * the Hack machine language. In particular, functions as follows:
- * Executes the inputted instruction according to the Hack machine
- * language specification. The D and A in the language specification
- * refer to CPU-resident registers, while M refers to the external
- * memory location addressed by A, i.e. to Memory[A]. The inM input
- * holds the value of this location. If the current instruction needs
- * to write a value to M, the value is placed in outM, the address
- * of the target location is placed in the addressM output, and the
- * writeM control bit is asserted. (When writeM==0, any value may
- * appear in outM). The outM and writeM outputs are combinational:
- * they are affected instantaneously by the execution of the current
- * instruction. The addressM and pc outputs are clocked: although they
- * are affected by the execution of the current instruction, they commit
- * to their new values only in the next time step. If reset==1 then the
- * CPU jumps to address 0 (i.e. pc is set to 0 in next time step) rather
- * than to the address resulting from executing the current instruction.
- */
-
-CHIP CPU {
-
- IN inM[16], // M value input (M = contents of RAM[A])
- instruction[16], // Instruction for execution
- reset; // Signals whether to re-start the current
- // program (reset==1) or continue executing
- // the current program (reset==0).
-
- OUT outM[16], // M value output
- writeM, // Write to M?
- addressM[15], // Address in data memory (of M)
- pc[15]; // address of next instruction
-
- PARTS:
- // Put your code here:
-}
\ No newline at end of file
diff --git a/05/Computer.hdl b/05/Computer.hdl
deleted file mode 100644
index 22f9b48..0000000
--- a/05/Computer.hdl
+++ /dev/null
@@ -1,23 +0,0 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/05/Computer.hdl
-
-/**
- * The HACK computer, including CPU, ROM and RAM.
- * When reset is 0, the program stored in the computer's ROM executes.
- * When reset is 1, the execution of the program restarts.
- * Thus, to start a program's execution, reset must be pushed "up" (1)
- * and "down" (0). From this point onward the user is at the mercy of
- * the software. In particular, depending on the program's code, the
- * screen may show some output and the user may be able to interact
- * with the computer via the keyboard.
- */
-
-CHIP Computer {
-
- IN reset;
-
- PARTS:
- // Put your code here:
-}
diff --git a/05/ComputerAdd-external.cmp b/05/ComputerAdd-external.cmp
deleted file mode 100644
index a3a8eaf..0000000
--- a/05/ComputerAdd-external.cmp
+++ /dev/null
@@ -1,15 +0,0 @@
-| time |reset|RAM16K[0]|RAM16K[1]|RAM16K[2]|
-| 0 | 0 | 0 | 0 | 0 |
-| 1 | 0 | 0 | 0 | 0 |
-| 2 | 0 | 0 | 0 | 0 |
-| 3 | 0 | 0 | 0 | 0 |
-| 4 | 0 | 0 | 0 | 0 |
-| 5 | 0 | 0 | 0 | 0 |
-| 6 | 0 | 5 | 0 | 0 |
-| 7 | 1 | 0 | 0 | 0 |
-| 8 | 0 | 0 | 0 | 0 |
-| 9 | 0 | 0 | 0 | 0 |
-| 10 | 0 | 0 | 0 | 0 |
-| 11 | 0 | 0 | 0 | 0 |
-| 12 | 0 | 0 | 0 | 0 |
-| 13 | 0 | 5 | 0 | 0 |
diff --git a/05/ComputerAdd-external.tst b/05/ComputerAdd-external.tst
deleted file mode 100644
index 09cc1a7..0000000
--- a/05/ComputerAdd-external.tst
+++ /dev/null
@@ -1,32 +0,0 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/05/ComputerAdd-external.tst
-
-load Computer.hdl,
-output-file ComputerAdd-external.out,
-compare-to ComputerAdd-external.cmp,
-output-list time%S1.4.1 reset%B2.1.2 RAM16K[0]%D1.7.1 RAM16K[1]%D1.7.1 RAM16K[2]%D1.7.1;
-
-// Load a program written in the Hack machine language.
-// The program adds the two constants 2 and 3 and writes the result in RAM[0].
-ROM32K load Add.hack,
-output;
-
-// First run (at the beginning PC=0)
-repeat 6 {
- tick, tock, output;
-}
-
-// Reset the PC
-set reset 1,
-set RAM16K[0] 0,
-tick, tock, output;
-
-
-// Second run, to check that the PC was reset correctly.
-set reset 0,
-
-repeat 6 {
- tick, tock, output;
-}
diff --git a/05/ComputerAdd.cmp b/05/ComputerAdd.cmp
deleted file mode 100644
index f295464..0000000
--- a/05/ComputerAdd.cmp
+++ /dev/null
@@ -1,15 +0,0 @@
-| time |reset|ARegister|DRegister|PC[]|RAM16K[0]|RAM16K[1]|RAM16K[2]|
-| 0 | 0 | 0 | 0 | 0| 0 | 0 | 0 |
-| 1 | 0 | 2 | 0 | 1| 0 | 0 | 0 |
-| 2 | 0 | 2 | 2 | 2| 0 | 0 | 0 |
-| 3 | 0 | 3 | 2 | 3| 0 | 0 | 0 |
-| 4 | 0 | 3 | 5 | 4| 0 | 0 | 0 |
-| 5 | 0 | 0 | 5 | 5| 0 | 0 | 0 |
-| 6 | 0 | 0 | 5 | 6| 5 | 0 | 0 |
-| 7 | 1 | 0 | 5 | 0| 0 | 0 | 0 |
-| 8 | 0 | 2 | 5 | 1| 0 | 0 | 0 |
-| 9 | 0 | 2 | 2 | 2| 0 | 0 | 0 |
-| 10 | 0 | 3 | 2 | 3| 0 | 0 | 0 |
-| 11 | 0 | 3 | 5 | 4| 0 | 0 | 0 |
-| 12 | 0 | 0 | 5 | 5| 0 | 0 | 0 |
-| 13 | 0 | 0 | 5 | 6| 5 | 0 | 0 |
diff --git a/05/ComputerMax-external.cmp b/05/ComputerMax-external.cmp
deleted file mode 100644
index f864733..0000000
--- a/05/ComputerMax-external.cmp
+++ /dev/null
@@ -1,28 +0,0 @@
-| time |reset|RAM16K[0]|RAM16K[1]|RAM16K[2]|
-| 0 | 0 | 3 | 5 | 0 |
-| 1 | 0 | 3 | 5 | 0 |
-| 2 | 0 | 3 | 5 | 0 |
-| 3 | 0 | 3 | 5 | 0 |
-| 4 | 0 | 3 | 5 | 0 |
-| 5 | 0 | 3 | 5 | 0 |
-| 6 | 0 | 3 | 5 | 0 |
-| 7 | 0 | 3 | 5 | 0 |
-| 8 | 0 | 3 | 5 | 0 |
-| 9 | 0 | 3 | 5 | 0 |
-| 10 | 0 | 3 | 5 | 0 |
-| 11 | 0 | 3 | 5 | 0 |
-| 12 | 0 | 3 | 5 | 5 |
-| 13 | 0 | 3 | 5 | 5 |
-| 14 | 0 | 3 | 5 | 5 |
-| 15 | 1 | 3 | 5 | 5 |
-| 15 | 0 | 23456 | 12345 | 5 |
-| 16 | 0 | 23456 | 12345 | 5 |
-| 17 | 0 | 23456 | 12345 | 5 |
-| 18 | 0 | 23456 | 12345 | 5 |
-| 19 | 0 | 23456 | 12345 | 5 |
-| 20 | 0 | 23456 | 12345 | 5 |
-| 21 | 0 | 23456 | 12345 | 5 |
-| 22 | 0 | 23456 | 12345 | 5 |
-| 23 | 0 | 23456 | 12345 | 5 |
-| 24 | 0 | 23456 | 12345 | 5 |
-| 25 | 0 | 23456 | 12345 | 23456 |
diff --git a/05/ComputerMax-external.tst b/05/ComputerMax-external.tst
deleted file mode 100644
index 52b6bef..0000000
--- a/05/ComputerMax-external.tst
+++ /dev/null
@@ -1,38 +0,0 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/05/ComputerMax-external.tst
-
-load Computer.hdl,
-output-file ComputerMax-external.out,
-compare-to ComputerMax-external.cmp,
-output-list time%S1.4.1 reset%B2.1.2 RAM16K[0]%D1.7.1 RAM16K[1]%D1.7.1 RAM16K[2]%D1.7.1;
-
-// Load a program written in the Hack machine language.
-// The program computes the maximum of RAM[0] and RAM[1]
-// and writes the result in RAM[2].
-ROM32K load Max.hack,
-
-// first run: compute max(3,5)
-set RAM16K[0] 3,
-set RAM16K[1] 5,
-output;
-
-repeat 14 {
- tick, tock, output;
-}
-
-// reset the PC
-set reset 1,
-tick, tock, output;
-
-// second run: compute max(23456,12345)
-set reset 0,
-set RAM16K[0] 23456,
-set RAM16K[1] 12345,
-output;
-
-// The run on these inputs needs less cycles (different branching)
-repeat 10 {
- tick, tock, output;
-}
diff --git a/05/ComputerMax.cmp b/05/ComputerMax.cmp
deleted file mode 100644
index 42276cd..0000000
--- a/05/ComputerMax.cmp
+++ /dev/null
@@ -1,28 +0,0 @@
-| time |reset|ARegister|DRegister|PC[]|RAM16K[0]|RAM16K[1]|RAM16K[2]|
-| 0 | 0 | 0 | 0 | 0| 3 | 5 | 0 |
-| 1 | 0 | 0 | 0 | 1| 3 | 5 | 0 |
-| 2 | 0 | 0 | 3 | 2| 3 | 5 | 0 |
-| 3 | 0 | 1 | 3 | 3| 3 | 5 | 0 |
-| 4 | 0 | 1 | -2 | 4| 3 | 5 | 0 |
-| 5 | 0 | 10 | -2 | 5| 3 | 5 | 0 |
-| 6 | 0 | 10 | -2 | 6| 3 | 5 | 0 |
-| 7 | 0 | 1 | -2 | 7| 3 | 5 | 0 |
-| 8 | 0 | 1 | 5 | 8| 3 | 5 | 0 |
-| 9 | 0 | 12 | 5 | 9| 3 | 5 | 0 |
-| 10 | 0 | 12 | 5 | 12| 3 | 5 | 0 |
-| 11 | 0 | 2 | 5 | 13| 3 | 5 | 0 |
-| 12 | 0 | 2 | 5 | 14| 3 | 5 | 5 |
-| 13 | 0 | 14 | 5 | 15| 3 | 5 | 5 |
-| 14 | 0 | 14 | 5 | 14| 3 | 5 | 5 |
-| 15 | 1 | 14 | 5 | 0| 3 | 5 | 5 |
-| 15 | 0 | 14 | 5 | 0| 23456 | 12345 | 5 |
-| 16 | 0 | 0 | 5 | 1| 23456 | 12345 | 5 |
-| 17 | 0 | 0 | 23456 | 2| 23456 | 12345 | 5 |
-| 18 | 0 | 1 | 23456 | 3| 23456 | 12345 | 5 |
-| 19 | 0 | 1 | 11111 | 4| 23456 | 12345 | 5 |
-| 20 | 0 | 10 | 11111 | 5| 23456 | 12345 | 5 |
-| 21 | 0 | 10 | 11111 | 10| 23456 | 12345 | 5 |
-| 22 | 0 | 0 | 11111 | 11| 23456 | 12345 | 5 |
-| 23 | 0 | 0 | 23456 | 12| 23456 | 12345 | 5 |
-| 24 | 0 | 2 | 23456 | 13| 23456 | 12345 | 5 |
-| 25 | 0 | 2 | 23456 | 14| 23456 | 12345 | 23456 |
diff --git a/05/ComputerMax.tst b/05/ComputerMax.tst
deleted file mode 100644
index e090754..0000000
--- a/05/ComputerMax.tst
+++ /dev/null
@@ -1,39 +0,0 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/05/ComputerMax.tst
-
-load Computer.hdl,
-output-file ComputerMax.out,
-compare-to ComputerMax.cmp,
-output-list time%S1.4.1 reset%B2.1.2 ARegister[]%D1.7.1 DRegister[]%D1.7.1 PC[]%D0.4.0 RAM16K[0]%D1.7.1 RAM16K[1]%D1.7.1 RAM16K[2]%D1.7.1;
-
-// Load a program written in the Hack machine language.
-// The program computes the maximum of RAM[0] and RAM[1]
-// and writes the result in RAM[2].
-
-ROM32K load Max.hack,
-
-// first run: compute max(3,5)
-set RAM16K[0] 3,
-set RAM16K[1] 5,
-output;
-
-repeat 14 {
- tick, tock, output;
-}
-
-// reset the PC
-set reset 1,
-tick, tock, output;
-
-// second run: compute max(23456,12345)
-set reset 0,
-set RAM16K[0] 23456,
-set RAM16K[1] 12345,
-output;
-
-// The run on these inputs needs less cycles (different branching)
-repeat 10 {
- tick, tock, output;
-}
diff --git a/05/ComputerRect-external.cmp b/05/ComputerRect-external.cmp
deleted file mode 100644
index f276922..0000000
--- a/05/ComputerRect-external.cmp
+++ /dev/null
@@ -1,65 +0,0 @@
-| time |
-| 0 |
-| 1 |
-| 2 |
-| 3 |
-| 4 |
-| 5 |
-| 6 |
-| 7 |
-| 8 |
-| 9 |
-| 10 |
-| 11 |
-| 12 |
-| 13 |
-| 14 |
-| 15 |
-| 16 |
-| 17 |
-| 18 |
-| 19 |
-| 20 |
-| 21 |
-| 22 |
-| 23 |
-| 24 |
-| 25 |
-| 26 |
-| 27 |
-| 28 |
-| 29 |
-| 30 |
-| 31 |
-| 32 |
-| 33 |
-| 34 |
-| 35 |
-| 36 |
-| 37 |
-| 38 |
-| 39 |
-| 40 |
-| 41 |
-| 42 |
-| 43 |
-| 44 |
-| 45 |
-| 46 |
-| 47 |
-| 48 |
-| 49 |
-| 50 |
-| 51 |
-| 52 |
-| 53 |
-| 54 |
-| 55 |
-| 56 |
-| 57 |
-| 58 |
-| 59 |
-| 60 |
-| 61 |
-| 62 |
-| 63 |
diff --git a/05/ComputerRect-external.tst b/05/ComputerRect-external.tst
deleted file mode 100644
index f9102f7..0000000
--- a/05/ComputerRect-external.tst
+++ /dev/null
@@ -1,26 +0,0 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/05/ComputerRect-external.tst
-
-load Computer.hdl,
-output-file ComputerRect-external.out,
-compare-to ComputerRect-external.cmp,
-output-list time%S1.4.1;
-
-// Load a program written in the Hack machine language.
-// The program draws a rectangle of width 16 pixels and
-// length RAM[0] at the top left of the screen.
-ROM32K load Rect.hack,
-
-echo "Before you run this script, select the 'Screen' option from the 'View' menu";
-
-echo "A small rectangle should be drawn at the top left of the screen (the 'Screen' option of the 'View' menu should be selected.)";
-
-// draw a rectangle 16 pixels wide and 4 pixels long
-set RAM16K[0] 4,
-output;
-
-repeat 63 {
- tick, tock, output;
-}
diff --git a/05/ComputerRect.cmp b/05/ComputerRect.cmp
deleted file mode 100644
index a6b5cc9..0000000
--- a/05/ComputerRect.cmp
+++ /dev/null
@@ -1,65 +0,0 @@
-| time |ARegister|DRegister|PC[]|RAM16K[0]|RAM16K[1]|RAM16K[2]|
-| 0 | 0 | 0 | 0| 4 | 0 | 0 |
-| 1 | 0 | 0 | 1| 4 | 0 | 0 |
-| 2 | 0 | 4 | 2| 4 | 0 | 0 |
-| 3 | 23 | 4 | 3| 4 | 0 | 0 |
-| 4 | 23 | 4 | 4| 4 | 0 | 0 |
-| 5 | 16 | 4 | 5| 4 | 0 | 0 |
-| 6 | 16 | 4 | 6| 4 | 0 | 0 |
-| 7 | 16384 | 4 | 7| 4 | 0 | 0 |
-| 8 | 16384 | 16384 | 8| 4 | 0 | 0 |
-| 9 | 17 | 16384 | 9| 4 | 0 | 0 |
-| 10 | 17 | 16384 | 10| 4 | 0 | 0 |
-| 11 | 17 | 16384 | 11| 4 | 0 | 0 |
-| 12 | 16384 | 16384 | 12| 4 | 0 | 0 |
-| 13 | 16384 | 16384 | 13| 4 | 0 | 0 |
-| 14 | 17 | 16384 | 14| 4 | 0 | 0 |
-| 15 | 17 | 16384 | 15| 4 | 0 | 0 |
-| 16 | 32 | 16384 | 16| 4 | 0 | 0 |
-| 17 | 32 | 16416 | 17| 4 | 0 | 0 |
-| 18 | 17 | 16416 | 18| 4 | 0 | 0 |
-| 19 | 17 | 16416 | 19| 4 | 0 | 0 |
-| 20 | 16 | 16416 | 20| 4 | 0 | 0 |
-| 21 | 16 | 3 | 21| 4 | 0 | 0 |
-| 22 | 10 | 3 | 22| 4 | 0 | 0 |
-| 23 | 10 | 3 | 10| 4 | 0 | 0 |
-| 24 | 17 | 3 | 11| 4 | 0 | 0 |
-| 25 | 16416 | 3 | 12| 4 | 0 | 0 |
-| 26 | 16416 | 3 | 13| 4 | 0 | 0 |
-| 27 | 17 | 3 | 14| 4 | 0 | 0 |
-| 28 | 17 | 16416 | 15| 4 | 0 | 0 |
-| 29 | 32 | 16416 | 16| 4 | 0 | 0 |
-| 30 | 32 | 16448 | 17| 4 | 0 | 0 |
-| 31 | 17 | 16448 | 18| 4 | 0 | 0 |
-| 32 | 17 | 16448 | 19| 4 | 0 | 0 |
-| 33 | 16 | 16448 | 20| 4 | 0 | 0 |
-| 34 | 16 | 2 | 21| 4 | 0 | 0 |
-| 35 | 10 | 2 | 22| 4 | 0 | 0 |
-| 36 | 10 | 2 | 10| 4 | 0 | 0 |
-| 37 | 17 | 2 | 11| 4 | 0 | 0 |
-| 38 | 16448 | 2 | 12| 4 | 0 | 0 |
-| 39 | 16448 | 2 | 13| 4 | 0 | 0 |
-| 40 | 17 | 2 | 14| 4 | 0 | 0 |
-| 41 | 17 | 16448 | 15| 4 | 0 | 0 |
-| 42 | 32 | 16448 | 16| 4 | 0 | 0 |
-| 43 | 32 | 16480 | 17| 4 | 0 | 0 |
-| 44 | 17 | 16480 | 18| 4 | 0 | 0 |
-| 45 | 17 | 16480 | 19| 4 | 0 | 0 |
-| 46 | 16 | 16480 | 20| 4 | 0 | 0 |
-| 47 | 16 | 1 | 21| 4 | 0 | 0 |
-| 48 | 10 | 1 | 22| 4 | 0 | 0 |
-| 49 | 10 | 1 | 10| 4 | 0 | 0 |
-| 50 | 17 | 1 | 11| 4 | 0 | 0 |
-| 51 | 16480 | 1 | 12| 4 | 0 | 0 |
-| 52 | 16480 | 1 | 13| 4 | 0 | 0 |
-| 53 | 17 | 1 | 14| 4 | 0 | 0 |
-| 54 | 17 | 16480 | 15| 4 | 0 | 0 |
-| 55 | 32 | 16480 | 16| 4 | 0 | 0 |
-| 56 | 32 | 16512 | 17| 4 | 0 | 0 |
-| 57 | 17 | 16512 | 18| 4 | 0 | 0 |
-| 58 | 17 | 16512 | 19| 4 | 0 | 0 |
-| 59 | 16 | 16512 | 20| 4 | 0 | 0 |
-| 60 | 16 | 0 | 21| 4 | 0 | 0 |
-| 61 | 10 | 0 | 22| 4 | 0 | 0 |
-| 62 | 10 | 0 | 23| 4 | 0 | 0 |
-| 63 | 23 | 0 | 24| 4 | 0 | 0 |
diff --git a/06/max/Max.asm b/06/max/Max.asm
deleted file mode 100644
index b62c138..0000000
--- a/06/max/Max.asm
+++ /dev/null
@@ -1,26 +0,0 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/06/max/Max.asm
-
-// Computes R2 = max(R0, R1) (R0,R1,R2 refer to RAM[0],RAM[1],RAM[2])
-
- @R0
- D=M // D = first number
- @R1
- D=D-M // D = first number - second number
- @OUTPUT_FIRST
- D;JGT // if D>0 (first is greater) goto output_first
- @R1
- D=M // D = second number
- @OUTPUT_D
- 0;JMP // goto output_d
-(OUTPUT_FIRST)
- @R0
- D=M // D = first number
-(OUTPUT_D)
- @R2
- M=D // M[2] = D (greatest number)
-(INFINITE_LOOP)
- @INFINITE_LOOP
- 0;JMP // infinite loop
diff --git a/08/FunctionCalls/FibonacciElement/Main.vm b/08/FunctionCalls/FibonacciElement/Main.vm
deleted file mode 100644
index 55e5ad2..0000000
--- a/08/FunctionCalls/FibonacciElement/Main.vm
+++ /dev/null
@@ -1,30 +0,0 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/08/FunctionCalls/FibonacciElement/Main.vm
-
-// Computes the n'th element of the Fibonacci series, recursively.
-// n is given in argument[0]. Called by the Sys.init function
-// (part of the Sys.vm file), which also pushes the argument[0]
-// parameter before this code starts running.
-
-function Main.fibonacci 0
-push argument 0
-push constant 2
-lt // checks if n<2
-if-goto IF_TRUE
-goto IF_FALSE
-label IF_TRUE // if n<2, return n
-push argument 0
-return
-label IF_FALSE // if n>=2, returns fib(n-2)+fib(n-1)
-push argument 0
-push constant 2
-sub
-call Main.fibonacci 1 // computes fib(n-2)
-push argument 0
-push constant 1
-sub
-call Main.fibonacci 1 // computes fib(n-1)
-add // returns fib(n-1) + fib(n-2)
-return
diff --git a/08/FunctionCalls/FibonacciElement/Sys.vm b/08/FunctionCalls/FibonacciElement/Sys.vm
deleted file mode 100644
index f3965c9..0000000
--- a/08/FunctionCalls/FibonacciElement/Sys.vm
+++ /dev/null
@@ -1,15 +0,0 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/08/FunctionCalls/FibonacciElement/Sys.vm
-
-// Pushes a constant, say n, onto the stack, and calls the Main.fibonacii
-// function, which computes the n'th element of the Fibonacci series.
-// Note that by convention, the Sys.init function is called "automatically"
-// by the bootstrap code.
-
-function Sys.init 0
-push constant 4
-call Main.fibonacci 1 // computes the 4'th fibonacci element
-label WHILE
-goto WHILE // loops infinitely
diff --git a/08/FunctionCalls/NestedCall/Sys.vm b/08/FunctionCalls/NestedCall/Sys.vm
deleted file mode 100644
index 8b0b003..0000000
--- a/08/FunctionCalls/NestedCall/Sys.vm
+++ /dev/null
@@ -1,63 +0,0 @@
-// Sys.vm for NestedCall test.
-
-// Sys.init()
-//
-// Calls Sys.main() and stores return value in temp 1.
-// Does not return. (Enters infinite loop.)
-
-function Sys.init 0
-push constant 4000 // test THIS and THAT context save
-pop pointer 0
-push constant 5000
-pop pointer 1
-call Sys.main 0
-pop temp 1
-label LOOP
-goto LOOP
-
-// Sys.main()
-//
-// Sets locals 1, 2 and 3, leaving locals 0 and 4 unchanged to test
-// default local initialization to 0. (RAM set to -1 by test setup.)
-// Calls Sys.add12(123) and stores return value (135) in temp 0.
-// Returns local 0 + local 1 + local 2 + local 3 + local 4 (456) to confirm
-// that locals were not mangled by function call.
-
-function Sys.main 5
-push constant 4001
-pop pointer 0
-push constant 5001
-pop pointer 1
-push constant 200
-pop local 1
-push constant 40
-pop local 2
-push constant 6
-pop local 3
-push constant 123
-call Sys.add12 1
-pop temp 0
-push local 0
-push local 1
-push local 2
-push local 3
-push local 4
-add
-add
-add
-add
-return
-
-// Sys.add12(int n)
-//
-// Returns n+12.
-
-function Sys.add12 0
-push constant 4002
-pop pointer 0
-push constant 5002
-pop pointer 1
-push argument 0
-push constant 12
-add
-return
diff --git a/08/FunctionCalls/SimpleFunction/SimpleFunction.tst b/08/FunctionCalls/SimpleFunction/SimpleFunction.tst
deleted file mode 100644
index c7b5905..0000000
--- a/08/FunctionCalls/SimpleFunction/SimpleFunction.tst
+++ /dev/null
@@ -1,29 +0,0 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/08/FunctionCalls/SimpleFunction/SimpleFunction.tst
-
-load SimpleFunction.asm,
-output-file SimpleFunction.out,
-compare-to SimpleFunction.cmp,
-output-list RAM[0]%D1.6.1 RAM[1]%D1.6.1 RAM[2]%D1.6.1
- RAM[3]%D1.6.1 RAM[4]%D1.6.1 RAM[310]%D1.6.1;
-
-set RAM[0] 317,
-set RAM[1] 317,
-set RAM[2] 310,
-set RAM[3] 3000,
-set RAM[4] 4000,
-set RAM[310] 1234,
-set RAM[311] 37,
-set RAM[312] 1000,
-set RAM[313] 305,
-set RAM[314] 300,
-set RAM[315] 3010,
-set RAM[316] 4010,
-
-repeat 300 {
- ticktock;
-}
-
-output;
diff --git a/08/FunctionCalls/StaticsTest/Sys.vm b/08/FunctionCalls/StaticsTest/Sys.vm
deleted file mode 100644
index 3708322..0000000
--- a/08/FunctionCalls/StaticsTest/Sys.vm
+++ /dev/null
@@ -1,20 +0,0 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/08/FunctionCalls/StaticsTest/Sys.vm
-
-// Tests that different functions, stored in two different
-// class files, manipulate the static segment correctly.
-function Sys.init 0
-push constant 6
-push constant 8
-call Class1.set 2
-pop temp 0 // Dumps the return value
-push constant 23
-push constant 15
-call Class2.set 2
-pop temp 0 // Dumps the return value
-call Class1.get 0
-call Class2.get 0
-label WHILE
-goto WHILE
diff --git a/08/ProgramFlow/BasicLoop/BasicLoop.tst b/08/ProgramFlow/BasicLoop/BasicLoop.tst
deleted file mode 100644
index 50ca118..0000000
--- a/08/ProgramFlow/BasicLoop/BasicLoop.tst
+++ /dev/null
@@ -1,20 +0,0 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/08/ProgramFlow/BasicLoop/BasicLoop.tst
-
-load BasicLoop.asm,
-output-file BasicLoop.out,
-compare-to BasicLoop.cmp,
-output-list RAM[0]%D1.6.1 RAM[256]%D1.6.1;
-
-set RAM[0] 256,
-set RAM[1] 300,
-set RAM[2] 400,
-set RAM[400] 3,
-
-repeat 600 {
- ticktock;
-}
-
-output;
diff --git a/08/ProgramFlow/BasicLoop/BasicLoop.vm b/08/ProgramFlow/BasicLoop/BasicLoop.vm
deleted file mode 100644
index dc5a92f..0000000
--- a/08/ProgramFlow/BasicLoop/BasicLoop.vm
+++ /dev/null
@@ -1,22 +0,0 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/08/ProgramFlow/BasicLoop/BasicLoop.vm
-
-// Computes the sum 1 + 2 + ... + argument[0] and pushes the
-// result onto the stack. Argument[0] is initialized by the test
-// script before this code starts running.
-push constant 0
-pop local 0 // initializes sum = 0
-label LOOP_START
-push argument 0
-push local 0
-add
-pop local 0 // sum = sum + counter
-push argument 0
-push constant 1
-sub
-pop argument 0 // counter--
-push argument 0
-if-goto LOOP_START // If counter != 0, goto LOOP_START
-push local 0
diff --git a/08/ProgramFlow/FibonacciSeries/FibonacciSeries.tst b/08/ProgramFlow/FibonacciSeries/FibonacciSeries.tst
deleted file mode 100644
index 07df2b9..0000000
--- a/08/ProgramFlow/FibonacciSeries/FibonacciSeries.tst
+++ /dev/null
@@ -1,22 +0,0 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/08/ProgramFlow/FibonacciSeries/FibonacciSeries.tst
-
-load FibonacciSeries.asm,
-output-file FibonacciSeries.out,
-compare-to FibonacciSeries.cmp,
-output-list RAM[3000]%D1.6.2 RAM[3001]%D1.6.2 RAM[3002]%D1.6.2
- RAM[3003]%D1.6.2 RAM[3004]%D1.6.2 RAM[3005]%D1.6.2;
-
-set RAM[0] 256,
-set RAM[1] 300,
-set RAM[2] 400,
-set RAM[400] 6,
-set RAM[401] 3000,
-
-repeat 1100 {
- ticktock;
-}
-
-output;
diff --git a/08/ProgramFlow/FibonacciSeries/FibonacciSeries.vm b/08/ProgramFlow/FibonacciSeries/FibonacciSeries.vm
deleted file mode 100644
index 6a643b6..0000000
--- a/08/ProgramFlow/FibonacciSeries/FibonacciSeries.vm
+++ /dev/null
@@ -1,49 +0,0 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/08/ProgramFlow/FibonacciSeries/FibonacciSeries.vm
-
-// Puts the first argument[0] elements of the Fibonacci series
-// in the memory, starting in the address given in argument[1].
-// Argument[0] and argument[1] are initialized by the test script
-// before this code starts running.
-
-push argument 1
-pop pointer 1 // that = argument[1]
-
-push constant 0
-pop that 0 // first element in the series = 0
-push constant 1
-pop that 1 // second element in the series = 1
-
-push argument 0
-push constant 2
-sub
-pop argument 0 // num_of_elements -= 2 (first 2 elements are set)
-
-label MAIN_LOOP_START
-
-push argument 0
-if-goto COMPUTE_ELEMENT // if num_of_elements > 0, goto COMPUTE_ELEMENT
-goto END_PROGRAM // otherwise, goto END_PROGRAM
-
-label COMPUTE_ELEMENT
-
-push that 0
-push that 1
-add
-pop that 2 // that[2] = that[0] + that[1]
-
-push pointer 1
-push constant 1
-add
-pop pointer 1 // that += 1
-
-push argument 0
-push constant 1
-sub
-pop argument 0 // num_of_elements--
-
-goto MAIN_LOOP_START
-
-label END_PROGRAM
diff --git a/09/BitmapEditor/BitmapEditor.html b/09/BitmapEditor/BitmapEditor.html
deleted file mode 100644
index fdb9e0b..0000000
--- a/09/BitmapEditor/BitmapEditor.html
+++ /dev/null
@@ -1,200 +0,0 @@
-
-
-
- Sokoban Bitmap Editor
-
-
-
- IDC Herzliya / Efi Arazi School of Computer Science / Digital Systems Construction, Spring 2011 / Project 09 / Golan Parashi
- Sokoban Bitmap Editor
- This javascript applicaiton is used to generate highly optimized jack code for drawing a 16x16 bitmap to the screen.
- Using the mouse, click the desired cell to mark/unmark it. You may use 90 degrees rotation and vertical mirroring by
- clicking the appropriate buttons.
- When you are finished drawing, you may select function type and enter function's name.
-
-
-
-
- | Bitmap |
- |
- Generated Jack Code |
-
-
-
- |
-
-
- |
- |
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/09/BitmapEditor/BitmapEditor.iml b/09/BitmapEditor/BitmapEditor.iml
deleted file mode 100644
index ef582b1..0000000
--- a/09/BitmapEditor/BitmapEditor.iml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/09/Jack OS API.pdf b/09/Jack OS API.pdf
deleted file mode 100644
index e653e86..0000000
Binary files a/09/Jack OS API.pdf and /dev/null differ
diff --git a/1/And.cmp b/1/And.cmp
new file mode 100644
index 0000000..7a3c7de
--- /dev/null
+++ b/1/And.cmp
@@ -0,0 +1,5 @@
+| a | b |out|
+| 0 | 0 | 0 |
+| 0 | 1 | 0 |
+| 1 | 0 | 0 |
+| 1 | 1 | 1 |
diff --git a/01/And.hdl b/1/And.hdl
similarity index 55%
rename from 01/And.hdl
rename to 1/And.hdl
index 3ffb270..e3eaa0f 100644
--- a/01/And.hdl
+++ b/1/And.hdl
@@ -1,18 +1,14 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/01/And.hdl
-
-/**
- * And gate:
- * out = 1 if (a == 1 and b == 1)
- * 0 otherwise
- */
-
-CHIP And {
- IN a, b;
- OUT out;
-
- PARTS:
- // Put your code here:
-}
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+/**
+ * And gate:
+ * if (a and b) out = 1, else out = 0
+ */
+CHIP And {
+ IN a, b;
+ OUT out;
+
+ PARTS:
+ //// Replace this comment with your code.
+}
\ No newline at end of file
diff --git a/01/And.tst b/1/And.tst
similarity index 75%
rename from 01/And.tst
rename to 1/And.tst
index 7ace19d..228dc56 100644
--- a/01/And.tst
+++ b/1/And.tst
@@ -1,29 +1,28 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/01/And.tst
-
-load And.hdl,
-output-file And.out,
-compare-to And.cmp,
-output-list a%B3.1.3 b%B3.1.3 out%B3.1.3;
-
-set a 0,
-set b 0,
-eval,
-output;
-
-set a 0,
-set b 1,
-eval,
-output;
-
-set a 1,
-set b 0,
-eval,
-output;
-
-set a 1,
-set b 1,
-eval,
-output;
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+load And.hdl,
+output-file And.out,
+compare-to And.cmp,
+output-list a b out;
+
+set a 0,
+set b 0,
+eval,
+output;
+
+set a 0,
+set b 1,
+eval,
+output;
+
+set a 1,
+set b 0,
+eval,
+output;
+
+set a 1,
+set b 1,
+eval,
+output;
diff --git a/01/And16.cmp b/1/And16.cmp
similarity index 98%
rename from 01/And16.cmp
rename to 1/And16.cmp
index 32c8648..fb8dbfc 100644
--- a/01/And16.cmp
+++ b/1/And16.cmp
@@ -1,7 +1,7 @@
-| a | b | out |
-| 0000000000000000 | 0000000000000000 | 0000000000000000 |
-| 0000000000000000 | 1111111111111111 | 0000000000000000 |
-| 1111111111111111 | 1111111111111111 | 1111111111111111 |
-| 1010101010101010 | 0101010101010101 | 0000000000000000 |
-| 0011110011000011 | 0000111111110000 | 0000110011000000 |
-| 0001001000110100 | 1001100001110110 | 0001000000110100 |
+| a | b | out |
+| 0000000000000000 | 0000000000000000 | 0000000000000000 |
+| 0000000000000000 | 1111111111111111 | 0000000000000000 |
+| 1111111111111111 | 1111111111111111 | 1111111111111111 |
+| 1010101010101010 | 0101010101010101 | 0000000000000000 |
+| 0011110011000011 | 0000111111110000 | 0000110011000000 |
+| 0001001000110100 | 1001100001110110 | 0001000000110100 |
diff --git a/01/And16.hdl b/1/And16.hdl
similarity index 58%
rename from 01/And16.hdl
rename to 1/And16.hdl
index 27fe04a..852f104 100644
--- a/01/And16.hdl
+++ b/1/And16.hdl
@@ -1,17 +1,15 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/01/And16.hdl
-
-/**
- * 16-bit bitwise And:
- * for i = 0..15: out[i] = (a[i] and b[i])
- */
-
-CHIP And16 {
- IN a[16], b[16];
- OUT out[16];
-
- PARTS:
- // Put your code here:
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+/**
+ * 16-bit And gate:
+ * for i = 0, ..., 15:
+ * out[i] = a[i] And b[i]
+ */
+CHIP And16 {
+ IN a[16], b[16];
+ OUT out[16];
+
+ PARTS:
+ //// Replace this comment with your code.
}
\ No newline at end of file
diff --git a/01/And16.tst b/1/And16.tst
similarity index 89%
rename from 01/And16.tst
rename to 1/And16.tst
index c8921e7..a106e23 100644
--- a/01/And16.tst
+++ b/1/And16.tst
@@ -1,39 +1,38 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/01/And16.tst
-
-load And16.hdl,
-output-file And16.out,
-compare-to And16.cmp,
-output-list a%B1.16.1 b%B1.16.1 out%B1.16.1;
-
-set a %B0000000000000000,
-set b %B0000000000000000,
-eval,
-output;
-
-set a %B0000000000000000,
-set b %B1111111111111111,
-eval,
-output;
-
-set a %B1111111111111111,
-set b %B1111111111111111,
-eval,
-output;
-
-set a %B1010101010101010,
-set b %B0101010101010101,
-eval,
-output;
-
-set a %B0011110011000011,
-set b %B0000111111110000,
-eval,
-output;
-
-set a %B0001001000110100,
-set b %B1001100001110110,
-eval,
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+load And16.hdl,
+output-file And16.out,
+compare-to And16.cmp,
+output-list a%B1.16.1 b%B1.16.1 out%B1.16.1;
+
+set a %B0000000000000000,
+set b %B0000000000000000,
+eval,
+output;
+
+set a %B0000000000000000,
+set b %B1111111111111111,
+eval,
+output;
+
+set a %B1111111111111111,
+set b %B1111111111111111,
+eval,
+output;
+
+set a %B1010101010101010,
+set b %B0101010101010101,
+eval,
+output;
+
+set a %B0011110011000011,
+set b %B0000111111110000,
+eval,
+output;
+
+set a %B0001001000110100,
+set b %B1001100001110110,
+eval,
output;
\ No newline at end of file
diff --git a/1/DMux.cmp b/1/DMux.cmp
new file mode 100644
index 0000000..5b65adb
--- /dev/null
+++ b/1/DMux.cmp
@@ -0,0 +1,5 @@
+|in |sel| a | b |
+| 0 | 0 | 0 | 0 |
+| 0 | 1 | 0 | 0 |
+| 1 | 0 | 1 | 0 |
+| 1 | 1 | 0 | 1 |
diff --git a/01/DMux.hdl b/1/DMux.hdl
similarity index 59%
rename from 01/DMux.hdl
rename to 1/DMux.hdl
index ad66d18..5e09d50 100644
--- a/01/DMux.hdl
+++ b/1/DMux.hdl
@@ -1,18 +1,15 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/01/DMux.hdl
-
-/**
- * Demultiplexor:
- * {a, b} = {in, 0} if sel == 0
- * {0, in} if sel == 1
- */
-
-CHIP DMux {
- IN in, sel;
- OUT a, b;
-
- PARTS:
- // Put your code here:
-}
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+/**
+ * Demultiplexor:
+ * [a, b] = [in, 0] if sel = 0
+ * [0, in] if sel = 1
+ */
+CHIP DMux {
+ IN in, sel;
+ OUT a, b;
+
+ PARTS:
+ //// Replace this comment with your code.
+}
diff --git a/01/DMux.tst b/1/DMux.tst
similarity index 73%
rename from 01/DMux.tst
rename to 1/DMux.tst
index 4adbc43..9168227 100644
--- a/01/DMux.tst
+++ b/1/DMux.tst
@@ -1,27 +1,26 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/01/DMux.tst
-
-load DMux.hdl,
-output-file DMux.out,
-compare-to DMux.cmp,
-output-list in%B3.1.3 sel%B3.1.3 a%B3.1.3 b%B3.1.3;
-
-set in 0,
-set sel 0,
-eval,
-output;
-
-set sel 1,
-eval,
-output;
-
-set in 1,
-set sel 0,
-eval,
-output;
-
-set sel 1,
-eval,
-output;
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+load DMux.hdl,
+output-file DMux.out,
+compare-to DMux.cmp,
+output-list in sel a b;
+
+set in 0,
+set sel 0,
+eval,
+output;
+
+set sel 1,
+eval,
+output;
+
+set in 1,
+set sel 0,
+eval,
+output;
+
+set sel 1,
+eval,
+output;
diff --git a/1/DMux4Way.cmp b/1/DMux4Way.cmp
new file mode 100644
index 0000000..7734e2a
--- /dev/null
+++ b/1/DMux4Way.cmp
@@ -0,0 +1,9 @@
+|in | sel | a | b | c | d |
+| 0 | 00 | 0 | 0 | 0 | 0 |
+| 0 | 01 | 0 | 0 | 0 | 0 |
+| 0 | 10 | 0 | 0 | 0 | 0 |
+| 0 | 11 | 0 | 0 | 0 | 0 |
+| 1 | 00 | 1 | 0 | 0 | 0 |
+| 1 | 01 | 0 | 1 | 0 | 0 |
+| 1 | 10 | 0 | 0 | 1 | 0 |
+| 1 | 11 | 0 | 0 | 0 | 1 |
diff --git a/1/DMux4Way.hdl b/1/DMux4Way.hdl
new file mode 100644
index 0000000..b8c78de
--- /dev/null
+++ b/1/DMux4Way.hdl
@@ -0,0 +1,17 @@
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+/**
+ * 4-way demultiplexor:
+ * [a, b, c, d] = [in, 0, 0, 0] if sel = 00
+ * [0, in, 0, 0] if sel = 01
+ * [0, 0, in, 0] if sel = 10
+ * [0, 0, 0, in] if sel = 11
+ */
+CHIP DMux4Way {
+ IN in, sel[2];
+ OUT a, b, c, d;
+
+ PARTS:
+ //// Replace this comment with your code.
+}
\ No newline at end of file
diff --git a/01/DMux4Way.tst b/1/DMux4Way.tst
similarity index 75%
rename from 01/DMux4Way.tst
rename to 1/DMux4Way.tst
index 6fbbb56..2fc0655 100644
--- a/01/DMux4Way.tst
+++ b/1/DMux4Way.tst
@@ -1,43 +1,42 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/01/DMux4Way.tst
-
-load DMux4Way.hdl,
-output-file DMux4Way.out,
-compare-to DMux4Way.cmp,
-output-list in%B2.1.2 sel%B2.2.2 a%B2.1.2 b%B2.1.2 c%B2.1.2 d%B2.1.2;
-
-set in 0,
-set sel %B00,
-eval,
-output;
-
-set sel %B01,
-eval,
-output;
-
-set sel %B10,
-eval,
-output;
-
-set sel %B11,
-eval,
-output;
-
-set in 1,
-set sel %B00,
-eval,
-output;
-
-set sel %B01,
-eval,
-output;
-
-set sel %B10,
-eval,
-output;
-
-set sel %B11,
-eval,
-output;
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+load DMux4Way.hdl,
+output-file DMux4Way.out,
+compare-to DMux4Way.cmp,
+output-list in sel%B2.2.2 a b c d;
+
+set in 0,
+set sel %B00,
+eval,
+output;
+
+set sel %B01,
+eval,
+output;
+
+set sel %B10,
+eval,
+output;
+
+set sel %B11,
+eval,
+output;
+
+set in 1,
+set sel %B00,
+eval,
+output;
+
+set sel %B01,
+eval,
+output;
+
+set sel %B10,
+eval,
+output;
+
+set sel %B11,
+eval,
+output;
diff --git a/1/DMux8Way.cmp b/1/DMux8Way.cmp
new file mode 100644
index 0000000..e1b2e74
--- /dev/null
+++ b/1/DMux8Way.cmp
@@ -0,0 +1,17 @@
+|in | sel | a | b | c | d | e | f | g | h |
+| 0 | 000 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
+| 0 | 001 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
+| 0 | 010 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
+| 0 | 011 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
+| 0 | 100 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
+| 0 | 101 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
+| 0 | 110 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
+| 0 | 111 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
+| 1 | 000 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
+| 1 | 001 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
+| 1 | 010 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
+| 1 | 011 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
+| 1 | 100 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
+| 1 | 101 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
+| 1 | 110 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
+| 1 | 111 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
diff --git a/1/DMux8Way.hdl b/1/DMux8Way.hdl
new file mode 100644
index 0000000..7ad7240
--- /dev/null
+++ b/1/DMux8Way.hdl
@@ -0,0 +1,21 @@
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+/**
+ * 8-way demultiplexor:
+ * [a, b, c, d, e, f, g, h] = [in, 0, 0, 0, 0, 0, 0, 0] if sel = 000
+ * [0, in, 0, 0, 0, 0, 0, 0] if sel = 001
+ * [0, 0, in, 0, 0, 0, 0, 0] if sel = 010
+ * [0, 0, 0, in, 0, 0, 0, 0] if sel = 011
+ * [0, 0, 0, 0, in, 0, 0, 0] if sel = 100
+ * [0, 0, 0, 0, 0, in, 0, 0] if sel = 101
+ * [0, 0, 0, 0, 0, 0, in, 0] if sel = 110
+ * [0, 0, 0, 0, 0, 0, 0, in] if sel = 111
+ */
+CHIP DMux8Way {
+ IN in, sel[3];
+ OUT a, b, c, d, e, f, g, h;
+
+ PARTS:
+ //// Replace this comment with your code.
+}
diff --git a/01/DMux8Way.tst b/1/DMux8Way.tst
similarity index 76%
rename from 01/DMux8Way.tst
rename to 1/DMux8Way.tst
index 56d827e..6c67303 100644
--- a/01/DMux8Way.tst
+++ b/1/DMux8Way.tst
@@ -1,75 +1,74 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/01/DMux8Way.tst
-
-load DMux8Way.hdl,
-output-file DMux8Way.out,
-compare-to DMux8Way.cmp,
-output-list in%B2.1.2 sel%B2.3.2 a%B2.1.2 b%B2.1.2 c%B2.1.2 d%B2.1.2 e%B2.1.2 f%B2.1.2 g%B2.1.2 h%B2.1.2;
-
-set in 0,
-set sel %B000,
-eval,
-output;
-
-set sel %B001,
-eval,
-output;
-
-set sel %B010,
-eval,
-output;
-
-set sel %B011,
-eval,
-output;
-
-set sel %B100,
-eval,
-output;
-
-set sel %B101,
-eval,
-output;
-
-set sel %B110,
-eval,
-output;
-
-set sel %B111,
-eval,
-output;
-
-set in 1,
-set sel %B000,
-eval,
-output;
-
-set sel %B001,
-eval,
-output;
-
-set sel %B010,
-eval,
-output;
-
-set sel %B011,
-eval,
-output;
-
-set sel %B100,
-eval,
-output;
-
-set sel %B101,
-eval,
-output;
-
-set sel %B110,
-eval,
-output;
-
-set sel %B111,
-eval,
-output;
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+load DMux8Way.hdl,
+output-file DMux8Way.out,
+compare-to DMux8Way.cmp,
+output-list in sel%B2.3.2 a b c d e f g h;
+
+set in 0,
+set sel %B000,
+eval,
+output;
+
+set sel %B001,
+eval,
+output;
+
+set sel %B010,
+eval,
+output;
+
+set sel %B011,
+eval,
+output;
+
+set sel %B100,
+eval,
+output;
+
+set sel %B101,
+eval,
+output;
+
+set sel %B110,
+eval,
+output;
+
+set sel %B111,
+eval,
+output;
+
+set in 1,
+set sel %B000,
+eval,
+output;
+
+set sel %B001,
+eval,
+output;
+
+set sel %B010,
+eval,
+output;
+
+set sel %B011,
+eval,
+output;
+
+set sel %B100,
+eval,
+output;
+
+set sel %B101,
+eval,
+output;
+
+set sel %B110,
+eval,
+output;
+
+set sel %B111,
+eval,
+output;
diff --git a/1/Mux.cmp b/1/Mux.cmp
new file mode 100644
index 0000000..eb25f2e
--- /dev/null
+++ b/1/Mux.cmp
@@ -0,0 +1,9 @@
+| a | b |sel|out|
+| 0 | 0 | 0 | 0 |
+| 0 | 0 | 1 | 0 |
+| 0 | 1 | 0 | 0 |
+| 0 | 1 | 1 | 1 |
+| 1 | 0 | 0 | 1 |
+| 1 | 0 | 1 | 0 |
+| 1 | 1 | 0 | 1 |
+| 1 | 1 | 1 | 1 |
diff --git a/01/Mux.hdl b/1/Mux.hdl
similarity index 63%
rename from 01/Mux.hdl
rename to 1/Mux.hdl
index d5fd1d5..d5098d7 100644
--- a/01/Mux.hdl
+++ b/1/Mux.hdl
@@ -1,18 +1,14 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/01/Mux.hdl
-
-/**
- * Multiplexor:
- * out = a if sel == 0
- * b otherwise
- */
-
-CHIP Mux {
- IN a, b, sel;
- OUT out;
-
- PARTS:
- // Put your code here:
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+/**
+ * Multiplexor:
+ * if (sel = 0) out = a, else out = b
+ */
+CHIP Mux {
+ IN a, b, sel;
+ OUT out;
+
+ PARTS:
+ //// Replace this comment with your code.
}
\ No newline at end of file
diff --git a/01/Mux.tst b/1/Mux.tst
similarity index 77%
rename from 01/Mux.tst
rename to 1/Mux.tst
index 9b7afd9..bd66383 100644
--- a/01/Mux.tst
+++ b/1/Mux.tst
@@ -1,49 +1,48 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/01/Mux.tst
-
-load Mux.hdl,
-output-file Mux.out,
-compare-to Mux.cmp,
-output-list a%B3.1.3 b%B3.1.3 sel%B3.1.3 out%B3.1.3;
-
-set a 0,
-set b 0,
-set sel 0,
-eval,
-output;
-
-set sel 1,
-eval,
-output;
-
-set a 0,
-set b 1,
-set sel 0,
-eval,
-output;
-
-set sel 1,
-eval,
-output;
-
-set a 1,
-set b 0,
-set sel 0,
-eval,
-output;
-
-set sel 1,
-eval,
-output;
-
-set a 1,
-set b 1,
-set sel 0,
-eval,
-output;
-
-set sel 1,
-eval,
-output;
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+load Mux.hdl,
+output-file Mux.out,
+compare-to Mux.cmp,
+output-list a b sel out;
+
+set a 0,
+set b 0,
+set sel 0,
+eval,
+output;
+
+set sel 1,
+eval,
+output;
+
+set a 0,
+set b 1,
+set sel 0,
+eval,
+output;
+
+set sel 1,
+eval,
+output;
+
+set a 1,
+set b 0,
+set sel 0,
+eval,
+output;
+
+set sel 1,
+eval,
+output;
+
+set a 1,
+set b 1,
+set sel 0,
+eval,
+output;
+
+set sel 1,
+eval,
+output;
diff --git a/1/Mux16.cmp b/1/Mux16.cmp
new file mode 100644
index 0000000..80b6ece
--- /dev/null
+++ b/1/Mux16.cmp
@@ -0,0 +1,9 @@
+| a | b |sel| out |
+| 0000000000000000 | 0000000000000000 | 0 | 0000000000000000 |
+| 0000000000000000 | 0000000000000000 | 1 | 0000000000000000 |
+| 0000000000000000 | 0001001000110100 | 0 | 0000000000000000 |
+| 0000000000000000 | 0001001000110100 | 1 | 0001001000110100 |
+| 1001100001110110 | 0000000000000000 | 0 | 1001100001110110 |
+| 1001100001110110 | 0000000000000000 | 1 | 0000000000000000 |
+| 1010101010101010 | 0101010101010101 | 0 | 1010101010101010 |
+| 1010101010101010 | 0101010101010101 | 1 | 0101010101010101 |
diff --git a/01/Mux16.hdl b/1/Mux16.hdl
similarity index 58%
rename from 01/Mux16.hdl
rename to 1/Mux16.hdl
index 97dd784..995b38d 100644
--- a/01/Mux16.hdl
+++ b/1/Mux16.hdl
@@ -1,18 +1,15 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/01/Mux16.hdl
-
-/**
- * 16-bit multiplexor:
- * for i = 0..15 out[i] = a[i] if sel == 0
- * b[i] if sel == 1
- */
-
-CHIP Mux16 {
- IN a[16], b[16], sel;
- OUT out[16];
-
- PARTS:
- // Put your code here:
-}
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+/**
+ * 16-bit multiplexor:
+ * for i = 0, ..., 15:
+ * if (sel = 0) out[i] = a[i], else out[i] = b[i]
+ */
+CHIP Mux16 {
+ IN a[16], b[16], sel;
+ OUT out[16];
+
+ PARTS:
+ //// Replace this comment with your code.
+}
diff --git a/01/Mux16.tst b/1/Mux16.tst
similarity index 80%
rename from 01/Mux16.tst
rename to 1/Mux16.tst
index cf34155..ec55d2a 100644
--- a/01/Mux16.tst
+++ b/1/Mux16.tst
@@ -1,49 +1,48 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/01/Mux16.tst
-
-load Mux16.hdl,
-output-file Mux16.out,
-compare-to Mux16.cmp,
-output-list a%B1.16.1 b%B1.16.1 sel%D2.1.2 out%B1.16.1;
-
-set a 0,
-set b 0,
-set sel 0,
-eval,
-output;
-
-set sel 1,
-eval,
-output;
-
-set a %B0000000000000000,
-set b %B0001001000110100,
-set sel 0,
-eval,
-output;
-
-set sel 1,
-eval,
-output;
-
-set a %B1001100001110110,
-set b %B0000000000000000,
-set sel 0,
-eval,
-output;
-
-set sel 1,
-eval,
-output;
-
-set a %B1010101010101010,
-set b %B0101010101010101,
-set sel 0,
-eval,
-output;
-
-set sel 1,
-eval,
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+load Mux16.hdl,
+output-file Mux16.out,
+compare-to Mux16.cmp,
+output-list a%B1.16.1 b%B1.16.1 sel out%B1.16.1;
+
+set a 0,
+set b 0,
+set sel 0,
+eval,
+output;
+
+set sel 1,
+eval,
+output;
+
+set a %B0000000000000000,
+set b %B0001001000110100,
+set sel 0,
+eval,
+output;
+
+set sel 1,
+eval,
+output;
+
+set a %B1001100001110110,
+set b %B0000000000000000,
+set sel 0,
+eval,
+output;
+
+set sel 1,
+eval,
+output;
+
+set a %B1010101010101010,
+set b %B0101010101010101,
+set sel 0,
+eval,
+output;
+
+set sel 1,
+eval,
output;
\ No newline at end of file
diff --git a/01/Mux4Way16.cmp b/1/Mux4Way16.cmp
similarity index 99%
rename from 01/Mux4Way16.cmp
rename to 1/Mux4Way16.cmp
index 8704e79..659176d 100644
--- a/01/Mux4Way16.cmp
+++ b/1/Mux4Way16.cmp
@@ -1,9 +1,9 @@
-| a | b | c | d | sel | out |
-| 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 00 | 0000000000000000 |
-| 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 01 | 0000000000000000 |
-| 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 10 | 0000000000000000 |
-| 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 11 | 0000000000000000 |
-| 0001001000110100 | 1001100001110110 | 1010101010101010 | 0101010101010101 | 00 | 0001001000110100 |
-| 0001001000110100 | 1001100001110110 | 1010101010101010 | 0101010101010101 | 01 | 1001100001110110 |
-| 0001001000110100 | 1001100001110110 | 1010101010101010 | 0101010101010101 | 10 | 1010101010101010 |
-| 0001001000110100 | 1001100001110110 | 1010101010101010 | 0101010101010101 | 11 | 0101010101010101 |
+| a | b | c | d | sel | out |
+| 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 00 | 0000000000000000 |
+| 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 01 | 0000000000000000 |
+| 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 10 | 0000000000000000 |
+| 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 11 | 0000000000000000 |
+| 0001001000110100 | 1001100001110110 | 1010101010101010 | 0101010101010101 | 00 | 0001001000110100 |
+| 0001001000110100 | 1001100001110110 | 1010101010101010 | 0101010101010101 | 01 | 1001100001110110 |
+| 0001001000110100 | 1001100001110110 | 1010101010101010 | 0101010101010101 | 10 | 1010101010101010 |
+| 0001001000110100 | 1001100001110110 | 1010101010101010 | 0101010101010101 | 11 | 0101010101010101 |
diff --git a/01/Mux4Way16.hdl b/1/Mux4Way16.hdl
similarity index 58%
rename from 01/Mux4Way16.hdl
rename to 1/Mux4Way16.hdl
index 75baced..2a09394 100644
--- a/01/Mux4Way16.hdl
+++ b/1/Mux4Way16.hdl
@@ -1,20 +1,17 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/01/Mux4Way16.hdl
-
-/**
- * 4-way 16-bit multiplexor:
- * out = a if sel == 00
- * b if sel == 01
- * c if sel == 10
- * d if sel == 11
- */
-
-CHIP Mux4Way16 {
- IN a[16], b[16], c[16], d[16], sel[2];
- OUT out[16];
-
- PARTS:
- // Put your code here:
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+/**
+ * 4-way 16-bit multiplexor:
+ * out = a if sel = 00
+ * b if sel = 01
+ * c if sel = 10
+ * d if sel = 11
+ */
+CHIP Mux4Way16 {
+ IN a[16], b[16], c[16], d[16], sel[2];
+ OUT out[16];
+
+ PARTS:
+ //// Replace this comment with your code.
}
\ No newline at end of file
diff --git a/01/Mux4Way16.tst b/1/Mux4Way16.tst
similarity index 87%
rename from 01/Mux4Way16.tst
rename to 1/Mux4Way16.tst
index 3f4efa3..a0c92ae 100644
--- a/01/Mux4Way16.tst
+++ b/1/Mux4Way16.tst
@@ -1,49 +1,48 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/01/Mux4Way16.tst
-
-load Mux4Way16.hdl,
-output-file Mux4Way16.out,
-compare-to Mux4Way16.cmp,
-output-list a%B1.16.1 b%B1.16.1 c%B1.16.1 d%B1.16.1 sel%B2.2.2 out%B1.16.1;
-
-set a 0,
-set b 0,
-set c 0,
-set d 0,
-set sel 0,
-eval,
-output;
-
-set sel 1,
-eval,
-output;
-
-set sel 2,
-eval,
-output;
-
-set sel 3,
-eval,
-output;
-
-set a %B0001001000110100,
-set b %B1001100001110110,
-set c %B1010101010101010,
-set d %B0101010101010101,
-set sel 0,
-eval,
-output;
-
-set sel 1,
-eval,
-output;
-
-set sel 2,
-eval,
-output;
-
-set sel 3,
-eval,
-output;
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+load Mux4Way16.hdl,
+output-file Mux4Way16.out,
+compare-to Mux4Way16.cmp,
+output-list a%B1.16.1 b%B1.16.1 c%B1.16.1 d%B1.16.1 sel%B2.2.2 out%B1.16.1;
+
+set a 0,
+set b 0,
+set c 0,
+set d 0,
+set sel 0,
+eval,
+output;
+
+set sel 1,
+eval,
+output;
+
+set sel 2,
+eval,
+output;
+
+set sel 3,
+eval,
+output;
+
+set a %B0001001000110100,
+set b %B1001100001110110,
+set c %B1010101010101010,
+set d %B0101010101010101,
+set sel 0,
+eval,
+output;
+
+set sel 1,
+eval,
+output;
+
+set sel 2,
+eval,
+output;
+
+set sel 3,
+eval,
+output;
diff --git a/01/Mux8Way16.cmp b/1/Mux8Way16.cmp
similarity index 99%
rename from 01/Mux8Way16.cmp
rename to 1/Mux8Way16.cmp
index 1484e0a..11ff518 100644
--- a/01/Mux8Way16.cmp
+++ b/1/Mux8Way16.cmp
@@ -1,17 +1,17 @@
-| a | b | c | d | e | f | g | h | sel | out |
-| 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 000 | 0000000000000000 |
-| 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 001 | 0000000000000000 |
-| 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 010 | 0000000000000000 |
-| 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 011 | 0000000000000000 |
-| 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 100 | 0000000000000000 |
-| 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 101 | 0000000000000000 |
-| 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 110 | 0000000000000000 |
-| 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 111 | 0000000000000000 |
-| 0001001000110100 | 0010001101000101 | 0011010001010110 | 0100010101100111 | 0101011001111000 | 0110011110001001 | 0111100010011010 | 1000100110101011 | 000 | 0001001000110100 |
-| 0001001000110100 | 0010001101000101 | 0011010001010110 | 0100010101100111 | 0101011001111000 | 0110011110001001 | 0111100010011010 | 1000100110101011 | 001 | 0010001101000101 |
-| 0001001000110100 | 0010001101000101 | 0011010001010110 | 0100010101100111 | 0101011001111000 | 0110011110001001 | 0111100010011010 | 1000100110101011 | 010 | 0011010001010110 |
-| 0001001000110100 | 0010001101000101 | 0011010001010110 | 0100010101100111 | 0101011001111000 | 0110011110001001 | 0111100010011010 | 1000100110101011 | 011 | 0100010101100111 |
-| 0001001000110100 | 0010001101000101 | 0011010001010110 | 0100010101100111 | 0101011001111000 | 0110011110001001 | 0111100010011010 | 1000100110101011 | 100 | 0101011001111000 |
-| 0001001000110100 | 0010001101000101 | 0011010001010110 | 0100010101100111 | 0101011001111000 | 0110011110001001 | 0111100010011010 | 1000100110101011 | 101 | 0110011110001001 |
-| 0001001000110100 | 0010001101000101 | 0011010001010110 | 0100010101100111 | 0101011001111000 | 0110011110001001 | 0111100010011010 | 1000100110101011 | 110 | 0111100010011010 |
-| 0001001000110100 | 0010001101000101 | 0011010001010110 | 0100010101100111 | 0101011001111000 | 0110011110001001 | 0111100010011010 | 1000100110101011 | 111 | 1000100110101011 |
+| a | b | c | d | e | f | g | h | sel | out |
+| 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 000 | 0000000000000000 |
+| 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 001 | 0000000000000000 |
+| 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 010 | 0000000000000000 |
+| 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 011 | 0000000000000000 |
+| 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 100 | 0000000000000000 |
+| 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 101 | 0000000000000000 |
+| 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 110 | 0000000000000000 |
+| 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 0000000000000000 | 111 | 0000000000000000 |
+| 0001001000110100 | 0010001101000101 | 0011010001010110 | 0100010101100111 | 0101011001111000 | 0110011110001001 | 0111100010011010 | 1000100110101011 | 000 | 0001001000110100 |
+| 0001001000110100 | 0010001101000101 | 0011010001010110 | 0100010101100111 | 0101011001111000 | 0110011110001001 | 0111100010011010 | 1000100110101011 | 001 | 0010001101000101 |
+| 0001001000110100 | 0010001101000101 | 0011010001010110 | 0100010101100111 | 0101011001111000 | 0110011110001001 | 0111100010011010 | 1000100110101011 | 010 | 0011010001010110 |
+| 0001001000110100 | 0010001101000101 | 0011010001010110 | 0100010101100111 | 0101011001111000 | 0110011110001001 | 0111100010011010 | 1000100110101011 | 011 | 0100010101100111 |
+| 0001001000110100 | 0010001101000101 | 0011010001010110 | 0100010101100111 | 0101011001111000 | 0110011110001001 | 0111100010011010 | 1000100110101011 | 100 | 0101011001111000 |
+| 0001001000110100 | 0010001101000101 | 0011010001010110 | 0100010101100111 | 0101011001111000 | 0110011110001001 | 0111100010011010 | 1000100110101011 | 101 | 0110011110001001 |
+| 0001001000110100 | 0010001101000101 | 0011010001010110 | 0100010101100111 | 0101011001111000 | 0110011110001001 | 0111100010011010 | 1000100110101011 | 110 | 0111100010011010 |
+| 0001001000110100 | 0010001101000101 | 0011010001010110 | 0100010101100111 | 0101011001111000 | 0110011110001001 | 0111100010011010 | 1000100110101011 | 111 | 1000100110101011 |
diff --git a/01/Mux8Way16.hdl b/1/Mux8Way16.hdl
similarity index 55%
rename from 01/Mux8Way16.hdl
rename to 1/Mux8Way16.hdl
index 88c791e..798da42 100644
--- a/01/Mux8Way16.hdl
+++ b/1/Mux8Way16.hdl
@@ -1,22 +1,23 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/01/Mux8Way16.hdl
-
-/**
- * 8-way 16-bit multiplexor:
- * out = a if sel == 000
- * b if sel == 001
- * etc.
- * h if sel == 111
- */
-
-CHIP Mux8Way16 {
- IN a[16], b[16], c[16], d[16],
- e[16], f[16], g[16], h[16],
- sel[3];
- OUT out[16];
-
- PARTS:
- // Put your code here:
-}
\ No newline at end of file
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+/**
+ * 8-way 16-bit multiplexor:
+ * out = a if sel = 000
+ * b if sel = 001
+ * c if sel = 010
+ * d if sel = 011
+ * e if sel = 100
+ * f if sel = 101
+ * g if sel = 110
+ * h if sel = 111
+ */
+CHIP Mux8Way16 {
+ IN a[16], b[16], c[16], d[16],
+ e[16], f[16], g[16], h[16],
+ sel[3];
+ OUT out[16];
+
+ PARTS:
+ //// Replace this comment with your code.
+}
diff --git a/01/Mux8Way16.tst b/1/Mux8Way16.tst
similarity index 88%
rename from 01/Mux8Way16.tst
rename to 1/Mux8Way16.tst
index 59bb41c..ef1ae71 100644
--- a/01/Mux8Way16.tst
+++ b/1/Mux8Way16.tst
@@ -1,89 +1,88 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/01/Mux8Way16.tst
-
-load Mux8Way16.hdl,
-output-file Mux8Way16.out,
-compare-to Mux8Way16.cmp,
-output-list a%B1.16.1 b%B1.16.1 c%B1.16.1 d%B1.16.1 e%B1.16.1 f%B1.16.1 g%B1.16.1 h%B1.16.1 sel%B2.3.2 out%B1.16.1;
-
-set a 0,
-set b 0,
-set c 0,
-set d 0,
-set e 0,
-set f 0,
-set g 0,
-set h 0,
-set sel 0,
-eval,
-output;
-
-set sel 1,
-eval,
-output;
-
-set sel 2,
-eval,
-output;
-
-set sel 3,
-eval,
-output;
-
-set sel 4,
-eval,
-output;
-
-set sel 5,
-eval,
-output;
-
-set sel 6,
-eval,
-output;
-
-set sel 7,
-eval,
-output;
-
-set a %B0001001000110100,
-set b %B0010001101000101,
-set c %B0011010001010110,
-set d %B0100010101100111,
-set e %B0101011001111000,
-set f %B0110011110001001,
-set g %B0111100010011010,
-set h %B1000100110101011,
-set sel 0,
-eval,
-output;
-
-set sel 1,
-eval,
-output;
-
-set sel 2,
-eval,
-output;
-
-set sel 3,
-eval,
-output;
-
-set sel 4,
-eval,
-output;
-
-set sel 5,
-eval,
-output;
-
-set sel 6,
-eval,
-output;
-
-set sel 7,
-eval,
-output;
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+load Mux8Way16.hdl,
+output-file Mux8Way16.out,
+compare-to Mux8Way16.cmp,
+output-list a%B1.16.1 b%B1.16.1 c%B1.16.1 d%B1.16.1 e%B1.16.1 f%B1.16.1 g%B1.16.1 h%B1.16.1 sel%B2.3.2 out%B1.16.1;
+
+set a 0,
+set b 0,
+set c 0,
+set d 0,
+set e 0,
+set f 0,
+set g 0,
+set h 0,
+set sel 0,
+eval,
+output;
+
+set sel 1,
+eval,
+output;
+
+set sel 2,
+eval,
+output;
+
+set sel 3,
+eval,
+output;
+
+set sel 4,
+eval,
+output;
+
+set sel 5,
+eval,
+output;
+
+set sel 6,
+eval,
+output;
+
+set sel 7,
+eval,
+output;
+
+set a %B0001001000110100,
+set b %B0010001101000101,
+set c %B0011010001010110,
+set d %B0100010101100111,
+set e %B0101011001111000,
+set f %B0110011110001001,
+set g %B0111100010011010,
+set h %B1000100110101011,
+set sel 0,
+eval,
+output;
+
+set sel 1,
+eval,
+output;
+
+set sel 2,
+eval,
+output;
+
+set sel 3,
+eval,
+output;
+
+set sel 4,
+eval,
+output;
+
+set sel 5,
+eval,
+output;
+
+set sel 6,
+eval,
+output;
+
+set sel 7,
+eval,
+output;
diff --git a/1/Not.cmp b/1/Not.cmp
new file mode 100644
index 0000000..9b48db2
--- /dev/null
+++ b/1/Not.cmp
@@ -0,0 +1,3 @@
+|in |out|
+| 0 | 1 |
+| 1 | 0 |
diff --git a/01/Not.hdl b/1/Not.hdl
similarity index 67%
rename from 01/Not.hdl
rename to 1/Not.hdl
index 6f1135f..76363e7 100644
--- a/01/Not.hdl
+++ b/1/Not.hdl
@@ -1,17 +1,14 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/01/Not.hdl
-
-/**
- * Not gate:
- * out = not in
- */
-
-CHIP Not {
- IN in;
- OUT out;
-
- PARTS:
- // Put your code here:
-}
\ No newline at end of file
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+/**
+ * Not gate:
+ * if (in) out = 0, else out = 1
+ */
+CHIP Not {
+ IN in;
+ OUT out;
+
+ PARTS:
+ //// Replace this comment with your code.
+}
diff --git a/01/Not.tst b/1/Not.tst
similarity index 73%
rename from 01/Not.tst
rename to 1/Not.tst
index 1e3bbe7..1b80981 100644
--- a/01/Not.tst
+++ b/1/Not.tst
@@ -1,17 +1,16 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/01/Not.tst
-
-load Not.hdl,
-output-file Not.out,
-compare-to Not.cmp,
-output-list in%B3.1.3 out%B3.1.3;
-
-set in 0,
-eval,
-output;
-
-set in 1,
-eval,
-output;
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+load Not.hdl,
+output-file Not.out,
+compare-to Not.cmp,
+output-list in out;
+
+set in 0,
+eval,
+output;
+
+set in 1,
+eval,
+output;
diff --git a/01/Not16.cmp b/1/Not16.cmp
similarity index 97%
rename from 01/Not16.cmp
rename to 1/Not16.cmp
index 68a5512..ae2ad1d 100644
--- a/01/Not16.cmp
+++ b/1/Not16.cmp
@@ -1,6 +1,6 @@
-| in | out |
-| 0000000000000000 | 1111111111111111 |
-| 1111111111111111 | 0000000000000000 |
-| 1010101010101010 | 0101010101010101 |
-| 0011110011000011 | 1100001100111100 |
-| 0001001000110100 | 1110110111001011 |
+| in | out |
+| 0000000000000000 | 1111111111111111 |
+| 1111111111111111 | 0000000000000000 |
+| 1010101010101010 | 0101010101010101 |
+| 0011110011000011 | 1100001100111100 |
+| 0001001000110100 | 1110110111001011 |
diff --git a/01/Not16.hdl b/1/Not16.hdl
similarity index 60%
rename from 01/Not16.hdl
rename to 1/Not16.hdl
index 3d25bbe..6859c14 100644
--- a/01/Not16.hdl
+++ b/1/Not16.hdl
@@ -1,17 +1,15 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/01/Not16.hdl
-
-/**
- * 16-bit Not:
- * for i=0..15: out[i] = not in[i]
- */
-
-CHIP Not16 {
- IN in[16];
- OUT out[16];
-
- PARTS:
- // Put your code here:
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+/**
+ * 16-bit Not gate:
+ * for i = 0, ..., 15:
+ * out[i] = Not(a[i])
+ */
+CHIP Not16 {
+ IN in[16];
+ OUT out[16];
+
+ PARTS:
+ //// Replace this comment with your code.
}
\ No newline at end of file
diff --git a/01/Not16.tst b/1/Not16.tst
similarity index 87%
rename from 01/Not16.tst
rename to 1/Not16.tst
index e7e2c3b..8ed5948 100644
--- a/01/Not16.tst
+++ b/1/Not16.tst
@@ -1,29 +1,28 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/01/Not16.tst
-
-load Not16.hdl,
-output-file Not16.out,
-compare-to Not16.cmp,
-output-list in%B1.16.1 out%B1.16.1;
-
-set in %B0000000000000000,
-eval,
-output;
-
-set in %B1111111111111111,
-eval,
-output;
-
-set in %B1010101010101010,
-eval,
-output;
-
-set in %B0011110011000011,
-eval,
-output;
-
-set in %B0001001000110100,
-eval,
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+load Not16.hdl,
+output-file Not16.out,
+compare-to Not16.cmp,
+output-list in%B1.16.1 out%B1.16.1;
+
+set in %B0000000000000000,
+eval,
+output;
+
+set in %B1111111111111111,
+eval,
+output;
+
+set in %B1010101010101010,
+eval,
+output;
+
+set in %B0011110011000011,
+eval,
+output;
+
+set in %B0001001000110100,
+eval,
output;
\ No newline at end of file
diff --git a/1/Or.cmp b/1/Or.cmp
new file mode 100644
index 0000000..11f9d64
--- /dev/null
+++ b/1/Or.cmp
@@ -0,0 +1,5 @@
+| a | b |out|
+| 0 | 0 | 0 |
+| 0 | 1 | 1 |
+| 1 | 0 | 1 |
+| 1 | 1 | 1 |
diff --git a/01/Or.hdl b/1/Or.hdl
similarity index 58%
rename from 01/Or.hdl
rename to 1/Or.hdl
index a3800a6..78ddc3d 100644
--- a/01/Or.hdl
+++ b/1/Or.hdl
@@ -1,18 +1,14 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/01/Or.hdl
-
- /**
- * Or gate:
- * out = 1 if (a == 1 or b == 1)
- * 0 otherwise
- */
-
-CHIP Or {
- IN a, b;
- OUT out;
-
- PARTS:
- // Put your code here:
-}
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+/**
+ * Or gate:
+ * if (a or b) out = 1, else out = 0
+ */
+CHIP Or {
+ IN a, b;
+ OUT out;
+
+ PARTS:
+ //// Replace this comment with your code.
+}
diff --git a/01/Or.tst b/1/Or.tst
similarity index 75%
rename from 01/Or.tst
rename to 1/Or.tst
index 948b6b3..d5eb9d5 100644
--- a/01/Or.tst
+++ b/1/Or.tst
@@ -1,29 +1,28 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/01/Or.tst
-
-load Or.hdl,
-output-file Or.out,
-compare-to Or.cmp,
-output-list a%B3.1.3 b%B3.1.3 out%B3.1.3;
-
-set a 0,
-set b 0,
-eval,
-output;
-
-set a 0,
-set b 1,
-eval,
-output;
-
-set a 1,
-set b 0,
-eval,
-output;
-
-set a 1,
-set b 1,
-eval,
-output;
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+load Or.hdl,
+output-file Or.out,
+compare-to Or.cmp,
+output-list a b out;
+
+set a 0,
+set b 0,
+eval,
+output;
+
+set a 0,
+set b 1,
+eval,
+output;
+
+set a 1,
+set b 0,
+eval,
+output;
+
+set a 1,
+set b 1,
+eval,
+output;
diff --git a/01/Or16.cmp b/1/Or16.cmp
similarity index 98%
rename from 01/Or16.cmp
rename to 1/Or16.cmp
index e2c3a30..8664afe 100644
--- a/01/Or16.cmp
+++ b/1/Or16.cmp
@@ -1,7 +1,7 @@
-| a | b | out |
-| 0000000000000000 | 0000000000000000 | 0000000000000000 |
-| 0000000000000000 | 1111111111111111 | 1111111111111111 |
-| 1111111111111111 | 1111111111111111 | 1111111111111111 |
-| 1010101010101010 | 0101010101010101 | 1111111111111111 |
-| 0011110011000011 | 0000111111110000 | 0011111111110011 |
-| 0001001000110100 | 1001100001110110 | 1001101001110110 |
+| a | b | out |
+| 0000000000000000 | 0000000000000000 | 0000000000000000 |
+| 0000000000000000 | 1111111111111111 | 1111111111111111 |
+| 1111111111111111 | 1111111111111111 | 1111111111111111 |
+| 1010101010101010 | 0101010101010101 | 1111111111111111 |
+| 0011110011000011 | 0000111111110000 | 0011111111110011 |
+| 0001001000110100 | 1001100001110110 | 1001101001110110 |
diff --git a/01/Or16.hdl b/1/Or16.hdl
similarity index 58%
rename from 01/Or16.hdl
rename to 1/Or16.hdl
index 0238f05..76b48d8 100644
--- a/01/Or16.hdl
+++ b/1/Or16.hdl
@@ -1,17 +1,15 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/01/Or16.hdl
-
-/**
- * 16-bit bitwise Or:
- * for i = 0..15 out[i] = (a[i] or b[i])
- */
-
-CHIP Or16 {
- IN a[16], b[16];
- OUT out[16];
-
- PARTS:
- // Put your code here:
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+/**
+ * 16-bit Or gate:
+ * for i = 0, ..., 15:
+ * out[i] = a[i] Or b[i]
+ */
+CHIP Or16 {
+ IN a[16], b[16];
+ OUT out[16];
+
+ PARTS:
+ //// Replace this comment with your code.
}
\ No newline at end of file
diff --git a/01/Or16.tst b/1/Or16.tst
similarity index 89%
rename from 01/Or16.tst
rename to 1/Or16.tst
index ea7b944..bcdd5ab 100644
--- a/01/Or16.tst
+++ b/1/Or16.tst
@@ -1,39 +1,38 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/01/Or16.tst
-
-load Or16.hdl,
-output-file Or16.out,
-compare-to Or16.cmp,
-output-list a%B1.16.1 b%B1.16.1 out%B1.16.1;
-
-set a %B0000000000000000,
-set b %B0000000000000000,
-eval,
-output;
-
-set a %B0000000000000000,
-set b %B1111111111111111,
-eval,
-output;
-
-set a %B1111111111111111,
-set b %B1111111111111111,
-eval,
-output;
-
-set a %B1010101010101010,
-set b %B0101010101010101,
-eval,
-output;
-
-set a %B0011110011000011,
-set b %B0000111111110000,
-eval,
-output;
-
-set a %B0001001000110100,
-set b %B1001100001110110,
-eval,
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+load Or16.hdl,
+output-file Or16.out,
+compare-to Or16.cmp,
+output-list a%B1.16.1 b%B1.16.1 out%B1.16.1;
+
+set a %B0000000000000000,
+set b %B0000000000000000,
+eval,
+output;
+
+set a %B0000000000000000,
+set b %B1111111111111111,
+eval,
+output;
+
+set a %B1111111111111111,
+set b %B1111111111111111,
+eval,
+output;
+
+set a %B1010101010101010,
+set b %B0101010101010101,
+eval,
+output;
+
+set a %B0011110011000011,
+set b %B0000111111110000,
+eval,
+output;
+
+set a %B0001001000110100,
+set b %B1001100001110110,
+eval,
output;
\ No newline at end of file
diff --git a/1/Or8Way.cmp b/1/Or8Way.cmp
new file mode 100644
index 0000000..a1d2c4a
--- /dev/null
+++ b/1/Or8Way.cmp
@@ -0,0 +1,6 @@
+| in |out|
+| 00000000 | 0 |
+| 11111111 | 1 |
+| 00010000 | 1 |
+| 00000001 | 1 |
+| 00100110 | 1 |
diff --git a/01/Or8Way.hdl b/1/Or8Way.hdl
similarity index 58%
rename from 01/Or8Way.hdl
rename to 1/Or8Way.hdl
index 24c78c4..753dd2f 100644
--- a/01/Or8Way.hdl
+++ b/1/Or8Way.hdl
@@ -1,17 +1,14 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/01/Or8Way.hdl
-
-/**
- * 8-way Or:
- * out = (in[0] or in[1] or ... or in[7])
- */
-
-CHIP Or8Way {
- IN in[8];
- OUT out;
-
- PARTS:
- // Put your code here:
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+/**
+ * 8-way Or gate:
+ * out = in[0] Or in[1] Or ... Or in[7]
+ */
+CHIP Or8Way {
+ IN in[8];
+ OUT out;
+
+ PARTS:
+ //// Replace this comment with your code.
}
\ No newline at end of file
diff --git a/01/Or8Way.tst b/1/Or8Way.tst
similarity index 78%
rename from 01/Or8Way.tst
rename to 1/Or8Way.tst
index e6fbba7..a9f79fd 100644
--- a/01/Or8Way.tst
+++ b/1/Or8Way.tst
@@ -1,29 +1,28 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/01/Or8Way.tst
-
-load Or8Way.hdl,
-output-file Or8Way.out,
-compare-to Or8Way.cmp,
-output-list in%B2.8.2 out%B2.1.2;
-
-set in %B00000000,
-eval,
-output;
-
-set in %B11111111,
-eval,
-output;
-
-set in %B00010000,
-eval,
-output;
-
-set in %B00000001,
-eval,
-output;
-
-set in %B00100110,
-eval,
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+load Or8Way.hdl,
+output-file Or8Way.out,
+compare-to Or8Way.cmp,
+output-list in%B2.8.2 out;
+
+set in %B00000000,
+eval,
+output;
+
+set in %B11111111,
+eval,
+output;
+
+set in %B00010000,
+eval,
+output;
+
+set in %B00000001,
+eval,
+output;
+
+set in %B00100110,
+eval,
output;
\ No newline at end of file
diff --git a/1/Xor.cmp b/1/Xor.cmp
new file mode 100644
index 0000000..3737173
--- /dev/null
+++ b/1/Xor.cmp
@@ -0,0 +1,5 @@
+| a | b |out|
+| 0 | 0 | 0 |
+| 0 | 1 | 1 |
+| 1 | 0 | 1 |
+| 1 | 1 | 0 |
diff --git a/01/Xor.hdl b/1/Xor.hdl
similarity index 66%
rename from 01/Xor.hdl
rename to 1/Xor.hdl
index 14755bd..e8f62b3 100644
--- a/01/Xor.hdl
+++ b/1/Xor.hdl
@@ -1,17 +1,14 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/01/Xor.hdl
-
-/**
- * Exclusive-or gate:
- * out = not (a == b)
- */
-
-CHIP Xor {
- IN a, b;
- OUT out;
-
- PARTS:
- // Put your code here:
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+/**
+ * Exclusive-or gate:
+ * if ((a and Not(b)) or (Not(a) and b)) out = 1, else out = 0
+ */
+CHIP Xor {
+ IN a, b;
+ OUT out;
+
+ PARTS:
+ //// Replace this comment with your code.
}
\ No newline at end of file
diff --git a/01/Xor.tst b/1/Xor.tst
similarity index 75%
rename from 01/Xor.tst
rename to 1/Xor.tst
index 658cbe5..7ffdee8 100644
--- a/01/Xor.tst
+++ b/1/Xor.tst
@@ -1,29 +1,28 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/01/Xor.tst
-
-load Xor.hdl,
-output-file Xor.out,
-compare-to Xor.cmp,
-output-list a%B3.1.3 b%B3.1.3 out%B3.1.3;
-
-set a 0,
-set b 0,
-eval,
-output;
-
-set a 0,
-set b 1,
-eval,
-output;
-
-set a 1,
-set b 0,
-eval,
-output;
-
-set a 1,
-set b 1,
-eval,
-output;
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+load Xor.hdl,
+output-file Xor.out,
+compare-to Xor.cmp,
+output-list a b out;
+
+set a 0,
+set b 0,
+eval,
+output;
+
+set a 0,
+set b 1,
+eval,
+output;
+
+set a 1,
+set b 0,
+eval,
+output;
+
+set a 1,
+set b 1,
+eval,
+output;
diff --git a/10/ArrayTest/Main.jack b/10/ArrayTest/Main.jack
index aa237b1..3892d7a 100644
--- a/10/ArrayTest/Main.jack
+++ b/10/ArrayTest/Main.jack
@@ -1,9 +1,6 @@
// This file is part of www.nand2tetris.org
// and the book "The Elements of Computing Systems"
// by Nisan and Schocken, MIT Press.
-// File name: projects/10/ArrayTest/Main.jack
-
-// (identical to projects/09/Average/Main.jack)
/** Computes the average of a sequence of integers. */
class Main {
diff --git a/10/ExpressionLessSquare/Main.jack b/10/ExpressionLessSquare/Main.jack
index 94764ad..83e0e69 100644
--- a/10/ExpressionLessSquare/Main.jack
+++ b/10/ExpressionLessSquare/Main.jack
@@ -1,7 +1,6 @@
// This file is part of www.nand2tetris.org
// and the book "The Elements of Computing Systems"
// by Nisan and Schocken, MIT Press.
-// File name: projects/10/ExpressionLessSquare/Main.jack
/** Expressionless version of projects/10/Square/Main.jack. */
diff --git a/10/ExpressionLessSquare/Square.jack b/10/ExpressionLessSquare/Square.jack
index 33a54ad..bee9f49 100644
--- a/10/ExpressionLessSquare/Square.jack
+++ b/10/ExpressionLessSquare/Square.jack
@@ -1,7 +1,6 @@
// This file is part of www.nand2tetris.org
// and the book "The Elements of Computing Systems"
// by Nisan and Schocken, MIT Press.
-/// File name: projects/10/ExpressionLessSquare/Square.jack
/** Expressionless version of projects/10/Square/Square.jack. */
diff --git a/10/ExpressionLessSquare/SquareGame.jack b/10/ExpressionLessSquare/SquareGame.jack
index 2866f0d..aa2e60e 100644
--- a/10/ExpressionLessSquare/SquareGame.jack
+++ b/10/ExpressionLessSquare/SquareGame.jack
@@ -1,7 +1,6 @@
// This file is part of www.nand2tetris.org
// and the book "The Elements of Computing Systems"
// by Nisan and Schocken, MIT Press.
-// File name: projects/10/ExpressionLessSquare/SquareGame.jack
/** Expressionless version of projects/10/Square/SquareGame.jack. */
diff --git a/10/Square/Main.jack b/10/Square/Main.jack
index a6fd2c2..0daafff 100644
--- a/10/Square/Main.jack
+++ b/10/Square/Main.jack
@@ -1,11 +1,10 @@
// This file is part of www.nand2tetris.org
// and the book "The Elements of Computing Systems"
// by Nisan and Schocken, MIT Press.
-// File name: projects/10/Square/Main.jack
-// (derived from projects/09/Square/Main.jack, with testing additions)
+// (similar to projects/9/Square/Main.jack, with testing additions)
-/** Initializes a new Square Dance game and starts running it. */
+/** Initializes a new Square game and starts running it. */
class Main {
static boolean test; // Added for testing -- there is no static keyword
// in the Square files.
diff --git a/10/Square/Square.jack b/10/Square/Square.jack
index 3faf24f..af0dc76 100644
--- a/10/Square/Square.jack
+++ b/10/Square/Square.jack
@@ -1,9 +1,6 @@
// This file is part of www.nand2tetris.org
// and the book "The Elements of Computing Systems"
// by Nisan and Schocken, MIT Press.
-// File name: projects/10/Square/Square.jack
-
-// (same as projects/09/Square/Square.jack)
/** Implements a graphical square. */
class Square {
diff --git a/10/Square/SquareGame.jack b/10/Square/SquareGame.jack
index 4f71b16..a4cee4e 100644
--- a/10/Square/SquareGame.jack
+++ b/10/Square/SquareGame.jack
@@ -1,12 +1,8 @@
// This file is part of www.nand2tetris.org
// and the book "The Elements of Computing Systems"
// by Nisan and Schocken, MIT Press.
-// File name: projects/10/Square/SquareGame.jack
-
-// (same as projects/09/Square/SquareGame.jack)
-
/**
- * Implements the Square Dance game.
+ * Implements the Square game.
* This simple game allows the user to move a black square around
* the screen, and change the square's size during the movement.
* When the game starts, a square of 30 by 30 pixels is shown at the
@@ -15,7 +11,6 @@
* The 'z' and 'x' keys are used, respectively, to decrement and increment
* the square's size. The 'q' key is used to quit the game.
*/
-
class SquareGame {
field Square square; // the square of this game
field int direction; // the square's current direction:
diff --git a/11/Average/Main.jack b/11/Average/Main.jack
index d560bf1..01f6e08 100644
--- a/11/Average/Main.jack
+++ b/11/Average/Main.jack
@@ -1,29 +1,26 @@
// This file is part of www.nand2tetris.org
// and the book "The Elements of Computing Systems"
// by Nisan and Schocken, MIT Press.
-// File name: projects/11/Average/Main.jack
-
-// (Same as projects/09/Average/Main.jack)
// Inputs some numbers and computes their average
class Main {
function void main() {
- var Array a;
- var int length;
- var int i, sum;
+ var Array a;
+ var int length;
+ var int i, sum;
- let length = Keyboard.readInt("How many numbers? ");
- let a = Array.new(length); // constructs the array
-
- let i = 0;
- while (i < length) {
- let a[i] = Keyboard.readInt("Enter a number: ");
- let sum = sum + a[i];
- let i = i + 1;
- }
+ let length = Keyboard.readInt("How many numbers? ");
+ let a = Array.new(length); // constructs the array
- do Output.printString("The average is ");
- do Output.printInt(sum / length);
- return;
+ let i = 0;
+ while (i < length) {
+ let a[i] = Keyboard.readInt("Enter a number: ");
+ let sum = sum + a[i];
+ let i = i + 1;
+ }
+
+ do Output.printString("The average is ");
+ do Output.printInt(sum / length);
+ return;
}
}
diff --git a/11/ComplexArrays/Main.jack b/11/ComplexArrays/Main.jack
index fe51c20..846a343 100644
--- a/11/ComplexArrays/Main.jack
+++ b/11/ComplexArrays/Main.jack
@@ -1,8 +1,6 @@
// This file is part of www.nand2tetris.org
// and the book "The Elements of Computing Systems"
// by Nisan and Schocken, MIT Press.
-// File name: projects/11/ComplexArrays/Main.jack
-
/**
* Performs several complex array processing tests.
* For each test, the expected result is printed, along with the
diff --git a/11/ConvertToBin/Main.jack b/11/ConvertToBin/Main.jack
index e627486..61e9af5 100644
--- a/11/ConvertToBin/Main.jack
+++ b/11/ConvertToBin/Main.jack
@@ -1,12 +1,10 @@
// This file is part of www.nand2tetris.org
// and the book "The Elements of Computing Systems"
// by Nisan and Schocken, MIT Press.
-// File name: projects/11/ConvertToBin/Main.jack
-
/**
* Unpacks a 16-bit number into its binary representation:
* Takes the 16-bit number stored in RAM[8000] and stores its individual
- * bits in RAM[8001..8016] (each location will contain 0 or 1).
+ * bits in RAM[8001]..RAM[8016] (each location will contain 0 or 1).
* Before the conversion, RAM[8001]..RAM[8016] are initialized to -1.
*
* The program should be tested as follows:
@@ -15,7 +13,7 @@
* 3) Switch to "no animation"
* 4) Run the program (give it enough time to run)
* 5) Stop the program
- * 6) Check that RAM[8001]..RAM[8016] contains the correct binary result, and
+ * 6) Check that RAM[8001]..RAM[8016] contain the correct bits, and
* that none of these memory locations contains -1.
*/
class Main {
@@ -27,7 +25,7 @@ class Main {
function void main() {
var int value;
do Main.fillMemory(8001, 16, -1); // sets RAM[8001]..RAM[8016] to -1
- let value = Memory.peek(8000); // reads a value from RAM[8000]
+ let value = Memory.peek(8000); // Uses an OS routine to read the input
do Main.convert(value); // performs the conversion
return;
}
@@ -70,12 +68,12 @@ class Main {
}
/** Fills 'length' consecutive memory locations with 'value',
- * starting at 'startAddress'. */
- function void fillMemory(int startAddress, int length, int value) {
+ * starting at 'address'. */
+ function void fillMemory(int address, int length, int value) {
while (length > 0) {
- do Memory.poke(startAddress, value);
+ do Memory.poke(address, value);
let length = length - 1;
- let startAddress = startAddress + 1;
+ let address = address + 1;
}
return;
}
diff --git a/11/Pong/Ball.jack b/11/Pong/Ball.jack
index 02e47f9..e810ab1 100644
--- a/11/Pong/Ball.jack
+++ b/11/Pong/Ball.jack
@@ -1,19 +1,17 @@
// This file is part of www.nand2tetris.org
// and the book "The Elements of Computing Systems"
// by Nisan and Schocken, MIT Press.
-// File name: projects/11/Pong/Ball.jack
-
/**
- * A graphical ball. Characterized by a screen location and distance of
- * last destination. Has methods for drawing, erasing and moving on the screen.
- * The ball is displayed as a filled, 6-by-6 pixles rectangle.
+ * A graphical ball in a Pong game. Characterized by a screen location and
+ * distance of last destination. Has methods for drawing, erasing and moving
+ * on the screen. The ball is displayed as a filled, 6-by-6 pixles rectangle.
*/
class Ball {
field int x, y; // the ball's screen location (in pixels)
field int lengthx, lengthy; // distance of last destination (in pixels)
- field int d, straightD, diagonalD; // used for straight line movement computation
+ field int d, straightD, diagonalD; // used for straight line movement computation
field boolean invert, positivex, positivey; // (same)
field int leftWall, rightWall, topWall, bottomWall; // wall locations
@@ -99,7 +97,7 @@ class Ball {
}
/**
- * Moves the ball one unit towards its destination.
+ * Moves the ball one step towards its destination.
* If the ball has reached a wall, returns 0.
* Else, returns a value according to the wall:
* 1 (left wall), 2 (right wall), 3 (top wall), 4 (bottom wall).
@@ -161,7 +159,7 @@ class Ball {
method void bounce(int bouncingDirection) {
var int newx, newy, divLengthx, divLengthy, factor;
- // dividing by 10 first since results are too big
+ // Since results are too big, divides by 10
let divLengthx = lengthx / 10;
let divLengthy = lengthy / 10;
if (bouncingDirection = 0) { let factor = 10; }
diff --git a/11/Pong/Bat.jack b/11/Pong/Bat.jack
index 340760f..5ebbc44 100644
--- a/11/Pong/Bat.jack
+++ b/11/Pong/Bat.jack
@@ -1,23 +1,22 @@
// This file is part of www.nand2tetris.org
// and the book "The Elements of Computing Systems"
// by Nisan and Schocken, MIT Press.
-// File name: projects/11/Pong/Bat.jack
-
/**
- * A graphical Pong bat.
- * Displayed as a filled horizontal rectangle that has
- * a screen location, a width and a height.
- * Has methods for drawing, erasing, moving left and right,
- * and changing its width (to make the hitting action more challenging).
- * This class should have been called "paddle", following the
- * standard Pong terminology. But, unaware of this terminology,
- * we called it "bat", and then decided to stick to it.
+ * A graphical bat in a Pong game.
+ * Displayed as a filled horizontal rectangle that has a screen location,
+ * a width and a height.
+ * Has methods for drawing, erasing, moving left and right, and changing
+ * its width (to make the hitting action more challenging).
+ * This class should have been called "Paddle", following the
+ * standard Pong terminology. Unaware of this terminology,
+ * we called it "bat", and the name stuck.
*/
class Bat {
field int x, y; // the bat's screen location
field int width, height; // the bat's width and height
- field int direction; // direction of the bat's movement (1 = left, 2 = right)
+ field int direction; // direction of the bat's movement
+ // (1 = left, 2 = right)
/** Constructs a new bat with the given location and width. */
constructor Bat new(int Ax, int Ay, int Awidth, int Aheight) {
diff --git a/11/Pong/Main.jack b/11/Pong/Main.jack
index 45e2dd2..19a9f7e 100644
--- a/11/Pong/Main.jack
+++ b/11/Pong/Main.jack
@@ -1,10 +1,8 @@
// This file is part of www.nand2tetris.org
// and the book "The Elements of Computing Systems"
// by Nisan and Schocken, MIT Press.
-// File name: projects/11/Pong/Main.jack
-
/**
- * The main class of the Pong game.
+ * Main class of the Pong game.
*/
class Main {
diff --git a/11/Pong/PongGame.jack b/11/Pong/PongGame.jack
index 7e1ae4c..67f0018 100644
--- a/11/Pong/PongGame.jack
+++ b/11/Pong/PongGame.jack
@@ -1,20 +1,18 @@
// This file is part of www.nand2tetris.org
// and the book "The Elements of Computing Systems"
// by Nisan and Schocken, MIT Press.
-// File name: projects/11/Pong/PongGame.jack
-
/**
* Represents a Pong game.
*/
class PongGame {
- static PongGame instance; // the singelton, a Pong game instance
- field Bat bat; // the bat
- field Ball ball; // the ball
- field int wall; // the current wall that the ball is bouncing off of.
+ static PongGame instance; // A Pong game
+ field Bat bat; // bat
+ field Ball ball; // ball
+ field int wall; // current wall that the ball is bouncing off of
field boolean exit; // true when the game is over
- field int score; // the current score.
- field int lastWall; // the last wall that the ball bounced off of.
+ field int score; // current score
+ field int lastWall; // last wall that the ball bounced off of
// The current width of the bat
field int batWidth;
@@ -46,18 +44,18 @@ class PongGame {
return;
}
- /** Creates an instance of Pong game, and stores it. */
+ /** Creates an instance of a Pong game. */
function void newInstance() {
let instance = PongGame.new();
return;
}
- /** Returns the single instance of this Pong game. */
+ /** Returns this Pong game. */
function PongGame getInstance() {
return instance;
}
- /** Starts the game, and andles inputs from the user that control
+ /** Starts the game, and handles inputs from the user that control
* the bat's movement direction. */
method void run() {
var char key;
diff --git a/11/Seven/Main.jack b/11/Seven/Main.jack
index 067402e..199e933 100644
--- a/11/Seven/Main.jack
+++ b/11/Seven/Main.jack
@@ -1,8 +1,6 @@
// This file is part of www.nand2tetris.org
// and the book "The Elements of Computing Systems"
// by Nisan and Schocken, MIT Press.
-// File name: projects/11/Seven/Main.jack
-
/**
* Computes the value of 1 + (2 * 3) and prints the result
* at the top-left of the screen.
diff --git a/11/Square/Main.jack b/11/Square/Main.jack
index 0753893..97cbf24 100644
--- a/11/Square/Main.jack
+++ b/11/Square/Main.jack
@@ -1,11 +1,8 @@
// This file is part of www.nand2tetris.org
// and the book "The Elements of Computing Systems"
// by Nisan and Schocken, MIT Press.
-// File name: projects/11/Square/Main.jack
-// (same as projects/09/Square/Main.jack)
-
-/** Initializes a new Square Dance game and starts running it. */
+/** Initializes a new Square game and starts running it. */
class Main {
function void main() {
var SquareGame game;
diff --git a/11/Square/Square.jack b/11/Square/Square.jack
index 5a92838..b71eac3 100644
--- a/11/Square/Square.jack
+++ b/11/Square/Square.jack
@@ -1,21 +1,19 @@
// This file is part of www.nand2tetris.org
// and the book "The Elements of Computing Systems"
// by Nisan and Schocken, MIT Press.
-// File name: projects/11/Square/Square.jack
-// (same as projects/09/Square/Square.jack)
-
-/** Implements a graphical square. */
+/** Implements a graphical square.
+ The square has top-left x and y coordinates, and a size. */
class Square {
- field int x, y; // screen location of the square's top-left corner
+ field int x, y; // screen location of the top-left corner of this square
field int size; // length of this square, in pixels
- /** Constructs a new square with a given location and size. */
- constructor Square new(int Ax, int Ay, int Asize) {
- let x = Ax;
- let y = Ay;
- let size = Asize;
+ /** Constructs and draws a new square with a given location and size. */
+ constructor Square new(int ax, int ay, int asize) {
+ let x = ax;
+ let y = ay;
+ let size = asize;
do draw();
return this;
}
@@ -26,21 +24,23 @@ class Square {
return;
}
- /** Draws the square on the screen. */
+ /** Draws this square in its current (x,y) location */
method void draw() {
+ // Draws the square using the color black
do Screen.setColor(true);
do Screen.drawRectangle(x, y, x + size, y + size);
return;
}
- /** Erases the square from the screen. */
+ /** Erases this square. */
method void erase() {
+ // Draws the square using the color white (background color)
do Screen.setColor(false);
do Screen.drawRectangle(x, y, x + size, y + size);
return;
}
- /** Increments the square size by 2 pixels. */
+ /** Increments the square size by 2 pixels (if possible). */
method void incSize() {
if (((y + size) < 254) & ((x + size) < 510)) {
do erase();
@@ -50,7 +50,7 @@ class Square {
return;
}
- /** Decrements the square size by 2 pixels. */
+ /** Decrements the square size by 2 pixels (if possible). */
method void decSize() {
if (size > 2) {
do erase();
@@ -60,19 +60,21 @@ class Square {
return;
}
- /** Moves the square up by 2 pixels. */
+ /** Moves this square up by 2 pixels (if possible). */
method void moveUp() {
if (y > 1) {
+ // Erases the bottom two rows of this square in its current location
do Screen.setColor(false);
do Screen.drawRectangle(x, (y + size) - 1, x + size, y + size);
let y = y - 2;
+ // Draws the top two rows of this square in its new location
do Screen.setColor(true);
do Screen.drawRectangle(x, y, x + size, y + 1);
}
return;
}
- /** Moves the square down by 2 pixels. */
+ /** Moves the square down by 2 pixels (if possible). */
method void moveDown() {
if ((y + size) < 254) {
do Screen.setColor(false);
@@ -84,7 +86,7 @@ class Square {
return;
}
- /** Moves the square left by 2 pixels. */
+ /** Moves the square left by 2 pixels (if possible). */
method void moveLeft() {
if (x > 1) {
do Screen.setColor(false);
@@ -96,7 +98,7 @@ class Square {
return;
}
- /** Moves the square right by 2 pixels. */
+ /** Moves the square right by 2 pixels (if possible). */
method void moveRight() {
if ((x + size) < 510) {
do Screen.setColor(false);
diff --git a/11/Square/SquareGame.jack b/11/Square/SquareGame.jack
index 4fe7e39..36b50c2 100644
--- a/11/Square/SquareGame.jack
+++ b/11/Square/SquareGame.jack
@@ -1,12 +1,8 @@
// This file is part of www.nand2tetris.org
// and the book "The Elements of Computing Systems"
// by Nisan and Schocken, MIT Press.
-// File name: projects/11/Square/SquareGame.jack
-
-// (same as projects/09/Square/SquareGame.jack)
-
/**
- * Implements the Square Dance game.
+ * Implements the Square game.
* This simple game allows the user to move a black square around
* the screen, and change the square's size during the movement.
* When the game starts, a square of 30 by 30 pixels is shown at the
@@ -15,18 +11,16 @@
* The 'z' and 'x' keys are used, respectively, to decrement and increment
* the square's size. The 'q' key is used to quit the game.
*/
-
class SquareGame {
field Square square; // the square of this game
field int direction; // the square's current direction:
// 0=none, 1=up, 2=down, 3=left, 4=right
- /** Constructs a new Square Game. */
+ /** Constructs a new square game. */
constructor SquareGame new() {
- // Creates a 30 by 30 pixels square and positions it at the top-left
- // of the screen.
+ // The initial square is located in (0,0), has size 30, and is not moving.
let square = Square.new(0, 0, 30);
- let direction = 0; // initial state is no movement
+ let direction = 0;
return this;
}
diff --git a/12/Array.jack b/12/Array.jack
index ee31129..7798ff8 100644
--- a/12/Array.jack
+++ b/12/Array.jack
@@ -1,8 +1,6 @@
// This file is part of www.nand2tetris.org
// and the book "The Elements of Computing Systems"
// by Nisan and Schocken, MIT Press.
-// File name: projects/12/Array.jack
-
/**
* Represents an array.
* In the Jack language, arrays are instances of the Array class.
diff --git a/12/ArrayTest/ArrayTest.tst b/12/ArrayTest/ArrayTest.tst
index 89934b9..ca701f2 100644
--- a/12/ArrayTest/ArrayTest.tst
+++ b/12/ArrayTest/ArrayTest.tst
@@ -1,7 +1,6 @@
// This file is part of www.nand2tetris.org
// and the book "The Elements of Computing Systems"
// by Nisan and Schocken, MIT Press.
-// File name: projects/12/ArrayTest/ArrayTest.tst
load,
output-file ArrayTest.out,
diff --git a/12/ArrayTest/Main.jack b/12/ArrayTest/Main.jack
index 439770a..b90e137 100644
--- a/12/ArrayTest/Main.jack
+++ b/12/ArrayTest/Main.jack
@@ -1,7 +1,6 @@
// This file is part of www.nand2tetris.org
// and the book "The Elements of Computing Systems"
// by Nisan and Schocken, MIT Press.
-// File name: projects/12/ArrayTest/Main.jack
/** Test program for the OS Array class. */
class Main {
diff --git a/12/Keyboard.jack b/12/Keyboard.jack
index 03e1031..dd7cdb1 100644
--- a/12/Keyboard.jack
+++ b/12/Keyboard.jack
@@ -1,8 +1,6 @@
// This file is part of www.nand2tetris.org
// and the book "The Elements of Computing Systems"
// by Nisan and Schocken, MIT Press.
-// File name: projects/12/Keyboard.jack
-
/**
* A library for handling user input from the keyboard.
*/
@@ -35,28 +33,22 @@ class Keyboard {
function char keyPressed() {
}
- /**
- * Waits until a key is pressed on the keyboard and released,
- * then echoes the key to the screen, and returns the character
- * of the pressed key.
- */
+ /** Waits until a key is pressed on the keyboard and released,
+ * then echoes the key to the screen, and returns the character
+ * of the pressed key. */
function char readChar() {
}
- /**
- * Displays the message on the screen, reads from the keyboard the entered
- * text until a newline character is detected, echoes the text to the screen,
- * and returns its value. Also handles user backspaces.
- */
+ /** Displays the message on the screen, reads from the keyboard the entered
+ * text until a newline character is detected, echoes the text to the screen,
+ * and returns its value. Also handles user backspaces. */
function String readLine(String message) {
}
- /**
- * Displays the message on the screen, reads from the keyboard the entered
- * text until a newline character is detected, echoes the text to the screen,
- * and returns its integer value (until the first non-digit character in the
- * entered text is detected). Also handles user backspaces.
- */
+ /** Displays the message on the screen, reads from the keyboard the entered
+ * text until a newline character is detected, echoes the text to the screen,
+ * and returns its integer value (until the first non-digit character in the
+ * entered text is detected). Also handles user backspaces. */
function int readInt(String message) {
}
}
diff --git a/12/KeyboardTest/KeyboardTestOutput.gif b/12/KeyboardTest/KeyboardTestOutput.gif
deleted file mode 100644
index 944983a..0000000
Binary files a/12/KeyboardTest/KeyboardTestOutput.gif and /dev/null differ
diff --git a/12/KeyboardTest/KeyboardTestOutput.png b/12/KeyboardTest/KeyboardTestOutput.png
new file mode 100644
index 0000000..ad7f798
Binary files /dev/null and b/12/KeyboardTest/KeyboardTestOutput.png differ
diff --git a/12/KeyboardTest/Main.jack b/12/KeyboardTest/Main.jack
index e89182c..9bc76fc 100644
--- a/12/KeyboardTest/Main.jack
+++ b/12/KeyboardTest/Main.jack
@@ -1,7 +1,6 @@
// This file is part of www.nand2tetris.org
// and the book "The Elements of Computing Systems"
// by Nisan and Schocken, MIT Press.
-// File name: projects/12/KeyboardTest/Main.jack
/** Test program for the OS Keyboard class. */
class Main {
@@ -17,7 +16,7 @@ class Main {
do Output.printString("keyPressed test:");
do Output.println();
while (~ok) {
- do Output.printString("Please press the 'Page Down' key");
+ do Output.printString("Please press the 'space' key");
while (key = 0) {
let key = Keyboard.keyPressed();
}
@@ -28,7 +27,7 @@ class Main {
do Output.println();
- if (c = 137) {
+ if (c = 32) {
do Output.printString("ok");
do Output.println();
let ok = true;
diff --git a/12/Math.jack b/12/Math.jack
index a57f023..e993cb8 100644
--- a/12/Math.jack
+++ b/12/Math.jack
@@ -1,35 +1,32 @@
// This file is part of www.nand2tetris.org
// and the book "The Elements of Computing Systems"
// by Nisan and Schocken, MIT Press.
-// File name: projects/12/Math.jack
-
/**
- * A library of commonly used mathematical functions.
- * Note: Jack compilers implement multiplication and division using OS method calls.
+ * A library of commonly used mathematical functions.
+ * All functions runs in O(n), where n is the number of bits used
+ * for representing a two's complement integer value (16 in the Hack computer).
+ * Note: Jack compilers implement multiplication and division
+ * using calls to OS functions in this class.
*/
class Math {
+ static int n; // Number of bits used for representing a two's complement integer
+ static Array powersOfTwo; // Stores 2^0, 2^1, 2^2,..., 2^(n-1)
- /** Initializes the library. */
+ // Initializes the Math library.
function void init() {
}
- /** Returns the absolute value of x. */
- function int abs(int x) {
- }
-
/** Returns the product of x and y.
- * When a Jack compiler detects the multiplication operator '*' in the
- * program's code, it handles it by invoking this method. In other words,
- * the Jack expressions x*y and multiply(x,y) return the same value.
- */
+ * When a Jack compiler detects the multiplication operator '*'
+ * in an expression, it handles it by invoking this method.
+ * Thus, in Jack, x * y and Math.multiply(x,y) return the same value. */
function int multiply(int x, int y) {
}
- /** Returns the integer part of x/y.
- * When a Jack compiler detects the multiplication operator '/' in the
- * program's code, it handles it by invoking this method. In other words,
- * the Jack expressions x/y and divide(x,y) return the same value.
- */
+ /** Returns the integer part of x / y.
+ * When a Jack compiler detects the division operator '/'
+ * an an expression, it handles it by invoking this method.
+ * Thus, x/y and Math.divide(x,y) return the same value. */
function int divide(int x, int y) {
}
@@ -37,11 +34,15 @@ class Math {
function int sqrt(int x) {
}
- /** Returns the greater number. */
+ /** Returns the greater value. */
function int max(int a, int b) {
}
- /** Returns the smaller number. */
+ /** Returns the smaller value. */
function int min(int a, int b) {
}
+
+ /** Returns the absolute value of x. */
+ function int abs(int x) {
+ }
}
diff --git a/12/MathTest/Main.jack b/12/MathTest/Main.jack
index de5cec2..c738496 100644
--- a/12/MathTest/Main.jack
+++ b/12/MathTest/Main.jack
@@ -1,16 +1,14 @@
// This file is part of www.nand2tetris.org
// and the book "The Elements of Computing Systems"
// by Nisan and Schocken, MIT Press.
-// File name: projects/12/MathTest/Main.jack
/** Test program for the OS Math class. */
class Main {
- /** Performs various mathematical operations, using calls to the Math class methods. */
+ // Performs various mathematical operations, using calls to the Math class methods.
function void main() {
- var Array r; // stores the test results;
-
- let r = 8000;
+ var Array r; // Stores the test results;
+ let r = 8000; // Base address
let r[0] = 2 * 3; // 6
let r[1] = r[0] * (-30); // 6 * (-30) = -180
@@ -20,7 +18,7 @@ class Main {
let r[5] = 9 / 3; // 3
let r[6] = (-18000) / 6; // -3000
- let r[7] = 32766 / (-32767); // 0
+ let r[7] = 32766 / (-32767); // (2^15 - 2) / (2^15 - 1) = 0
let r[8] = Math.sqrt(9); // 3
let r[9] = Math.sqrt(32767); // 181
@@ -32,4 +30,4 @@ class Main {
return;
}
-}
+}
\ No newline at end of file
diff --git a/12/MathTest/MathTest.tst b/12/MathTest/MathTest.tst
index 127dbb4..32100b8 100644
--- a/12/MathTest/MathTest.tst
+++ b/12/MathTest/MathTest.tst
@@ -1,7 +1,6 @@
// This file is part of www.nand2tetris.org
// and the book "The Elements of Computing Systems"
// by Nisan and Schocken, MIT Press.
-// File name: projects/12/MathTest/MathTest.tst
load,
output-file MathTest.out,
diff --git a/12/Memory.jack b/12/Memory.jack
index 941eec1..358df82 100644
--- a/12/Memory.jack
+++ b/12/Memory.jack
@@ -1,8 +1,6 @@
// This file is part of www.nand2tetris.org
// and the book "The Elements of Computing Systems"
// by Nisan and Schocken, MIT Press.
-// File name: projects/12/Memory.jack
-
/**
* This library provides two services: direct access to the computer's main
* memory (RAM), and allocation and recycling of memory blocks. The Hack RAM
diff --git a/12/MemoryTest/Main.jack b/12/MemoryTest/Main.jack
index a9817f4..fca4567 100644
--- a/12/MemoryTest/Main.jack
+++ b/12/MemoryTest/Main.jack
@@ -1,7 +1,6 @@
// This file is part of www.nand2tetris.org
// and the book "The Elements of Computing Systems"
// by Nisan and Schocken, MIT Press.
-// File name: projects/12/MemoryTest/Main.jack
/** Test program for the OS Memory class. */
class Main {
diff --git a/12/MemoryTest/MemoryDiag/Main.jack b/12/MemoryTest/MemoryDiag/Main.jack
index de439d0..56e4ab1 100644
--- a/12/MemoryTest/MemoryDiag/Main.jack
+++ b/12/MemoryTest/MemoryDiag/Main.jack
@@ -1,7 +1,5 @@
// This file is part of www.nand2tetris.org
// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/12/MemoryTest/Main.jack
/** Test program for the OS Memory class. */
class Main {
diff --git a/12/MemoryTest/MemoryDiag/MemoryDiag.tst b/12/MemoryTest/MemoryDiag/MemoryDiag.tst
index 94cd921..68313b6 100644
--- a/12/MemoryTest/MemoryDiag/MemoryDiag.tst
+++ b/12/MemoryTest/MemoryDiag/MemoryDiag.tst
@@ -1,7 +1,6 @@
// This file is part of www.nand2tetris.org
// and the book "The Elements of Computing Systems"
// by Nisan and Schocken, MIT Press.
-// File name: projects/12/MemoryTest/MemoryDiag/MemoryDiag.tst
echo "At the end of this test it is normal to see some pixels set on the screen";
load,
diff --git a/12/MemoryTest/MemoryTest.tst b/12/MemoryTest/MemoryTest.tst
index 1da34fd..17ea0ab 100644
--- a/12/MemoryTest/MemoryTest.tst
+++ b/12/MemoryTest/MemoryTest.tst
@@ -1,7 +1,6 @@
// This file is part of www.nand2tetris.org
// and the book "The Elements of Computing Systems"
// by Nisan and Schocken, MIT Press.
-// File name: projects/12/MemoryTest/MemoryTest.tst
load,
output-file MemoryTest.out,
diff --git a/12/Output.jack b/12/Output.jack
index 18e3382..de3b276 100644
--- a/12/Output.jack
+++ b/12/Output.jack
@@ -1,8 +1,6 @@
// This file is part of www.nand2tetris.org
// and the book "The Elements of Computing Systems"
// by Nisan and Schocken, MIT Press.
-// File name: projects/12/Output.jack
-
/**
* A library of functions for writing text on the screen.
* The Hack physical screen consists of 512 rows of 256 pixels each.
diff --git a/12/OutputTest/Main.jack b/12/OutputTest/Main.jack
index f243068..4f65250 100644
--- a/12/OutputTest/Main.jack
+++ b/12/OutputTest/Main.jack
@@ -1,7 +1,6 @@
// This file is part of www.nand2tetris.org
// and the book "The Elements of Computing Systems"
// by Nisan and Schocken, MIT Press.
-// File name: projects/12/OutputTest/Main.jack
/** Test program for the OS Output class. */
class Main {
diff --git a/12/Screen.jack b/12/Screen.jack
index 6563042..1ed13dd 100644
--- a/12/Screen.jack
+++ b/12/Screen.jack
@@ -1,12 +1,10 @@
// This file is part of www.nand2tetris.org
// and the book "The Elements of Computing Systems"
// by Nisan and Schocken, MIT Press.
-// File name: projects/12/Screen.jack
-
/**
* A library of functions for displaying graphics on the screen.
- * The Hack physical screen consists of 256 rows (indexed 0..255, top to bottom)
- * of 512 pixels each (indexed 0..511, left to right). The top left pixel on
+ * The Hack physical screen consists of 512 rows (indexed 0..511, top to bottom)
+ * of 256 pixels each (indexed 0..255, left to right). The top left pixel on
* the screen is indexed (0,0).
*/
class Screen {
@@ -33,7 +31,7 @@ class Screen {
}
/** Draws a filled rectangle whose top left corner is (x1, y1)
- * and bottom right corner is (x2,y2), using the current color. */
+ * and bottom right corner is (x2,y2), using the current color. */
function void drawRectangle(int x1, int y1, int x2, int y2) {
}
diff --git a/12/ScreenTest/Main.jack b/12/ScreenTest/Main.jack
index 00f36bd..ec541af 100644
--- a/12/ScreenTest/Main.jack
+++ b/12/ScreenTest/Main.jack
@@ -1,7 +1,6 @@
// This file is part of www.nand2tetris.org
// and the book "The Elements of Computing Systems"
// by Nisan and Schocken, MIT Press.
-// File name: projects/12/ScreenTest/Main.jack
/** Test program for the OS Screen class. */
class Main {
diff --git a/12/String.jack b/12/String.jack
index 228d71c..2da7e89 100644
--- a/12/String.jack
+++ b/12/String.jack
@@ -1,8 +1,6 @@
// This file is part of www.nand2tetris.org
// and the book "The Elements of Computing Systems"
// by Nisan and Schocken, MIT Press.
-// File name: projects/12/String.jack
-
/**
* Represents character strings. In addition for constructing and disposing
* strings, the class features methods for getting and setting individual
diff --git a/12/StringTest/Main.jack b/12/StringTest/Main.jack
index 2848548..d0d67ef 100644
--- a/12/StringTest/Main.jack
+++ b/12/StringTest/Main.jack
@@ -1,7 +1,6 @@
// This file is part of www.nand2tetris.org
// and the book "The Elements of Computing Systems"
// by Nisan and Schocken, MIT Press.
-// File name: projects/12/StringTest/Main.jack
/** Test program for the OS String class. */
class Main {
diff --git a/12/Sys.jack b/12/Sys.jack
index bee6f67..f542cc1 100644
--- a/12/Sys.jack
+++ b/12/Sys.jack
@@ -1,8 +1,6 @@
// This file is part of www.nand2tetris.org
// and the book "The Elements of Computing Systems"
// by Nisan and Schocken, MIT Press.
-// File name: projects/12/Sys.jack
-
/**
* A library that supports various program execution services.
*/
diff --git a/12/SysTest/Main.jack b/12/SysTest/Main.jack
index a153b25..70283fa 100644
--- a/12/SysTest/Main.jack
+++ b/12/SysTest/Main.jack
@@ -1,7 +1,6 @@
// This file is part of www.nand2tetris.org
// and the book "The Elements of Computing Systems"
// by Nisan and Schocken, MIT Press.
-// File name: projects/12/SysTest/Main.jack
/** Test program for the OS Sys class. */
class Main {
diff --git a/02/ALU-nostat.cmp b/2/ALU-basic.cmp
similarity index 98%
rename from 02/ALU-nostat.cmp
rename to 2/ALU-basic.cmp
index 976ab78..249461c 100644
--- a/02/ALU-nostat.cmp
+++ b/2/ALU-basic.cmp
@@ -1,37 +1,37 @@
-| x | y |zx |nx |zy |ny | f |no | out |
-| 0000000000000000 | 1111111111111111 | 1 | 0 | 1 | 0 | 1 | 0 | 0000000000000000 |
-| 0000000000000000 | 1111111111111111 | 1 | 1 | 1 | 1 | 1 | 1 | 0000000000000001 |
-| 0000000000000000 | 1111111111111111 | 1 | 1 | 1 | 0 | 1 | 0 | 1111111111111111 |
-| 0000000000000000 | 1111111111111111 | 0 | 0 | 1 | 1 | 0 | 0 | 0000000000000000 |
-| 0000000000000000 | 1111111111111111 | 1 | 1 | 0 | 0 | 0 | 0 | 1111111111111111 |
-| 0000000000000000 | 1111111111111111 | 0 | 0 | 1 | 1 | 0 | 1 | 1111111111111111 |
-| 0000000000000000 | 1111111111111111 | 1 | 1 | 0 | 0 | 0 | 1 | 0000000000000000 |
-| 0000000000000000 | 1111111111111111 | 0 | 0 | 1 | 1 | 1 | 1 | 0000000000000000 |
-| 0000000000000000 | 1111111111111111 | 1 | 1 | 0 | 0 | 1 | 1 | 0000000000000001 |
-| 0000000000000000 | 1111111111111111 | 0 | 1 | 1 | 1 | 1 | 1 | 0000000000000001 |
-| 0000000000000000 | 1111111111111111 | 1 | 1 | 0 | 1 | 1 | 1 | 0000000000000000 |
-| 0000000000000000 | 1111111111111111 | 0 | 0 | 1 | 1 | 1 | 0 | 1111111111111111 |
-| 0000000000000000 | 1111111111111111 | 1 | 1 | 0 | 0 | 1 | 0 | 1111111111111110 |
-| 0000000000000000 | 1111111111111111 | 0 | 0 | 0 | 0 | 1 | 0 | 1111111111111111 |
-| 0000000000000000 | 1111111111111111 | 0 | 1 | 0 | 0 | 1 | 1 | 0000000000000001 |
-| 0000000000000000 | 1111111111111111 | 0 | 0 | 0 | 1 | 1 | 1 | 1111111111111111 |
-| 0000000000000000 | 1111111111111111 | 0 | 0 | 0 | 0 | 0 | 0 | 0000000000000000 |
-| 0000000000000000 | 1111111111111111 | 0 | 1 | 0 | 1 | 0 | 1 | 1111111111111111 |
-| 0101101110100000 | 0001111011010010 | 1 | 0 | 1 | 0 | 1 | 0 | 0000000000000000 |
-| 0101101110100000 | 0001111011010010 | 1 | 1 | 1 | 1 | 1 | 1 | 0000000000000001 |
-| 0101101110100000 | 0001111011010010 | 1 | 1 | 1 | 0 | 1 | 0 | 1111111111111111 |
-| 0101101110100000 | 0001111011010010 | 0 | 0 | 1 | 1 | 0 | 0 | 0101101110100000 |
-| 0101101110100000 | 0001111011010010 | 1 | 1 | 0 | 0 | 0 | 0 | 0001111011010010 |
-| 0101101110100000 | 0001111011010010 | 0 | 0 | 1 | 1 | 0 | 1 | 1010010001011111 |
-| 0101101110100000 | 0001111011010010 | 1 | 1 | 0 | 0 | 0 | 1 | 1110000100101101 |
-| 0101101110100000 | 0001111011010010 | 0 | 0 | 1 | 1 | 1 | 1 | 1010010001100000 |
-| 0101101110100000 | 0001111011010010 | 1 | 1 | 0 | 0 | 1 | 1 | 1110000100101110 |
-| 0101101110100000 | 0001111011010010 | 0 | 1 | 1 | 1 | 1 | 1 | 0101101110100001 |
-| 0101101110100000 | 0001111011010010 | 1 | 1 | 0 | 1 | 1 | 1 | 0001111011010011 |
-| 0101101110100000 | 0001111011010010 | 0 | 0 | 1 | 1 | 1 | 0 | 0101101110011111 |
-| 0101101110100000 | 0001111011010010 | 1 | 1 | 0 | 0 | 1 | 0 | 0001111011010001 |
-| 0101101110100000 | 0001111011010010 | 0 | 0 | 0 | 0 | 1 | 0 | 0111101001110010 |
-| 0101101110100000 | 0001111011010010 | 0 | 1 | 0 | 0 | 1 | 1 | 0011110011001110 |
-| 0101101110100000 | 0001111011010010 | 0 | 0 | 0 | 1 | 1 | 1 | 1100001100110010 |
-| 0101101110100000 | 0001111011010010 | 0 | 0 | 0 | 0 | 0 | 0 | 0001101010000000 |
-| 0101101110100000 | 0001111011010010 | 0 | 1 | 0 | 1 | 0 | 1 | 0101111111110010 |
+| x | y |zx |nx |zy |ny | f |no | out |
+| 0000000000000000 | 1111111111111111 | 1 | 0 | 1 | 0 | 1 | 0 | 0000000000000000 |
+| 0000000000000000 | 1111111111111111 | 1 | 1 | 1 | 1 | 1 | 1 | 0000000000000001 |
+| 0000000000000000 | 1111111111111111 | 1 | 1 | 1 | 0 | 1 | 0 | 1111111111111111 |
+| 0000000000000000 | 1111111111111111 | 0 | 0 | 1 | 1 | 0 | 0 | 0000000000000000 |
+| 0000000000000000 | 1111111111111111 | 1 | 1 | 0 | 0 | 0 | 0 | 1111111111111111 |
+| 0000000000000000 | 1111111111111111 | 0 | 0 | 1 | 1 | 0 | 1 | 1111111111111111 |
+| 0000000000000000 | 1111111111111111 | 1 | 1 | 0 | 0 | 0 | 1 | 0000000000000000 |
+| 0000000000000000 | 1111111111111111 | 0 | 0 | 1 | 1 | 1 | 1 | 0000000000000000 |
+| 0000000000000000 | 1111111111111111 | 1 | 1 | 0 | 0 | 1 | 1 | 0000000000000001 |
+| 0000000000000000 | 1111111111111111 | 0 | 1 | 1 | 1 | 1 | 1 | 0000000000000001 |
+| 0000000000000000 | 1111111111111111 | 1 | 1 | 0 | 1 | 1 | 1 | 0000000000000000 |
+| 0000000000000000 | 1111111111111111 | 0 | 0 | 1 | 1 | 1 | 0 | 1111111111111111 |
+| 0000000000000000 | 1111111111111111 | 1 | 1 | 0 | 0 | 1 | 0 | 1111111111111110 |
+| 0000000000000000 | 1111111111111111 | 0 | 0 | 0 | 0 | 1 | 0 | 1111111111111111 |
+| 0000000000000000 | 1111111111111111 | 0 | 1 | 0 | 0 | 1 | 1 | 0000000000000001 |
+| 0000000000000000 | 1111111111111111 | 0 | 0 | 0 | 1 | 1 | 1 | 1111111111111111 |
+| 0000000000000000 | 1111111111111111 | 0 | 0 | 0 | 0 | 0 | 0 | 0000000000000000 |
+| 0000000000000000 | 1111111111111111 | 0 | 1 | 0 | 1 | 0 | 1 | 1111111111111111 |
+| 0101101110100000 | 0001111011010010 | 1 | 0 | 1 | 0 | 1 | 0 | 0000000000000000 |
+| 0101101110100000 | 0001111011010010 | 1 | 1 | 1 | 1 | 1 | 1 | 0000000000000001 |
+| 0101101110100000 | 0001111011010010 | 1 | 1 | 1 | 0 | 1 | 0 | 1111111111111111 |
+| 0101101110100000 | 0001111011010010 | 0 | 0 | 1 | 1 | 0 | 0 | 0101101110100000 |
+| 0101101110100000 | 0001111011010010 | 1 | 1 | 0 | 0 | 0 | 0 | 0001111011010010 |
+| 0101101110100000 | 0001111011010010 | 0 | 0 | 1 | 1 | 0 | 1 | 1010010001011111 |
+| 0101101110100000 | 0001111011010010 | 1 | 1 | 0 | 0 | 0 | 1 | 1110000100101101 |
+| 0101101110100000 | 0001111011010010 | 0 | 0 | 1 | 1 | 1 | 1 | 1010010001100000 |
+| 0101101110100000 | 0001111011010010 | 1 | 1 | 0 | 0 | 1 | 1 | 1110000100101110 |
+| 0101101110100000 | 0001111011010010 | 0 | 1 | 1 | 1 | 1 | 1 | 0101101110100001 |
+| 0101101110100000 | 0001111011010010 | 1 | 1 | 0 | 1 | 1 | 1 | 0001111011010011 |
+| 0101101110100000 | 0001111011010010 | 0 | 0 | 1 | 1 | 1 | 0 | 0101101110011111 |
+| 0101101110100000 | 0001111011010010 | 1 | 1 | 0 | 0 | 1 | 0 | 0001111011010001 |
+| 0101101110100000 | 0001111011010010 | 0 | 0 | 0 | 0 | 1 | 0 | 0111101001110010 |
+| 0101101110100000 | 0001111011010010 | 0 | 1 | 0 | 0 | 1 | 1 | 0011110011001110 |
+| 0101101110100000 | 0001111011010010 | 0 | 0 | 0 | 1 | 1 | 1 | 1100001100110010 |
+| 0101101110100000 | 0001111011010010 | 0 | 0 | 0 | 0 | 0 | 0 | 0001101010000000 |
+| 0101101110100000 | 0001111011010010 | 0 | 1 | 0 | 1 | 0 | 1 | 0101111111110010 |
diff --git a/02/ALU-nostat.tst b/2/ALU-basic.tst
similarity index 68%
rename from 02/ALU-nostat.tst
rename to 2/ALU-basic.tst
index fa3e448..a24f094 100644
--- a/02/ALU-nostat.tst
+++ b/2/ALU-basic.tst
@@ -1,353 +1,343 @@
-// This file is part of the materials accompanying the book
-// "The Elements of Computing Systems" by Nisan and Schocken,
-// MIT Press. Book site: www.idc.ac.il/tecs
-// File name: projects/02/ALU-nostat.tst
-
-// ALU-nostat.tst provides a partial test of the ALU chip.
-// It IS NOT a replacement for ALU.tst.
-
-// ALU-nostat.tst tests only the computation part of the ALU.
-// The 'zr' and 'ng' status outputs are ignored.
-
-// This test lets you concentrate on getting the ALU computation right without the
-// additional task of handling the status outputs.
-
-// Once your ALU passes ALU-nostat.tst you need to test it with ALU.tst.
-// This way, any comparison failures during ALU.tst will be caused by errors in
-// the handling of the 'zr' and 'ng' status outputs.
-
-load ALU.hdl,
-output-file ALU-nostat.out,
-compare-to ALU-nostat.cmp,
-output-list x%B1.16.1 y%B1.16.1 zx%B1.1.1 nx%B1.1.1 zy%B1.1.1
- ny%B1.1.1 f%B1.1.1 no%B1.1.1 out%B1.16.1;
-
-set x %B0000000000000000,
-set y %B1111111111111111,
-
-set zx 1,
-set nx 0,
-set zy 1,
-set ny 0,
-set f 1,
-set no 0,
-eval,
-output;
-
-set zx 1,
-set nx 1,
-set zy 1,
-set ny 1,
-set f 1,
-set no 1,
-eval,
-output;
-
-set zx 1,
-set nx 1,
-set zy 1,
-set ny 0,
-set f 1,
-set no 0,
-eval,
-output;
-
-set zx 0,
-set nx 0,
-set zy 1,
-set ny 1,
-set f 0,
-set no 0,
-eval,
-output;
-
-set zx 1,
-set nx 1,
-set zy 0,
-set ny 0,
-set f 0,
-set no 0,
-eval,
-output;
-
-set zx 0,
-set nx 0,
-set zy 1,
-set ny 1,
-set f 0,
-set no 1,
-eval,
-output;
-
-set zx 1,
-set nx 1,
-set zy 0,
-set ny 0,
-set f 0,
-set no 1,
-eval,
-output;
-
-set zx 0,
-set nx 0,
-set zy 1,
-set ny 1,
-set f 1,
-set no 1,
-eval,
-output;
-
-set zx 1,
-set nx 1,
-set zy 0,
-set ny 0,
-set f 1,
-set no 1,
-eval,
-output;
-
-set zx 0,
-set nx 1,
-set zy 1,
-set ny 1,
-set f 1,
-set no 1,
-eval,
-output;
-
-set zx 1,
-set nx 1,
-set zy 0,
-set ny 1,
-set f 1,
-set no 1,
-eval,
-output;
-
-set zx 0,
-set nx 0,
-set zy 1,
-set ny 1,
-set f 1,
-set no 0,
-eval,
-output;
-
-set zx 1,
-set nx 1,
-set zy 0,
-set ny 0,
-set f 1,
-set no 0,
-eval,
-output;
-
-set zx 0,
-set nx 0,
-set zy 0,
-set ny 0,
-set f 1,
-set no 0,
-eval,
-output;
-
-set zx 0,
-set nx 1,
-set zy 0,
-set ny 0,
-set f 1,
-set no 1,
-eval,
-output;
-
-set zx 0,
-set nx 0,
-set zy 0,
-set ny 1,
-set f 1,
-set no 1,
-eval,
-output;
-
-set zx 0,
-set nx 0,
-set zy 0,
-set ny 0,
-set f 0,
-set no 0,
-eval,
-output;
-
-set zx 0,
-set nx 1,
-set zy 0,
-set ny 1,
-set f 0,
-set no 1,
-eval,
-output;
-
-set x %B101101110100000,
-set y %B001111011010010,
-
-set zx 1,
-set nx 0,
-set zy 1,
-set ny 0,
-set f 1,
-set no 0,
-eval,
-output;
-
-set zx 1,
-set nx 1,
-set zy 1,
-set ny 1,
-set f 1,
-set no 1,
-eval,
-output;
-
-set zx 1,
-set nx 1,
-set zy 1,
-set ny 0,
-set f 1,
-set no 0,
-eval,
-output;
-
-set zx 0,
-set nx 0,
-set zy 1,
-set ny 1,
-set f 0,
-set no 0,
-eval,
-output;
-
-set zx 1,
-set nx 1,
-set zy 0,
-set ny 0,
-set f 0,
-set no 0,
-eval,
-output;
-
-set zx 0,
-set nx 0,
-set zy 1,
-set ny 1,
-set f 0,
-set no 1,
-eval,
-output;
-
-set zx 1,
-set nx 1,
-set zy 0,
-set ny 0,
-set f 0,
-set no 1,
-eval,
-output;
-
-set zx 0,
-set nx 0,
-set zy 1,
-set ny 1,
-set f 1,
-set no 1,
-eval,
-output;
-
-set zx 1,
-set nx 1,
-set zy 0,
-set ny 0,
-set f 1,
-set no 1,
-eval,
-output;
-
-set zx 0,
-set nx 1,
-set zy 1,
-set ny 1,
-set f 1,
-set no 1,
-eval,
-output;
-
-set zx 1,
-set nx 1,
-set zy 0,
-set ny 1,
-set f 1,
-set no 1,
-eval,
-output;
-
-set zx 0,
-set nx 0,
-set zy 1,
-set ny 1,
-set f 1,
-set no 0,
-eval,
-output;
-
-set zx 1,
-set nx 1,
-set zy 0,
-set ny 0,
-set f 1,
-set no 0,
-eval,
-output;
-
-set zx 0,
-set nx 0,
-set zy 0,
-set ny 0,
-set f 1,
-set no 0,
-eval,
-output;
-
-set zx 0,
-set nx 1,
-set zy 0,
-set ny 0,
-set f 1,
-set no 1,
-eval,
-output;
-
-set zx 0,
-set nx 0,
-set zy 0,
-set ny 1,
-set f 1,
-set no 1,
-eval,
-output;
-
-set zx 0,
-set nx 0,
-set zy 0,
-set ny 0,
-set f 0,
-set no 0,
-eval,
-output;
-
-set zx 0,
-set nx 1,
-set zy 0,
-set ny 1,
-set f 0,
-set no 1,
-eval,
-output;
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+// Tests the basic version of the ALU chip.
+// DOES NOT replace the final test provided by ALU.tst.
+// Specifically: Tests the ALU logic that computes the 'out' output;
+// The 'zr' and 'ng' output bits are ignored.
+
+load ALU.hdl,
+output-file ALU-basic.out,
+compare-to ALU-basic.cmp,
+output-list x%B1.16.1 y%B1.16.1 zx nx zy ny f no out%B1.16.1;
+
+set x %B0000000000000000,
+set y %B1111111111111111,
+
+set zx 1,
+set nx 0,
+set zy 1,
+set ny 0,
+set f 1,
+set no 0,
+eval,
+output;
+
+set zx 1,
+set nx 1,
+set zy 1,
+set ny 1,
+set f 1,
+set no 1,
+eval,
+output;
+
+set zx 1,
+set nx 1,
+set zy 1,
+set ny 0,
+set f 1,
+set no 0,
+eval,
+output;
+
+set zx 0,
+set nx 0,
+set zy 1,
+set ny 1,
+set f 0,
+set no 0,
+eval,
+output;
+
+set zx 1,
+set nx 1,
+set zy 0,
+set ny 0,
+set f 0,
+set no 0,
+eval,
+output;
+
+set zx 0,
+set nx 0,
+set zy 1,
+set ny 1,
+set f 0,
+set no 1,
+eval,
+output;
+
+set zx 1,
+set nx 1,
+set zy 0,
+set ny 0,
+set f 0,
+set no 1,
+eval,
+output;
+
+set zx 0,
+set nx 0,
+set zy 1,
+set ny 1,
+set f 1,
+set no 1,
+eval,
+output;
+
+set zx 1,
+set nx 1,
+set zy 0,
+set ny 0,
+set f 1,
+set no 1,
+eval,
+output;
+
+set zx 0,
+set nx 1,
+set zy 1,
+set ny 1,
+set f 1,
+set no 1,
+eval,
+output;
+
+set zx 1,
+set nx 1,
+set zy 0,
+set ny 1,
+set f 1,
+set no 1,
+eval,
+output;
+
+set zx 0,
+set nx 0,
+set zy 1,
+set ny 1,
+set f 1,
+set no 0,
+eval,
+output;
+
+set zx 1,
+set nx 1,
+set zy 0,
+set ny 0,
+set f 1,
+set no 0,
+eval,
+output;
+
+set zx 0,
+set nx 0,
+set zy 0,
+set ny 0,
+set f 1,
+set no 0,
+eval,
+output;
+
+set zx 0,
+set nx 1,
+set zy 0,
+set ny 0,
+set f 1,
+set no 1,
+eval,
+output;
+
+set zx 0,
+set nx 0,
+set zy 0,
+set ny 1,
+set f 1,
+set no 1,
+eval,
+output;
+
+set zx 0,
+set nx 0,
+set zy 0,
+set ny 0,
+set f 0,
+set no 0,
+eval,
+output;
+
+set zx 0,
+set nx 1,
+set zy 0,
+set ny 1,
+set f 0,
+set no 1,
+eval,
+output;
+
+set x %B101101110100000,
+set y %B001111011010010,
+
+set zx 1,
+set nx 0,
+set zy 1,
+set ny 0,
+set f 1,
+set no 0,
+eval,
+output;
+
+set zx 1,
+set nx 1,
+set zy 1,
+set ny 1,
+set f 1,
+set no 1,
+eval,
+output;
+
+set zx 1,
+set nx 1,
+set zy 1,
+set ny 0,
+set f 1,
+set no 0,
+eval,
+output;
+
+set zx 0,
+set nx 0,
+set zy 1,
+set ny 1,
+set f 0,
+set no 0,
+eval,
+output;
+
+set zx 1,
+set nx 1,
+set zy 0,
+set ny 0,
+set f 0,
+set no 0,
+eval,
+output;
+
+set zx 0,
+set nx 0,
+set zy 1,
+set ny 1,
+set f 0,
+set no 1,
+eval,
+output;
+
+set zx 1,
+set nx 1,
+set zy 0,
+set ny 0,
+set f 0,
+set no 1,
+eval,
+output;
+
+set zx 0,
+set nx 0,
+set zy 1,
+set ny 1,
+set f 1,
+set no 1,
+eval,
+output;
+
+set zx 1,
+set nx 1,
+set zy 0,
+set ny 0,
+set f 1,
+set no 1,
+eval,
+output;
+
+set zx 0,
+set nx 1,
+set zy 1,
+set ny 1,
+set f 1,
+set no 1,
+eval,
+output;
+
+set zx 1,
+set nx 1,
+set zy 0,
+set ny 1,
+set f 1,
+set no 1,
+eval,
+output;
+
+set zx 0,
+set nx 0,
+set zy 1,
+set ny 1,
+set f 1,
+set no 0,
+eval,
+output;
+
+set zx 1,
+set nx 1,
+set zy 0,
+set ny 0,
+set f 1,
+set no 0,
+eval,
+output;
+
+set zx 0,
+set nx 0,
+set zy 0,
+set ny 0,
+set f 1,
+set no 0,
+eval,
+output;
+
+set zx 0,
+set nx 1,
+set zy 0,
+set ny 0,
+set f 1,
+set no 1,
+eval,
+output;
+
+set zx 0,
+set nx 0,
+set zy 0,
+set ny 1,
+set f 1,
+set no 1,
+eval,
+output;
+
+set zx 0,
+set nx 0,
+set zy 0,
+set ny 0,
+set f 0,
+set no 0,
+eval,
+output;
+
+set zx 0,
+set nx 1,
+set zy 0,
+set ny 1,
+set f 0,
+set no 1,
+eval,
+output;
diff --git a/02/ALU.cmp b/2/ALU.cmp
similarity index 98%
rename from 02/ALU.cmp
rename to 2/ALU.cmp
index 2ec3a55..2424a73 100644
--- a/02/ALU.cmp
+++ b/2/ALU.cmp
@@ -1,37 +1,37 @@
-| x | y |zx |nx |zy |ny | f |no | out |zr |ng |
-| 0000000000000000 | 1111111111111111 | 1 | 0 | 1 | 0 | 1 | 0 | 0000000000000000 | 1 | 0 |
-| 0000000000000000 | 1111111111111111 | 1 | 1 | 1 | 1 | 1 | 1 | 0000000000000001 | 0 | 0 |
-| 0000000000000000 | 1111111111111111 | 1 | 1 | 1 | 0 | 1 | 0 | 1111111111111111 | 0 | 1 |
-| 0000000000000000 | 1111111111111111 | 0 | 0 | 1 | 1 | 0 | 0 | 0000000000000000 | 1 | 0 |
-| 0000000000000000 | 1111111111111111 | 1 | 1 | 0 | 0 | 0 | 0 | 1111111111111111 | 0 | 1 |
-| 0000000000000000 | 1111111111111111 | 0 | 0 | 1 | 1 | 0 | 1 | 1111111111111111 | 0 | 1 |
-| 0000000000000000 | 1111111111111111 | 1 | 1 | 0 | 0 | 0 | 1 | 0000000000000000 | 1 | 0 |
-| 0000000000000000 | 1111111111111111 | 0 | 0 | 1 | 1 | 1 | 1 | 0000000000000000 | 1 | 0 |
-| 0000000000000000 | 1111111111111111 | 1 | 1 | 0 | 0 | 1 | 1 | 0000000000000001 | 0 | 0 |
-| 0000000000000000 | 1111111111111111 | 0 | 1 | 1 | 1 | 1 | 1 | 0000000000000001 | 0 | 0 |
-| 0000000000000000 | 1111111111111111 | 1 | 1 | 0 | 1 | 1 | 1 | 0000000000000000 | 1 | 0 |
-| 0000000000000000 | 1111111111111111 | 0 | 0 | 1 | 1 | 1 | 0 | 1111111111111111 | 0 | 1 |
-| 0000000000000000 | 1111111111111111 | 1 | 1 | 0 | 0 | 1 | 0 | 1111111111111110 | 0 | 1 |
-| 0000000000000000 | 1111111111111111 | 0 | 0 | 0 | 0 | 1 | 0 | 1111111111111111 | 0 | 1 |
-| 0000000000000000 | 1111111111111111 | 0 | 1 | 0 | 0 | 1 | 1 | 0000000000000001 | 0 | 0 |
-| 0000000000000000 | 1111111111111111 | 0 | 0 | 0 | 1 | 1 | 1 | 1111111111111111 | 0 | 1 |
-| 0000000000000000 | 1111111111111111 | 0 | 0 | 0 | 0 | 0 | 0 | 0000000000000000 | 1 | 0 |
-| 0000000000000000 | 1111111111111111 | 0 | 1 | 0 | 1 | 0 | 1 | 1111111111111111 | 0 | 1 |
-| 0000000000010001 | 0000000000000011 | 1 | 0 | 1 | 0 | 1 | 0 | 0000000000000000 | 1 | 0 |
-| 0000000000010001 | 0000000000000011 | 1 | 1 | 1 | 1 | 1 | 1 | 0000000000000001 | 0 | 0 |
-| 0000000000010001 | 0000000000000011 | 1 | 1 | 1 | 0 | 1 | 0 | 1111111111111111 | 0 | 1 |
-| 0000000000010001 | 0000000000000011 | 0 | 0 | 1 | 1 | 0 | 0 | 0000000000010001 | 0 | 0 |
-| 0000000000010001 | 0000000000000011 | 1 | 1 | 0 | 0 | 0 | 0 | 0000000000000011 | 0 | 0 |
-| 0000000000010001 | 0000000000000011 | 0 | 0 | 1 | 1 | 0 | 1 | 1111111111101110 | 0 | 1 |
-| 0000000000010001 | 0000000000000011 | 1 | 1 | 0 | 0 | 0 | 1 | 1111111111111100 | 0 | 1 |
-| 0000000000010001 | 0000000000000011 | 0 | 0 | 1 | 1 | 1 | 1 | 1111111111101111 | 0 | 1 |
-| 0000000000010001 | 0000000000000011 | 1 | 1 | 0 | 0 | 1 | 1 | 1111111111111101 | 0 | 1 |
-| 0000000000010001 | 0000000000000011 | 0 | 1 | 1 | 1 | 1 | 1 | 0000000000010010 | 0 | 0 |
-| 0000000000010001 | 0000000000000011 | 1 | 1 | 0 | 1 | 1 | 1 | 0000000000000100 | 0 | 0 |
-| 0000000000010001 | 0000000000000011 | 0 | 0 | 1 | 1 | 1 | 0 | 0000000000010000 | 0 | 0 |
-| 0000000000010001 | 0000000000000011 | 1 | 1 | 0 | 0 | 1 | 0 | 0000000000000010 | 0 | 0 |
-| 0000000000010001 | 0000000000000011 | 0 | 0 | 0 | 0 | 1 | 0 | 0000000000010100 | 0 | 0 |
-| 0000000000010001 | 0000000000000011 | 0 | 1 | 0 | 0 | 1 | 1 | 0000000000001110 | 0 | 0 |
-| 0000000000010001 | 0000000000000011 | 0 | 0 | 0 | 1 | 1 | 1 | 1111111111110010 | 0 | 1 |
-| 0000000000010001 | 0000000000000011 | 0 | 0 | 0 | 0 | 0 | 0 | 0000000000000001 | 0 | 0 |
-| 0000000000010001 | 0000000000000011 | 0 | 1 | 0 | 1 | 0 | 1 | 0000000000010011 | 0 | 0 |
+| x | y |zx |nx |zy |ny | f |no | out |zr |ng |
+| 0000000000000000 | 1111111111111111 | 1 | 0 | 1 | 0 | 1 | 0 | 0000000000000000 | 1 | 0 |
+| 0000000000000000 | 1111111111111111 | 1 | 1 | 1 | 1 | 1 | 1 | 0000000000000001 | 0 | 0 |
+| 0000000000000000 | 1111111111111111 | 1 | 1 | 1 | 0 | 1 | 0 | 1111111111111111 | 0 | 1 |
+| 0000000000000000 | 1111111111111111 | 0 | 0 | 1 | 1 | 0 | 0 | 0000000000000000 | 1 | 0 |
+| 0000000000000000 | 1111111111111111 | 1 | 1 | 0 | 0 | 0 | 0 | 1111111111111111 | 0 | 1 |
+| 0000000000000000 | 1111111111111111 | 0 | 0 | 1 | 1 | 0 | 1 | 1111111111111111 | 0 | 1 |
+| 0000000000000000 | 1111111111111111 | 1 | 1 | 0 | 0 | 0 | 1 | 0000000000000000 | 1 | 0 |
+| 0000000000000000 | 1111111111111111 | 0 | 0 | 1 | 1 | 1 | 1 | 0000000000000000 | 1 | 0 |
+| 0000000000000000 | 1111111111111111 | 1 | 1 | 0 | 0 | 1 | 1 | 0000000000000001 | 0 | 0 |
+| 0000000000000000 | 1111111111111111 | 0 | 1 | 1 | 1 | 1 | 1 | 0000000000000001 | 0 | 0 |
+| 0000000000000000 | 1111111111111111 | 1 | 1 | 0 | 1 | 1 | 1 | 0000000000000000 | 1 | 0 |
+| 0000000000000000 | 1111111111111111 | 0 | 0 | 1 | 1 | 1 | 0 | 1111111111111111 | 0 | 1 |
+| 0000000000000000 | 1111111111111111 | 1 | 1 | 0 | 0 | 1 | 0 | 1111111111111110 | 0 | 1 |
+| 0000000000000000 | 1111111111111111 | 0 | 0 | 0 | 0 | 1 | 0 | 1111111111111111 | 0 | 1 |
+| 0000000000000000 | 1111111111111111 | 0 | 1 | 0 | 0 | 1 | 1 | 0000000000000001 | 0 | 0 |
+| 0000000000000000 | 1111111111111111 | 0 | 0 | 0 | 1 | 1 | 1 | 1111111111111111 | 0 | 1 |
+| 0000000000000000 | 1111111111111111 | 0 | 0 | 0 | 0 | 0 | 0 | 0000000000000000 | 1 | 0 |
+| 0000000000000000 | 1111111111111111 | 0 | 1 | 0 | 1 | 0 | 1 | 1111111111111111 | 0 | 1 |
+| 0000000000010001 | 0000000000000011 | 1 | 0 | 1 | 0 | 1 | 0 | 0000000000000000 | 1 | 0 |
+| 0000000000010001 | 0000000000000011 | 1 | 1 | 1 | 1 | 1 | 1 | 0000000000000001 | 0 | 0 |
+| 0000000000010001 | 0000000000000011 | 1 | 1 | 1 | 0 | 1 | 0 | 1111111111111111 | 0 | 1 |
+| 0000000000010001 | 0000000000000011 | 0 | 0 | 1 | 1 | 0 | 0 | 0000000000010001 | 0 | 0 |
+| 0000000000010001 | 0000000000000011 | 1 | 1 | 0 | 0 | 0 | 0 | 0000000000000011 | 0 | 0 |
+| 0000000000010001 | 0000000000000011 | 0 | 0 | 1 | 1 | 0 | 1 | 1111111111101110 | 0 | 1 |
+| 0000000000010001 | 0000000000000011 | 1 | 1 | 0 | 0 | 0 | 1 | 1111111111111100 | 0 | 1 |
+| 0000000000010001 | 0000000000000011 | 0 | 0 | 1 | 1 | 1 | 1 | 1111111111101111 | 0 | 1 |
+| 0000000000010001 | 0000000000000011 | 1 | 1 | 0 | 0 | 1 | 1 | 1111111111111101 | 0 | 1 |
+| 0000000000010001 | 0000000000000011 | 0 | 1 | 1 | 1 | 1 | 1 | 0000000000010010 | 0 | 0 |
+| 0000000000010001 | 0000000000000011 | 1 | 1 | 0 | 1 | 1 | 1 | 0000000000000100 | 0 | 0 |
+| 0000000000010001 | 0000000000000011 | 0 | 0 | 1 | 1 | 1 | 0 | 0000000000010000 | 0 | 0 |
+| 0000000000010001 | 0000000000000011 | 1 | 1 | 0 | 0 | 1 | 0 | 0000000000000010 | 0 | 0 |
+| 0000000000010001 | 0000000000000011 | 0 | 0 | 0 | 0 | 1 | 0 | 0000000000010100 | 0 | 0 |
+| 0000000000010001 | 0000000000000011 | 0 | 1 | 0 | 0 | 1 | 1 | 0000000000001110 | 0 | 0 |
+| 0000000000010001 | 0000000000000011 | 0 | 0 | 0 | 1 | 1 | 1 | 1111111111110010 | 0 | 1 |
+| 0000000000010001 | 0000000000000011 | 0 | 0 | 0 | 0 | 0 | 0 | 0000000000000001 | 0 | 0 |
+| 0000000000010001 | 0000000000000011 | 0 | 1 | 0 | 1 | 0 | 1 | 0000000000010011 | 0 | 0 |
diff --git a/2/ALU.hdl b/2/ALU.hdl
new file mode 100644
index 0000000..0a3d53c
--- /dev/null
+++ b/2/ALU.hdl
@@ -0,0 +1,44 @@
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+/**
+ * ALU (Arithmetic Logic Unit):
+ * Computes out = one of the following functions:
+ * 0, 1, -1,
+ * x, y, !x, !y, -x, -y,
+ * x + 1, y + 1, x - 1, y - 1,
+ * x + y, x - y, y - x,
+ * x & y, x | y
+ * on the 16-bit inputs x, y,
+ * according to the input bits zx, nx, zy, ny, f, no.
+ * In addition, computes the two output bits:
+ * if (out == 0) zr = 1, else zr = 0
+ * if (out < 0) ng = 1, else ng = 0
+ */
+// Implementation: Manipulates the x and y inputs
+// and operates on the resulting values, as follows:
+// if (zx == 1) sets x = 0 // 16-bit constant
+// if (nx == 1) sets x = !x // bitwise not
+// if (zy == 1) sets y = 0 // 16-bit constant
+// if (ny == 1) sets y = !y // bitwise not
+// if (f == 1) sets out = x + y // integer 2's complement addition
+// if (f == 0) sets out = x & y // bitwise and
+// if (no == 1) sets out = !out // bitwise not
+
+CHIP ALU {
+ IN
+ x[16], y[16], // 16-bit inputs
+ zx, // zero the x input?
+ nx, // negate the x input?
+ zy, // zero the y input?
+ ny, // negate the y input?
+ f, // compute (out = x + y) or (out = x & y)?
+ no; // negate the out output?
+ OUT
+ out[16], // 16-bit output
+ zr, // if (out == 0) equals 1, else 0
+ ng; // if (out < 0) equals 1, else 0
+
+ PARTS:
+ //// Replace this comment with your code.
+}
\ No newline at end of file
diff --git a/02/ALU.tst b/2/ALU.tst
similarity index 86%
rename from 02/ALU.tst
rename to 2/ALU.tst
index 9e665b0..51f7f27 100644
--- a/02/ALU.tst
+++ b/2/ALU.tst
@@ -1,377 +1,374 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/02/ALU.tst
-
-load ALU.hdl,
-output-file ALU.out,
-compare-to ALU.cmp,
-output-list x%B1.16.1 y%B1.16.1 zx%B1.1.1 nx%B1.1.1 zy%B1.1.1
- ny%B1.1.1 f%B1.1.1 no%B1.1.1 out%B1.16.1 zr%B1.1.1
- ng%B1.1.1;
-
-set x %B0000000000000000, // x = 0
-set y %B1111111111111111; // y = -1
-
-// Compute 0
-set zx 1,
-set nx 0,
-set zy 1,
-set ny 0,
-set f 1,
-set no 0,
-eval,
-output;
-
-// Compute 1
-set zx 1,
-set nx 1,
-set zy 1,
-set ny 1,
-set f 1,
-set no 1,
-eval,
-output;
-
-// Compute -1
-set zx 1,
-set nx 1,
-set zy 1,
-set ny 0,
-set f 1,
-set no 0,
-eval,
-output;
-
-// Compute x
-set zx 0,
-set nx 0,
-set zy 1,
-set ny 1,
-set f 0,
-set no 0,
-eval,
-output;
-
-// Compute y
-set zx 1,
-set nx 1,
-set zy 0,
-set ny 0,
-set f 0,
-set no 0,
-eval,
-output;
-
-// Compute !x
-set zx 0,
-set nx 0,
-set zy 1,
-set ny 1,
-set f 0,
-set no 1,
-eval,
-output;
-
-// Compute !y
-set zx 1,
-set nx 1,
-set zy 0,
-set ny 0,
-set f 0,
-set no 1,
-eval,
-output;
-
-// Compute -x
-set zx 0,
-set nx 0,
-set zy 1,
-set ny 1,
-set f 1,
-set no 1,
-eval,
-output;
-
-// Compute -y
-set zx 1,
-set nx 1,
-set zy 0,
-set ny 0,
-set f 1,
-set no 1,
-eval,
-output;
-
-// Compute x + 1
-set zx 0,
-set nx 1,
-set zy 1,
-set ny 1,
-set f 1,
-set no 1,
-eval,
-output;
-
-// Compute y + 1
-set zx 1,
-set nx 1,
-set zy 0,
-set ny 1,
-set f 1,
-set no 1,
-eval,
-output;
-
-// Compute x - 1
-set zx 0,
-set nx 0,
-set zy 1,
-set ny 1,
-set f 1,
-set no 0,
-eval,
-output;
-
-// Compute y - 1
-set zx 1,
-set nx 1,
-set zy 0,
-set ny 0,
-set f 1,
-set no 0,
-eval,
-output;
-
-// Compute x + y
-set zx 0,
-set nx 0,
-set zy 0,
-set ny 0,
-set f 1,
-set no 0,
-eval,
-output;
-
-// Compute x - y
-set zx 0,
-set nx 1,
-set zy 0,
-set ny 0,
-set f 1,
-set no 1,
-eval,
-output;
-
-// Compute y - x
-set zx 0,
-set nx 0,
-set zy 0,
-set ny 1,
-set f 1,
-set no 1,
-eval,
-output;
-
-// Compute x & y
-set zx 0,
-set nx 0,
-set zy 0,
-set ny 0,
-set f 0,
-set no 0,
-eval,
-output;
-
-// Compute x | y
-set zx 0,
-set nx 1,
-set zy 0,
-set ny 1,
-set f 0,
-set no 1,
-eval,
-output;
-
-set x %B000000000010001, // x = 17
-set y %B000000000000011; // y = 3
-
-// Compute 0
-set zx 1,
-set nx 0,
-set zy 1,
-set ny 0,
-set f 1,
-set no 0,
-eval,
-output;
-
-// Compute 1
-set zx 1,
-set nx 1,
-set zy 1,
-set ny 1,
-set f 1,
-set no 1,
-eval,
-output;
-
-// Compute -1
-set zx 1,
-set nx 1,
-set zy 1,
-set ny 0,
-set f 1,
-set no 0,
-eval,
-output;
-
-// Compute x
-set zx 0,
-set nx 0,
-set zy 1,
-set ny 1,
-set f 0,
-set no 0,
-eval,
-output;
-
-// Compute y
-set zx 1,
-set nx 1,
-set zy 0,
-set ny 0,
-set f 0,
-set no 0,
-eval,
-output;
-
-// Compute !x
-set zx 0,
-set nx 0,
-set zy 1,
-set ny 1,
-set f 0,
-set no 1,
-eval,
-output;
-
-// Compute !y
-set zx 1,
-set nx 1,
-set zy 0,
-set ny 0,
-set f 0,
-set no 1,
-eval,
-output;
-
-// Compute -x
-set zx 0,
-set nx 0,
-set zy 1,
-set ny 1,
-set f 1,
-set no 1,
-eval,
-output;
-
-// Compute -y
-set zx 1,
-set nx 1,
-set zy 0,
-set ny 0,
-set f 1,
-set no 1,
-eval,
-output;
-
-// Compute x + 1
-set zx 0,
-set nx 1,
-set zy 1,
-set ny 1,
-set f 1,
-set no 1,
-eval,
-output;
-
-// Compute y + 1
-set zx 1,
-set nx 1,
-set zy 0,
-set ny 1,
-set f 1,
-set no 1,
-eval,
-output;
-
-// Compute x - 1
-set zx 0,
-set nx 0,
-set zy 1,
-set ny 1,
-set f 1,
-set no 0,
-eval,
-output;
-
-// Compute y - 1
-set zx 1,
-set nx 1,
-set zy 0,
-set ny 0,
-set f 1,
-set no 0,
-eval,
-output;
-
-// Compute x + y
-set zx 0,
-set nx 0,
-set zy 0,
-set ny 0,
-set f 1,
-set no 0,
-eval,
-output;
-
-// Compute x - y
-set zx 0,
-set nx 1,
-set zy 0,
-set ny 0,
-set f 1,
-set no 1,
-eval,
-output;
-
-// Compute y - x
-set zx 0,
-set nx 0,
-set zy 0,
-set ny 1,
-set f 1,
-set no 1,
-eval,
-output;
-
-// Compute x & y
-set zx 0,
-set nx 0,
-set zy 0,
-set ny 0,
-set f 0,
-set no 0,
-eval,
-output;
-
-// Compute x | y
-set zx 0,
-set nx 1,
-set zy 0,
-set ny 1,
-set f 0,
-set no 1,
-eval,
-output;
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+load ALU.hdl,
+output-file ALU.out,
+compare-to ALU.cmp,
+output-list x%B1.16.1 y%B1.16.1 zx nx zy ny f no out%B1.16.1 zr ng;
+
+set x %B0000000000000000, // x = 0
+set y %B1111111111111111; // y = -1
+
+// Compute 0
+set zx 1,
+set nx 0,
+set zy 1,
+set ny 0,
+set f 1,
+set no 0,
+eval,
+output;
+
+// Compute 1
+set zx 1,
+set nx 1,
+set zy 1,
+set ny 1,
+set f 1,
+set no 1,
+eval,
+output;
+
+// Compute -1
+set zx 1,
+set nx 1,
+set zy 1,
+set ny 0,
+set f 1,
+set no 0,
+eval,
+output;
+
+// Compute x
+set zx 0,
+set nx 0,
+set zy 1,
+set ny 1,
+set f 0,
+set no 0,
+eval,
+output;
+
+// Compute y
+set zx 1,
+set nx 1,
+set zy 0,
+set ny 0,
+set f 0,
+set no 0,
+eval,
+output;
+
+// Compute !x
+set zx 0,
+set nx 0,
+set zy 1,
+set ny 1,
+set f 0,
+set no 1,
+eval,
+output;
+
+// Compute !y
+set zx 1,
+set nx 1,
+set zy 0,
+set ny 0,
+set f 0,
+set no 1,
+eval,
+output;
+
+// Compute -x
+set zx 0,
+set nx 0,
+set zy 1,
+set ny 1,
+set f 1,
+set no 1,
+eval,
+output;
+
+// Compute -y
+set zx 1,
+set nx 1,
+set zy 0,
+set ny 0,
+set f 1,
+set no 1,
+eval,
+output;
+
+// Compute x + 1
+set zx 0,
+set nx 1,
+set zy 1,
+set ny 1,
+set f 1,
+set no 1,
+eval,
+output;
+
+// Compute y + 1
+set zx 1,
+set nx 1,
+set zy 0,
+set ny 1,
+set f 1,
+set no 1,
+eval,
+output;
+
+// Compute x - 1
+set zx 0,
+set nx 0,
+set zy 1,
+set ny 1,
+set f 1,
+set no 0,
+eval,
+output;
+
+// Compute y - 1
+set zx 1,
+set nx 1,
+set zy 0,
+set ny 0,
+set f 1,
+set no 0,
+eval,
+output;
+
+// Compute x + y
+set zx 0,
+set nx 0,
+set zy 0,
+set ny 0,
+set f 1,
+set no 0,
+eval,
+output;
+
+// Compute x - y
+set zx 0,
+set nx 1,
+set zy 0,
+set ny 0,
+set f 1,
+set no 1,
+eval,
+output;
+
+// Compute y - x
+set zx 0,
+set nx 0,
+set zy 0,
+set ny 1,
+set f 1,
+set no 1,
+eval,
+output;
+
+// Compute x & y
+set zx 0,
+set nx 0,
+set zy 0,
+set ny 0,
+set f 0,
+set no 0,
+eval,
+output;
+
+// Compute x | y
+set zx 0,
+set nx 1,
+set zy 0,
+set ny 1,
+set f 0,
+set no 1,
+eval,
+output;
+
+set x %B000000000010001, // x = 17
+set y %B000000000000011; // y = 3
+
+// Compute 0
+set zx 1,
+set nx 0,
+set zy 1,
+set ny 0,
+set f 1,
+set no 0,
+eval,
+output;
+
+// Compute 1
+set zx 1,
+set nx 1,
+set zy 1,
+set ny 1,
+set f 1,
+set no 1,
+eval,
+output;
+
+// Compute -1
+set zx 1,
+set nx 1,
+set zy 1,
+set ny 0,
+set f 1,
+set no 0,
+eval,
+output;
+
+// Compute x
+set zx 0,
+set nx 0,
+set zy 1,
+set ny 1,
+set f 0,
+set no 0,
+eval,
+output;
+
+// Compute y
+set zx 1,
+set nx 1,
+set zy 0,
+set ny 0,
+set f 0,
+set no 0,
+eval,
+output;
+
+// Compute !x
+set zx 0,
+set nx 0,
+set zy 1,
+set ny 1,
+set f 0,
+set no 1,
+eval,
+output;
+
+// Compute !y
+set zx 1,
+set nx 1,
+set zy 0,
+set ny 0,
+set f 0,
+set no 1,
+eval,
+output;
+
+// Compute -x
+set zx 0,
+set nx 0,
+set zy 1,
+set ny 1,
+set f 1,
+set no 1,
+eval,
+output;
+
+// Compute -y
+set zx 1,
+set nx 1,
+set zy 0,
+set ny 0,
+set f 1,
+set no 1,
+eval,
+output;
+
+// Compute x + 1
+set zx 0,
+set nx 1,
+set zy 1,
+set ny 1,
+set f 1,
+set no 1,
+eval,
+output;
+
+// Compute y + 1
+set zx 1,
+set nx 1,
+set zy 0,
+set ny 1,
+set f 1,
+set no 1,
+eval,
+output;
+
+// Compute x - 1
+set zx 0,
+set nx 0,
+set zy 1,
+set ny 1,
+set f 1,
+set no 0,
+eval,
+output;
+
+// Compute y - 1
+set zx 1,
+set nx 1,
+set zy 0,
+set ny 0,
+set f 1,
+set no 0,
+eval,
+output;
+
+// Compute x + y
+set zx 0,
+set nx 0,
+set zy 0,
+set ny 0,
+set f 1,
+set no 0,
+eval,
+output;
+
+// Compute x - y
+set zx 0,
+set nx 1,
+set zy 0,
+set ny 0,
+set f 1,
+set no 1,
+eval,
+output;
+
+// Compute y - x
+set zx 0,
+set nx 0,
+set zy 0,
+set ny 1,
+set f 1,
+set no 1,
+eval,
+output;
+
+// Compute x & y
+set zx 0,
+set nx 0,
+set zy 0,
+set ny 0,
+set f 0,
+set no 0,
+eval,
+output;
+
+// Compute x | y
+set zx 0,
+set nx 1,
+set zy 0,
+set ny 1,
+set f 0,
+set no 1,
+eval,
+output;
diff --git a/02/Add16.cmp b/2/Add16.cmp
similarity index 98%
rename from 02/Add16.cmp
rename to 2/Add16.cmp
index 76d069c..20f9c65 100644
--- a/02/Add16.cmp
+++ b/2/Add16.cmp
@@ -1,7 +1,7 @@
-| a | b | out |
-| 0000000000000000 | 0000000000000000 | 0000000000000000 |
-| 0000000000000000 | 1111111111111111 | 1111111111111111 |
-| 1111111111111111 | 1111111111111111 | 1111111111111110 |
-| 1010101010101010 | 0101010101010101 | 1111111111111111 |
-| 0011110011000011 | 0000111111110000 | 0100110010110011 |
-| 0001001000110100 | 1001100001110110 | 1010101010101010 |
+| a | b | out |
+| 0000000000000000 | 0000000000000000 | 0000000000000000 |
+| 0000000000000000 | 1111111111111111 | 1111111111111111 |
+| 1111111111111111 | 1111111111111111 | 1111111111111110 |
+| 1010101010101010 | 0101010101010101 | 1111111111111111 |
+| 0011110011000011 | 0000111111110000 | 0100110010110011 |
+| 0001001000110100 | 1001100001110110 | 1010101010101010 |
diff --git a/02/Add16.hdl b/2/Add16.hdl
similarity index 69%
rename from 02/Add16.hdl
rename to 2/Add16.hdl
index aa7604d..a1230f2 100644
--- a/02/Add16.hdl
+++ b/2/Add16.hdl
@@ -1,17 +1,14 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/02/Adder16.hdl
-
-/**
- * Adds two 16-bit values.
- * The most significant carry bit is ignored.
- */
-
-CHIP Add16 {
- IN a[16], b[16];
- OUT out[16];
-
- PARTS:
- // Put you code here:
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+/**
+ * 16-bit adder: Adds two 16-bit two's complement values.
+ * The most significant carry bit is ignored.
+ */
+CHIP Add16 {
+ IN a[16], b[16];
+ OUT out[16];
+
+ PARTS:
+ //// Replace this comment with your code.
}
\ No newline at end of file
diff --git a/02/Add16.tst b/2/Add16.tst
similarity index 89%
rename from 02/Add16.tst
rename to 2/Add16.tst
index 85e1be1..c2c6556 100644
--- a/02/Add16.tst
+++ b/2/Add16.tst
@@ -1,39 +1,39 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/02/Add16.tst
-
-load Add16.hdl,
-output-file Add16.out,
-compare-to Add16.cmp,
-output-list a%B1.16.1 b%B1.16.1 out%B1.16.1;
-
-set a %B0000000000000000,
-set b %B0000000000000000,
-eval,
-output;
-
-set a %B0000000000000000,
-set b %B1111111111111111,
-eval,
-output;
-
-set a %B1111111111111111,
-set b %B1111111111111111,
-eval,
-output;
-
-set a %B1010101010101010,
-set b %B0101010101010101,
-eval,
-output;
-
-set a %B0011110011000011,
-set b %B0000111111110000,
-eval,
-output;
-
-set a %B0001001000110100,
-set b %B1001100001110110,
-eval,
-output;
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+// File name: projects/2/Add16.tst
+
+load Add16.hdl,
+output-file Add16.out,
+compare-to Add16.cmp,
+output-list a%B1.16.1 b%B1.16.1 out%B1.16.1;
+
+set a %B0000000000000000,
+set b %B0000000000000000,
+eval,
+output;
+
+set a %B0000000000000000,
+set b %B1111111111111111,
+eval,
+output;
+
+set a %B1111111111111111,
+set b %B1111111111111111,
+eval,
+output;
+
+set a %B1010101010101010,
+set b %B0101010101010101,
+eval,
+output;
+
+set a %B0011110011000011,
+set b %B0000111111110000,
+eval,
+output;
+
+set a %B0001001000110100,
+set b %B1001100001110110,
+eval,
+output;
diff --git a/2/FullAdder.cmp b/2/FullAdder.cmp
new file mode 100644
index 0000000..90fbc1d
--- /dev/null
+++ b/2/FullAdder.cmp
@@ -0,0 +1,9 @@
+| a | b | c |sum|carry|
+| 0 | 0 | 0 | 0 | 0 |
+| 0 | 0 | 1 | 1 | 0 |
+| 0 | 1 | 0 | 1 | 0 |
+| 0 | 1 | 1 | 0 | 1 |
+| 1 | 0 | 0 | 1 | 0 |
+| 1 | 0 | 1 | 0 | 1 |
+| 1 | 1 | 0 | 0 | 1 |
+| 1 | 1 | 1 | 1 | 1 |
diff --git a/02/FullAdder.hdl b/2/FullAdder.hdl
similarity index 79%
rename from 02/FullAdder.hdl
rename to 2/FullAdder.hdl
index 67559c3..1a77e60 100644
--- a/02/FullAdder.hdl
+++ b/2/FullAdder.hdl
@@ -1,17 +1,14 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/02/FullAdder.hdl
-
-/**
- * Computes the sum of three bits.
- */
-
-CHIP FullAdder {
- IN a, b, c; // 1-bit inputs
- OUT sum, // Right bit of a + b + c
- carry; // Left bit of a + b + c
-
- PARTS:
- // Put you code here:
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+/**
+ * Computes the sum of three bits.
+ */
+CHIP FullAdder {
+ IN a, b, c; // 1-bit inputs
+ OUT sum, // Right bit of a + b + c
+ carry; // Left bit of a + b + c
+
+ PARTS:
+ //// Replace this comment with your code.
}
\ No newline at end of file
diff --git a/02/FullAdder.tst b/2/FullAdder.tst
similarity index 75%
rename from 02/FullAdder.tst
rename to 2/FullAdder.tst
index 5125cee..4f60ae2 100644
--- a/02/FullAdder.tst
+++ b/2/FullAdder.tst
@@ -1,47 +1,46 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/02/FullAdder.tst
-
-load FullAdder.hdl,
-output-file FullAdder.out,
-compare-to FullAdder.cmp,
-output-list a%B3.1.3 b%B3.1.3 c%B3.1.3 sum%B3.1.3 carry%B3.1.3;
-
-set a 0,
-set b 0,
-set c 0,
-eval,
-output;
-
-set c 1,
-eval,
-output;
-
-set b 1,
-set c 0,
-eval,
-output;
-
-set c 1,
-eval,
-output;
-
-set a 1,
-set b 0,
-set c 0,
-eval,
-output;
-
-set c 1,
-eval,
-output;
-
-set b 1,
-set c 0,
-eval,
-output;
-
-set c 1,
-eval,
-output;
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+load FullAdder.hdl,
+output-file FullAdder.out,
+compare-to FullAdder.cmp,
+output-list a b c sum carry%B2.1.2;
+
+set a 0,
+set b 0,
+set c 0,
+eval,
+output;
+
+set c 1,
+eval,
+output;
+
+set b 1,
+set c 0,
+eval,
+output;
+
+set c 1,
+eval,
+output;
+
+set a 1,
+set b 0,
+set c 0,
+eval,
+output;
+
+set c 1,
+eval,
+output;
+
+set b 1,
+set c 0,
+eval,
+output;
+
+set c 1,
+eval,
+output;
diff --git a/2/HalfAdder.cmp b/2/HalfAdder.cmp
new file mode 100644
index 0000000..d081087
--- /dev/null
+++ b/2/HalfAdder.cmp
@@ -0,0 +1,5 @@
+| a | b |sum|car|
+| 0 | 0 | 0 | 0 |
+| 0 | 1 | 1 | 0 |
+| 1 | 0 | 1 | 0 |
+| 1 | 1 | 0 | 1 |
diff --git a/02/HalfAdder.hdl b/2/HalfAdder.hdl
similarity index 78%
rename from 02/HalfAdder.hdl
rename to 2/HalfAdder.hdl
index 98b281f..6283f3d 100644
--- a/02/HalfAdder.hdl
+++ b/2/HalfAdder.hdl
@@ -1,17 +1,14 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/02/HalfAdder.hdl
-
-/**
- * Computes the sum of two bits.
- */
-
-CHIP HalfAdder {
- IN a, b; // 1-bit inputs
- OUT sum, // Right bit of a + b
- carry; // Left bit of a + b
-
- PARTS:
- // Put you code here:
-}
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+/**
+ * Computes the sum of two bits.
+ */
+CHIP HalfAdder {
+ IN a, b; // 1-bit inputs
+ OUT sum, // Right bit of a + b
+ carry; // Left bit of a + b
+
+ PARTS:
+ //// Replace this comment with your code.
+}
diff --git a/02/HalfAdder.tst b/2/HalfAdder.tst
similarity index 73%
rename from 02/HalfAdder.tst
rename to 2/HalfAdder.tst
index 069b8ea..6945936 100644
--- a/02/HalfAdder.tst
+++ b/2/HalfAdder.tst
@@ -1,29 +1,28 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/02/HalfAdder.tst
-
-load HalfAdder.hdl,
-output-file HalfAdder.out,
-compare-to HalfAdder.cmp,
-output-list a%B3.1.3 b%B3.1.3 sum%B3.1.3 carry%B3.1.3;
-
-set a 0,
-set b 0,
-eval,
-output;
-
-set a 0,
-set b 1,
-eval,
-output;
-
-set a 1,
-set b 0,
-eval,
-output;
-
-set a 1,
-set b 1,
-eval,
-output;
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+load HalfAdder.hdl,
+output-file HalfAdder.out,
+compare-to HalfAdder.cmp,
+output-list a b sum carry;
+
+set a 0,
+set b 0,
+eval,
+output;
+
+set a 0,
+set b 1,
+eval,
+output;
+
+set a 1,
+set b 0,
+eval,
+output;
+
+set a 1,
+set b 1,
+eval,
+output;
diff --git a/02/Inc16.cmp b/2/Inc16.cmp
similarity index 97%
rename from 02/Inc16.cmp
rename to 2/Inc16.cmp
index 451f563..78de1fe 100644
--- a/02/Inc16.cmp
+++ b/2/Inc16.cmp
@@ -1,5 +1,5 @@
-| in | out |
-| 0000000000000000 | 0000000000000001 |
-| 1111111111111111 | 0000000000000000 |
-| 0000000000000101 | 0000000000000110 |
-| 1111111111111011 | 1111111111111100 |
+| in | out |
+| 0000000000000000 | 0000000000000001 |
+| 1111111111111111 | 0000000000000000 |
+| 0000000000000101 | 0000000000000110 |
+| 1111111111111011 | 1111111111111100 |
diff --git a/02/Inc16.hdl b/2/Inc16.hdl
similarity index 65%
rename from 02/Inc16.hdl
rename to 2/Inc16.hdl
index fb6c0dd..1239c42 100644
--- a/02/Inc16.hdl
+++ b/2/Inc16.hdl
@@ -1,17 +1,14 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/02/Inc16.hdl
-
-/**
- * 16-bit incrementer:
- * out = in + 1 (arithmetic addition)
- */
-
-CHIP Inc16 {
- IN in[16];
- OUT out[16];
-
- PARTS:
- // Put you code here:
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+/**
+ * 16-bit incrementer:
+ * out = in + 1
+ */
+CHIP Inc16 {
+ IN in[16];
+ OUT out[16];
+
+ PARTS:
+ //// Replace this comment with your code.
}
\ No newline at end of file
diff --git a/02/Inc16.tst b/2/Inc16.tst
similarity index 87%
rename from 02/Inc16.tst
rename to 2/Inc16.tst
index 8537d86..df8b92a 100644
--- a/02/Inc16.tst
+++ b/2/Inc16.tst
@@ -1,25 +1,24 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/02/Inc16.tst
-
-load Inc16.hdl,
-output-file Inc16.out,
-compare-to Inc16.cmp,
-output-list in%B1.16.1 out%B1.16.1;
-
-set in %B0000000000000000, // in = 0
-eval,
-output;
-
-set in %B1111111111111111, // in = -1
-eval,
-output;
-
-set in %B0000000000000101, // in = 5
-eval,
-output;
-
-set in %B1111111111111011, // in = -5
-eval,
-output;
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+load Inc16.hdl,
+output-file Inc16.out,
+compare-to Inc16.cmp,
+output-list in%B1.16.1 out%B1.16.1;
+
+set in %B0000000000000000, // in = 0
+eval,
+output;
+
+set in %B1111111111111111, // in = -1
+eval,
+output;
+
+set in %B0000000000000101, // in = 5
+eval,
+output;
+
+set in %B1111111111111011, // in = -5
+eval,
+output;
diff --git a/3/Bit.cmp b/3/Bit.cmp
new file mode 100644
index 0000000..ff218c3
--- /dev/null
+++ b/3/Bit.cmp
@@ -0,0 +1,215 @@
+| time |in |load|out|
+| 0+ | 0 | 0 | 0 |
+| 1 | 0 | 0 | 0 |
+| 1+ | 0 | 1 | 0 |
+| 2 | 0 | 1 | 0 |
+| 2+ | 1 | 0 | 0 |
+| 3 | 1 | 0 | 0 |
+| 3+ | 1 | 1 | 0 |
+| 4 | 1 | 1 | 1 |
+| 4+ | 0 | 0 | 1 |
+| 5 | 0 | 0 | 1 |
+| 5+ | 1 | 0 | 1 |
+| 6 | 1 | 0 | 1 |
+| 6+ | 0 | 1 | 1 |
+| 7 | 0 | 1 | 0 |
+| 7+ | 1 | 1 | 0 |
+| 8 | 1 | 1 | 1 |
+| 8+ | 0 | 0 | 1 |
+| 9 | 0 | 0 | 1 |
+| 9+ | 0 | 0 | 1 |
+| 10 | 0 | 0 | 1 |
+| 10+ | 0 | 0 | 1 |
+| 11 | 0 | 0 | 1 |
+| 11+ | 0 | 0 | 1 |
+| 12 | 0 | 0 | 1 |
+| 12+ | 0 | 0 | 1 |
+| 13 | 0 | 0 | 1 |
+| 13+ | 0 | 0 | 1 |
+| 14 | 0 | 0 | 1 |
+| 14+ | 0 | 0 | 1 |
+| 15 | 0 | 0 | 1 |
+| 15+ | 0 | 0 | 1 |
+| 16 | 0 | 0 | 1 |
+| 16+ | 0 | 0 | 1 |
+| 17 | 0 | 0 | 1 |
+| 17+ | 0 | 0 | 1 |
+| 18 | 0 | 0 | 1 |
+| 18+ | 0 | 0 | 1 |
+| 19 | 0 | 0 | 1 |
+| 19+ | 0 | 0 | 1 |
+| 20 | 0 | 0 | 1 |
+| 20+ | 0 | 0 | 1 |
+| 21 | 0 | 0 | 1 |
+| 21+ | 0 | 0 | 1 |
+| 22 | 0 | 0 | 1 |
+| 22+ | 0 | 0 | 1 |
+| 23 | 0 | 0 | 1 |
+| 23+ | 0 | 0 | 1 |
+| 24 | 0 | 0 | 1 |
+| 24+ | 0 | 0 | 1 |
+| 25 | 0 | 0 | 1 |
+| 25+ | 0 | 0 | 1 |
+| 26 | 0 | 0 | 1 |
+| 26+ | 0 | 0 | 1 |
+| 27 | 0 | 0 | 1 |
+| 27+ | 0 | 0 | 1 |
+| 28 | 0 | 0 | 1 |
+| 28+ | 0 | 0 | 1 |
+| 29 | 0 | 0 | 1 |
+| 29+ | 0 | 0 | 1 |
+| 30 | 0 | 0 | 1 |
+| 30+ | 0 | 0 | 1 |
+| 31 | 0 | 0 | 1 |
+| 31+ | 0 | 0 | 1 |
+| 32 | 0 | 0 | 1 |
+| 32+ | 0 | 0 | 1 |
+| 33 | 0 | 0 | 1 |
+| 33+ | 0 | 0 | 1 |
+| 34 | 0 | 0 | 1 |
+| 34+ | 0 | 0 | 1 |
+| 35 | 0 | 0 | 1 |
+| 35+ | 0 | 0 | 1 |
+| 36 | 0 | 0 | 1 |
+| 36+ | 0 | 0 | 1 |
+| 37 | 0 | 0 | 1 |
+| 37+ | 0 | 0 | 1 |
+| 38 | 0 | 0 | 1 |
+| 38+ | 0 | 0 | 1 |
+| 39 | 0 | 0 | 1 |
+| 39+ | 0 | 0 | 1 |
+| 40 | 0 | 0 | 1 |
+| 40+ | 0 | 0 | 1 |
+| 41 | 0 | 0 | 1 |
+| 41+ | 0 | 0 | 1 |
+| 42 | 0 | 0 | 1 |
+| 42+ | 0 | 0 | 1 |
+| 43 | 0 | 0 | 1 |
+| 43+ | 0 | 0 | 1 |
+| 44 | 0 | 0 | 1 |
+| 44+ | 0 | 0 | 1 |
+| 45 | 0 | 0 | 1 |
+| 45+ | 0 | 0 | 1 |
+| 46 | 0 | 0 | 1 |
+| 46+ | 0 | 0 | 1 |
+| 47 | 0 | 0 | 1 |
+| 47+ | 0 | 0 | 1 |
+| 48 | 0 | 0 | 1 |
+| 48+ | 0 | 0 | 1 |
+| 49 | 0 | 0 | 1 |
+| 49+ | 0 | 0 | 1 |
+| 50 | 0 | 0 | 1 |
+| 50+ | 0 | 0 | 1 |
+| 51 | 0 | 0 | 1 |
+| 51+ | 0 | 0 | 1 |
+| 52 | 0 | 0 | 1 |
+| 52+ | 0 | 0 | 1 |
+| 53 | 0 | 0 | 1 |
+| 53+ | 0 | 0 | 1 |
+| 54 | 0 | 0 | 1 |
+| 54+ | 0 | 0 | 1 |
+| 55 | 0 | 0 | 1 |
+| 55+ | 0 | 0 | 1 |
+| 56 | 0 | 0 | 1 |
+| 56+ | 0 | 0 | 1 |
+| 57 | 0 | 0 | 1 |
+| 57+ | 0 | 1 | 1 |
+| 58 | 0 | 1 | 0 |
+| 58+ | 1 | 0 | 0 |
+| 59 | 1 | 0 | 0 |
+| 59+ | 1 | 0 | 0 |
+| 60 | 1 | 0 | 0 |
+| 60+ | 1 | 0 | 0 |
+| 61 | 1 | 0 | 0 |
+| 61+ | 1 | 0 | 0 |
+| 62 | 1 | 0 | 0 |
+| 62+ | 1 | 0 | 0 |
+| 63 | 1 | 0 | 0 |
+| 63+ | 1 | 0 | 0 |
+| 64 | 1 | 0 | 0 |
+| 64+ | 1 | 0 | 0 |
+| 65 | 1 | 0 | 0 |
+| 65+ | 1 | 0 | 0 |
+| 66 | 1 | 0 | 0 |
+| 66+ | 1 | 0 | 0 |
+| 67 | 1 | 0 | 0 |
+| 67+ | 1 | 0 | 0 |
+| 68 | 1 | 0 | 0 |
+| 68+ | 1 | 0 | 0 |
+| 69 | 1 | 0 | 0 |
+| 69+ | 1 | 0 | 0 |
+| 70 | 1 | 0 | 0 |
+| 70+ | 1 | 0 | 0 |
+| 71 | 1 | 0 | 0 |
+| 71+ | 1 | 0 | 0 |
+| 72 | 1 | 0 | 0 |
+| 72+ | 1 | 0 | 0 |
+| 73 | 1 | 0 | 0 |
+| 73+ | 1 | 0 | 0 |
+| 74 | 1 | 0 | 0 |
+| 74+ | 1 | 0 | 0 |
+| 75 | 1 | 0 | 0 |
+| 75+ | 1 | 0 | 0 |
+| 76 | 1 | 0 | 0 |
+| 76+ | 1 | 0 | 0 |
+| 77 | 1 | 0 | 0 |
+| 77+ | 1 | 0 | 0 |
+| 78 | 1 | 0 | 0 |
+| 78+ | 1 | 0 | 0 |
+| 79 | 1 | 0 | 0 |
+| 79+ | 1 | 0 | 0 |
+| 80 | 1 | 0 | 0 |
+| 80+ | 1 | 0 | 0 |
+| 81 | 1 | 0 | 0 |
+| 81+ | 1 | 0 | 0 |
+| 82 | 1 | 0 | 0 |
+| 82+ | 1 | 0 | 0 |
+| 83 | 1 | 0 | 0 |
+| 83+ | 1 | 0 | 0 |
+| 84 | 1 | 0 | 0 |
+| 84+ | 1 | 0 | 0 |
+| 85 | 1 | 0 | 0 |
+| 85+ | 1 | 0 | 0 |
+| 86 | 1 | 0 | 0 |
+| 86+ | 1 | 0 | 0 |
+| 87 | 1 | 0 | 0 |
+| 87+ | 1 | 0 | 0 |
+| 88 | 1 | 0 | 0 |
+| 88+ | 1 | 0 | 0 |
+| 89 | 1 | 0 | 0 |
+| 89+ | 1 | 0 | 0 |
+| 90 | 1 | 0 | 0 |
+| 90+ | 1 | 0 | 0 |
+| 91 | 1 | 0 | 0 |
+| 91+ | 1 | 0 | 0 |
+| 92 | 1 | 0 | 0 |
+| 92+ | 1 | 0 | 0 |
+| 93 | 1 | 0 | 0 |
+| 93+ | 1 | 0 | 0 |
+| 94 | 1 | 0 | 0 |
+| 94+ | 1 | 0 | 0 |
+| 95 | 1 | 0 | 0 |
+| 95+ | 1 | 0 | 0 |
+| 96 | 1 | 0 | 0 |
+| 96+ | 1 | 0 | 0 |
+| 97 | 1 | 0 | 0 |
+| 97+ | 1 | 0 | 0 |
+| 98 | 1 | 0 | 0 |
+| 98+ | 1 | 0 | 0 |
+| 99 | 1 | 0 | 0 |
+| 99+ | 1 | 0 | 0 |
+| 100 | 1 | 0 | 0 |
+| 100+ | 1 | 0 | 0 |
+| 101 | 1 | 0 | 0 |
+| 101+ | 1 | 0 | 0 |
+| 102 | 1 | 0 | 0 |
+| 102+ | 1 | 0 | 0 |
+| 103 | 1 | 0 | 0 |
+| 103+ | 1 | 0 | 0 |
+| 104 | 1 | 0 | 0 |
+| 104+ | 1 | 0 | 0 |
+| 105 | 1 | 0 | 0 |
+| 105+ | 1 | 0 | 0 |
+| 106 | 1 | 0 | 0 |
+| 106+ | 1 | 0 | 0 |
+| 107 | 1 | 0 | 0 |
diff --git a/3/Bit.hdl b/3/Bit.hdl
new file mode 100644
index 0000000..7a1e80e
--- /dev/null
+++ b/3/Bit.hdl
@@ -0,0 +1,16 @@
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+/**
+ * 1-bit register:
+ * If load is asserted, the register's value is set to in;
+ * Otherwise, the register maintains its current value:
+ * if (load(t)) out(t+1) = in(t), else out(t+1) = out(t)
+ */
+CHIP Bit {
+ IN in, load;
+ OUT out;
+
+ PARTS:
+ //// Replace this comment with your code.
+}
diff --git a/03/a/Bit.tst b/3/Bit.tst
similarity index 85%
rename from 03/a/Bit.tst
rename to 3/Bit.tst
index c6bf523..20cdf6d 100644
--- a/03/a/Bit.tst
+++ b/3/Bit.tst
@@ -1,865 +1,864 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/03/a/Bit.tst
-
-load Bit.hdl,
-output-file Bit.out,
-compare-to Bit.cmp,
-output-list time%S1.4.1 in%B2.1.2 load%B2.1.2 out%B2.1.2;
-
-set in 0,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 0,
-set load 1,
-tick,
-output;
-
-tock,
-output;
-
-set in 1,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 1,
-set load 1,
-tick,
-output;
-
-tock,
-output;
-
-set in 0,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 1,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 0,
-set load 1,
-tick,
-output;
-
-tock,
-output;
-
-set in 1,
-set load 1,
-tick,
-output;
-
-tock,
-output;
-
-set in 0,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 0,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 0,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 0,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 0,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 0,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 0,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 0,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 0,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 0,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 0,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 0,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 0,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 0,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 0,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 0,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 0,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 0,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 0,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 0,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 0,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 0,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 0,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 0,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 0,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 0,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 0,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 0,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 0,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 0,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 0,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 0,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 0,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 0,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 0,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 0,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 0,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 0,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 0,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 0,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 0,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 0,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 0,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 0,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 0,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 0,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 0,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 0,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 0,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 0,
-set load 1,
-tick,
-output;
-
-tock,
-output;
-
-set in 1,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 1,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 1,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 1,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 1,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 1,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 1,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 1,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 1,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 1,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 1,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 1,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 1,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 1,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 1,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 1,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 1,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 1,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 1,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 1,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 1,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 1,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 1,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 1,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 1,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 1,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 1,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 1,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 1,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 1,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 1,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 1,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 1,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 1,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 1,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 1,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 1,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 1,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 1,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 1,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 1,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 1,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 1,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 1,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 1,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 1,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 1,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 1,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 1,
-set load 0,
-tick,
-output;
-
-tock,
-output;
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+load Bit.hdl,
+output-file Bit.out,
+compare-to Bit.cmp,
+output-list time%S1.4.1 in load%B1.1.2 out;
+
+set in 0,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 0,
+set load 1,
+tick,
+output;
+
+tock,
+output;
+
+set in 1,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 1,
+set load 1,
+tick,
+output;
+
+tock,
+output;
+
+set in 0,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 1,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 0,
+set load 1,
+tick,
+output;
+
+tock,
+output;
+
+set in 1,
+set load 1,
+tick,
+output;
+
+tock,
+output;
+
+set in 0,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 0,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 0,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 0,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 0,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 0,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 0,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 0,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 0,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 0,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 0,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 0,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 0,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 0,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 0,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 0,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 0,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 0,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 0,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 0,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 0,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 0,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 0,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 0,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 0,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 0,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 0,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 0,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 0,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 0,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 0,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 0,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 0,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 0,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 0,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 0,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 0,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 0,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 0,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 0,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 0,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 0,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 0,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 0,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 0,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 0,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 0,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 0,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 0,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 0,
+set load 1,
+tick,
+output;
+
+tock,
+output;
+
+set in 1,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 1,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 1,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 1,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 1,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 1,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 1,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 1,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 1,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 1,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 1,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 1,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 1,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 1,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 1,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 1,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 1,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 1,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 1,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 1,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 1,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 1,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 1,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 1,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 1,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 1,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 1,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 1,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 1,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 1,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 1,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 1,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 1,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 1,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 1,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 1,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 1,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 1,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 1,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 1,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 1,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 1,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 1,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 1,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 1,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 1,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 1,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 1,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 1,
+set load 0,
+tick,
+output;
+
+tock,
+output;
diff --git a/3/PC.cmp b/3/PC.cmp
new file mode 100644
index 0000000..80bbe0e
--- /dev/null
+++ b/3/PC.cmp
@@ -0,0 +1,31 @@
+|time | in |reset|load | inc | out |
+| 0+ | 0 | 0 | 0 | 0 | 0 |
+| 1 | 0 | 0 | 0 | 0 | 0 |
+| 1+ | 0 | 0 | 0 | 1 | 0 |
+| 2 | 0 | 0 | 0 | 1 | 1 |
+| 2+ | -32123 | 0 | 0 | 1 | 1 |
+| 3 | -32123 | 0 | 0 | 1 | 2 |
+| 3+ | -32123 | 0 | 1 | 1 | 2 |
+| 4 | -32123 | 0 | 1 | 1 | -32123 |
+| 4+ | -32123 | 0 | 0 | 1 | -32123 |
+| 5 | -32123 | 0 | 0 | 1 | -32122 |
+| 5+ | -32123 | 0 | 0 | 1 | -32122 |
+| 6 | -32123 | 0 | 0 | 1 | -32121 |
+| 6+ | 12345 | 0 | 1 | 0 | -32121 |
+| 7 | 12345 | 0 | 1 | 0 | 12345 |
+| 7+ | 12345 | 1 | 1 | 0 | 12345 |
+| 8 | 12345 | 1 | 1 | 0 | 0 |
+| 8+ | 12345 | 0 | 1 | 1 | 0 |
+| 9 | 12345 | 0 | 1 | 1 | 12345 |
+| 9+ | 12345 | 1 | 1 | 1 | 12345 |
+| 10 | 12345 | 1 | 1 | 1 | 0 |
+| 10+ | 12345 | 0 | 0 | 1 | 0 |
+| 11 | 12345 | 0 | 0 | 1 | 1 |
+| 11+ | 12345 | 1 | 0 | 1 | 1 |
+| 12 | 12345 | 1 | 0 | 1 | 0 |
+| 12+ | 0 | 0 | 1 | 1 | 0 |
+| 13 | 0 | 0 | 1 | 1 | 0 |
+| 13+ | 0 | 0 | 0 | 1 | 0 |
+| 14 | 0 | 0 | 0 | 1 | 1 |
+| 14+ | 22222 | 1 | 0 | 0 | 1 |
+| 15 | 22222 | 1 | 0 | 0 | 0 |
diff --git a/3/PC.hdl b/3/PC.hdl
new file mode 100644
index 0000000..5b19960
--- /dev/null
+++ b/3/PC.hdl
@@ -0,0 +1,17 @@
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+/**
+ * A 16-bit counter.
+ * if reset(t): out(t+1) = 0
+ * else if load(t): out(t+1) = in(t)
+ * else if inc(t): out(t+1) = out(t) + 1
+ * else out(t+1) = out(t)
+ */
+CHIP PC {
+ IN in[16],inc, load, reset;
+ OUT out[16];
+
+ PARTS:
+ //// Replace this comment with your code.
+}
diff --git a/03/a/PC.tst b/3/PC.tst
similarity index 81%
rename from 03/a/PC.tst
rename to 3/PC.tst
index 7f4f3cd..788ea5b 100644
--- a/03/a/PC.tst
+++ b/3/PC.tst
@@ -1,125 +1,124 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/03/a/PC.tst
-
-load PC.hdl,
-output-file PC.out,
-compare-to PC.cmp,
-output-list time%S1.4.1 in%D1.6.1 reset%B2.1.2 load%B2.1.2 inc%B2.1.2 out%D1.6.1;
-
-set in 0,
-set reset 0,
-set load 0,
-set inc 0,
-tick,
-output;
-
-tock,
-output;
-
-set inc 1,
-tick,
-output;
-
-tock,
-output;
-
-set in -32123,
-tick,
-output;
-
-tock,
-output;
-
-set load 1,
-tick,
-output;
-
-tock,
-output;
-
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-tick,
-output;
-
-tock,
-output;
-
-set in 12345,
-set load 1,
-set inc 0,
-tick,
-output;
-
-tock,
-output;
-
-set reset 1,
-tick,
-output;
-
-tock,
-output;
-
-set reset 0,
-set inc 1,
-tick,
-output;
-
-tock,
-output;
-
-set reset 1,
-tick,
-output;
-
-tock,
-output;
-
-set reset 0,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set reset 1,
-tick,
-output;
-
-tock,
-output;
-
-set in 0,
-set reset 0,
-set load 1,
-tick,
-output;
-
-tock,
-output;
-
-set load 0,
-set inc 1,
-tick,
-output;
-
-tock,
-output;
-
-set in 22222,
-set reset 1,
-set inc 0,
-tick,
-output;
-
-tock,
-output;
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+load PC.hdl,
+output-file PC.out,
+compare-to PC.cmp,
+output-list time%S1.3.1 in%D1.6.1 reset%B2.1.2 load%B2.1.2 inc%B2.1.2 out%D1.6.1;
+
+set in 0,
+set reset 0,
+set load 0,
+set inc 0,
+tick,
+output;
+
+tock,
+output;
+
+set inc 1,
+tick,
+output;
+
+tock,
+output;
+
+set in -32123,
+tick,
+output;
+
+tock,
+output;
+
+set load 1,
+tick,
+output;
+
+tock,
+output;
+
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+tick,
+output;
+
+tock,
+output;
+
+set in 12345,
+set load 1,
+set inc 0,
+tick,
+output;
+
+tock,
+output;
+
+set reset 1,
+tick,
+output;
+
+tock,
+output;
+
+set reset 0,
+set inc 1,
+tick,
+output;
+
+tock,
+output;
+
+set reset 1,
+tick,
+output;
+
+tock,
+output;
+
+set reset 0,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set reset 1,
+tick,
+output;
+
+tock,
+output;
+
+set in 0,
+set reset 0,
+set load 1,
+tick,
+output;
+
+tock,
+output;
+
+set load 0,
+set inc 1,
+tick,
+output;
+
+tock,
+output;
+
+set in 22222,
+set reset 1,
+set inc 0,
+tick,
+output;
+
+tock,
+output;
diff --git a/3/RAM16K.cmp b/3/RAM16K.cmp
new file mode 100644
index 0000000..706b49f
--- /dev/null
+++ b/3/RAM16K.cmp
@@ -0,0 +1,320 @@
+|time | in |load| address | out |
+| 0+ | 0 | 0 | 0 | 0 |
+| 1 | 0 | 0 | 0 | 0 |
+| 1+ | 0 | 1 | 0 | 0 |
+| 2 | 0 | 1 | 0 | 0 |
+| 2+ | 4321 | 0 | 0 | 0 |
+| 3 | 4321 | 0 | 0 | 0 |
+| 3+ | 4321 | 1 | 4321 | 0 |
+| 4 | 4321 | 1 | 4321 | 4321 |
+| 4+ | 4321 | 0 | 0 | 0 |
+| 5 | 4321 | 0 | 0 | 0 |
+| 5+ | 12345 | 0 | 12345 | 0 |
+| 6 | 12345 | 0 | 12345 | 0 |
+| 6+ | 12345 | 1 | 12345 | 0 |
+| 7 | 12345 | 1 | 12345 | 12345 |
+| 7+ | 12345 | 0 | 12345 | 12345 |
+| 8 | 12345 | 0 | 12345 | 12345 |
+| 8 | 12345 | 0 | 4321 | 4321 |
+| 8+ | 16383 | 0 | 4321 | 4321 |
+| 9 | 16383 | 0 | 4321 | 4321 |
+| 9+ | 16383 | 1 | 16383 | 0 |
+| 10 | 16383 | 1 | 16383 | 16383 |
+| 10+ | 16383 | 0 | 16383 | 16383 |
+| 11 | 16383 | 0 | 16383 | 16383 |
+| 11 | 16383 | 0 | 12345 | 12345 |
+| 11 | 16383 | 0 | 16383 | 16383 |
+| 11+ | 16383 | 0 | 10920 | 0 |
+| 12 | 16383 | 0 | 10920 | 0 |
+| 12 | 16383 | 0 | 10921 | 0 |
+| 12 | 16383 | 0 | 10922 | 0 |
+| 12 | 16383 | 0 | 10923 | 0 |
+| 12 | 16383 | 0 | 10924 | 0 |
+| 12 | 16383 | 0 | 10925 | 0 |
+| 12 | 16383 | 0 | 10926 | 0 |
+| 12 | 16383 | 0 | 10927 | 0 |
+| 12+ | 21845 | 1 | 10920 | 0 |
+| 13 | 21845 | 1 | 10920 | 21845 |
+| 13+ | 21845 | 1 | 10921 | 0 |
+| 14 | 21845 | 1 | 10921 | 21845 |
+| 14+ | 21845 | 1 | 10922 | 0 |
+| 15 | 21845 | 1 | 10922 | 21845 |
+| 15+ | 21845 | 1 | 10923 | 0 |
+| 16 | 21845 | 1 | 10923 | 21845 |
+| 16+ | 21845 | 1 | 10924 | 0 |
+| 17 | 21845 | 1 | 10924 | 21845 |
+| 17+ | 21845 | 1 | 10925 | 0 |
+| 18 | 21845 | 1 | 10925 | 21845 |
+| 18+ | 21845 | 1 | 10926 | 0 |
+| 19 | 21845 | 1 | 10926 | 21845 |
+| 19+ | 21845 | 1 | 10927 | 0 |
+| 20 | 21845 | 1 | 10927 | 21845 |
+| 20+ | 21845 | 0 | 10920 | 21845 |
+| 21 | 21845 | 0 | 10920 | 21845 |
+| 21 | 21845 | 0 | 10921 | 21845 |
+| 21 | 21845 | 0 | 10922 | 21845 |
+| 21 | 21845 | 0 | 10923 | 21845 |
+| 21 | 21845 | 0 | 10924 | 21845 |
+| 21 | 21845 | 0 | 10925 | 21845 |
+| 21 | 21845 | 0 | 10926 | 21845 |
+| 21 | 21845 | 0 | 10927 | 21845 |
+| 21+ | -21846 | 1 | 10920 | 21845 |
+| 22 | -21846 | 1 | 10920 | -21846 |
+| 22+ | -21846 | 0 | 10920 | -21846 |
+| 23 | -21846 | 0 | 10920 | -21846 |
+| 23 | -21846 | 0 | 10921 | 21845 |
+| 23 | -21846 | 0 | 10922 | 21845 |
+| 23 | -21846 | 0 | 10923 | 21845 |
+| 23 | -21846 | 0 | 10924 | 21845 |
+| 23 | -21846 | 0 | 10925 | 21845 |
+| 23 | -21846 | 0 | 10926 | 21845 |
+| 23 | -21846 | 0 | 10927 | 21845 |
+| 23+ | 21845 | 1 | 10920 | -21846 |
+| 24 | 21845 | 1 | 10920 | 21845 |
+| 24+ | -21846 | 1 | 10921 | 21845 |
+| 25 | -21846 | 1 | 10921 | -21846 |
+| 25+ | -21846 | 0 | 10920 | 21845 |
+| 26 | -21846 | 0 | 10920 | 21845 |
+| 26 | -21846 | 0 | 10921 | -21846 |
+| 26 | -21846 | 0 | 10922 | 21845 |
+| 26 | -21846 | 0 | 10923 | 21845 |
+| 26 | -21846 | 0 | 10924 | 21845 |
+| 26 | -21846 | 0 | 10925 | 21845 |
+| 26 | -21846 | 0 | 10926 | 21845 |
+| 26 | -21846 | 0 | 10927 | 21845 |
+| 26+ | 21845 | 1 | 10921 | -21846 |
+| 27 | 21845 | 1 | 10921 | 21845 |
+| 27+ | -21846 | 1 | 10922 | 21845 |
+| 28 | -21846 | 1 | 10922 | -21846 |
+| 28+ | -21846 | 0 | 10920 | 21845 |
+| 29 | -21846 | 0 | 10920 | 21845 |
+| 29 | -21846 | 0 | 10921 | 21845 |
+| 29 | -21846 | 0 | 10922 | -21846 |
+| 29 | -21846 | 0 | 10923 | 21845 |
+| 29 | -21846 | 0 | 10924 | 21845 |
+| 29 | -21846 | 0 | 10925 | 21845 |
+| 29 | -21846 | 0 | 10926 | 21845 |
+| 29 | -21846 | 0 | 10927 | 21845 |
+| 29+ | 21845 | 1 | 10922 | -21846 |
+| 30 | 21845 | 1 | 10922 | 21845 |
+| 30+ | -21846 | 1 | 10923 | 21845 |
+| 31 | -21846 | 1 | 10923 | -21846 |
+| 31+ | -21846 | 0 | 10920 | 21845 |
+| 32 | -21846 | 0 | 10920 | 21845 |
+| 32 | -21846 | 0 | 10921 | 21845 |
+| 32 | -21846 | 0 | 10922 | 21845 |
+| 32 | -21846 | 0 | 10923 | -21846 |
+| 32 | -21846 | 0 | 10924 | 21845 |
+| 32 | -21846 | 0 | 10925 | 21845 |
+| 32 | -21846 | 0 | 10926 | 21845 |
+| 32 | -21846 | 0 | 10927 | 21845 |
+| 32+ | 21845 | 1 | 10923 | -21846 |
+| 33 | 21845 | 1 | 10923 | 21845 |
+| 33+ | -21846 | 1 | 10924 | 21845 |
+| 34 | -21846 | 1 | 10924 | -21846 |
+| 34+ | -21846 | 0 | 10920 | 21845 |
+| 35 | -21846 | 0 | 10920 | 21845 |
+| 35 | -21846 | 0 | 10921 | 21845 |
+| 35 | -21846 | 0 | 10922 | 21845 |
+| 35 | -21846 | 0 | 10923 | 21845 |
+| 35 | -21846 | 0 | 10924 | -21846 |
+| 35 | -21846 | 0 | 10925 | 21845 |
+| 35 | -21846 | 0 | 10926 | 21845 |
+| 35 | -21846 | 0 | 10927 | 21845 |
+| 35+ | 21845 | 1 | 10924 | -21846 |
+| 36 | 21845 | 1 | 10924 | 21845 |
+| 36+ | -21846 | 1 | 10925 | 21845 |
+| 37 | -21846 | 1 | 10925 | -21846 |
+| 37+ | -21846 | 0 | 10920 | 21845 |
+| 38 | -21846 | 0 | 10920 | 21845 |
+| 38 | -21846 | 0 | 10921 | 21845 |
+| 38 | -21846 | 0 | 10922 | 21845 |
+| 38 | -21846 | 0 | 10923 | 21845 |
+| 38 | -21846 | 0 | 10924 | 21845 |
+| 38 | -21846 | 0 | 10925 | -21846 |
+| 38 | -21846 | 0 | 10926 | 21845 |
+| 38 | -21846 | 0 | 10927 | 21845 |
+| 38+ | 21845 | 1 | 10925 | -21846 |
+| 39 | 21845 | 1 | 10925 | 21845 |
+| 39+ | -21846 | 1 | 10926 | 21845 |
+| 40 | -21846 | 1 | 10926 | -21846 |
+| 40+ | -21846 | 0 | 10920 | 21845 |
+| 41 | -21846 | 0 | 10920 | 21845 |
+| 41 | -21846 | 0 | 10921 | 21845 |
+| 41 | -21846 | 0 | 10922 | 21845 |
+| 41 | -21846 | 0 | 10923 | 21845 |
+| 41 | -21846 | 0 | 10924 | 21845 |
+| 41 | -21846 | 0 | 10925 | 21845 |
+| 41 | -21846 | 0 | 10926 | -21846 |
+| 41 | -21846 | 0 | 10927 | 21845 |
+| 41+ | 21845 | 1 | 10926 | -21846 |
+| 42 | 21845 | 1 | 10926 | 21845 |
+| 42+ | -21846 | 1 | 10927 | 21845 |
+| 43 | -21846 | 1 | 10927 | -21846 |
+| 43+ | -21846 | 0 | 10920 | 21845 |
+| 44 | -21846 | 0 | 10920 | 21845 |
+| 44 | -21846 | 0 | 10921 | 21845 |
+| 44 | -21846 | 0 | 10922 | 21845 |
+| 44 | -21846 | 0 | 10923 | 21845 |
+| 44 | -21846 | 0 | 10924 | 21845 |
+| 44 | -21846 | 0 | 10925 | 21845 |
+| 44 | -21846 | 0 | 10926 | 21845 |
+| 44 | -21846 | 0 | 10927 | -21846 |
+| 44+ | 21845 | 1 | 10927 | -21846 |
+| 45 | 21845 | 1 | 10927 | 21845 |
+| 45+ | 21845 | 0 | 10920 | 21845 |
+| 46 | 21845 | 0 | 10920 | 21845 |
+| 46 | 21845 | 0 | 10921 | 21845 |
+| 46 | 21845 | 0 | 10922 | 21845 |
+| 46 | 21845 | 0 | 10923 | 21845 |
+| 46 | 21845 | 0 | 10924 | 21845 |
+| 46 | 21845 | 0 | 10925 | 21845 |
+| 46 | 21845 | 0 | 10926 | 21845 |
+| 46 | 21845 | 0 | 10927 | 21845 |
+| 46+ | 21845 | 0 | 1365 | 0 |
+| 47 | 21845 | 0 | 1365 | 0 |
+| 47 | 21845 | 0 | 3413 | 0 |
+| 47 | 21845 | 0 | 5461 | 0 |
+| 47 | 21845 | 0 | 7509 | 0 |
+| 47 | 21845 | 0 | 9557 | 0 |
+| 47 | 21845 | 0 | 11605 | 0 |
+| 47 | 21845 | 0 | 13653 | 0 |
+| 47 | 21845 | 0 | 15701 | 0 |
+| 47+ | 21845 | 1 | 1365 | 0 |
+| 48 | 21845 | 1 | 1365 | 21845 |
+| 48+ | 21845 | 1 | 3413 | 0 |
+| 49 | 21845 | 1 | 3413 | 21845 |
+| 49+ | 21845 | 1 | 5461 | 0 |
+| 50 | 21845 | 1 | 5461 | 21845 |
+| 50+ | 21845 | 1 | 7509 | 0 |
+| 51 | 21845 | 1 | 7509 | 21845 |
+| 51+ | 21845 | 1 | 9557 | 0 |
+| 52 | 21845 | 1 | 9557 | 21845 |
+| 52+ | 21845 | 1 | 11605 | 0 |
+| 53 | 21845 | 1 | 11605 | 21845 |
+| 53+ | 21845 | 1 | 13653 | 0 |
+| 54 | 21845 | 1 | 13653 | 21845 |
+| 54+ | 21845 | 1 | 15701 | 0 |
+| 55 | 21845 | 1 | 15701 | 21845 |
+| 55+ | 21845 | 0 | 1365 | 21845 |
+| 56 | 21845 | 0 | 1365 | 21845 |
+| 56 | 21845 | 0 | 3413 | 21845 |
+| 56 | 21845 | 0 | 5461 | 21845 |
+| 56 | 21845 | 0 | 7509 | 21845 |
+| 56 | 21845 | 0 | 9557 | 21845 |
+| 56 | 21845 | 0 | 11605 | 21845 |
+| 56 | 21845 | 0 | 13653 | 21845 |
+| 56 | 21845 | 0 | 15701 | 21845 |
+| 56+ | -21846 | 1 | 1365 | 21845 |
+| 57 | -21846 | 1 | 1365 | -21846 |
+| 57+ | -21846 | 0 | 1365 | -21846 |
+| 58 | -21846 | 0 | 1365 | -21846 |
+| 58 | -21846 | 0 | 3413 | 21845 |
+| 58 | -21846 | 0 | 5461 | 21845 |
+| 58 | -21846 | 0 | 7509 | 21845 |
+| 58 | -21846 | 0 | 9557 | 21845 |
+| 58 | -21846 | 0 | 11605 | 21845 |
+| 58 | -21846 | 0 | 13653 | 21845 |
+| 58 | -21846 | 0 | 15701 | 21845 |
+| 58+ | 21845 | 1 | 1365 | -21846 |
+| 59 | 21845 | 1 | 1365 | 21845 |
+| 59+ | -21846 | 1 | 3413 | 21845 |
+| 60 | -21846 | 1 | 3413 | -21846 |
+| 60+ | -21846 | 0 | 1365 | 21845 |
+| 61 | -21846 | 0 | 1365 | 21845 |
+| 61 | -21846 | 0 | 3413 | -21846 |
+| 61 | -21846 | 0 | 5461 | 21845 |
+| 61 | -21846 | 0 | 7509 | 21845 |
+| 61 | -21846 | 0 | 9557 | 21845 |
+| 61 | -21846 | 0 | 11605 | 21845 |
+| 61 | -21846 | 0 | 13653 | 21845 |
+| 61 | -21846 | 0 | 15701 | 21845 |
+| 61+ | 21845 | 1 | 3413 | -21846 |
+| 62 | 21845 | 1 | 3413 | 21845 |
+| 62+ | -21846 | 1 | 5461 | 21845 |
+| 63 | -21846 | 1 | 5461 | -21846 |
+| 63+ | -21846 | 0 | 1365 | 21845 |
+| 64 | -21846 | 0 | 1365 | 21845 |
+| 64 | -21846 | 0 | 3413 | 21845 |
+| 64 | -21846 | 0 | 5461 | -21846 |
+| 64 | -21846 | 0 | 7509 | 21845 |
+| 64 | -21846 | 0 | 9557 | 21845 |
+| 64 | -21846 | 0 | 11605 | 21845 |
+| 64 | -21846 | 0 | 13653 | 21845 |
+| 64 | -21846 | 0 | 15701 | 21845 |
+| 64+ | 21845 | 1 | 5461 | -21846 |
+| 65 | 21845 | 1 | 5461 | 21845 |
+| 65+ | -21846 | 1 | 7509 | 21845 |
+| 66 | -21846 | 1 | 7509 | -21846 |
+| 66+ | -21846 | 0 | 1365 | 21845 |
+| 67 | -21846 | 0 | 1365 | 21845 |
+| 67 | -21846 | 0 | 3413 | 21845 |
+| 67 | -21846 | 0 | 5461 | 21845 |
+| 67 | -21846 | 0 | 7509 | -21846 |
+| 67 | -21846 | 0 | 9557 | 21845 |
+| 67 | -21846 | 0 | 11605 | 21845 |
+| 67 | -21846 | 0 | 13653 | 21845 |
+| 67 | -21846 | 0 | 15701 | 21845 |
+| 67+ | 21845 | 1 | 7509 | -21846 |
+| 68 | 21845 | 1 | 7509 | 21845 |
+| 68+ | -21846 | 1 | 9557 | 21845 |
+| 69 | -21846 | 1 | 9557 | -21846 |
+| 69+ | -21846 | 0 | 1365 | 21845 |
+| 70 | -21846 | 0 | 1365 | 21845 |
+| 70 | -21846 | 0 | 3413 | 21845 |
+| 70 | -21846 | 0 | 5461 | 21845 |
+| 70 | -21846 | 0 | 7509 | 21845 |
+| 70 | -21846 | 0 | 9557 | -21846 |
+| 70 | -21846 | 0 | 11605 | 21845 |
+| 70 | -21846 | 0 | 13653 | 21845 |
+| 70 | -21846 | 0 | 15701 | 21845 |
+| 70+ | 21845 | 1 | 9557 | -21846 |
+| 71 | 21845 | 1 | 9557 | 21845 |
+| 71+ | -21846 | 1 | 11605 | 21845 |
+| 72 | -21846 | 1 | 11605 | -21846 |
+| 72+ | -21846 | 0 | 1365 | 21845 |
+| 73 | -21846 | 0 | 1365 | 21845 |
+| 73 | -21846 | 0 | 3413 | 21845 |
+| 73 | -21846 | 0 | 5461 | 21845 |
+| 73 | -21846 | 0 | 7509 | 21845 |
+| 73 | -21846 | 0 | 9557 | 21845 |
+| 73 | -21846 | 0 | 11605 | -21846 |
+| 73 | -21846 | 0 | 13653 | 21845 |
+| 73 | -21846 | 0 | 15701 | 21845 |
+| 73+ | 21845 | 1 | 11605 | -21846 |
+| 74 | 21845 | 1 | 11605 | 21845 |
+| 74+ | -21846 | 1 | 13653 | 21845 |
+| 75 | -21846 | 1 | 13653 | -21846 |
+| 75+ | -21846 | 0 | 1365 | 21845 |
+| 76 | -21846 | 0 | 1365 | 21845 |
+| 76 | -21846 | 0 | 3413 | 21845 |
+| 76 | -21846 | 0 | 5461 | 21845 |
+| 76 | -21846 | 0 | 7509 | 21845 |
+| 76 | -21846 | 0 | 9557 | 21845 |
+| 76 | -21846 | 0 | 11605 | 21845 |
+| 76 | -21846 | 0 | 13653 | -21846 |
+| 76 | -21846 | 0 | 15701 | 21845 |
+| 76+ | 21845 | 1 | 13653 | -21846 |
+| 77 | 21845 | 1 | 13653 | 21845 |
+| 77+ | -21846 | 1 | 15701 | 21845 |
+| 78 | -21846 | 1 | 15701 | -21846 |
+| 78+ | -21846 | 0 | 1365 | 21845 |
+| 79 | -21846 | 0 | 1365 | 21845 |
+| 79 | -21846 | 0 | 3413 | 21845 |
+| 79 | -21846 | 0 | 5461 | 21845 |
+| 79 | -21846 | 0 | 7509 | 21845 |
+| 79 | -21846 | 0 | 9557 | 21845 |
+| 79 | -21846 | 0 | 11605 | 21845 |
+| 79 | -21846 | 0 | 13653 | 21845 |
+| 79 | -21846 | 0 | 15701 | -21846 |
+| 79+ | 21845 | 1 | 15701 | -21846 |
+| 80 | 21845 | 1 | 15701 | 21845 |
+| 80+ | 21845 | 0 | 1365 | 21845 |
+| 81 | 21845 | 0 | 1365 | 21845 |
+| 81 | 21845 | 0 | 3413 | 21845 |
+| 81 | 21845 | 0 | 5461 | 21845 |
+| 81 | 21845 | 0 | 7509 | 21845 |
+| 81 | 21845 | 0 | 9557 | 21845 |
+| 81 | 21845 | 0 | 11605 | 21845 |
+| 81 | 21845 | 0 | 13653 | 21845 |
+| 81 | 21845 | 0 | 15701 | 21845 |
diff --git a/3/RAM16K.hdl b/3/RAM16K.hdl
new file mode 100644
index 0000000..691a2fc
--- /dev/null
+++ b/3/RAM16K.hdl
@@ -0,0 +1,16 @@
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+/**
+ * Memory of 16K 16-bit registers.
+ * If load is asserted, the value of the register selected by
+ * address is set to in; Otherwise, the value does not change.
+ * The value of the selected register is emitted by out.
+ */
+CHIP RAM16K {
+ IN in[16], load, address[14];
+ OUT out[16];
+
+ PARTS:
+ //// Replace this comment with your code.
+}
diff --git a/03/b/RAM16K.tst b/3/RAM16K.tst
similarity index 92%
rename from 03/b/RAM16K.tst
rename to 3/RAM16K.tst
index e556ad4..fef6811 100644
--- a/03/b/RAM16K.tst
+++ b/3/RAM16K.tst
@@ -1,1026 +1,1025 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/03/b/RAM16K.tst
-
-load RAM16K.hdl,
-output-file RAM16K.out,
-compare-to RAM16K.cmp,
-output-list time%S1.4.1 in%D1.6.1 load%B2.1.2 address%D2.5.2 out%D1.6.1;
-
-set in 0,
-set load 0,
-set address 0,
-tick,
-output;
-tock,
-output;
-
-set load 1,
-tick,
-output;
-tock,
-output;
-
-set in 4321,
-set load 0,
-tick,
-output;
-tock,
-output;
-
-set load 1,
-set address 4321,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address 0,
-tick,
-output;
-tock,
-output;
-
-set in 12345,
-set address 12345,
-tick,
-output;
-tock,
-output;
-
-set load 1,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-tick,
-output;
-tock,
-output;
-
-set address 4321,
-eval,
-output;
-
-set in 16383,
-tick,
-output;
-tock,
-output;
-
-set load 1,
-set address 16383,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-tick,
-output;
-tock,
-output;
-
-set address 12345,
-eval,
-output;
-
-set address 16383,
-eval,
-output;
-
-
-set load 0,
-set address %B10101010101000,
-tick,
-output;
-tock,
-output;
-set address %B10101010101001,
-eval,
-output;
-set address %B10101010101010,
-eval,
-output;
-set address %B10101010101011,
-eval,
-output;
-set address %B10101010101100,
-eval,
-output;
-set address %B10101010101101,
-eval,
-output;
-set address %B10101010101110,
-eval,
-output;
-set address %B10101010101111,
-eval,
-output;
-
-set load 1,
-set in %B0101010101010101,
-set address %B10101010101000,
-tick,
-output;
-tock,
-output;
-set address %B10101010101001,
-tick,
-output,
-tock,
-output;
-set address %B10101010101010,
-tick,
-output,
-tock,
-output;
-set address %B10101010101011,
-tick,
-output,
-tock,
-output;
-set address %B10101010101100,
-tick,
-output,
-tock,
-output;
-set address %B10101010101101,
-tick,
-output,
-tock,
-output;
-set address %B10101010101110,
-tick,
-output,
-tock,
-output;
-set address %B10101010101111,
-tick,
-output,
-tock,
-output;
-
-set load 0,
-set address %B10101010101000,
-tick,
-output;
-tock,
-output;
-set address %B10101010101001,
-eval,
-output;
-set address %B10101010101010,
-eval,
-output;
-set address %B10101010101011,
-eval,
-output;
-set address %B10101010101100,
-eval,
-output;
-set address %B10101010101101,
-eval,
-output;
-set address %B10101010101110,
-eval,
-output;
-set address %B10101010101111,
-eval,
-output;
-
-set load 1,
-set address %B10101010101000,
-set in %B1010101010101010,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address %B10101010101000,
-tick,
-output;
-tock,
-output;
-set address %B10101010101001,
-eval,
-output;
-set address %B10101010101010,
-eval,
-output;
-set address %B10101010101011,
-eval,
-output;
-set address %B10101010101100,
-eval,
-output;
-set address %B10101010101101,
-eval,
-output;
-set address %B10101010101110,
-eval,
-output;
-set address %B10101010101111,
-eval,
-output;
-
-set load 1,
-set address %B10101010101000,
-set in %B0101010101010101,
-tick,
-output,
-tock,
-output;
-set address %B10101010101001,
-set in %B1010101010101010,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address %B10101010101000,
-tick,
-output;
-tock,
-output;
-set address %B10101010101001,
-eval,
-output;
-set address %B10101010101010,
-eval,
-output;
-set address %B10101010101011,
-eval,
-output;
-set address %B10101010101100,
-eval,
-output;
-set address %B10101010101101,
-eval,
-output;
-set address %B10101010101110,
-eval,
-output;
-set address %B10101010101111,
-eval,
-output;
-
-set load 1,
-set address %B10101010101001,
-set in %B0101010101010101,
-tick,
-output,
-tock,
-output;
-set address %B10101010101010,
-set in %B1010101010101010,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address %B10101010101000,
-tick,
-output;
-tock,
-output;
-set address %B10101010101001,
-eval,
-output;
-set address %B10101010101010,
-eval,
-output;
-set address %B10101010101011,
-eval,
-output;
-set address %B10101010101100,
-eval,
-output;
-set address %B10101010101101,
-eval,
-output;
-set address %B10101010101110,
-eval,
-output;
-set address %B10101010101111,
-eval,
-output;
-
-set load 1,
-set address %B10101010101010,
-set in %B0101010101010101,
-tick,
-output,
-tock,
-output;
-set address %B10101010101011,
-set in %B1010101010101010,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address %B10101010101000,
-tick,
-output;
-tock,
-output;
-set address %B10101010101001,
-eval,
-output;
-set address %B10101010101010,
-eval,
-output;
-set address %B10101010101011,
-eval,
-output;
-set address %B10101010101100,
-eval,
-output;
-set address %B10101010101101,
-eval,
-output;
-set address %B10101010101110,
-eval,
-output;
-set address %B10101010101111,
-eval,
-output;
-
-set load 1,
-set address %B10101010101011,
-set in %B0101010101010101,
-tick,
-output,
-tock,
-output;
-set address %B10101010101100,
-set in %B1010101010101010,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address %B10101010101000,
-tick,
-output;
-tock,
-output;
-set address %B10101010101001,
-eval,
-output;
-set address %B10101010101010,
-eval,
-output;
-set address %B10101010101011,
-eval,
-output;
-set address %B10101010101100,
-eval,
-output;
-set address %B10101010101101,
-eval,
-output;
-set address %B10101010101110,
-eval,
-output;
-set address %B10101010101111,
-eval,
-output;
-
-set load 1,
-set address %B10101010101100,
-set in %B0101010101010101,
-tick,
-output,
-tock,
-output;
-set address %B10101010101101,
-set in %B1010101010101010,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address %B10101010101000,
-tick,
-output;
-tock,
-output;
-set address %B10101010101001,
-eval,
-output;
-set address %B10101010101010,
-eval,
-output;
-set address %B10101010101011,
-eval,
-output;
-set address %B10101010101100,
-eval,
-output;
-set address %B10101010101101,
-eval,
-output;
-set address %B10101010101110,
-eval,
-output;
-set address %B10101010101111,
-eval,
-output;
-
-set load 1,
-set address %B10101010101101,
-set in %B0101010101010101,
-tick,
-output,
-tock,
-output;
-set address %B10101010101110,
-set in %B1010101010101010,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address %B10101010101000,
-tick,
-output;
-tock,
-output;
-set address %B10101010101001,
-eval,
-output;
-set address %B10101010101010,
-eval,
-output;
-set address %B10101010101011,
-eval,
-output;
-set address %B10101010101100,
-eval,
-output;
-set address %B10101010101101,
-eval,
-output;
-set address %B10101010101110,
-eval,
-output;
-set address %B10101010101111,
-eval,
-output;
-
-set load 1,
-set address %B10101010101110,
-set in %B0101010101010101,
-tick,
-output,
-tock,
-output;
-set address %B10101010101111,
-set in %B1010101010101010,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address %B10101010101000,
-tick,
-output;
-tock,
-output;
-set address %B10101010101001,
-eval,
-output;
-set address %B10101010101010,
-eval,
-output;
-set address %B10101010101011,
-eval,
-output;
-set address %B10101010101100,
-eval,
-output;
-set address %B10101010101101,
-eval,
-output;
-set address %B10101010101110,
-eval,
-output;
-set address %B10101010101111,
-eval,
-output;
-
-set load 1,
-set address %B10101010101111,
-set in %B0101010101010101,
-tick,
-output,
-tock,
-output;
-
-set load 0,
-set address %B10101010101000,
-tick,
-output;
-tock,
-output;
-set address %B10101010101001,
-eval,
-output;
-set address %B10101010101010,
-eval,
-output;
-set address %B10101010101011,
-eval,
-output;
-set address %B10101010101100,
-eval,
-output;
-set address %B10101010101101,
-eval,
-output;
-set address %B10101010101110,
-eval,
-output;
-set address %B10101010101111,
-eval,
-output;
-
-
-set load 0,
-set address %B00010101010101,
-tick,
-output;
-tock,
-output;
-set address %B00110101010101,
-eval,
-output;
-set address %B01010101010101,
-eval,
-output;
-set address %B01110101010101,
-eval,
-output;
-set address %B10010101010101,
-eval,
-output;
-set address %B10110101010101,
-eval,
-output;
-set address %B11010101010101,
-eval,
-output;
-set address %B11110101010101,
-eval,
-output;
-
-set load 1,
-set in %B0101010101010101,
-set address %B00010101010101,
-tick,
-output;
-tock,
-output;
-set address %B00110101010101,
-tick,
-output,
-tock,
-output;
-set address %B01010101010101,
-tick,
-output,
-tock,
-output;
-set address %B01110101010101,
-tick,
-output,
-tock,
-output;
-set address %B10010101010101,
-tick,
-output,
-tock,
-output;
-set address %B10110101010101,
-tick,
-output,
-tock,
-output;
-set address %B11010101010101,
-tick,
-output,
-tock,
-output;
-set address %B11110101010101,
-tick,
-output,
-tock,
-output;
-
-set load 0,
-set address %B00010101010101,
-tick,
-output;
-tock,
-output;
-set address %B00110101010101,
-eval,
-output;
-set address %B01010101010101,
-eval,
-output;
-set address %B01110101010101,
-eval,
-output;
-set address %B10010101010101,
-eval,
-output;
-set address %B10110101010101,
-eval,
-output;
-set address %B11010101010101,
-eval,
-output;
-set address %B11110101010101,
-eval,
-output;
-
-set load 1,
-set address %B00010101010101,
-set in %B1010101010101010,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address %B00010101010101,
-tick,
-output;
-tock,
-output;
-set address %B00110101010101,
-eval,
-output;
-set address %B01010101010101,
-eval,
-output;
-set address %B01110101010101,
-eval,
-output;
-set address %B10010101010101,
-eval,
-output;
-set address %B10110101010101,
-eval,
-output;
-set address %B11010101010101,
-eval,
-output;
-set address %B11110101010101,
-eval,
-output;
-
-set load 1,
-set address %B00010101010101,
-set in %B0101010101010101,
-tick,
-output,
-tock,
-output;
-set address %B00110101010101,
-set in %B1010101010101010,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address %B00010101010101,
-tick,
-output;
-tock,
-output;
-set address %B00110101010101,
-eval,
-output;
-set address %B01010101010101,
-eval,
-output;
-set address %B01110101010101,
-eval,
-output;
-set address %B10010101010101,
-eval,
-output;
-set address %B10110101010101,
-eval,
-output;
-set address %B11010101010101,
-eval,
-output;
-set address %B11110101010101,
-eval,
-output;
-
-set load 1,
-set address %B00110101010101,
-set in %B0101010101010101,
-tick,
-output,
-tock,
-output;
-set address %B01010101010101,
-set in %B1010101010101010,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address %B00010101010101,
-tick,
-output;
-tock,
-output;
-set address %B00110101010101,
-eval,
-output;
-set address %B01010101010101,
-eval,
-output;
-set address %B01110101010101,
-eval,
-output;
-set address %B10010101010101,
-eval,
-output;
-set address %B10110101010101,
-eval,
-output;
-set address %B11010101010101,
-eval,
-output;
-set address %B11110101010101,
-eval,
-output;
-
-set load 1,
-set address %B01010101010101,
-set in %B0101010101010101,
-tick,
-output,
-tock,
-output;
-set address %B01110101010101,
-set in %B1010101010101010,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address %B00010101010101,
-tick,
-output;
-tock,
-output;
-set address %B00110101010101,
-eval,
-output;
-set address %B01010101010101,
-eval,
-output;
-set address %B01110101010101,
-eval,
-output;
-set address %B10010101010101,
-eval,
-output;
-set address %B10110101010101,
-eval,
-output;
-set address %B11010101010101,
-eval,
-output;
-set address %B11110101010101,
-eval,
-output;
-
-set load 1,
-set address %B01110101010101,
-set in %B0101010101010101,
-tick,
-output,
-tock,
-output;
-set address %B10010101010101,
-set in %B1010101010101010,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address %B00010101010101,
-tick,
-output;
-tock,
-output;
-set address %B00110101010101,
-eval,
-output;
-set address %B01010101010101,
-eval,
-output;
-set address %B01110101010101,
-eval,
-output;
-set address %B10010101010101,
-eval,
-output;
-set address %B10110101010101,
-eval,
-output;
-set address %B11010101010101,
-eval,
-output;
-set address %B11110101010101,
-eval,
-output;
-
-set load 1,
-set address %B10010101010101,
-set in %B0101010101010101,
-tick,
-output,
-tock,
-output;
-set address %B10110101010101,
-set in %B1010101010101010,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address %B00010101010101,
-tick,
-output;
-tock,
-output;
-set address %B00110101010101,
-eval,
-output;
-set address %B01010101010101,
-eval,
-output;
-set address %B01110101010101,
-eval,
-output;
-set address %B10010101010101,
-eval,
-output;
-set address %B10110101010101,
-eval,
-output;
-set address %B11010101010101,
-eval,
-output;
-set address %B11110101010101,
-eval,
-output;
-
-set load 1,
-set address %B10110101010101,
-set in %B0101010101010101,
-tick,
-output,
-tock,
-output;
-set address %B11010101010101,
-set in %B1010101010101010,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address %B00010101010101,
-tick,
-output;
-tock,
-output;
-set address %B00110101010101,
-eval,
-output;
-set address %B01010101010101,
-eval,
-output;
-set address %B01110101010101,
-eval,
-output;
-set address %B10010101010101,
-eval,
-output;
-set address %B10110101010101,
-eval,
-output;
-set address %B11010101010101,
-eval,
-output;
-set address %B11110101010101,
-eval,
-output;
-
-set load 1,
-set address %B11010101010101,
-set in %B0101010101010101,
-tick,
-output,
-tock,
-output;
-set address %B11110101010101,
-set in %B1010101010101010,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address %B00010101010101,
-tick,
-output;
-tock,
-output;
-set address %B00110101010101,
-eval,
-output;
-set address %B01010101010101,
-eval,
-output;
-set address %B01110101010101,
-eval,
-output;
-set address %B10010101010101,
-eval,
-output;
-set address %B10110101010101,
-eval,
-output;
-set address %B11010101010101,
-eval,
-output;
-set address %B11110101010101,
-eval,
-output;
-
-set load 1,
-set address %B11110101010101,
-set in %B0101010101010101,
-tick,
-output,
-tock,
-output;
-
-set load 0,
-set address %B00010101010101,
-tick,
-output;
-tock,
-output;
-set address %B00110101010101,
-eval,
-output;
-set address %B01010101010101,
-eval,
-output;
-set address %B01110101010101,
-eval,
-output;
-set address %B10010101010101,
-eval,
-output;
-set address %B10110101010101,
-eval,
-output;
-set address %B11010101010101,
-eval,
-output;
-set address %B11110101010101,
-eval,
-output;
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+load RAM16K.hdl,
+output-file RAM16K.out,
+compare-to RAM16K.cmp,
+output-list time%S1.3.1 in%D1.6.1 load%B2.1.1 address%D2.5.2 out%D1.6.1;
+
+set in 0,
+set load 0,
+set address 0,
+tick,
+output;
+tock,
+output;
+
+set load 1,
+tick,
+output;
+tock,
+output;
+
+set in 4321,
+set load 0,
+tick,
+output;
+tock,
+output;
+
+set load 1,
+set address 4321,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address 0,
+tick,
+output;
+tock,
+output;
+
+set in 12345,
+set address 12345,
+tick,
+output;
+tock,
+output;
+
+set load 1,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+tick,
+output;
+tock,
+output;
+
+set address 4321,
+eval,
+output;
+
+set in 16383,
+tick,
+output;
+tock,
+output;
+
+set load 1,
+set address 16383,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+tick,
+output;
+tock,
+output;
+
+set address 12345,
+eval,
+output;
+
+set address 16383,
+eval,
+output;
+
+
+set load 0,
+set address %B10101010101000,
+tick,
+output;
+tock,
+output;
+set address %B10101010101001,
+eval,
+output;
+set address %B10101010101010,
+eval,
+output;
+set address %B10101010101011,
+eval,
+output;
+set address %B10101010101100,
+eval,
+output;
+set address %B10101010101101,
+eval,
+output;
+set address %B10101010101110,
+eval,
+output;
+set address %B10101010101111,
+eval,
+output;
+
+set load 1,
+set in %B0101010101010101,
+set address %B10101010101000,
+tick,
+output;
+tock,
+output;
+set address %B10101010101001,
+tick,
+output,
+tock,
+output;
+set address %B10101010101010,
+tick,
+output,
+tock,
+output;
+set address %B10101010101011,
+tick,
+output,
+tock,
+output;
+set address %B10101010101100,
+tick,
+output,
+tock,
+output;
+set address %B10101010101101,
+tick,
+output,
+tock,
+output;
+set address %B10101010101110,
+tick,
+output,
+tock,
+output;
+set address %B10101010101111,
+tick,
+output,
+tock,
+output;
+
+set load 0,
+set address %B10101010101000,
+tick,
+output;
+tock,
+output;
+set address %B10101010101001,
+eval,
+output;
+set address %B10101010101010,
+eval,
+output;
+set address %B10101010101011,
+eval,
+output;
+set address %B10101010101100,
+eval,
+output;
+set address %B10101010101101,
+eval,
+output;
+set address %B10101010101110,
+eval,
+output;
+set address %B10101010101111,
+eval,
+output;
+
+set load 1,
+set address %B10101010101000,
+set in %B1010101010101010,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address %B10101010101000,
+tick,
+output;
+tock,
+output;
+set address %B10101010101001,
+eval,
+output;
+set address %B10101010101010,
+eval,
+output;
+set address %B10101010101011,
+eval,
+output;
+set address %B10101010101100,
+eval,
+output;
+set address %B10101010101101,
+eval,
+output;
+set address %B10101010101110,
+eval,
+output;
+set address %B10101010101111,
+eval,
+output;
+
+set load 1,
+set address %B10101010101000,
+set in %B0101010101010101,
+tick,
+output,
+tock,
+output;
+set address %B10101010101001,
+set in %B1010101010101010,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address %B10101010101000,
+tick,
+output;
+tock,
+output;
+set address %B10101010101001,
+eval,
+output;
+set address %B10101010101010,
+eval,
+output;
+set address %B10101010101011,
+eval,
+output;
+set address %B10101010101100,
+eval,
+output;
+set address %B10101010101101,
+eval,
+output;
+set address %B10101010101110,
+eval,
+output;
+set address %B10101010101111,
+eval,
+output;
+
+set load 1,
+set address %B10101010101001,
+set in %B0101010101010101,
+tick,
+output,
+tock,
+output;
+set address %B10101010101010,
+set in %B1010101010101010,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address %B10101010101000,
+tick,
+output;
+tock,
+output;
+set address %B10101010101001,
+eval,
+output;
+set address %B10101010101010,
+eval,
+output;
+set address %B10101010101011,
+eval,
+output;
+set address %B10101010101100,
+eval,
+output;
+set address %B10101010101101,
+eval,
+output;
+set address %B10101010101110,
+eval,
+output;
+set address %B10101010101111,
+eval,
+output;
+
+set load 1,
+set address %B10101010101010,
+set in %B0101010101010101,
+tick,
+output,
+tock,
+output;
+set address %B10101010101011,
+set in %B1010101010101010,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address %B10101010101000,
+tick,
+output;
+tock,
+output;
+set address %B10101010101001,
+eval,
+output;
+set address %B10101010101010,
+eval,
+output;
+set address %B10101010101011,
+eval,
+output;
+set address %B10101010101100,
+eval,
+output;
+set address %B10101010101101,
+eval,
+output;
+set address %B10101010101110,
+eval,
+output;
+set address %B10101010101111,
+eval,
+output;
+
+set load 1,
+set address %B10101010101011,
+set in %B0101010101010101,
+tick,
+output,
+tock,
+output;
+set address %B10101010101100,
+set in %B1010101010101010,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address %B10101010101000,
+tick,
+output;
+tock,
+output;
+set address %B10101010101001,
+eval,
+output;
+set address %B10101010101010,
+eval,
+output;
+set address %B10101010101011,
+eval,
+output;
+set address %B10101010101100,
+eval,
+output;
+set address %B10101010101101,
+eval,
+output;
+set address %B10101010101110,
+eval,
+output;
+set address %B10101010101111,
+eval,
+output;
+
+set load 1,
+set address %B10101010101100,
+set in %B0101010101010101,
+tick,
+output,
+tock,
+output;
+set address %B10101010101101,
+set in %B1010101010101010,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address %B10101010101000,
+tick,
+output;
+tock,
+output;
+set address %B10101010101001,
+eval,
+output;
+set address %B10101010101010,
+eval,
+output;
+set address %B10101010101011,
+eval,
+output;
+set address %B10101010101100,
+eval,
+output;
+set address %B10101010101101,
+eval,
+output;
+set address %B10101010101110,
+eval,
+output;
+set address %B10101010101111,
+eval,
+output;
+
+set load 1,
+set address %B10101010101101,
+set in %B0101010101010101,
+tick,
+output,
+tock,
+output;
+set address %B10101010101110,
+set in %B1010101010101010,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address %B10101010101000,
+tick,
+output;
+tock,
+output;
+set address %B10101010101001,
+eval,
+output;
+set address %B10101010101010,
+eval,
+output;
+set address %B10101010101011,
+eval,
+output;
+set address %B10101010101100,
+eval,
+output;
+set address %B10101010101101,
+eval,
+output;
+set address %B10101010101110,
+eval,
+output;
+set address %B10101010101111,
+eval,
+output;
+
+set load 1,
+set address %B10101010101110,
+set in %B0101010101010101,
+tick,
+output,
+tock,
+output;
+set address %B10101010101111,
+set in %B1010101010101010,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address %B10101010101000,
+tick,
+output;
+tock,
+output;
+set address %B10101010101001,
+eval,
+output;
+set address %B10101010101010,
+eval,
+output;
+set address %B10101010101011,
+eval,
+output;
+set address %B10101010101100,
+eval,
+output;
+set address %B10101010101101,
+eval,
+output;
+set address %B10101010101110,
+eval,
+output;
+set address %B10101010101111,
+eval,
+output;
+
+set load 1,
+set address %B10101010101111,
+set in %B0101010101010101,
+tick,
+output,
+tock,
+output;
+
+set load 0,
+set address %B10101010101000,
+tick,
+output;
+tock,
+output;
+set address %B10101010101001,
+eval,
+output;
+set address %B10101010101010,
+eval,
+output;
+set address %B10101010101011,
+eval,
+output;
+set address %B10101010101100,
+eval,
+output;
+set address %B10101010101101,
+eval,
+output;
+set address %B10101010101110,
+eval,
+output;
+set address %B10101010101111,
+eval,
+output;
+
+
+set load 0,
+set address %B00010101010101,
+tick,
+output;
+tock,
+output;
+set address %B00110101010101,
+eval,
+output;
+set address %B01010101010101,
+eval,
+output;
+set address %B01110101010101,
+eval,
+output;
+set address %B10010101010101,
+eval,
+output;
+set address %B10110101010101,
+eval,
+output;
+set address %B11010101010101,
+eval,
+output;
+set address %B11110101010101,
+eval,
+output;
+
+set load 1,
+set in %B0101010101010101,
+set address %B00010101010101,
+tick,
+output;
+tock,
+output;
+set address %B00110101010101,
+tick,
+output,
+tock,
+output;
+set address %B01010101010101,
+tick,
+output,
+tock,
+output;
+set address %B01110101010101,
+tick,
+output,
+tock,
+output;
+set address %B10010101010101,
+tick,
+output,
+tock,
+output;
+set address %B10110101010101,
+tick,
+output,
+tock,
+output;
+set address %B11010101010101,
+tick,
+output,
+tock,
+output;
+set address %B11110101010101,
+tick,
+output,
+tock,
+output;
+
+set load 0,
+set address %B00010101010101,
+tick,
+output;
+tock,
+output;
+set address %B00110101010101,
+eval,
+output;
+set address %B01010101010101,
+eval,
+output;
+set address %B01110101010101,
+eval,
+output;
+set address %B10010101010101,
+eval,
+output;
+set address %B10110101010101,
+eval,
+output;
+set address %B11010101010101,
+eval,
+output;
+set address %B11110101010101,
+eval,
+output;
+
+set load 1,
+set address %B00010101010101,
+set in %B1010101010101010,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address %B00010101010101,
+tick,
+output;
+tock,
+output;
+set address %B00110101010101,
+eval,
+output;
+set address %B01010101010101,
+eval,
+output;
+set address %B01110101010101,
+eval,
+output;
+set address %B10010101010101,
+eval,
+output;
+set address %B10110101010101,
+eval,
+output;
+set address %B11010101010101,
+eval,
+output;
+set address %B11110101010101,
+eval,
+output;
+
+set load 1,
+set address %B00010101010101,
+set in %B0101010101010101,
+tick,
+output,
+tock,
+output;
+set address %B00110101010101,
+set in %B1010101010101010,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address %B00010101010101,
+tick,
+output;
+tock,
+output;
+set address %B00110101010101,
+eval,
+output;
+set address %B01010101010101,
+eval,
+output;
+set address %B01110101010101,
+eval,
+output;
+set address %B10010101010101,
+eval,
+output;
+set address %B10110101010101,
+eval,
+output;
+set address %B11010101010101,
+eval,
+output;
+set address %B11110101010101,
+eval,
+output;
+
+set load 1,
+set address %B00110101010101,
+set in %B0101010101010101,
+tick,
+output,
+tock,
+output;
+set address %B01010101010101,
+set in %B1010101010101010,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address %B00010101010101,
+tick,
+output;
+tock,
+output;
+set address %B00110101010101,
+eval,
+output;
+set address %B01010101010101,
+eval,
+output;
+set address %B01110101010101,
+eval,
+output;
+set address %B10010101010101,
+eval,
+output;
+set address %B10110101010101,
+eval,
+output;
+set address %B11010101010101,
+eval,
+output;
+set address %B11110101010101,
+eval,
+output;
+
+set load 1,
+set address %B01010101010101,
+set in %B0101010101010101,
+tick,
+output,
+tock,
+output;
+set address %B01110101010101,
+set in %B1010101010101010,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address %B00010101010101,
+tick,
+output;
+tock,
+output;
+set address %B00110101010101,
+eval,
+output;
+set address %B01010101010101,
+eval,
+output;
+set address %B01110101010101,
+eval,
+output;
+set address %B10010101010101,
+eval,
+output;
+set address %B10110101010101,
+eval,
+output;
+set address %B11010101010101,
+eval,
+output;
+set address %B11110101010101,
+eval,
+output;
+
+set load 1,
+set address %B01110101010101,
+set in %B0101010101010101,
+tick,
+output,
+tock,
+output;
+set address %B10010101010101,
+set in %B1010101010101010,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address %B00010101010101,
+tick,
+output;
+tock,
+output;
+set address %B00110101010101,
+eval,
+output;
+set address %B01010101010101,
+eval,
+output;
+set address %B01110101010101,
+eval,
+output;
+set address %B10010101010101,
+eval,
+output;
+set address %B10110101010101,
+eval,
+output;
+set address %B11010101010101,
+eval,
+output;
+set address %B11110101010101,
+eval,
+output;
+
+set load 1,
+set address %B10010101010101,
+set in %B0101010101010101,
+tick,
+output,
+tock,
+output;
+set address %B10110101010101,
+set in %B1010101010101010,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address %B00010101010101,
+tick,
+output;
+tock,
+output;
+set address %B00110101010101,
+eval,
+output;
+set address %B01010101010101,
+eval,
+output;
+set address %B01110101010101,
+eval,
+output;
+set address %B10010101010101,
+eval,
+output;
+set address %B10110101010101,
+eval,
+output;
+set address %B11010101010101,
+eval,
+output;
+set address %B11110101010101,
+eval,
+output;
+
+set load 1,
+set address %B10110101010101,
+set in %B0101010101010101,
+tick,
+output,
+tock,
+output;
+set address %B11010101010101,
+set in %B1010101010101010,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address %B00010101010101,
+tick,
+output;
+tock,
+output;
+set address %B00110101010101,
+eval,
+output;
+set address %B01010101010101,
+eval,
+output;
+set address %B01110101010101,
+eval,
+output;
+set address %B10010101010101,
+eval,
+output;
+set address %B10110101010101,
+eval,
+output;
+set address %B11010101010101,
+eval,
+output;
+set address %B11110101010101,
+eval,
+output;
+
+set load 1,
+set address %B11010101010101,
+set in %B0101010101010101,
+tick,
+output,
+tock,
+output;
+set address %B11110101010101,
+set in %B1010101010101010,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address %B00010101010101,
+tick,
+output;
+tock,
+output;
+set address %B00110101010101,
+eval,
+output;
+set address %B01010101010101,
+eval,
+output;
+set address %B01110101010101,
+eval,
+output;
+set address %B10010101010101,
+eval,
+output;
+set address %B10110101010101,
+eval,
+output;
+set address %B11010101010101,
+eval,
+output;
+set address %B11110101010101,
+eval,
+output;
+
+set load 1,
+set address %B11110101010101,
+set in %B0101010101010101,
+tick,
+output,
+tock,
+output;
+
+set load 0,
+set address %B00010101010101,
+tick,
+output;
+tock,
+output;
+set address %B00110101010101,
+eval,
+output;
+set address %B01010101010101,
+eval,
+output;
+set address %B01110101010101,
+eval,
+output;
+set address %B10010101010101,
+eval,
+output;
+set address %B10110101010101,
+eval,
+output;
+set address %B11010101010101,
+eval,
+output;
+set address %B11110101010101,
+eval,
+output;
diff --git a/3/RAM4K.cmp b/3/RAM4K.cmp
new file mode 100644
index 0000000..5c0be36
--- /dev/null
+++ b/3/RAM4K.cmp
@@ -0,0 +1,320 @@
+|time | in |load|address | out |
+| 0+ | 0 | 0 | 0 | 0 |
+| 1 | 0 | 0 | 0 | 0 |
+| 1+ | 0 | 1 | 0 | 0 |
+| 2 | 0 | 1 | 0 | 0 |
+| 2+ | 1111 | 0 | 0 | 0 |
+| 3 | 1111 | 0 | 0 | 0 |
+| 3+ | 1111 | 1 | 1111 | 0 |
+| 4 | 1111 | 1 | 1111 | 1111 |
+| 4+ | 1111 | 0 | 0 | 0 |
+| 5 | 1111 | 0 | 0 | 0 |
+| 5+ | 3513 | 0 | 3513 | 0 |
+| 6 | 3513 | 0 | 3513 | 0 |
+| 6+ | 3513 | 1 | 3513 | 0 |
+| 7 | 3513 | 1 | 3513 | 3513 |
+| 7+ | 3513 | 0 | 3513 | 3513 |
+| 8 | 3513 | 0 | 3513 | 3513 |
+| 8 | 3513 | 0 | 1111 | 1111 |
+| 8+ | 4095 | 0 | 1111 | 1111 |
+| 9 | 4095 | 0 | 1111 | 1111 |
+| 9+ | 4095 | 1 | 4095 | 0 |
+| 10 | 4095 | 1 | 4095 | 4095 |
+| 10+ | 4095 | 0 | 4095 | 4095 |
+| 11 | 4095 | 0 | 4095 | 4095 |
+| 11 | 4095 | 0 | 3513 | 3513 |
+| 11 | 4095 | 0 | 4095 | 4095 |
+| 11+ | 4095 | 0 | 2728 | 0 |
+| 12 | 4095 | 0 | 2728 | 0 |
+| 12 | 4095 | 0 | 2729 | 0 |
+| 12 | 4095 | 0 | 2730 | 0 |
+| 12 | 4095 | 0 | 2731 | 0 |
+| 12 | 4095 | 0 | 2732 | 0 |
+| 12 | 4095 | 0 | 2733 | 0 |
+| 12 | 4095 | 0 | 2734 | 0 |
+| 12 | 4095 | 0 | 2735 | 0 |
+| 12+ | 21845 | 1 | 2728 | 0 |
+| 13 | 21845 | 1 | 2728 | 21845 |
+| 13+ | 21845 | 1 | 2729 | 0 |
+| 14 | 21845 | 1 | 2729 | 21845 |
+| 14+ | 21845 | 1 | 2730 | 0 |
+| 15 | 21845 | 1 | 2730 | 21845 |
+| 15+ | 21845 | 1 | 2731 | 0 |
+| 16 | 21845 | 1 | 2731 | 21845 |
+| 16+ | 21845 | 1 | 2732 | 0 |
+| 17 | 21845 | 1 | 2732 | 21845 |
+| 17+ | 21845 | 1 | 2733 | 0 |
+| 18 | 21845 | 1 | 2733 | 21845 |
+| 18+ | 21845 | 1 | 2734 | 0 |
+| 19 | 21845 | 1 | 2734 | 21845 |
+| 19+ | 21845 | 1 | 2735 | 0 |
+| 20 | 21845 | 1 | 2735 | 21845 |
+| 20+ | 21845 | 0 | 2728 | 21845 |
+| 21 | 21845 | 0 | 2728 | 21845 |
+| 21 | 21845 | 0 | 2729 | 21845 |
+| 21 | 21845 | 0 | 2730 | 21845 |
+| 21 | 21845 | 0 | 2731 | 21845 |
+| 21 | 21845 | 0 | 2732 | 21845 |
+| 21 | 21845 | 0 | 2733 | 21845 |
+| 21 | 21845 | 0 | 2734 | 21845 |
+| 21 | 21845 | 0 | 2735 | 21845 |
+| 21+ | -21846 | 1 | 2728 | 21845 |
+| 22 | -21846 | 1 | 2728 | -21846 |
+| 22+ | -21846 | 0 | 2728 | -21846 |
+| 23 | -21846 | 0 | 2728 | -21846 |
+| 23 | -21846 | 0 | 2729 | 21845 |
+| 23 | -21846 | 0 | 2730 | 21845 |
+| 23 | -21846 | 0 | 2731 | 21845 |
+| 23 | -21846 | 0 | 2732 | 21845 |
+| 23 | -21846 | 0 | 2733 | 21845 |
+| 23 | -21846 | 0 | 2734 | 21845 |
+| 23 | -21846 | 0 | 2735 | 21845 |
+| 23+ | 21845 | 1 | 2728 | -21846 |
+| 24 | 21845 | 1 | 2728 | 21845 |
+| 24+ | -21846 | 1 | 2729 | 21845 |
+| 25 | -21846 | 1 | 2729 | -21846 |
+| 25+ | -21846 | 0 | 2728 | 21845 |
+| 26 | -21846 | 0 | 2728 | 21845 |
+| 26 | -21846 | 0 | 2729 | -21846 |
+| 26 | -21846 | 0 | 2730 | 21845 |
+| 26 | -21846 | 0 | 2731 | 21845 |
+| 26 | -21846 | 0 | 2732 | 21845 |
+| 26 | -21846 | 0 | 2733 | 21845 |
+| 26 | -21846 | 0 | 2734 | 21845 |
+| 26 | -21846 | 0 | 2735 | 21845 |
+| 26+ | 21845 | 1 | 2729 | -21846 |
+| 27 | 21845 | 1 | 2729 | 21845 |
+| 27+ | -21846 | 1 | 2730 | 21845 |
+| 28 | -21846 | 1 | 2730 | -21846 |
+| 28+ | -21846 | 0 | 2728 | 21845 |
+| 29 | -21846 | 0 | 2728 | 21845 |
+| 29 | -21846 | 0 | 2729 | 21845 |
+| 29 | -21846 | 0 | 2730 | -21846 |
+| 29 | -21846 | 0 | 2731 | 21845 |
+| 29 | -21846 | 0 | 2732 | 21845 |
+| 29 | -21846 | 0 | 2733 | 21845 |
+| 29 | -21846 | 0 | 2734 | 21845 |
+| 29 | -21846 | 0 | 2735 | 21845 |
+| 29+ | 21845 | 1 | 2730 | -21846 |
+| 30 | 21845 | 1 | 2730 | 21845 |
+| 30+ | -21846 | 1 | 2731 | 21845 |
+| 31 | -21846 | 1 | 2731 | -21846 |
+| 31+ | -21846 | 0 | 2728 | 21845 |
+| 32 | -21846 | 0 | 2728 | 21845 |
+| 32 | -21846 | 0 | 2729 | 21845 |
+| 32 | -21846 | 0 | 2730 | 21845 |
+| 32 | -21846 | 0 | 2731 | -21846 |
+| 32 | -21846 | 0 | 2732 | 21845 |
+| 32 | -21846 | 0 | 2733 | 21845 |
+| 32 | -21846 | 0 | 2734 | 21845 |
+| 32 | -21846 | 0 | 2735 | 21845 |
+| 32+ | 21845 | 1 | 2731 | -21846 |
+| 33 | 21845 | 1 | 2731 | 21845 |
+| 33+ | -21846 | 1 | 2732 | 21845 |
+| 34 | -21846 | 1 | 2732 | -21846 |
+| 34+ | -21846 | 0 | 2728 | 21845 |
+| 35 | -21846 | 0 | 2728 | 21845 |
+| 35 | -21846 | 0 | 2729 | 21845 |
+| 35 | -21846 | 0 | 2730 | 21845 |
+| 35 | -21846 | 0 | 2731 | 21845 |
+| 35 | -21846 | 0 | 2732 | -21846 |
+| 35 | -21846 | 0 | 2733 | 21845 |
+| 35 | -21846 | 0 | 2734 | 21845 |
+| 35 | -21846 | 0 | 2735 | 21845 |
+| 35+ | 21845 | 1 | 2732 | -21846 |
+| 36 | 21845 | 1 | 2732 | 21845 |
+| 36+ | -21846 | 1 | 2733 | 21845 |
+| 37 | -21846 | 1 | 2733 | -21846 |
+| 37+ | -21846 | 0 | 2728 | 21845 |
+| 38 | -21846 | 0 | 2728 | 21845 |
+| 38 | -21846 | 0 | 2729 | 21845 |
+| 38 | -21846 | 0 | 2730 | 21845 |
+| 38 | -21846 | 0 | 2731 | 21845 |
+| 38 | -21846 | 0 | 2732 | 21845 |
+| 38 | -21846 | 0 | 2733 | -21846 |
+| 38 | -21846 | 0 | 2734 | 21845 |
+| 38 | -21846 | 0 | 2735 | 21845 |
+| 38+ | 21845 | 1 | 2733 | -21846 |
+| 39 | 21845 | 1 | 2733 | 21845 |
+| 39+ | -21846 | 1 | 2734 | 21845 |
+| 40 | -21846 | 1 | 2734 | -21846 |
+| 40+ | -21846 | 0 | 2728 | 21845 |
+| 41 | -21846 | 0 | 2728 | 21845 |
+| 41 | -21846 | 0 | 2729 | 21845 |
+| 41 | -21846 | 0 | 2730 | 21845 |
+| 41 | -21846 | 0 | 2731 | 21845 |
+| 41 | -21846 | 0 | 2732 | 21845 |
+| 41 | -21846 | 0 | 2733 | 21845 |
+| 41 | -21846 | 0 | 2734 | -21846 |
+| 41 | -21846 | 0 | 2735 | 21845 |
+| 41+ | 21845 | 1 | 2734 | -21846 |
+| 42 | 21845 | 1 | 2734 | 21845 |
+| 42+ | -21846 | 1 | 2735 | 21845 |
+| 43 | -21846 | 1 | 2735 | -21846 |
+| 43+ | -21846 | 0 | 2728 | 21845 |
+| 44 | -21846 | 0 | 2728 | 21845 |
+| 44 | -21846 | 0 | 2729 | 21845 |
+| 44 | -21846 | 0 | 2730 | 21845 |
+| 44 | -21846 | 0 | 2731 | 21845 |
+| 44 | -21846 | 0 | 2732 | 21845 |
+| 44 | -21846 | 0 | 2733 | 21845 |
+| 44 | -21846 | 0 | 2734 | 21845 |
+| 44 | -21846 | 0 | 2735 | -21846 |
+| 44+ | 21845 | 1 | 2735 | -21846 |
+| 45 | 21845 | 1 | 2735 | 21845 |
+| 45+ | 21845 | 0 | 2728 | 21845 |
+| 46 | 21845 | 0 | 2728 | 21845 |
+| 46 | 21845 | 0 | 2729 | 21845 |
+| 46 | 21845 | 0 | 2730 | 21845 |
+| 46 | 21845 | 0 | 2731 | 21845 |
+| 46 | 21845 | 0 | 2732 | 21845 |
+| 46 | 21845 | 0 | 2733 | 21845 |
+| 46 | 21845 | 0 | 2734 | 21845 |
+| 46 | 21845 | 0 | 2735 | 21845 |
+| 46+ | 21845 | 0 | 341 | 0 |
+| 47 | 21845 | 0 | 341 | 0 |
+| 47 | 21845 | 0 | 853 | 0 |
+| 47 | 21845 | 0 | 1365 | 0 |
+| 47 | 21845 | 0 | 1877 | 0 |
+| 47 | 21845 | 0 | 2389 | 0 |
+| 47 | 21845 | 0 | 2901 | 0 |
+| 47 | 21845 | 0 | 3413 | 0 |
+| 47 | 21845 | 0 | 3925 | 0 |
+| 47+ | 21845 | 1 | 341 | 0 |
+| 48 | 21845 | 1 | 341 | 21845 |
+| 48+ | 21845 | 1 | 853 | 0 |
+| 49 | 21845 | 1 | 853 | 21845 |
+| 49+ | 21845 | 1 | 1365 | 0 |
+| 50 | 21845 | 1 | 1365 | 21845 |
+| 50+ | 21845 | 1 | 1877 | 0 |
+| 51 | 21845 | 1 | 1877 | 21845 |
+| 51+ | 21845 | 1 | 2389 | 0 |
+| 52 | 21845 | 1 | 2389 | 21845 |
+| 52+ | 21845 | 1 | 2901 | 0 |
+| 53 | 21845 | 1 | 2901 | 21845 |
+| 53+ | 21845 | 1 | 3413 | 0 |
+| 54 | 21845 | 1 | 3413 | 21845 |
+| 54+ | 21845 | 1 | 3925 | 0 |
+| 55 | 21845 | 1 | 3925 | 21845 |
+| 55+ | 21845 | 0 | 341 | 21845 |
+| 56 | 21845 | 0 | 341 | 21845 |
+| 56 | 21845 | 0 | 853 | 21845 |
+| 56 | 21845 | 0 | 1365 | 21845 |
+| 56 | 21845 | 0 | 1877 | 21845 |
+| 56 | 21845 | 0 | 2389 | 21845 |
+| 56 | 21845 | 0 | 2901 | 21845 |
+| 56 | 21845 | 0 | 3413 | 21845 |
+| 56 | 21845 | 0 | 3925 | 21845 |
+| 56+ | -21846 | 1 | 341 | 21845 |
+| 57 | -21846 | 1 | 341 | -21846 |
+| 57+ | -21846 | 0 | 341 | -21846 |
+| 58 | -21846 | 0 | 341 | -21846 |
+| 58 | -21846 | 0 | 853 | 21845 |
+| 58 | -21846 | 0 | 1365 | 21845 |
+| 58 | -21846 | 0 | 1877 | 21845 |
+| 58 | -21846 | 0 | 2389 | 21845 |
+| 58 | -21846 | 0 | 2901 | 21845 |
+| 58 | -21846 | 0 | 3413 | 21845 |
+| 58 | -21846 | 0 | 3925 | 21845 |
+| 58+ | 21845 | 1 | 341 | -21846 |
+| 59 | 21845 | 1 | 341 | 21845 |
+| 59+ | -21846 | 1 | 853 | 21845 |
+| 60 | -21846 | 1 | 853 | -21846 |
+| 60+ | -21846 | 0 | 341 | 21845 |
+| 61 | -21846 | 0 | 341 | 21845 |
+| 61 | -21846 | 0 | 853 | -21846 |
+| 61 | -21846 | 0 | 1365 | 21845 |
+| 61 | -21846 | 0 | 1877 | 21845 |
+| 61 | -21846 | 0 | 2389 | 21845 |
+| 61 | -21846 | 0 | 2901 | 21845 |
+| 61 | -21846 | 0 | 3413 | 21845 |
+| 61 | -21846 | 0 | 3925 | 21845 |
+| 61+ | 21845 | 1 | 853 | -21846 |
+| 62 | 21845 | 1 | 853 | 21845 |
+| 62+ | -21846 | 1 | 1365 | 21845 |
+| 63 | -21846 | 1 | 1365 | -21846 |
+| 63+ | -21846 | 0 | 341 | 21845 |
+| 64 | -21846 | 0 | 341 | 21845 |
+| 64 | -21846 | 0 | 853 | 21845 |
+| 64 | -21846 | 0 | 1365 | -21846 |
+| 64 | -21846 | 0 | 1877 | 21845 |
+| 64 | -21846 | 0 | 2389 | 21845 |
+| 64 | -21846 | 0 | 2901 | 21845 |
+| 64 | -21846 | 0 | 3413 | 21845 |
+| 64 | -21846 | 0 | 3925 | 21845 |
+| 64+ | 21845 | 1 | 1365 | -21846 |
+| 65 | 21845 | 1 | 1365 | 21845 |
+| 65+ | -21846 | 1 | 1877 | 21845 |
+| 66 | -21846 | 1 | 1877 | -21846 |
+| 66+ | -21846 | 0 | 341 | 21845 |
+| 67 | -21846 | 0 | 341 | 21845 |
+| 67 | -21846 | 0 | 853 | 21845 |
+| 67 | -21846 | 0 | 1365 | 21845 |
+| 67 | -21846 | 0 | 1877 | -21846 |
+| 67 | -21846 | 0 | 2389 | 21845 |
+| 67 | -21846 | 0 | 2901 | 21845 |
+| 67 | -21846 | 0 | 3413 | 21845 |
+| 67 | -21846 | 0 | 3925 | 21845 |
+| 67+ | 21845 | 1 | 1877 | -21846 |
+| 68 | 21845 | 1 | 1877 | 21845 |
+| 68+ | -21846 | 1 | 2389 | 21845 |
+| 69 | -21846 | 1 | 2389 | -21846 |
+| 69+ | -21846 | 0 | 341 | 21845 |
+| 70 | -21846 | 0 | 341 | 21845 |
+| 70 | -21846 | 0 | 853 | 21845 |
+| 70 | -21846 | 0 | 1365 | 21845 |
+| 70 | -21846 | 0 | 1877 | 21845 |
+| 70 | -21846 | 0 | 2389 | -21846 |
+| 70 | -21846 | 0 | 2901 | 21845 |
+| 70 | -21846 | 0 | 3413 | 21845 |
+| 70 | -21846 | 0 | 3925 | 21845 |
+| 70+ | 21845 | 1 | 2389 | -21846 |
+| 71 | 21845 | 1 | 2389 | 21845 |
+| 71+ | -21846 | 1 | 2901 | 21845 |
+| 72 | -21846 | 1 | 2901 | -21846 |
+| 72+ | -21846 | 0 | 341 | 21845 |
+| 73 | -21846 | 0 | 341 | 21845 |
+| 73 | -21846 | 0 | 853 | 21845 |
+| 73 | -21846 | 0 | 1365 | 21845 |
+| 73 | -21846 | 0 | 1877 | 21845 |
+| 73 | -21846 | 0 | 2389 | 21845 |
+| 73 | -21846 | 0 | 2901 | -21846 |
+| 73 | -21846 | 0 | 3413 | 21845 |
+| 73 | -21846 | 0 | 3925 | 21845 |
+| 73+ | 21845 | 1 | 2901 | -21846 |
+| 74 | 21845 | 1 | 2901 | 21845 |
+| 74+ | -21846 | 1 | 3413 | 21845 |
+| 75 | -21846 | 1 | 3413 | -21846 |
+| 75+ | -21846 | 0 | 341 | 21845 |
+| 76 | -21846 | 0 | 341 | 21845 |
+| 76 | -21846 | 0 | 853 | 21845 |
+| 76 | -21846 | 0 | 1365 | 21845 |
+| 76 | -21846 | 0 | 1877 | 21845 |
+| 76 | -21846 | 0 | 2389 | 21845 |
+| 76 | -21846 | 0 | 2901 | 21845 |
+| 76 | -21846 | 0 | 3413 | -21846 |
+| 76 | -21846 | 0 | 3925 | 21845 |
+| 76+ | 21845 | 1 | 3413 | -21846 |
+| 77 | 21845 | 1 | 3413 | 21845 |
+| 77+ | -21846 | 1 | 3925 | 21845 |
+| 78 | -21846 | 1 | 3925 | -21846 |
+| 78+ | -21846 | 0 | 341 | 21845 |
+| 79 | -21846 | 0 | 341 | 21845 |
+| 79 | -21846 | 0 | 853 | 21845 |
+| 79 | -21846 | 0 | 1365 | 21845 |
+| 79 | -21846 | 0 | 1877 | 21845 |
+| 79 | -21846 | 0 | 2389 | 21845 |
+| 79 | -21846 | 0 | 2901 | 21845 |
+| 79 | -21846 | 0 | 3413 | 21845 |
+| 79 | -21846 | 0 | 3925 | -21846 |
+| 79+ | 21845 | 1 | 3925 | -21846 |
+| 80 | 21845 | 1 | 3925 | 21845 |
+| 80+ | 21845 | 0 | 341 | 21845 |
+| 81 | 21845 | 0 | 341 | 21845 |
+| 81 | 21845 | 0 | 853 | 21845 |
+| 81 | 21845 | 0 | 1365 | 21845 |
+| 81 | 21845 | 0 | 1877 | 21845 |
+| 81 | 21845 | 0 | 2389 | 21845 |
+| 81 | 21845 | 0 | 2901 | 21845 |
+| 81 | 21845 | 0 | 3413 | 21845 |
+| 81 | 21845 | 0 | 3925 | 21845 |
diff --git a/3/RAM4K.hdl b/3/RAM4K.hdl
new file mode 100644
index 0000000..2d1f06b
--- /dev/null
+++ b/3/RAM4K.hdl
@@ -0,0 +1,16 @@
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+/**
+ * Memory of 4K 16-bit registers.
+ * If load is asserted, the value of the register selected by
+ * address is set to in; Otherwise, the value does not change.
+ * The value of the selected register is emitted by out.
+ */
+CHIP RAM4K {
+ IN in[16], load, address[12];
+ OUT out[16];
+
+ PARTS:
+ //// Replace this comment with your code.
+}
diff --git a/03/b/RAM4K.tst b/3/RAM4K.tst
similarity index 91%
rename from 03/b/RAM4K.tst
rename to 3/RAM4K.tst
index 7a5aa12..4bb0182 100644
--- a/03/b/RAM4K.tst
+++ b/3/RAM4K.tst
@@ -1,1026 +1,1025 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/03/b/RAM4K.tst
-
-load RAM4K.hdl,
-output-file RAM4K.out,
-compare-to RAM4K.cmp,
-output-list time%S1.4.1 in%D1.6.1 load%B2.1.2 address%D2.4.2 out%D1.6.1;
-
-set in 0,
-set load 0,
-set address 0,
-tick,
-output;
-tock,
-output;
-
-set load 1,
-tick,
-output;
-tock,
-output;
-
-set in 1111,
-set load 0,
-tick,
-output;
-tock,
-output;
-
-set load 1,
-set address 1111,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address 0,
-tick,
-output;
-tock,
-output;
-
-set in 3513,
-set address 3513,
-tick,
-output;
-tock,
-output;
-
-set load 1,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-tick,
-output;
-tock,
-output;
-
-set address 1111,
-eval,
-output;
-
-set in 4095,
-tick,
-output;
-tock,
-output;
-
-set load 1,
-set address 4095,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-tick,
-output;
-tock,
-output;
-
-set address 3513,
-eval,
-output;
-
-set address 4095,
-eval,
-output;
-
-
-set load 0,
-set address %B101010101000,
-tick,
-output;
-tock,
-output;
-set address %B101010101001,
-eval,
-output;
-set address %B101010101010,
-eval,
-output;
-set address %B101010101011,
-eval,
-output;
-set address %B101010101100,
-eval,
-output;
-set address %B101010101101,
-eval,
-output;
-set address %B101010101110,
-eval,
-output;
-set address %B101010101111,
-eval,
-output;
-
-set load 1,
-set in %B0101010101010101,
-set address %B101010101000,
-tick,
-output;
-tock,
-output;
-set address %B101010101001,
-tick,
-output,
-tock,
-output;
-set address %B101010101010,
-tick,
-output,
-tock,
-output;
-set address %B101010101011,
-tick,
-output,
-tock,
-output;
-set address %B101010101100,
-tick,
-output,
-tock,
-output;
-set address %B101010101101,
-tick,
-output,
-tock,
-output;
-set address %B101010101110,
-tick,
-output,
-tock,
-output;
-set address %B101010101111,
-tick,
-output,
-tock,
-output;
-
-set load 0,
-set address %B101010101000,
-tick,
-output;
-tock,
-output;
-set address %B101010101001,
-eval,
-output;
-set address %B101010101010,
-eval,
-output;
-set address %B101010101011,
-eval,
-output;
-set address %B101010101100,
-eval,
-output;
-set address %B101010101101,
-eval,
-output;
-set address %B101010101110,
-eval,
-output;
-set address %B101010101111,
-eval,
-output;
-
-set load 1,
-set address %B101010101000,
-set in %B1010101010101010,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address %B101010101000,
-tick,
-output;
-tock,
-output;
-set address %B101010101001,
-eval,
-output;
-set address %B101010101010,
-eval,
-output;
-set address %B101010101011,
-eval,
-output;
-set address %B101010101100,
-eval,
-output;
-set address %B101010101101,
-eval,
-output;
-set address %B101010101110,
-eval,
-output;
-set address %B101010101111,
-eval,
-output;
-
-set load 1,
-set address %B101010101000,
-set in %B0101010101010101,
-tick,
-output,
-tock,
-output;
-set address %B101010101001,
-set in %B1010101010101010,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address %B101010101000,
-tick,
-output;
-tock,
-output;
-set address %B101010101001,
-eval,
-output;
-set address %B101010101010,
-eval,
-output;
-set address %B101010101011,
-eval,
-output;
-set address %B101010101100,
-eval,
-output;
-set address %B101010101101,
-eval,
-output;
-set address %B101010101110,
-eval,
-output;
-set address %B101010101111,
-eval,
-output;
-
-set load 1,
-set address %B101010101001,
-set in %B0101010101010101,
-tick,
-output,
-tock,
-output;
-set address %B101010101010,
-set in %B1010101010101010,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address %B101010101000,
-tick,
-output;
-tock,
-output;
-set address %B101010101001,
-eval,
-output;
-set address %B101010101010,
-eval,
-output;
-set address %B101010101011,
-eval,
-output;
-set address %B101010101100,
-eval,
-output;
-set address %B101010101101,
-eval,
-output;
-set address %B101010101110,
-eval,
-output;
-set address %B101010101111,
-eval,
-output;
-
-set load 1,
-set address %B101010101010,
-set in %B0101010101010101,
-tick,
-output,
-tock,
-output;
-set address %B101010101011,
-set in %B1010101010101010,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address %B101010101000,
-tick,
-output;
-tock,
-output;
-set address %B101010101001,
-eval,
-output;
-set address %B101010101010,
-eval,
-output;
-set address %B101010101011,
-eval,
-output;
-set address %B101010101100,
-eval,
-output;
-set address %B101010101101,
-eval,
-output;
-set address %B101010101110,
-eval,
-output;
-set address %B101010101111,
-eval,
-output;
-
-set load 1,
-set address %B101010101011,
-set in %B0101010101010101,
-tick,
-output,
-tock,
-output;
-set address %B101010101100,
-set in %B1010101010101010,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address %B101010101000,
-tick,
-output;
-tock,
-output;
-set address %B101010101001,
-eval,
-output;
-set address %B101010101010,
-eval,
-output;
-set address %B101010101011,
-eval,
-output;
-set address %B101010101100,
-eval,
-output;
-set address %B101010101101,
-eval,
-output;
-set address %B101010101110,
-eval,
-output;
-set address %B101010101111,
-eval,
-output;
-
-set load 1,
-set address %B101010101100,
-set in %B0101010101010101,
-tick,
-output,
-tock,
-output;
-set address %B101010101101,
-set in %B1010101010101010,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address %B101010101000,
-tick,
-output;
-tock,
-output;
-set address %B101010101001,
-eval,
-output;
-set address %B101010101010,
-eval,
-output;
-set address %B101010101011,
-eval,
-output;
-set address %B101010101100,
-eval,
-output;
-set address %B101010101101,
-eval,
-output;
-set address %B101010101110,
-eval,
-output;
-set address %B101010101111,
-eval,
-output;
-
-set load 1,
-set address %B101010101101,
-set in %B0101010101010101,
-tick,
-output,
-tock,
-output;
-set address %B101010101110,
-set in %B1010101010101010,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address %B101010101000,
-tick,
-output;
-tock,
-output;
-set address %B101010101001,
-eval,
-output;
-set address %B101010101010,
-eval,
-output;
-set address %B101010101011,
-eval,
-output;
-set address %B101010101100,
-eval,
-output;
-set address %B101010101101,
-eval,
-output;
-set address %B101010101110,
-eval,
-output;
-set address %B101010101111,
-eval,
-output;
-
-set load 1,
-set address %B101010101110,
-set in %B0101010101010101,
-tick,
-output,
-tock,
-output;
-set address %B101010101111,
-set in %B1010101010101010,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address %B101010101000,
-tick,
-output;
-tock,
-output;
-set address %B101010101001,
-eval,
-output;
-set address %B101010101010,
-eval,
-output;
-set address %B101010101011,
-eval,
-output;
-set address %B101010101100,
-eval,
-output;
-set address %B101010101101,
-eval,
-output;
-set address %B101010101110,
-eval,
-output;
-set address %B101010101111,
-eval,
-output;
-
-set load 1,
-set address %B101010101111,
-set in %B0101010101010101,
-tick,
-output,
-tock,
-output;
-
-set load 0,
-set address %B101010101000,
-tick,
-output;
-tock,
-output;
-set address %B101010101001,
-eval,
-output;
-set address %B101010101010,
-eval,
-output;
-set address %B101010101011,
-eval,
-output;
-set address %B101010101100,
-eval,
-output;
-set address %B101010101101,
-eval,
-output;
-set address %B101010101110,
-eval,
-output;
-set address %B101010101111,
-eval,
-output;
-
-
-set load 0,
-set address %B000101010101,
-tick,
-output;
-tock,
-output;
-set address %B001101010101,
-eval,
-output;
-set address %B010101010101,
-eval,
-output;
-set address %B011101010101,
-eval,
-output;
-set address %B100101010101,
-eval,
-output;
-set address %B101101010101,
-eval,
-output;
-set address %B110101010101,
-eval,
-output;
-set address %B111101010101,
-eval,
-output;
-
-set load 1,
-set in %B0101010101010101,
-set address %B000101010101,
-tick,
-output;
-tock,
-output;
-set address %B001101010101,
-tick,
-output,
-tock,
-output;
-set address %B010101010101,
-tick,
-output,
-tock,
-output;
-set address %B011101010101,
-tick,
-output,
-tock,
-output;
-set address %B100101010101,
-tick,
-output,
-tock,
-output;
-set address %B101101010101,
-tick,
-output,
-tock,
-output;
-set address %B110101010101,
-tick,
-output,
-tock,
-output;
-set address %B111101010101,
-tick,
-output,
-tock,
-output;
-
-set load 0,
-set address %B000101010101,
-tick,
-output;
-tock,
-output;
-set address %B001101010101,
-eval,
-output;
-set address %B010101010101,
-eval,
-output;
-set address %B011101010101,
-eval,
-output;
-set address %B100101010101,
-eval,
-output;
-set address %B101101010101,
-eval,
-output;
-set address %B110101010101,
-eval,
-output;
-set address %B111101010101,
-eval,
-output;
-
-set load 1,
-set address %B000101010101,
-set in %B1010101010101010,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address %B000101010101,
-tick,
-output;
-tock,
-output;
-set address %B001101010101,
-eval,
-output;
-set address %B010101010101,
-eval,
-output;
-set address %B011101010101,
-eval,
-output;
-set address %B100101010101,
-eval,
-output;
-set address %B101101010101,
-eval,
-output;
-set address %B110101010101,
-eval,
-output;
-set address %B111101010101,
-eval,
-output;
-
-set load 1,
-set address %B000101010101,
-set in %B0101010101010101,
-tick,
-output,
-tock,
-output;
-set address %B001101010101,
-set in %B1010101010101010,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address %B000101010101,
-tick,
-output;
-tock,
-output;
-set address %B001101010101,
-eval,
-output;
-set address %B010101010101,
-eval,
-output;
-set address %B011101010101,
-eval,
-output;
-set address %B100101010101,
-eval,
-output;
-set address %B101101010101,
-eval,
-output;
-set address %B110101010101,
-eval,
-output;
-set address %B111101010101,
-eval,
-output;
-
-set load 1,
-set address %B001101010101,
-set in %B0101010101010101,
-tick,
-output,
-tock,
-output;
-set address %B010101010101,
-set in %B1010101010101010,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address %B000101010101,
-tick,
-output;
-tock,
-output;
-set address %B001101010101,
-eval,
-output;
-set address %B010101010101,
-eval,
-output;
-set address %B011101010101,
-eval,
-output;
-set address %B100101010101,
-eval,
-output;
-set address %B101101010101,
-eval,
-output;
-set address %B110101010101,
-eval,
-output;
-set address %B111101010101,
-eval,
-output;
-
-set load 1,
-set address %B010101010101,
-set in %B0101010101010101,
-tick,
-output,
-tock,
-output;
-set address %B011101010101,
-set in %B1010101010101010,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address %B000101010101,
-tick,
-output;
-tock,
-output;
-set address %B001101010101,
-eval,
-output;
-set address %B010101010101,
-eval,
-output;
-set address %B011101010101,
-eval,
-output;
-set address %B100101010101,
-eval,
-output;
-set address %B101101010101,
-eval,
-output;
-set address %B110101010101,
-eval,
-output;
-set address %B111101010101,
-eval,
-output;
-
-set load 1,
-set address %B011101010101,
-set in %B0101010101010101,
-tick,
-output,
-tock,
-output;
-set address %B100101010101,
-set in %B1010101010101010,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address %B000101010101,
-tick,
-output;
-tock,
-output;
-set address %B001101010101,
-eval,
-output;
-set address %B010101010101,
-eval,
-output;
-set address %B011101010101,
-eval,
-output;
-set address %B100101010101,
-eval,
-output;
-set address %B101101010101,
-eval,
-output;
-set address %B110101010101,
-eval,
-output;
-set address %B111101010101,
-eval,
-output;
-
-set load 1,
-set address %B100101010101,
-set in %B0101010101010101,
-tick,
-output,
-tock,
-output;
-set address %B101101010101,
-set in %B1010101010101010,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address %B000101010101,
-tick,
-output;
-tock,
-output;
-set address %B001101010101,
-eval,
-output;
-set address %B010101010101,
-eval,
-output;
-set address %B011101010101,
-eval,
-output;
-set address %B100101010101,
-eval,
-output;
-set address %B101101010101,
-eval,
-output;
-set address %B110101010101,
-eval,
-output;
-set address %B111101010101,
-eval,
-output;
-
-set load 1,
-set address %B101101010101,
-set in %B0101010101010101,
-tick,
-output,
-tock,
-output;
-set address %B110101010101,
-set in %B1010101010101010,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address %B000101010101,
-tick,
-output;
-tock,
-output;
-set address %B001101010101,
-eval,
-output;
-set address %B010101010101,
-eval,
-output;
-set address %B011101010101,
-eval,
-output;
-set address %B100101010101,
-eval,
-output;
-set address %B101101010101,
-eval,
-output;
-set address %B110101010101,
-eval,
-output;
-set address %B111101010101,
-eval,
-output;
-
-set load 1,
-set address %B110101010101,
-set in %B0101010101010101,
-tick,
-output,
-tock,
-output;
-set address %B111101010101,
-set in %B1010101010101010,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address %B000101010101,
-tick,
-output;
-tock,
-output;
-set address %B001101010101,
-eval,
-output;
-set address %B010101010101,
-eval,
-output;
-set address %B011101010101,
-eval,
-output;
-set address %B100101010101,
-eval,
-output;
-set address %B101101010101,
-eval,
-output;
-set address %B110101010101,
-eval,
-output;
-set address %B111101010101,
-eval,
-output;
-
-set load 1,
-set address %B111101010101,
-set in %B0101010101010101,
-tick,
-output,
-tock,
-output;
-
-set load 0,
-set address %B000101010101,
-tick,
-output;
-tock,
-output;
-set address %B001101010101,
-eval,
-output;
-set address %B010101010101,
-eval,
-output;
-set address %B011101010101,
-eval,
-output;
-set address %B100101010101,
-eval,
-output;
-set address %B101101010101,
-eval,
-output;
-set address %B110101010101,
-eval,
-output;
-set address %B111101010101,
-eval,
-output;
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+load RAM4K.hdl,
+output-file RAM4K.out,
+compare-to RAM4K.cmp,
+output-list time%S1.3.1 in%D1.6.1 load%B2.1.1 address%D2.4.2 out%D1.6.1;
+
+set in 0,
+set load 0,
+set address 0,
+tick,
+output;
+tock,
+output;
+
+set load 1,
+tick,
+output;
+tock,
+output;
+
+set in 1111,
+set load 0,
+tick,
+output;
+tock,
+output;
+
+set load 1,
+set address 1111,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address 0,
+tick,
+output;
+tock,
+output;
+
+set in 3513,
+set address 3513,
+tick,
+output;
+tock,
+output;
+
+set load 1,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+tick,
+output;
+tock,
+output;
+
+set address 1111,
+eval,
+output;
+
+set in 4095,
+tick,
+output;
+tock,
+output;
+
+set load 1,
+set address 4095,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+tick,
+output;
+tock,
+output;
+
+set address 3513,
+eval,
+output;
+
+set address 4095,
+eval,
+output;
+
+
+set load 0,
+set address %B101010101000,
+tick,
+output;
+tock,
+output;
+set address %B101010101001,
+eval,
+output;
+set address %B101010101010,
+eval,
+output;
+set address %B101010101011,
+eval,
+output;
+set address %B101010101100,
+eval,
+output;
+set address %B101010101101,
+eval,
+output;
+set address %B101010101110,
+eval,
+output;
+set address %B101010101111,
+eval,
+output;
+
+set load 1,
+set in %B0101010101010101,
+set address %B101010101000,
+tick,
+output;
+tock,
+output;
+set address %B101010101001,
+tick,
+output,
+tock,
+output;
+set address %B101010101010,
+tick,
+output,
+tock,
+output;
+set address %B101010101011,
+tick,
+output,
+tock,
+output;
+set address %B101010101100,
+tick,
+output,
+tock,
+output;
+set address %B101010101101,
+tick,
+output,
+tock,
+output;
+set address %B101010101110,
+tick,
+output,
+tock,
+output;
+set address %B101010101111,
+tick,
+output,
+tock,
+output;
+
+set load 0,
+set address %B101010101000,
+tick,
+output;
+tock,
+output;
+set address %B101010101001,
+eval,
+output;
+set address %B101010101010,
+eval,
+output;
+set address %B101010101011,
+eval,
+output;
+set address %B101010101100,
+eval,
+output;
+set address %B101010101101,
+eval,
+output;
+set address %B101010101110,
+eval,
+output;
+set address %B101010101111,
+eval,
+output;
+
+set load 1,
+set address %B101010101000,
+set in %B1010101010101010,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address %B101010101000,
+tick,
+output;
+tock,
+output;
+set address %B101010101001,
+eval,
+output;
+set address %B101010101010,
+eval,
+output;
+set address %B101010101011,
+eval,
+output;
+set address %B101010101100,
+eval,
+output;
+set address %B101010101101,
+eval,
+output;
+set address %B101010101110,
+eval,
+output;
+set address %B101010101111,
+eval,
+output;
+
+set load 1,
+set address %B101010101000,
+set in %B0101010101010101,
+tick,
+output,
+tock,
+output;
+set address %B101010101001,
+set in %B1010101010101010,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address %B101010101000,
+tick,
+output;
+tock,
+output;
+set address %B101010101001,
+eval,
+output;
+set address %B101010101010,
+eval,
+output;
+set address %B101010101011,
+eval,
+output;
+set address %B101010101100,
+eval,
+output;
+set address %B101010101101,
+eval,
+output;
+set address %B101010101110,
+eval,
+output;
+set address %B101010101111,
+eval,
+output;
+
+set load 1,
+set address %B101010101001,
+set in %B0101010101010101,
+tick,
+output,
+tock,
+output;
+set address %B101010101010,
+set in %B1010101010101010,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address %B101010101000,
+tick,
+output;
+tock,
+output;
+set address %B101010101001,
+eval,
+output;
+set address %B101010101010,
+eval,
+output;
+set address %B101010101011,
+eval,
+output;
+set address %B101010101100,
+eval,
+output;
+set address %B101010101101,
+eval,
+output;
+set address %B101010101110,
+eval,
+output;
+set address %B101010101111,
+eval,
+output;
+
+set load 1,
+set address %B101010101010,
+set in %B0101010101010101,
+tick,
+output,
+tock,
+output;
+set address %B101010101011,
+set in %B1010101010101010,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address %B101010101000,
+tick,
+output;
+tock,
+output;
+set address %B101010101001,
+eval,
+output;
+set address %B101010101010,
+eval,
+output;
+set address %B101010101011,
+eval,
+output;
+set address %B101010101100,
+eval,
+output;
+set address %B101010101101,
+eval,
+output;
+set address %B101010101110,
+eval,
+output;
+set address %B101010101111,
+eval,
+output;
+
+set load 1,
+set address %B101010101011,
+set in %B0101010101010101,
+tick,
+output,
+tock,
+output;
+set address %B101010101100,
+set in %B1010101010101010,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address %B101010101000,
+tick,
+output;
+tock,
+output;
+set address %B101010101001,
+eval,
+output;
+set address %B101010101010,
+eval,
+output;
+set address %B101010101011,
+eval,
+output;
+set address %B101010101100,
+eval,
+output;
+set address %B101010101101,
+eval,
+output;
+set address %B101010101110,
+eval,
+output;
+set address %B101010101111,
+eval,
+output;
+
+set load 1,
+set address %B101010101100,
+set in %B0101010101010101,
+tick,
+output,
+tock,
+output;
+set address %B101010101101,
+set in %B1010101010101010,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address %B101010101000,
+tick,
+output;
+tock,
+output;
+set address %B101010101001,
+eval,
+output;
+set address %B101010101010,
+eval,
+output;
+set address %B101010101011,
+eval,
+output;
+set address %B101010101100,
+eval,
+output;
+set address %B101010101101,
+eval,
+output;
+set address %B101010101110,
+eval,
+output;
+set address %B101010101111,
+eval,
+output;
+
+set load 1,
+set address %B101010101101,
+set in %B0101010101010101,
+tick,
+output,
+tock,
+output;
+set address %B101010101110,
+set in %B1010101010101010,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address %B101010101000,
+tick,
+output;
+tock,
+output;
+set address %B101010101001,
+eval,
+output;
+set address %B101010101010,
+eval,
+output;
+set address %B101010101011,
+eval,
+output;
+set address %B101010101100,
+eval,
+output;
+set address %B101010101101,
+eval,
+output;
+set address %B101010101110,
+eval,
+output;
+set address %B101010101111,
+eval,
+output;
+
+set load 1,
+set address %B101010101110,
+set in %B0101010101010101,
+tick,
+output,
+tock,
+output;
+set address %B101010101111,
+set in %B1010101010101010,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address %B101010101000,
+tick,
+output;
+tock,
+output;
+set address %B101010101001,
+eval,
+output;
+set address %B101010101010,
+eval,
+output;
+set address %B101010101011,
+eval,
+output;
+set address %B101010101100,
+eval,
+output;
+set address %B101010101101,
+eval,
+output;
+set address %B101010101110,
+eval,
+output;
+set address %B101010101111,
+eval,
+output;
+
+set load 1,
+set address %B101010101111,
+set in %B0101010101010101,
+tick,
+output,
+tock,
+output;
+
+set load 0,
+set address %B101010101000,
+tick,
+output;
+tock,
+output;
+set address %B101010101001,
+eval,
+output;
+set address %B101010101010,
+eval,
+output;
+set address %B101010101011,
+eval,
+output;
+set address %B101010101100,
+eval,
+output;
+set address %B101010101101,
+eval,
+output;
+set address %B101010101110,
+eval,
+output;
+set address %B101010101111,
+eval,
+output;
+
+
+set load 0,
+set address %B000101010101,
+tick,
+output;
+tock,
+output;
+set address %B001101010101,
+eval,
+output;
+set address %B010101010101,
+eval,
+output;
+set address %B011101010101,
+eval,
+output;
+set address %B100101010101,
+eval,
+output;
+set address %B101101010101,
+eval,
+output;
+set address %B110101010101,
+eval,
+output;
+set address %B111101010101,
+eval,
+output;
+
+set load 1,
+set in %B0101010101010101,
+set address %B000101010101,
+tick,
+output;
+tock,
+output;
+set address %B001101010101,
+tick,
+output,
+tock,
+output;
+set address %B010101010101,
+tick,
+output,
+tock,
+output;
+set address %B011101010101,
+tick,
+output,
+tock,
+output;
+set address %B100101010101,
+tick,
+output,
+tock,
+output;
+set address %B101101010101,
+tick,
+output,
+tock,
+output;
+set address %B110101010101,
+tick,
+output,
+tock,
+output;
+set address %B111101010101,
+tick,
+output,
+tock,
+output;
+
+set load 0,
+set address %B000101010101,
+tick,
+output;
+tock,
+output;
+set address %B001101010101,
+eval,
+output;
+set address %B010101010101,
+eval,
+output;
+set address %B011101010101,
+eval,
+output;
+set address %B100101010101,
+eval,
+output;
+set address %B101101010101,
+eval,
+output;
+set address %B110101010101,
+eval,
+output;
+set address %B111101010101,
+eval,
+output;
+
+set load 1,
+set address %B000101010101,
+set in %B1010101010101010,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address %B000101010101,
+tick,
+output;
+tock,
+output;
+set address %B001101010101,
+eval,
+output;
+set address %B010101010101,
+eval,
+output;
+set address %B011101010101,
+eval,
+output;
+set address %B100101010101,
+eval,
+output;
+set address %B101101010101,
+eval,
+output;
+set address %B110101010101,
+eval,
+output;
+set address %B111101010101,
+eval,
+output;
+
+set load 1,
+set address %B000101010101,
+set in %B0101010101010101,
+tick,
+output,
+tock,
+output;
+set address %B001101010101,
+set in %B1010101010101010,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address %B000101010101,
+tick,
+output;
+tock,
+output;
+set address %B001101010101,
+eval,
+output;
+set address %B010101010101,
+eval,
+output;
+set address %B011101010101,
+eval,
+output;
+set address %B100101010101,
+eval,
+output;
+set address %B101101010101,
+eval,
+output;
+set address %B110101010101,
+eval,
+output;
+set address %B111101010101,
+eval,
+output;
+
+set load 1,
+set address %B001101010101,
+set in %B0101010101010101,
+tick,
+output,
+tock,
+output;
+set address %B010101010101,
+set in %B1010101010101010,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address %B000101010101,
+tick,
+output;
+tock,
+output;
+set address %B001101010101,
+eval,
+output;
+set address %B010101010101,
+eval,
+output;
+set address %B011101010101,
+eval,
+output;
+set address %B100101010101,
+eval,
+output;
+set address %B101101010101,
+eval,
+output;
+set address %B110101010101,
+eval,
+output;
+set address %B111101010101,
+eval,
+output;
+
+set load 1,
+set address %B010101010101,
+set in %B0101010101010101,
+tick,
+output,
+tock,
+output;
+set address %B011101010101,
+set in %B1010101010101010,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address %B000101010101,
+tick,
+output;
+tock,
+output;
+set address %B001101010101,
+eval,
+output;
+set address %B010101010101,
+eval,
+output;
+set address %B011101010101,
+eval,
+output;
+set address %B100101010101,
+eval,
+output;
+set address %B101101010101,
+eval,
+output;
+set address %B110101010101,
+eval,
+output;
+set address %B111101010101,
+eval,
+output;
+
+set load 1,
+set address %B011101010101,
+set in %B0101010101010101,
+tick,
+output,
+tock,
+output;
+set address %B100101010101,
+set in %B1010101010101010,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address %B000101010101,
+tick,
+output;
+tock,
+output;
+set address %B001101010101,
+eval,
+output;
+set address %B010101010101,
+eval,
+output;
+set address %B011101010101,
+eval,
+output;
+set address %B100101010101,
+eval,
+output;
+set address %B101101010101,
+eval,
+output;
+set address %B110101010101,
+eval,
+output;
+set address %B111101010101,
+eval,
+output;
+
+set load 1,
+set address %B100101010101,
+set in %B0101010101010101,
+tick,
+output,
+tock,
+output;
+set address %B101101010101,
+set in %B1010101010101010,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address %B000101010101,
+tick,
+output;
+tock,
+output;
+set address %B001101010101,
+eval,
+output;
+set address %B010101010101,
+eval,
+output;
+set address %B011101010101,
+eval,
+output;
+set address %B100101010101,
+eval,
+output;
+set address %B101101010101,
+eval,
+output;
+set address %B110101010101,
+eval,
+output;
+set address %B111101010101,
+eval,
+output;
+
+set load 1,
+set address %B101101010101,
+set in %B0101010101010101,
+tick,
+output,
+tock,
+output;
+set address %B110101010101,
+set in %B1010101010101010,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address %B000101010101,
+tick,
+output;
+tock,
+output;
+set address %B001101010101,
+eval,
+output;
+set address %B010101010101,
+eval,
+output;
+set address %B011101010101,
+eval,
+output;
+set address %B100101010101,
+eval,
+output;
+set address %B101101010101,
+eval,
+output;
+set address %B110101010101,
+eval,
+output;
+set address %B111101010101,
+eval,
+output;
+
+set load 1,
+set address %B110101010101,
+set in %B0101010101010101,
+tick,
+output,
+tock,
+output;
+set address %B111101010101,
+set in %B1010101010101010,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address %B000101010101,
+tick,
+output;
+tock,
+output;
+set address %B001101010101,
+eval,
+output;
+set address %B010101010101,
+eval,
+output;
+set address %B011101010101,
+eval,
+output;
+set address %B100101010101,
+eval,
+output;
+set address %B101101010101,
+eval,
+output;
+set address %B110101010101,
+eval,
+output;
+set address %B111101010101,
+eval,
+output;
+
+set load 1,
+set address %B111101010101,
+set in %B0101010101010101,
+tick,
+output,
+tock,
+output;
+
+set load 0,
+set address %B000101010101,
+tick,
+output;
+tock,
+output;
+set address %B001101010101,
+eval,
+output;
+set address %B010101010101,
+eval,
+output;
+set address %B011101010101,
+eval,
+output;
+set address %B100101010101,
+eval,
+output;
+set address %B101101010101,
+eval,
+output;
+set address %B110101010101,
+eval,
+output;
+set address %B111101010101,
+eval,
+output;
diff --git a/3/RAM512.cmp b/3/RAM512.cmp
new file mode 100644
index 0000000..241956b
--- /dev/null
+++ b/3/RAM512.cmp
@@ -0,0 +1,320 @@
+|time | in |load|address| out |
+| 0+ | 0 | 0 | 0 | 0 |
+| 1 | 0 | 0 | 0 | 0 |
+| 1+ | 0 | 1 | 0 | 0 |
+| 2 | 0 | 1 | 0 | 0 |
+| 2+ | 13099 | 0 | 0 | 0 |
+| 3 | 13099 | 0 | 0 | 0 |
+| 3+ | 13099 | 1 | 130 | 0 |
+| 4 | 13099 | 1 | 130 | 13099 |
+| 4+ | 13099 | 0 | 0 | 0 |
+| 5 | 13099 | 0 | 0 | 0 |
+| 5+ | 4729 | 0 | 472 | 0 |
+| 6 | 4729 | 0 | 472 | 0 |
+| 6+ | 4729 | 1 | 472 | 0 |
+| 7 | 4729 | 1 | 472 | 4729 |
+| 7+ | 4729 | 0 | 472 | 4729 |
+| 8 | 4729 | 0 | 472 | 4729 |
+| 8 | 4729 | 0 | 130 | 13099 |
+| 8+ | 5119 | 0 | 130 | 13099 |
+| 9 | 5119 | 0 | 130 | 13099 |
+| 9+ | 5119 | 1 | 511 | 0 |
+| 10 | 5119 | 1 | 511 | 5119 |
+| 10+ | 5119 | 0 | 511 | 5119 |
+| 11 | 5119 | 0 | 511 | 5119 |
+| 11 | 5119 | 0 | 472 | 4729 |
+| 11 | 5119 | 0 | 511 | 5119 |
+| 11+ | 5119 | 0 | 168 | 0 |
+| 12 | 5119 | 0 | 168 | 0 |
+| 12 | 5119 | 0 | 169 | 0 |
+| 12 | 5119 | 0 | 170 | 0 |
+| 12 | 5119 | 0 | 171 | 0 |
+| 12 | 5119 | 0 | 172 | 0 |
+| 12 | 5119 | 0 | 173 | 0 |
+| 12 | 5119 | 0 | 174 | 0 |
+| 12 | 5119 | 0 | 175 | 0 |
+| 12+ | 21845 | 1 | 168 | 0 |
+| 13 | 21845 | 1 | 168 | 21845 |
+| 13+ | 21845 | 1 | 169 | 0 |
+| 14 | 21845 | 1 | 169 | 21845 |
+| 14+ | 21845 | 1 | 170 | 0 |
+| 15 | 21845 | 1 | 170 | 21845 |
+| 15+ | 21845 | 1 | 171 | 0 |
+| 16 | 21845 | 1 | 171 | 21845 |
+| 16+ | 21845 | 1 | 172 | 0 |
+| 17 | 21845 | 1 | 172 | 21845 |
+| 17+ | 21845 | 1 | 173 | 0 |
+| 18 | 21845 | 1 | 173 | 21845 |
+| 18+ | 21845 | 1 | 174 | 0 |
+| 19 | 21845 | 1 | 174 | 21845 |
+| 19+ | 21845 | 1 | 175 | 0 |
+| 20 | 21845 | 1 | 175 | 21845 |
+| 20+ | 21845 | 0 | 168 | 21845 |
+| 21 | 21845 | 0 | 168 | 21845 |
+| 21 | 21845 | 0 | 169 | 21845 |
+| 21 | 21845 | 0 | 170 | 21845 |
+| 21 | 21845 | 0 | 171 | 21845 |
+| 21 | 21845 | 0 | 172 | 21845 |
+| 21 | 21845 | 0 | 173 | 21845 |
+| 21 | 21845 | 0 | 174 | 21845 |
+| 21 | 21845 | 0 | 175 | 21845 |
+| 21+ | -21846 | 1 | 168 | 21845 |
+| 22 | -21846 | 1 | 168 | -21846 |
+| 22+ | -21846 | 0 | 168 | -21846 |
+| 23 | -21846 | 0 | 168 | -21846 |
+| 23 | -21846 | 0 | 169 | 21845 |
+| 23 | -21846 | 0 | 170 | 21845 |
+| 23 | -21846 | 0 | 171 | 21845 |
+| 23 | -21846 | 0 | 172 | 21845 |
+| 23 | -21846 | 0 | 173 | 21845 |
+| 23 | -21846 | 0 | 174 | 21845 |
+| 23 | -21846 | 0 | 175 | 21845 |
+| 23+ | 21845 | 1 | 168 | -21846 |
+| 24 | 21845 | 1 | 168 | 21845 |
+| 24+ | -21846 | 1 | 169 | 21845 |
+| 25 | -21846 | 1 | 169 | -21846 |
+| 25+ | -21846 | 0 | 168 | 21845 |
+| 26 | -21846 | 0 | 168 | 21845 |
+| 26 | -21846 | 0 | 169 | -21846 |
+| 26 | -21846 | 0 | 170 | 21845 |
+| 26 | -21846 | 0 | 171 | 21845 |
+| 26 | -21846 | 0 | 172 | 21845 |
+| 26 | -21846 | 0 | 173 | 21845 |
+| 26 | -21846 | 0 | 174 | 21845 |
+| 26 | -21846 | 0 | 175 | 21845 |
+| 26+ | 21845 | 1 | 169 | -21846 |
+| 27 | 21845 | 1 | 169 | 21845 |
+| 27+ | -21846 | 1 | 170 | 21845 |
+| 28 | -21846 | 1 | 170 | -21846 |
+| 28+ | -21846 | 0 | 168 | 21845 |
+| 29 | -21846 | 0 | 168 | 21845 |
+| 29 | -21846 | 0 | 169 | 21845 |
+| 29 | -21846 | 0 | 170 | -21846 |
+| 29 | -21846 | 0 | 171 | 21845 |
+| 29 | -21846 | 0 | 172 | 21845 |
+| 29 | -21846 | 0 | 173 | 21845 |
+| 29 | -21846 | 0 | 174 | 21845 |
+| 29 | -21846 | 0 | 175 | 21845 |
+| 29+ | 21845 | 1 | 170 | -21846 |
+| 30 | 21845 | 1 | 170 | 21845 |
+| 30+ | -21846 | 1 | 171 | 21845 |
+| 31 | -21846 | 1 | 171 | -21846 |
+| 31+ | -21846 | 0 | 168 | 21845 |
+| 32 | -21846 | 0 | 168 | 21845 |
+| 32 | -21846 | 0 | 169 | 21845 |
+| 32 | -21846 | 0 | 170 | 21845 |
+| 32 | -21846 | 0 | 171 | -21846 |
+| 32 | -21846 | 0 | 172 | 21845 |
+| 32 | -21846 | 0 | 173 | 21845 |
+| 32 | -21846 | 0 | 174 | 21845 |
+| 32 | -21846 | 0 | 175 | 21845 |
+| 32+ | 21845 | 1 | 171 | -21846 |
+| 33 | 21845 | 1 | 171 | 21845 |
+| 33+ | -21846 | 1 | 172 | 21845 |
+| 34 | -21846 | 1 | 172 | -21846 |
+| 34+ | -21846 | 0 | 168 | 21845 |
+| 35 | -21846 | 0 | 168 | 21845 |
+| 35 | -21846 | 0 | 169 | 21845 |
+| 35 | -21846 | 0 | 170 | 21845 |
+| 35 | -21846 | 0 | 171 | 21845 |
+| 35 | -21846 | 0 | 172 | -21846 |
+| 35 | -21846 | 0 | 173 | 21845 |
+| 35 | -21846 | 0 | 174 | 21845 |
+| 35 | -21846 | 0 | 175 | 21845 |
+| 35+ | 21845 | 1 | 172 | -21846 |
+| 36 | 21845 | 1 | 172 | 21845 |
+| 36+ | -21846 | 1 | 173 | 21845 |
+| 37 | -21846 | 1 | 173 | -21846 |
+| 37+ | -21846 | 0 | 168 | 21845 |
+| 38 | -21846 | 0 | 168 | 21845 |
+| 38 | -21846 | 0 | 169 | 21845 |
+| 38 | -21846 | 0 | 170 | 21845 |
+| 38 | -21846 | 0 | 171 | 21845 |
+| 38 | -21846 | 0 | 172 | 21845 |
+| 38 | -21846 | 0 | 173 | -21846 |
+| 38 | -21846 | 0 | 174 | 21845 |
+| 38 | -21846 | 0 | 175 | 21845 |
+| 38+ | 21845 | 1 | 173 | -21846 |
+| 39 | 21845 | 1 | 173 | 21845 |
+| 39+ | -21846 | 1 | 174 | 21845 |
+| 40 | -21846 | 1 | 174 | -21846 |
+| 40+ | -21846 | 0 | 168 | 21845 |
+| 41 | -21846 | 0 | 168 | 21845 |
+| 41 | -21846 | 0 | 169 | 21845 |
+| 41 | -21846 | 0 | 170 | 21845 |
+| 41 | -21846 | 0 | 171 | 21845 |
+| 41 | -21846 | 0 | 172 | 21845 |
+| 41 | -21846 | 0 | 173 | 21845 |
+| 41 | -21846 | 0 | 174 | -21846 |
+| 41 | -21846 | 0 | 175 | 21845 |
+| 41+ | 21845 | 1 | 174 | -21846 |
+| 42 | 21845 | 1 | 174 | 21845 |
+| 42+ | -21846 | 1 | 175 | 21845 |
+| 43 | -21846 | 1 | 175 | -21846 |
+| 43+ | -21846 | 0 | 168 | 21845 |
+| 44 | -21846 | 0 | 168 | 21845 |
+| 44 | -21846 | 0 | 169 | 21845 |
+| 44 | -21846 | 0 | 170 | 21845 |
+| 44 | -21846 | 0 | 171 | 21845 |
+| 44 | -21846 | 0 | 172 | 21845 |
+| 44 | -21846 | 0 | 173 | 21845 |
+| 44 | -21846 | 0 | 174 | 21845 |
+| 44 | -21846 | 0 | 175 | -21846 |
+| 44+ | 21845 | 1 | 175 | -21846 |
+| 45 | 21845 | 1 | 175 | 21845 |
+| 45+ | 21845 | 0 | 168 | 21845 |
+| 46 | 21845 | 0 | 168 | 21845 |
+| 46 | 21845 | 0 | 169 | 21845 |
+| 46 | 21845 | 0 | 170 | 21845 |
+| 46 | 21845 | 0 | 171 | 21845 |
+| 46 | 21845 | 0 | 172 | 21845 |
+| 46 | 21845 | 0 | 173 | 21845 |
+| 46 | 21845 | 0 | 174 | 21845 |
+| 46 | 21845 | 0 | 175 | 21845 |
+| 46+ | 21845 | 0 | 42 | 0 |
+| 47 | 21845 | 0 | 42 | 0 |
+| 47 | 21845 | 0 | 106 | 0 |
+| 47 | 21845 | 0 | 170 | 21845 |
+| 47 | 21845 | 0 | 234 | 0 |
+| 47 | 21845 | 0 | 298 | 0 |
+| 47 | 21845 | 0 | 362 | 0 |
+| 47 | 21845 | 0 | 426 | 0 |
+| 47 | 21845 | 0 | 490 | 0 |
+| 47+ | 21845 | 1 | 42 | 0 |
+| 48 | 21845 | 1 | 42 | 21845 |
+| 48+ | 21845 | 1 | 106 | 0 |
+| 49 | 21845 | 1 | 106 | 21845 |
+| 49+ | 21845 | 1 | 170 | 21845 |
+| 50 | 21845 | 1 | 170 | 21845 |
+| 50+ | 21845 | 1 | 234 | 0 |
+| 51 | 21845 | 1 | 234 | 21845 |
+| 51+ | 21845 | 1 | 298 | 0 |
+| 52 | 21845 | 1 | 298 | 21845 |
+| 52+ | 21845 | 1 | 362 | 0 |
+| 53 | 21845 | 1 | 362 | 21845 |
+| 53+ | 21845 | 1 | 426 | 0 |
+| 54 | 21845 | 1 | 426 | 21845 |
+| 54+ | 21845 | 1 | 490 | 0 |
+| 55 | 21845 | 1 | 490 | 21845 |
+| 55+ | 21845 | 0 | 42 | 21845 |
+| 56 | 21845 | 0 | 42 | 21845 |
+| 56 | 21845 | 0 | 106 | 21845 |
+| 56 | 21845 | 0 | 170 | 21845 |
+| 56 | 21845 | 0 | 234 | 21845 |
+| 56 | 21845 | 0 | 298 | 21845 |
+| 56 | 21845 | 0 | 362 | 21845 |
+| 56 | 21845 | 0 | 426 | 21845 |
+| 56 | 21845 | 0 | 490 | 21845 |
+| 56+ | -21846 | 1 | 42 | 21845 |
+| 57 | -21846 | 1 | 42 | -21846 |
+| 57+ | -21846 | 0 | 42 | -21846 |
+| 58 | -21846 | 0 | 42 | -21846 |
+| 58 | -21846 | 0 | 106 | 21845 |
+| 58 | -21846 | 0 | 170 | 21845 |
+| 58 | -21846 | 0 | 234 | 21845 |
+| 58 | -21846 | 0 | 298 | 21845 |
+| 58 | -21846 | 0 | 362 | 21845 |
+| 58 | -21846 | 0 | 426 | 21845 |
+| 58 | -21846 | 0 | 490 | 21845 |
+| 58+ | 21845 | 1 | 42 | -21846 |
+| 59 | 21845 | 1 | 42 | 21845 |
+| 59+ | -21846 | 1 | 106 | 21845 |
+| 60 | -21846 | 1 | 106 | -21846 |
+| 60+ | -21846 | 0 | 42 | 21845 |
+| 61 | -21846 | 0 | 42 | 21845 |
+| 61 | -21846 | 0 | 106 | -21846 |
+| 61 | -21846 | 0 | 170 | 21845 |
+| 61 | -21846 | 0 | 234 | 21845 |
+| 61 | -21846 | 0 | 298 | 21845 |
+| 61 | -21846 | 0 | 362 | 21845 |
+| 61 | -21846 | 0 | 426 | 21845 |
+| 61 | -21846 | 0 | 490 | 21845 |
+| 61+ | 21845 | 1 | 106 | -21846 |
+| 62 | 21845 | 1 | 106 | 21845 |
+| 62+ | -21846 | 1 | 170 | 21845 |
+| 63 | -21846 | 1 | 170 | -21846 |
+| 63+ | -21846 | 0 | 42 | 21845 |
+| 64 | -21846 | 0 | 42 | 21845 |
+| 64 | -21846 | 0 | 106 | 21845 |
+| 64 | -21846 | 0 | 170 | -21846 |
+| 64 | -21846 | 0 | 234 | 21845 |
+| 64 | -21846 | 0 | 298 | 21845 |
+| 64 | -21846 | 0 | 362 | 21845 |
+| 64 | -21846 | 0 | 426 | 21845 |
+| 64 | -21846 | 0 | 490 | 21845 |
+| 64+ | 21845 | 1 | 170 | -21846 |
+| 65 | 21845 | 1 | 170 | 21845 |
+| 65+ | -21846 | 1 | 234 | 21845 |
+| 66 | -21846 | 1 | 234 | -21846 |
+| 66+ | -21846 | 0 | 42 | 21845 |
+| 67 | -21846 | 0 | 42 | 21845 |
+| 67 | -21846 | 0 | 106 | 21845 |
+| 67 | -21846 | 0 | 170 | 21845 |
+| 67 | -21846 | 0 | 234 | -21846 |
+| 67 | -21846 | 0 | 298 | 21845 |
+| 67 | -21846 | 0 | 362 | 21845 |
+| 67 | -21846 | 0 | 426 | 21845 |
+| 67 | -21846 | 0 | 490 | 21845 |
+| 67+ | 21845 | 1 | 234 | -21846 |
+| 68 | 21845 | 1 | 234 | 21845 |
+| 68+ | -21846 | 1 | 298 | 21845 |
+| 69 | -21846 | 1 | 298 | -21846 |
+| 69+ | -21846 | 0 | 42 | 21845 |
+| 70 | -21846 | 0 | 42 | 21845 |
+| 70 | -21846 | 0 | 106 | 21845 |
+| 70 | -21846 | 0 | 170 | 21845 |
+| 70 | -21846 | 0 | 234 | 21845 |
+| 70 | -21846 | 0 | 298 | -21846 |
+| 70 | -21846 | 0 | 362 | 21845 |
+| 70 | -21846 | 0 | 426 | 21845 |
+| 70 | -21846 | 0 | 490 | 21845 |
+| 70+ | 21845 | 1 | 298 | -21846 |
+| 71 | 21845 | 1 | 298 | 21845 |
+| 71+ | -21846 | 1 | 362 | 21845 |
+| 72 | -21846 | 1 | 362 | -21846 |
+| 72+ | -21846 | 0 | 42 | 21845 |
+| 73 | -21846 | 0 | 42 | 21845 |
+| 73 | -21846 | 0 | 106 | 21845 |
+| 73 | -21846 | 0 | 170 | 21845 |
+| 73 | -21846 | 0 | 234 | 21845 |
+| 73 | -21846 | 0 | 298 | 21845 |
+| 73 | -21846 | 0 | 362 | -21846 |
+| 73 | -21846 | 0 | 426 | 21845 |
+| 73 | -21846 | 0 | 490 | 21845 |
+| 73+ | 21845 | 1 | 362 | -21846 |
+| 74 | 21845 | 1 | 362 | 21845 |
+| 74+ | -21846 | 1 | 426 | 21845 |
+| 75 | -21846 | 1 | 426 | -21846 |
+| 75+ | -21846 | 0 | 42 | 21845 |
+| 76 | -21846 | 0 | 42 | 21845 |
+| 76 | -21846 | 0 | 106 | 21845 |
+| 76 | -21846 | 0 | 170 | 21845 |
+| 76 | -21846 | 0 | 234 | 21845 |
+| 76 | -21846 | 0 | 298 | 21845 |
+| 76 | -21846 | 0 | 362 | 21845 |
+| 76 | -21846 | 0 | 426 | -21846 |
+| 76 | -21846 | 0 | 490 | 21845 |
+| 76+ | 21845 | 1 | 426 | -21846 |
+| 77 | 21845 | 1 | 426 | 21845 |
+| 77+ | -21846 | 1 | 490 | 21845 |
+| 78 | -21846 | 1 | 490 | -21846 |
+| 78+ | -21846 | 0 | 42 | 21845 |
+| 79 | -21846 | 0 | 42 | 21845 |
+| 79 | -21846 | 0 | 106 | 21845 |
+| 79 | -21846 | 0 | 170 | 21845 |
+| 79 | -21846 | 0 | 234 | 21845 |
+| 79 | -21846 | 0 | 298 | 21845 |
+| 79 | -21846 | 0 | 362 | 21845 |
+| 79 | -21846 | 0 | 426 | 21845 |
+| 79 | -21846 | 0 | 490 | -21846 |
+| 79+ | 21845 | 1 | 490 | -21846 |
+| 80 | 21845 | 1 | 490 | 21845 |
+| 80+ | 21845 | 0 | 42 | 21845 |
+| 81 | 21845 | 0 | 42 | 21845 |
+| 81 | 21845 | 0 | 106 | 21845 |
+| 81 | 21845 | 0 | 170 | 21845 |
+| 81 | 21845 | 0 | 234 | 21845 |
+| 81 | 21845 | 0 | 298 | 21845 |
+| 81 | 21845 | 0 | 362 | 21845 |
+| 81 | 21845 | 0 | 426 | 21845 |
+| 81 | 21845 | 0 | 490 | 21845 |
diff --git a/3/RAM512.hdl b/3/RAM512.hdl
new file mode 100644
index 0000000..e9332fe
--- /dev/null
+++ b/3/RAM512.hdl
@@ -0,0 +1,16 @@
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+/**
+ * Memory of 512 16-bit registers.
+ * If load is asserted, the value of the register selected by
+ * address is set to in; Otherwise, the value does not change.
+ * The value of the selected register is emitted by out.
+ */
+CHIP RAM512 {
+ IN in[16], load, address[9];
+ OUT out[16];
+
+ PARTS:
+ //// Replace this comment with your code.
+}
diff --git a/03/b/RAM512.tst b/3/RAM512.tst
similarity index 91%
rename from 03/b/RAM512.tst
rename to 3/RAM512.tst
index 4ec6fc2..25ba1ed 100644
--- a/03/b/RAM512.tst
+++ b/3/RAM512.tst
@@ -1,1027 +1,1026 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/03/b/RAM512.tst
-
-load RAM512.hdl,
-output-file RAM512.out,
-compare-to RAM512.cmp,
-output-list time%S1.4.1 in%D1.6.1 load%B2.1.2 address%D2.3.2 out%D1.6.1;
-
-set in 0,
-set load 0,
-set address 0,
-tick,
-output;
-tock,
-output;
-
-set load 1,
-tick,
-output;
-tock,
-output;
-
-set in 13099,
-set load 0,
-tick,
-output;
-tock,
-output;
-
-set load 1,
-set address 130,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address 0,
-tick,
-output;
-tock,
-output;
-
-set in 4729,
-set address 472,
-tick,
-output;
-tock,
-output;
-
-set load 1,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-tick,
-output;
-tock,
-output;
-
-set address 130,
-eval,
-output;
-
-set in 5119,
-tick,
-output;
-tock,
-output;
-
-set load 1,
-set address 511,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-tick,
-output;
-tock,
-output;
-
-set address 472,
-eval,
-output;
-
-set address 511,
-eval,
-output;
-
-
-set load 0,
-set address %B010101000,
-tick,
-output;
-tock,
-output;
-set address %B010101001,
-eval,
-output;
-set address %B010101010,
-eval,
-output;
-set address %B010101011,
-eval,
-output;
-set address %B010101100,
-eval,
-output;
-set address %B010101101,
-eval,
-output;
-set address %B010101110,
-eval,
-output;
-set address %B010101111,
-eval,
-output;
-
-set load 1,
-set in %B0101010101010101,
-set address %B010101000,
-tick,
-output;
-tock,
-output;
-set address %B010101001,
-tick,
-output,
-tock,
-output;
-set address %B010101010,
-tick,
-output,
-tock,
-output;
-set address %B010101011,
-tick,
-output,
-tock,
-output;
-set address %B010101100,
-tick,
-output,
-tock,
-output;
-set address %B010101101,
-tick,
-output,
-tock,
-output;
-set address %B010101110,
-tick,
-output,
-tock,
-output;
-set address %B010101111,
-tick,
-output,
-tock,
-output;
-
-set load 0,
-set address %B010101000,
-tick,
-output;
-tock,
-output;
-set address %B010101001,
-eval,
-output;
-set address %B010101010,
-eval,
-output;
-set address %B010101011,
-eval,
-output;
-set address %B010101100,
-eval,
-output;
-set address %B010101101,
-eval,
-output;
-set address %B010101110,
-eval,
-output;
-set address %B010101111,
-eval,
-output;
-
-set load 1,
-set address %B010101000,
-set in %B1010101010101010,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address %B010101000,
-tick,
-output;
-tock,
-output;
-set address %B010101001,
-eval,
-output;
-set address %B010101010,
-eval,
-output;
-set address %B010101011,
-eval,
-output;
-set address %B010101100,
-eval,
-output;
-set address %B010101101,
-eval,
-output;
-set address %B010101110,
-eval,
-output;
-set address %B010101111,
-eval,
-output;
-
-set load 1,
-set address %B010101000,
-set in %B0101010101010101,
-tick,
-output,
-tock,
-output;
-set address %B010101001,
-set in %B1010101010101010,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address %B010101000,
-tick,
-output;
-tock,
-output;
-set address %B010101001,
-eval,
-output;
-set address %B010101010,
-eval,
-output;
-set address %B010101011,
-eval,
-output;
-set address %B010101100,
-eval,
-output;
-set address %B010101101,
-eval,
-output;
-set address %B010101110,
-eval,
-output;
-set address %B010101111,
-eval,
-output;
-
-set load 1,
-set address %B010101001,
-set in %B0101010101010101,
-tick,
-output,
-tock,
-output;
-set address %B010101010,
-set in %B1010101010101010,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address %B010101000,
-tick,
-output;
-tock,
-output;
-set address %B010101001,
-eval,
-output;
-set address %B010101010,
-eval,
-output;
-set address %B010101011,
-eval,
-output;
-set address %B010101100,
-eval,
-output;
-set address %B010101101,
-eval,
-output;
-set address %B010101110,
-eval,
-output;
-set address %B010101111,
-eval,
-output;
-
-set load 1,
-set address %B010101010,
-set in %B0101010101010101,
-tick,
-output,
-tock,
-output;
-set address %B010101011,
-set in %B1010101010101010,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address %B010101000,
-tick,
-output;
-tock,
-output;
-set address %B010101001,
-eval,
-output;
-set address %B010101010,
-eval,
-output;
-set address %B010101011,
-eval,
-output;
-set address %B010101100,
-eval,
-output;
-set address %B010101101,
-eval,
-output;
-set address %B010101110,
-eval,
-output;
-set address %B010101111,
-eval,
-output;
-
-set load 1,
-set address %B010101011,
-set in %B0101010101010101,
-tick,
-output,
-tock,
-output;
-set address %B010101100,
-set in %B1010101010101010,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address %B010101000,
-tick,
-output;
-tock,
-output;
-set address %B010101001,
-eval,
-output;
-set address %B010101010,
-eval,
-output;
-set address %B010101011,
-eval,
-output;
-set address %B010101100,
-eval,
-output;
-set address %B010101101,
-eval,
-output;
-set address %B010101110,
-eval,
-output;
-set address %B010101111,
-eval,
-output;
-
-set load 1,
-set address %B010101100,
-set in %B0101010101010101,
-tick,
-output,
-tock,
-output;
-set address %B010101101,
-set in %B1010101010101010,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address %B010101000,
-tick,
-output;
-tock,
-output;
-set address %B010101001,
-eval,
-output;
-set address %B010101010,
-eval,
-output;
-set address %B010101011,
-eval,
-output;
-set address %B010101100,
-eval,
-output;
-set address %B010101101,
-eval,
-output;
-set address %B010101110,
-eval,
-output;
-set address %B010101111,
-eval,
-output;
-
-set load 1,
-set address %B010101101,
-set in %B0101010101010101,
-tick,
-output,
-tock,
-output;
-set address %B010101110,
-set in %B1010101010101010,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address %B010101000,
-tick,
-output;
-tock,
-output;
-set address %B010101001,
-eval,
-output;
-set address %B010101010,
-eval,
-output;
-set address %B010101011,
-eval,
-output;
-set address %B010101100,
-eval,
-output;
-set address %B010101101,
-eval,
-output;
-set address %B010101110,
-eval,
-output;
-set address %B010101111,
-eval,
-output;
-
-set load 1,
-set address %B010101110,
-set in %B0101010101010101,
-tick,
-output,
-tock,
-output;
-set address %B010101111,
-set in %B1010101010101010,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address %B010101000,
-tick,
-output;
-tock,
-output;
-set address %B010101001,
-eval,
-output;
-set address %B010101010,
-eval,
-output;
-set address %B010101011,
-eval,
-output;
-set address %B010101100,
-eval,
-output;
-set address %B010101101,
-eval,
-output;
-set address %B010101110,
-eval,
-output;
-set address %B010101111,
-eval,
-output;
-
-set load 1,
-set address %B010101111,
-set in %B0101010101010101,
-tick,
-output,
-tock,
-output;
-
-set load 0,
-set address %B010101000,
-tick,
-output;
-tock,
-output;
-set address %B010101001,
-eval,
-output;
-set address %B010101010,
-eval,
-output;
-set address %B010101011,
-eval,
-output;
-set address %B010101100,
-eval,
-output;
-set address %B010101101,
-eval,
-output;
-set address %B010101110,
-eval,
-output;
-set address %B010101111,
-eval,
-output;
-
-
-set load 0,
-set address %B000101010,
-tick,
-output;
-tock,
-output;
-set address %B001101010,
-eval,
-output;
-set address %B010101010,
-eval,
-output;
-set address %B011101010,
-eval,
-output;
-set address %B100101010,
-eval,
-output;
-set address %B101101010,
-eval,
-output;
-set address %B110101010,
-eval,
-output;
-set address %B111101010,
-eval,
-output;
-
-set load 1,
-set in %B0101010101010101,
-set address %B000101010,
-tick,
-output;
-tock,
-output;
-set address %B001101010,
-tick,
-output,
-tock,
-output;
-set address %B010101010,
-tick,
-output,
-tock,
-output;
-set address %B011101010,
-tick,
-output,
-tock,
-output;
-set address %B100101010,
-tick,
-output,
-tock,
-output;
-set address %B101101010,
-tick,
-output,
-tock,
-output;
-set address %B110101010,
-tick,
-output,
-tock,
-output;
-set address %B111101010,
-tick,
-output,
-tock,
-output;
-
-set load 0,
-set address %B000101010,
-tick,
-output;
-tock,
-output;
-set address %B001101010,
-eval,
-output;
-set address %B010101010,
-eval,
-output;
-set address %B011101010,
-eval,
-output;
-set address %B100101010,
-eval,
-output;
-set address %B101101010,
-eval,
-output;
-set address %B110101010,
-eval,
-output;
-set address %B111101010,
-eval,
-output;
-
-set load 1,
-set address %B000101010,
-set in %B1010101010101010,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address %B000101010,
-tick,
-output;
-tock,
-output;
-set address %B001101010,
-eval,
-output;
-set address %B010101010,
-eval,
-output;
-set address %B011101010,
-eval,
-output;
-set address %B100101010,
-eval,
-output;
-set address %B101101010,
-eval,
-output;
-set address %B110101010,
-eval,
-output;
-set address %B111101010,
-eval,
-output;
-
-set load 1,
-set address %B000101010,
-set in %B0101010101010101,
-tick,
-output,
-tock,
-output;
-set address %B001101010,
-set in %B1010101010101010,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address %B000101010,
-tick,
-output;
-tock,
-output;
-set address %B001101010,
-eval,
-output;
-set address %B010101010,
-eval,
-output;
-set address %B011101010,
-eval,
-output;
-set address %B100101010,
-eval,
-output;
-set address %B101101010,
-eval,
-output;
-set address %B110101010,
-eval,
-output;
-set address %B111101010,
-eval,
-output;
-
-set load 1,
-set address %B001101010,
-set in %B0101010101010101,
-tick,
-output,
-tock,
-output;
-set address %B010101010,
-set in %B1010101010101010,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address %B000101010,
-tick,
-output;
-tock,
-output;
-set address %B001101010,
-eval,
-output;
-set address %B010101010,
-eval,
-output;
-set address %B011101010,
-eval,
-output;
-set address %B100101010,
-eval,
-output;
-set address %B101101010,
-eval,
-output;
-set address %B110101010,
-eval,
-output;
-set address %B111101010,
-eval,
-output;
-
-set load 1,
-set address %B010101010,
-set in %B0101010101010101,
-tick,
-output,
-tock,
-output;
-set address %B011101010,
-set in %B1010101010101010,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address %B000101010,
-tick,
-output;
-tock,
-output;
-set address %B001101010,
-eval,
-output;
-set address %B010101010,
-eval,
-output;
-set address %B011101010,
-eval,
-output;
-set address %B100101010,
-eval,
-output;
-set address %B101101010,
-eval,
-output;
-set address %B110101010,
-eval,
-output;
-set address %B111101010,
-eval,
-output;
-
-set load 1,
-set address %B011101010,
-set in %B0101010101010101,
-tick,
-output,
-tock,
-output;
-set address %B100101010,
-set in %B1010101010101010,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address %B000101010,
-tick,
-output;
-tock,
-output;
-set address %B001101010,
-eval,
-output;
-set address %B010101010,
-eval,
-output;
-set address %B011101010,
-eval,
-output;
-set address %B100101010,
-eval,
-output;
-set address %B101101010,
-eval,
-output;
-set address %B110101010,
-eval,
-output;
-set address %B111101010,
-eval,
-output;
-
-set load 1,
-set address %B100101010,
-set in %B0101010101010101,
-tick,
-output,
-tock,
-output;
-set address %B101101010,
-set in %B1010101010101010,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address %B000101010,
-tick,
-output;
-tock,
-output;
-set address %B001101010,
-eval,
-output;
-set address %B010101010,
-eval,
-output;
-set address %B011101010,
-eval,
-output;
-set address %B100101010,
-eval,
-output;
-set address %B101101010,
-eval,
-output;
-set address %B110101010,
-eval,
-output;
-set address %B111101010,
-eval,
-output;
-
-set load 1,
-set address %B101101010,
-set in %B0101010101010101,
-tick,
-output,
-tock,
-output;
-set address %B110101010,
-set in %B1010101010101010,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address %B000101010,
-tick,
-output;
-tock,
-output;
-set address %B001101010,
-eval,
-output;
-set address %B010101010,
-eval,
-output;
-set address %B011101010,
-eval,
-output;
-set address %B100101010,
-eval,
-output;
-set address %B101101010,
-eval,
-output;
-set address %B110101010,
-eval,
-output;
-set address %B111101010,
-eval,
-output;
-
-set load 1,
-set address %B110101010,
-set in %B0101010101010101,
-tick,
-output,
-tock,
-output;
-set address %B111101010,
-set in %B1010101010101010,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address %B000101010,
-tick,
-output;
-tock,
-output;
-set address %B001101010,
-eval,
-output;
-set address %B010101010,
-eval,
-output;
-set address %B011101010,
-eval,
-output;
-set address %B100101010,
-eval,
-output;
-set address %B101101010,
-eval,
-output;
-set address %B110101010,
-eval,
-output;
-set address %B111101010,
-eval,
-output;
-
-set load 1,
-set address %B111101010,
-set in %B0101010101010101,
-tick,
-output,
-tock,
-output;
-
-set load 0,
-set address %B000101010,
-tick,
-output;
-tock,
-output;
-set address %B001101010,
-eval,
-output;
-set address %B010101010,
-eval,
-output;
-set address %B011101010,
-eval,
-output;
-set address %B100101010,
-eval,
-output;
-set address %B101101010,
-eval,
-output;
-set address %B110101010,
-eval,
-output;
-set address %B111101010,
-eval,
-output;
-
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+load RAM512.hdl,
+output-file RAM512.out,
+compare-to RAM512.cmp,
+output-list time%S1.3.1 in%D1.6.1 load%B2.1.1 address%D2.3.2 out%D1.6.1;
+
+set in 0,
+set load 0,
+set address 0,
+tick,
+output;
+tock,
+output;
+
+set load 1,
+tick,
+output;
+tock,
+output;
+
+set in 13099,
+set load 0,
+tick,
+output;
+tock,
+output;
+
+set load 1,
+set address 130,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address 0,
+tick,
+output;
+tock,
+output;
+
+set in 4729,
+set address 472,
+tick,
+output;
+tock,
+output;
+
+set load 1,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+tick,
+output;
+tock,
+output;
+
+set address 130,
+eval,
+output;
+
+set in 5119,
+tick,
+output;
+tock,
+output;
+
+set load 1,
+set address 511,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+tick,
+output;
+tock,
+output;
+
+set address 472,
+eval,
+output;
+
+set address 511,
+eval,
+output;
+
+
+set load 0,
+set address %B010101000,
+tick,
+output;
+tock,
+output;
+set address %B010101001,
+eval,
+output;
+set address %B010101010,
+eval,
+output;
+set address %B010101011,
+eval,
+output;
+set address %B010101100,
+eval,
+output;
+set address %B010101101,
+eval,
+output;
+set address %B010101110,
+eval,
+output;
+set address %B010101111,
+eval,
+output;
+
+set load 1,
+set in %B0101010101010101,
+set address %B010101000,
+tick,
+output;
+tock,
+output;
+set address %B010101001,
+tick,
+output,
+tock,
+output;
+set address %B010101010,
+tick,
+output,
+tock,
+output;
+set address %B010101011,
+tick,
+output,
+tock,
+output;
+set address %B010101100,
+tick,
+output,
+tock,
+output;
+set address %B010101101,
+tick,
+output,
+tock,
+output;
+set address %B010101110,
+tick,
+output,
+tock,
+output;
+set address %B010101111,
+tick,
+output,
+tock,
+output;
+
+set load 0,
+set address %B010101000,
+tick,
+output;
+tock,
+output;
+set address %B010101001,
+eval,
+output;
+set address %B010101010,
+eval,
+output;
+set address %B010101011,
+eval,
+output;
+set address %B010101100,
+eval,
+output;
+set address %B010101101,
+eval,
+output;
+set address %B010101110,
+eval,
+output;
+set address %B010101111,
+eval,
+output;
+
+set load 1,
+set address %B010101000,
+set in %B1010101010101010,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address %B010101000,
+tick,
+output;
+tock,
+output;
+set address %B010101001,
+eval,
+output;
+set address %B010101010,
+eval,
+output;
+set address %B010101011,
+eval,
+output;
+set address %B010101100,
+eval,
+output;
+set address %B010101101,
+eval,
+output;
+set address %B010101110,
+eval,
+output;
+set address %B010101111,
+eval,
+output;
+
+set load 1,
+set address %B010101000,
+set in %B0101010101010101,
+tick,
+output,
+tock,
+output;
+set address %B010101001,
+set in %B1010101010101010,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address %B010101000,
+tick,
+output;
+tock,
+output;
+set address %B010101001,
+eval,
+output;
+set address %B010101010,
+eval,
+output;
+set address %B010101011,
+eval,
+output;
+set address %B010101100,
+eval,
+output;
+set address %B010101101,
+eval,
+output;
+set address %B010101110,
+eval,
+output;
+set address %B010101111,
+eval,
+output;
+
+set load 1,
+set address %B010101001,
+set in %B0101010101010101,
+tick,
+output,
+tock,
+output;
+set address %B010101010,
+set in %B1010101010101010,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address %B010101000,
+tick,
+output;
+tock,
+output;
+set address %B010101001,
+eval,
+output;
+set address %B010101010,
+eval,
+output;
+set address %B010101011,
+eval,
+output;
+set address %B010101100,
+eval,
+output;
+set address %B010101101,
+eval,
+output;
+set address %B010101110,
+eval,
+output;
+set address %B010101111,
+eval,
+output;
+
+set load 1,
+set address %B010101010,
+set in %B0101010101010101,
+tick,
+output,
+tock,
+output;
+set address %B010101011,
+set in %B1010101010101010,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address %B010101000,
+tick,
+output;
+tock,
+output;
+set address %B010101001,
+eval,
+output;
+set address %B010101010,
+eval,
+output;
+set address %B010101011,
+eval,
+output;
+set address %B010101100,
+eval,
+output;
+set address %B010101101,
+eval,
+output;
+set address %B010101110,
+eval,
+output;
+set address %B010101111,
+eval,
+output;
+
+set load 1,
+set address %B010101011,
+set in %B0101010101010101,
+tick,
+output,
+tock,
+output;
+set address %B010101100,
+set in %B1010101010101010,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address %B010101000,
+tick,
+output;
+tock,
+output;
+set address %B010101001,
+eval,
+output;
+set address %B010101010,
+eval,
+output;
+set address %B010101011,
+eval,
+output;
+set address %B010101100,
+eval,
+output;
+set address %B010101101,
+eval,
+output;
+set address %B010101110,
+eval,
+output;
+set address %B010101111,
+eval,
+output;
+
+set load 1,
+set address %B010101100,
+set in %B0101010101010101,
+tick,
+output,
+tock,
+output;
+set address %B010101101,
+set in %B1010101010101010,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address %B010101000,
+tick,
+output;
+tock,
+output;
+set address %B010101001,
+eval,
+output;
+set address %B010101010,
+eval,
+output;
+set address %B010101011,
+eval,
+output;
+set address %B010101100,
+eval,
+output;
+set address %B010101101,
+eval,
+output;
+set address %B010101110,
+eval,
+output;
+set address %B010101111,
+eval,
+output;
+
+set load 1,
+set address %B010101101,
+set in %B0101010101010101,
+tick,
+output,
+tock,
+output;
+set address %B010101110,
+set in %B1010101010101010,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address %B010101000,
+tick,
+output;
+tock,
+output;
+set address %B010101001,
+eval,
+output;
+set address %B010101010,
+eval,
+output;
+set address %B010101011,
+eval,
+output;
+set address %B010101100,
+eval,
+output;
+set address %B010101101,
+eval,
+output;
+set address %B010101110,
+eval,
+output;
+set address %B010101111,
+eval,
+output;
+
+set load 1,
+set address %B010101110,
+set in %B0101010101010101,
+tick,
+output,
+tock,
+output;
+set address %B010101111,
+set in %B1010101010101010,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address %B010101000,
+tick,
+output;
+tock,
+output;
+set address %B010101001,
+eval,
+output;
+set address %B010101010,
+eval,
+output;
+set address %B010101011,
+eval,
+output;
+set address %B010101100,
+eval,
+output;
+set address %B010101101,
+eval,
+output;
+set address %B010101110,
+eval,
+output;
+set address %B010101111,
+eval,
+output;
+
+set load 1,
+set address %B010101111,
+set in %B0101010101010101,
+tick,
+output,
+tock,
+output;
+
+set load 0,
+set address %B010101000,
+tick,
+output;
+tock,
+output;
+set address %B010101001,
+eval,
+output;
+set address %B010101010,
+eval,
+output;
+set address %B010101011,
+eval,
+output;
+set address %B010101100,
+eval,
+output;
+set address %B010101101,
+eval,
+output;
+set address %B010101110,
+eval,
+output;
+set address %B010101111,
+eval,
+output;
+
+
+set load 0,
+set address %B000101010,
+tick,
+output;
+tock,
+output;
+set address %B001101010,
+eval,
+output;
+set address %B010101010,
+eval,
+output;
+set address %B011101010,
+eval,
+output;
+set address %B100101010,
+eval,
+output;
+set address %B101101010,
+eval,
+output;
+set address %B110101010,
+eval,
+output;
+set address %B111101010,
+eval,
+output;
+
+set load 1,
+set in %B0101010101010101,
+set address %B000101010,
+tick,
+output;
+tock,
+output;
+set address %B001101010,
+tick,
+output,
+tock,
+output;
+set address %B010101010,
+tick,
+output,
+tock,
+output;
+set address %B011101010,
+tick,
+output,
+tock,
+output;
+set address %B100101010,
+tick,
+output,
+tock,
+output;
+set address %B101101010,
+tick,
+output,
+tock,
+output;
+set address %B110101010,
+tick,
+output,
+tock,
+output;
+set address %B111101010,
+tick,
+output,
+tock,
+output;
+
+set load 0,
+set address %B000101010,
+tick,
+output;
+tock,
+output;
+set address %B001101010,
+eval,
+output;
+set address %B010101010,
+eval,
+output;
+set address %B011101010,
+eval,
+output;
+set address %B100101010,
+eval,
+output;
+set address %B101101010,
+eval,
+output;
+set address %B110101010,
+eval,
+output;
+set address %B111101010,
+eval,
+output;
+
+set load 1,
+set address %B000101010,
+set in %B1010101010101010,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address %B000101010,
+tick,
+output;
+tock,
+output;
+set address %B001101010,
+eval,
+output;
+set address %B010101010,
+eval,
+output;
+set address %B011101010,
+eval,
+output;
+set address %B100101010,
+eval,
+output;
+set address %B101101010,
+eval,
+output;
+set address %B110101010,
+eval,
+output;
+set address %B111101010,
+eval,
+output;
+
+set load 1,
+set address %B000101010,
+set in %B0101010101010101,
+tick,
+output,
+tock,
+output;
+set address %B001101010,
+set in %B1010101010101010,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address %B000101010,
+tick,
+output;
+tock,
+output;
+set address %B001101010,
+eval,
+output;
+set address %B010101010,
+eval,
+output;
+set address %B011101010,
+eval,
+output;
+set address %B100101010,
+eval,
+output;
+set address %B101101010,
+eval,
+output;
+set address %B110101010,
+eval,
+output;
+set address %B111101010,
+eval,
+output;
+
+set load 1,
+set address %B001101010,
+set in %B0101010101010101,
+tick,
+output,
+tock,
+output;
+set address %B010101010,
+set in %B1010101010101010,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address %B000101010,
+tick,
+output;
+tock,
+output;
+set address %B001101010,
+eval,
+output;
+set address %B010101010,
+eval,
+output;
+set address %B011101010,
+eval,
+output;
+set address %B100101010,
+eval,
+output;
+set address %B101101010,
+eval,
+output;
+set address %B110101010,
+eval,
+output;
+set address %B111101010,
+eval,
+output;
+
+set load 1,
+set address %B010101010,
+set in %B0101010101010101,
+tick,
+output,
+tock,
+output;
+set address %B011101010,
+set in %B1010101010101010,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address %B000101010,
+tick,
+output;
+tock,
+output;
+set address %B001101010,
+eval,
+output;
+set address %B010101010,
+eval,
+output;
+set address %B011101010,
+eval,
+output;
+set address %B100101010,
+eval,
+output;
+set address %B101101010,
+eval,
+output;
+set address %B110101010,
+eval,
+output;
+set address %B111101010,
+eval,
+output;
+
+set load 1,
+set address %B011101010,
+set in %B0101010101010101,
+tick,
+output,
+tock,
+output;
+set address %B100101010,
+set in %B1010101010101010,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address %B000101010,
+tick,
+output;
+tock,
+output;
+set address %B001101010,
+eval,
+output;
+set address %B010101010,
+eval,
+output;
+set address %B011101010,
+eval,
+output;
+set address %B100101010,
+eval,
+output;
+set address %B101101010,
+eval,
+output;
+set address %B110101010,
+eval,
+output;
+set address %B111101010,
+eval,
+output;
+
+set load 1,
+set address %B100101010,
+set in %B0101010101010101,
+tick,
+output,
+tock,
+output;
+set address %B101101010,
+set in %B1010101010101010,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address %B000101010,
+tick,
+output;
+tock,
+output;
+set address %B001101010,
+eval,
+output;
+set address %B010101010,
+eval,
+output;
+set address %B011101010,
+eval,
+output;
+set address %B100101010,
+eval,
+output;
+set address %B101101010,
+eval,
+output;
+set address %B110101010,
+eval,
+output;
+set address %B111101010,
+eval,
+output;
+
+set load 1,
+set address %B101101010,
+set in %B0101010101010101,
+tick,
+output,
+tock,
+output;
+set address %B110101010,
+set in %B1010101010101010,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address %B000101010,
+tick,
+output;
+tock,
+output;
+set address %B001101010,
+eval,
+output;
+set address %B010101010,
+eval,
+output;
+set address %B011101010,
+eval,
+output;
+set address %B100101010,
+eval,
+output;
+set address %B101101010,
+eval,
+output;
+set address %B110101010,
+eval,
+output;
+set address %B111101010,
+eval,
+output;
+
+set load 1,
+set address %B110101010,
+set in %B0101010101010101,
+tick,
+output,
+tock,
+output;
+set address %B111101010,
+set in %B1010101010101010,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address %B000101010,
+tick,
+output;
+tock,
+output;
+set address %B001101010,
+eval,
+output;
+set address %B010101010,
+eval,
+output;
+set address %B011101010,
+eval,
+output;
+set address %B100101010,
+eval,
+output;
+set address %B101101010,
+eval,
+output;
+set address %B110101010,
+eval,
+output;
+set address %B111101010,
+eval,
+output;
+
+set load 1,
+set address %B111101010,
+set in %B0101010101010101,
+tick,
+output,
+tock,
+output;
+
+set load 0,
+set address %B000101010,
+tick,
+output;
+tock,
+output;
+set address %B001101010,
+eval,
+output;
+set address %B010101010,
+eval,
+output;
+set address %B011101010,
+eval,
+output;
+set address %B100101010,
+eval,
+output;
+set address %B101101010,
+eval,
+output;
+set address %B110101010,
+eval,
+output;
+set address %B111101010,
+eval,
+output;
+
diff --git a/3/RAM64.cmp b/3/RAM64.cmp
new file mode 100644
index 0000000..3fe1145
--- /dev/null
+++ b/3/RAM64.cmp
@@ -0,0 +1,320 @@
+|time | in |load|address| out |
+| 0+ | 0 | 0 | 0 | 0 |
+| 1 | 0 | 0 | 0 | 0 |
+| 1+ | 0 | 1 | 0 | 0 |
+| 2 | 0 | 1 | 0 | 0 |
+| 2+ | 1313 | 0 | 0 | 0 |
+| 3 | 1313 | 0 | 0 | 0 |
+| 3+ | 1313 | 1 | 13 | 0 |
+| 4 | 1313 | 1 | 13 | 1313 |
+| 4+ | 1313 | 0 | 0 | 0 |
+| 5 | 1313 | 0 | 0 | 0 |
+| 5+ | 4747 | 0 | 47 | 0 |
+| 6 | 4747 | 0 | 47 | 0 |
+| 6+ | 4747 | 1 | 47 | 0 |
+| 7 | 4747 | 1 | 47 | 4747 |
+| 7+ | 4747 | 0 | 47 | 4747 |
+| 8 | 4747 | 0 | 47 | 4747 |
+| 8 | 4747 | 0 | 13 | 1313 |
+| 8+ | 6363 | 0 | 13 | 1313 |
+| 9 | 6363 | 0 | 13 | 1313 |
+| 9+ | 6363 | 1 | 63 | 0 |
+| 10 | 6363 | 1 | 63 | 6363 |
+| 10+ | 6363 | 0 | 63 | 6363 |
+| 11 | 6363 | 0 | 63 | 6363 |
+| 11 | 6363 | 0 | 47 | 4747 |
+| 11 | 6363 | 0 | 63 | 6363 |
+| 11+ | 6363 | 0 | 40 | 0 |
+| 12 | 6363 | 0 | 40 | 0 |
+| 12 | 6363 | 0 | 41 | 0 |
+| 12 | 6363 | 0 | 42 | 0 |
+| 12 | 6363 | 0 | 43 | 0 |
+| 12 | 6363 | 0 | 44 | 0 |
+| 12 | 6363 | 0 | 45 | 0 |
+| 12 | 6363 | 0 | 46 | 0 |
+| 12 | 6363 | 0 | 47 | 4747 |
+| 12+ | 21845 | 1 | 40 | 0 |
+| 13 | 21845 | 1 | 40 | 21845 |
+| 13+ | 21845 | 1 | 41 | 0 |
+| 14 | 21845 | 1 | 41 | 21845 |
+| 14+ | 21845 | 1 | 42 | 0 |
+| 15 | 21845 | 1 | 42 | 21845 |
+| 15+ | 21845 | 1 | 43 | 0 |
+| 16 | 21845 | 1 | 43 | 21845 |
+| 16+ | 21845 | 1 | 44 | 0 |
+| 17 | 21845 | 1 | 44 | 21845 |
+| 17+ | 21845 | 1 | 45 | 0 |
+| 18 | 21845 | 1 | 45 | 21845 |
+| 18+ | 21845 | 1 | 46 | 0 |
+| 19 | 21845 | 1 | 46 | 21845 |
+| 19+ | 21845 | 1 | 47 | 4747 |
+| 20 | 21845 | 1 | 47 | 21845 |
+| 20+ | 21845 | 0 | 40 | 21845 |
+| 21 | 21845 | 0 | 40 | 21845 |
+| 21 | 21845 | 0 | 41 | 21845 |
+| 21 | 21845 | 0 | 42 | 21845 |
+| 21 | 21845 | 0 | 43 | 21845 |
+| 21 | 21845 | 0 | 44 | 21845 |
+| 21 | 21845 | 0 | 45 | 21845 |
+| 21 | 21845 | 0 | 46 | 21845 |
+| 21 | 21845 | 0 | 47 | 21845 |
+| 21+ | -21846 | 1 | 40 | 21845 |
+| 22 | -21846 | 1 | 40 | -21846 |
+| 22+ | -21846 | 0 | 40 | -21846 |
+| 23 | -21846 | 0 | 40 | -21846 |
+| 23 | -21846 | 0 | 41 | 21845 |
+| 23 | -21846 | 0 | 42 | 21845 |
+| 23 | -21846 | 0 | 43 | 21845 |
+| 23 | -21846 | 0 | 44 | 21845 |
+| 23 | -21846 | 0 | 45 | 21845 |
+| 23 | -21846 | 0 | 46 | 21845 |
+| 23 | -21846 | 0 | 47 | 21845 |
+| 23+ | 21845 | 1 | 40 | -21846 |
+| 24 | 21845 | 1 | 40 | 21845 |
+| 24+ | -21846 | 1 | 41 | 21845 |
+| 25 | -21846 | 1 | 41 | -21846 |
+| 25+ | -21846 | 0 | 40 | 21845 |
+| 26 | -21846 | 0 | 40 | 21845 |
+| 26 | -21846 | 0 | 41 | -21846 |
+| 26 | -21846 | 0 | 42 | 21845 |
+| 26 | -21846 | 0 | 43 | 21845 |
+| 26 | -21846 | 0 | 44 | 21845 |
+| 26 | -21846 | 0 | 45 | 21845 |
+| 26 | -21846 | 0 | 46 | 21845 |
+| 26 | -21846 | 0 | 47 | 21845 |
+| 26+ | 21845 | 1 | 41 | -21846 |
+| 27 | 21845 | 1 | 41 | 21845 |
+| 27+ | -21846 | 1 | 42 | 21845 |
+| 28 | -21846 | 1 | 42 | -21846 |
+| 28+ | -21846 | 0 | 40 | 21845 |
+| 29 | -21846 | 0 | 40 | 21845 |
+| 29 | -21846 | 0 | 41 | 21845 |
+| 29 | -21846 | 0 | 42 | -21846 |
+| 29 | -21846 | 0 | 43 | 21845 |
+| 29 | -21846 | 0 | 44 | 21845 |
+| 29 | -21846 | 0 | 45 | 21845 |
+| 29 | -21846 | 0 | 46 | 21845 |
+| 29 | -21846 | 0 | 47 | 21845 |
+| 29+ | 21845 | 1 | 42 | -21846 |
+| 30 | 21845 | 1 | 42 | 21845 |
+| 30+ | -21846 | 1 | 43 | 21845 |
+| 31 | -21846 | 1 | 43 | -21846 |
+| 31+ | -21846 | 0 | 40 | 21845 |
+| 32 | -21846 | 0 | 40 | 21845 |
+| 32 | -21846 | 0 | 41 | 21845 |
+| 32 | -21846 | 0 | 42 | 21845 |
+| 32 | -21846 | 0 | 43 | -21846 |
+| 32 | -21846 | 0 | 44 | 21845 |
+| 32 | -21846 | 0 | 45 | 21845 |
+| 32 | -21846 | 0 | 46 | 21845 |
+| 32 | -21846 | 0 | 47 | 21845 |
+| 32+ | 21845 | 1 | 43 | -21846 |
+| 33 | 21845 | 1 | 43 | 21845 |
+| 33+ | -21846 | 1 | 44 | 21845 |
+| 34 | -21846 | 1 | 44 | -21846 |
+| 34+ | -21846 | 0 | 40 | 21845 |
+| 35 | -21846 | 0 | 40 | 21845 |
+| 35 | -21846 | 0 | 41 | 21845 |
+| 35 | -21846 | 0 | 42 | 21845 |
+| 35 | -21846 | 0 | 43 | 21845 |
+| 35 | -21846 | 0 | 44 | -21846 |
+| 35 | -21846 | 0 | 45 | 21845 |
+| 35 | -21846 | 0 | 46 | 21845 |
+| 35 | -21846 | 0 | 47 | 21845 |
+| 35+ | 21845 | 1 | 44 | -21846 |
+| 36 | 21845 | 1 | 44 | 21845 |
+| 36+ | -21846 | 1 | 45 | 21845 |
+| 37 | -21846 | 1 | 45 | -21846 |
+| 37+ | -21846 | 0 | 40 | 21845 |
+| 38 | -21846 | 0 | 40 | 21845 |
+| 38 | -21846 | 0 | 41 | 21845 |
+| 38 | -21846 | 0 | 42 | 21845 |
+| 38 | -21846 | 0 | 43 | 21845 |
+| 38 | -21846 | 0 | 44 | 21845 |
+| 38 | -21846 | 0 | 45 | -21846 |
+| 38 | -21846 | 0 | 46 | 21845 |
+| 38 | -21846 | 0 | 47 | 21845 |
+| 38+ | 21845 | 1 | 45 | -21846 |
+| 39 | 21845 | 1 | 45 | 21845 |
+| 39+ | -21846 | 1 | 46 | 21845 |
+| 40 | -21846 | 1 | 46 | -21846 |
+| 40+ | -21846 | 0 | 40 | 21845 |
+| 41 | -21846 | 0 | 40 | 21845 |
+| 41 | -21846 | 0 | 41 | 21845 |
+| 41 | -21846 | 0 | 42 | 21845 |
+| 41 | -21846 | 0 | 43 | 21845 |
+| 41 | -21846 | 0 | 44 | 21845 |
+| 41 | -21846 | 0 | 45 | 21845 |
+| 41 | -21846 | 0 | 46 | -21846 |
+| 41 | -21846 | 0 | 47 | 21845 |
+| 41+ | 21845 | 1 | 46 | -21846 |
+| 42 | 21845 | 1 | 46 | 21845 |
+| 42+ | -21846 | 1 | 47 | 21845 |
+| 43 | -21846 | 1 | 47 | -21846 |
+| 43+ | -21846 | 0 | 40 | 21845 |
+| 44 | -21846 | 0 | 40 | 21845 |
+| 44 | -21846 | 0 | 41 | 21845 |
+| 44 | -21846 | 0 | 42 | 21845 |
+| 44 | -21846 | 0 | 43 | 21845 |
+| 44 | -21846 | 0 | 44 | 21845 |
+| 44 | -21846 | 0 | 45 | 21845 |
+| 44 | -21846 | 0 | 46 | 21845 |
+| 44 | -21846 | 0 | 47 | -21846 |
+| 44+ | 21845 | 1 | 47 | -21846 |
+| 45 | 21845 | 1 | 47 | 21845 |
+| 45+ | 21845 | 0 | 40 | 21845 |
+| 46 | 21845 | 0 | 40 | 21845 |
+| 46 | 21845 | 0 | 41 | 21845 |
+| 46 | 21845 | 0 | 42 | 21845 |
+| 46 | 21845 | 0 | 43 | 21845 |
+| 46 | 21845 | 0 | 44 | 21845 |
+| 46 | 21845 | 0 | 45 | 21845 |
+| 46 | 21845 | 0 | 46 | 21845 |
+| 46 | 21845 | 0 | 47 | 21845 |
+| 46+ | 21845 | 0 | 5 | 0 |
+| 47 | 21845 | 0 | 5 | 0 |
+| 47 | 21845 | 0 | 13 | 1313 |
+| 47 | 21845 | 0 | 21 | 0 |
+| 47 | 21845 | 0 | 29 | 0 |
+| 47 | 21845 | 0 | 37 | 0 |
+| 47 | 21845 | 0 | 45 | 21845 |
+| 47 | 21845 | 0 | 53 | 0 |
+| 47 | 21845 | 0 | 61 | 0 |
+| 47+ | 21845 | 1 | 5 | 0 |
+| 48 | 21845 | 1 | 5 | 21845 |
+| 48+ | 21845 | 1 | 13 | 1313 |
+| 49 | 21845 | 1 | 13 | 21845 |
+| 49+ | 21845 | 1 | 21 | 0 |
+| 50 | 21845 | 1 | 21 | 21845 |
+| 50+ | 21845 | 1 | 29 | 0 |
+| 51 | 21845 | 1 | 29 | 21845 |
+| 51+ | 21845 | 1 | 37 | 0 |
+| 52 | 21845 | 1 | 37 | 21845 |
+| 52+ | 21845 | 1 | 45 | 21845 |
+| 53 | 21845 | 1 | 45 | 21845 |
+| 53+ | 21845 | 1 | 53 | 0 |
+| 54 | 21845 | 1 | 53 | 21845 |
+| 54+ | 21845 | 1 | 61 | 0 |
+| 55 | 21845 | 1 | 61 | 21845 |
+| 55+ | 21845 | 0 | 5 | 21845 |
+| 56 | 21845 | 0 | 5 | 21845 |
+| 56 | 21845 | 0 | 13 | 21845 |
+| 56 | 21845 | 0 | 21 | 21845 |
+| 56 | 21845 | 0 | 29 | 21845 |
+| 56 | 21845 | 0 | 37 | 21845 |
+| 56 | 21845 | 0 | 45 | 21845 |
+| 56 | 21845 | 0 | 53 | 21845 |
+| 56 | 21845 | 0 | 61 | 21845 |
+| 56+ | -21846 | 1 | 5 | 21845 |
+| 57 | -21846 | 1 | 5 | -21846 |
+| 57+ | -21846 | 0 | 5 | -21846 |
+| 58 | -21846 | 0 | 5 | -21846 |
+| 58 | -21846 | 0 | 13 | 21845 |
+| 58 | -21846 | 0 | 21 | 21845 |
+| 58 | -21846 | 0 | 29 | 21845 |
+| 58 | -21846 | 0 | 37 | 21845 |
+| 58 | -21846 | 0 | 45 | 21845 |
+| 58 | -21846 | 0 | 53 | 21845 |
+| 58 | -21846 | 0 | 61 | 21845 |
+| 58+ | 21845 | 1 | 5 | -21846 |
+| 59 | 21845 | 1 | 5 | 21845 |
+| 59+ | -21846 | 1 | 13 | 21845 |
+| 60 | -21846 | 1 | 13 | -21846 |
+| 60+ | -21846 | 0 | 5 | 21845 |
+| 61 | -21846 | 0 | 5 | 21845 |
+| 61 | -21846 | 0 | 13 | -21846 |
+| 61 | -21846 | 0 | 21 | 21845 |
+| 61 | -21846 | 0 | 29 | 21845 |
+| 61 | -21846 | 0 | 37 | 21845 |
+| 61 | -21846 | 0 | 45 | 21845 |
+| 61 | -21846 | 0 | 53 | 21845 |
+| 61 | -21846 | 0 | 61 | 21845 |
+| 61+ | 21845 | 1 | 13 | -21846 |
+| 62 | 21845 | 1 | 13 | 21845 |
+| 62+ | -21846 | 1 | 21 | 21845 |
+| 63 | -21846 | 1 | 21 | -21846 |
+| 63+ | -21846 | 0 | 5 | 21845 |
+| 64 | -21846 | 0 | 5 | 21845 |
+| 64 | -21846 | 0 | 13 | 21845 |
+| 64 | -21846 | 0 | 21 | -21846 |
+| 64 | -21846 | 0 | 29 | 21845 |
+| 64 | -21846 | 0 | 37 | 21845 |
+| 64 | -21846 | 0 | 45 | 21845 |
+| 64 | -21846 | 0 | 53 | 21845 |
+| 64 | -21846 | 0 | 61 | 21845 |
+| 64+ | 21845 | 1 | 21 | -21846 |
+| 65 | 21845 | 1 | 21 | 21845 |
+| 65+ | -21846 | 1 | 29 | 21845 |
+| 66 | -21846 | 1 | 29 | -21846 |
+| 66+ | -21846 | 0 | 5 | 21845 |
+| 67 | -21846 | 0 | 5 | 21845 |
+| 67 | -21846 | 0 | 13 | 21845 |
+| 67 | -21846 | 0 | 21 | 21845 |
+| 67 | -21846 | 0 | 29 | -21846 |
+| 67 | -21846 | 0 | 37 | 21845 |
+| 67 | -21846 | 0 | 45 | 21845 |
+| 67 | -21846 | 0 | 53 | 21845 |
+| 67 | -21846 | 0 | 61 | 21845 |
+| 67+ | 21845 | 1 | 29 | -21846 |
+| 68 | 21845 | 1 | 29 | 21845 |
+| 68+ | -21846 | 1 | 37 | 21845 |
+| 69 | -21846 | 1 | 37 | -21846 |
+| 69+ | -21846 | 0 | 5 | 21845 |
+| 70 | -21846 | 0 | 5 | 21845 |
+| 70 | -21846 | 0 | 13 | 21845 |
+| 70 | -21846 | 0 | 21 | 21845 |
+| 70 | -21846 | 0 | 29 | 21845 |
+| 70 | -21846 | 0 | 37 | -21846 |
+| 70 | -21846 | 0 | 45 | 21845 |
+| 70 | -21846 | 0 | 53 | 21845 |
+| 70 | -21846 | 0 | 61 | 21845 |
+| 70+ | 21845 | 1 | 37 | -21846 |
+| 71 | 21845 | 1 | 37 | 21845 |
+| 71+ | -21846 | 1 | 45 | 21845 |
+| 72 | -21846 | 1 | 45 | -21846 |
+| 72+ | -21846 | 0 | 5 | 21845 |
+| 73 | -21846 | 0 | 5 | 21845 |
+| 73 | -21846 | 0 | 13 | 21845 |
+| 73 | -21846 | 0 | 21 | 21845 |
+| 73 | -21846 | 0 | 29 | 21845 |
+| 73 | -21846 | 0 | 37 | 21845 |
+| 73 | -21846 | 0 | 45 | -21846 |
+| 73 | -21846 | 0 | 53 | 21845 |
+| 73 | -21846 | 0 | 61 | 21845 |
+| 73+ | 21845 | 1 | 45 | -21846 |
+| 74 | 21845 | 1 | 45 | 21845 |
+| 74+ | -21846 | 1 | 53 | 21845 |
+| 75 | -21846 | 1 | 53 | -21846 |
+| 75+ | -21846 | 0 | 5 | 21845 |
+| 76 | -21846 | 0 | 5 | 21845 |
+| 76 | -21846 | 0 | 13 | 21845 |
+| 76 | -21846 | 0 | 21 | 21845 |
+| 76 | -21846 | 0 | 29 | 21845 |
+| 76 | -21846 | 0 | 37 | 21845 |
+| 76 | -21846 | 0 | 45 | 21845 |
+| 76 | -21846 | 0 | 53 | -21846 |
+| 76 | -21846 | 0 | 61 | 21845 |
+| 76+ | 21845 | 1 | 53 | -21846 |
+| 77 | 21845 | 1 | 53 | 21845 |
+| 77+ | -21846 | 1 | 61 | 21845 |
+| 78 | -21846 | 1 | 61 | -21846 |
+| 78+ | -21846 | 0 | 5 | 21845 |
+| 79 | -21846 | 0 | 5 | 21845 |
+| 79 | -21846 | 0 | 13 | 21845 |
+| 79 | -21846 | 0 | 21 | 21845 |
+| 79 | -21846 | 0 | 29 | 21845 |
+| 79 | -21846 | 0 | 37 | 21845 |
+| 79 | -21846 | 0 | 45 | 21845 |
+| 79 | -21846 | 0 | 53 | 21845 |
+| 79 | -21846 | 0 | 61 | -21846 |
+| 79+ | 21845 | 1 | 61 | -21846 |
+| 80 | 21845 | 1 | 61 | 21845 |
+| 80+ | 21845 | 0 | 5 | 21845 |
+| 81 | 21845 | 0 | 5 | 21845 |
+| 81 | 21845 | 0 | 13 | 21845 |
+| 81 | 21845 | 0 | 21 | 21845 |
+| 81 | 21845 | 0 | 29 | 21845 |
+| 81 | 21845 | 0 | 37 | 21845 |
+| 81 | 21845 | 0 | 45 | 21845 |
+| 81 | 21845 | 0 | 53 | 21845 |
+| 81 | 21845 | 0 | 61 | 21845 |
diff --git a/3/RAM64.hdl b/3/RAM64.hdl
new file mode 100644
index 0000000..a75a9c0
--- /dev/null
+++ b/3/RAM64.hdl
@@ -0,0 +1,16 @@
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+/**
+ * Memory of sixty four 16-bit registers.
+ * If load is asserted, the value of the register selected by
+ * address is set to in; Otherwise, the value does not change.
+ * The value of the selected register is emitted by out.
+ */
+CHIP RAM64 {
+ IN in[16], load, address[6];
+ OUT out[16];
+
+ PARTS:
+ //// Replace this comment with your code.
+}
diff --git a/03/a/RAM64.tst b/3/RAM64.tst
similarity index 90%
rename from 03/a/RAM64.tst
rename to 3/RAM64.tst
index e1a1409..0780ca3 100644
--- a/03/a/RAM64.tst
+++ b/3/RAM64.tst
@@ -1,1026 +1,1025 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/03/a/RAM64.tst
-
-load RAM64.hdl,
-output-file RAM64.out,
-compare-to RAM64.cmp,
-output-list time%S1.4.1 in%D1.6.1 load%B2.1.2 address%D2.3.2 out%D1.6.1;
-
-set in 0,
-set load 0,
-set address 0,
-tick,
-output;
-tock,
-output;
-
-set load 1,
-tick,
-output;
-tock,
-output;
-
-set in 1313,
-set load 0,
-tick,
-output;
-tock,
-output;
-
-set load 1,
-set address 13,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address 0,
-tick,
-output;
-tock,
-output;
-
-set in 4747,
-set address 47,
-tick,
-output;
-tock,
-output;
-
-set load 1,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-tick,
-output;
-tock,
-output;
-
-set address 13,
-eval,
-output;
-
-set in 6363,
-tick,
-output;
-tock,
-output;
-
-set load 1,
-set address 63,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-tick,
-output;
-tock,
-output;
-
-set address 47,
-eval,
-output;
-
-set address 63,
-eval,
-output;
-
-
-set load 0,
-set address %B101000,
-tick,
-output;
-tock,
-output;
-set address %B101001,
-eval,
-output;
-set address %B101010,
-eval,
-output;
-set address %B101011,
-eval,
-output;
-set address %B101100,
-eval,
-output;
-set address %B101101,
-eval,
-output;
-set address %B101110,
-eval,
-output;
-set address %B101111,
-eval,
-output;
-
-set load 1,
-set in %B0101010101010101,
-set address %B101000,
-tick,
-output;
-tock,
-output;
-set address %B101001,
-tick,
-output,
-tock,
-output;
-set address %B101010,
-tick,
-output,
-tock,
-output;
-set address %B101011,
-tick,
-output,
-tock,
-output;
-set address %B101100,
-tick,
-output,
-tock,
-output;
-set address %B101101,
-tick,
-output,
-tock,
-output;
-set address %B101110,
-tick,
-output,
-tock,
-output;
-set address %B101111,
-tick,
-output,
-tock,
-output;
-
-set load 0,
-set address %B101000,
-tick,
-output;
-tock,
-output;
-set address %B101001,
-eval,
-output;
-set address %B101010,
-eval,
-output;
-set address %B101011,
-eval,
-output;
-set address %B101100,
-eval,
-output;
-set address %B101101,
-eval,
-output;
-set address %B101110,
-eval,
-output;
-set address %B101111,
-eval,
-output;
-
-set load 1,
-set address %B101000,
-set in %B1010101010101010,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address %B101000,
-tick,
-output;
-tock,
-output;
-set address %B101001,
-eval,
-output;
-set address %B101010,
-eval,
-output;
-set address %B101011,
-eval,
-output;
-set address %B101100,
-eval,
-output;
-set address %B101101,
-eval,
-output;
-set address %B101110,
-eval,
-output;
-set address %B101111,
-eval,
-output;
-
-set load 1,
-set address %B101000,
-set in %B0101010101010101,
-tick,
-output,
-tock,
-output;
-set address %B101001,
-set in %B1010101010101010,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address %B101000,
-tick,
-output;
-tock,
-output;
-set address %B101001,
-eval,
-output;
-set address %B101010,
-eval,
-output;
-set address %B101011,
-eval,
-output;
-set address %B101100,
-eval,
-output;
-set address %B101101,
-eval,
-output;
-set address %B101110,
-eval,
-output;
-set address %B101111,
-eval,
-output;
-
-set load 1,
-set address %B101001,
-set in %B0101010101010101,
-tick,
-output,
-tock,
-output;
-set address %B101010,
-set in %B1010101010101010,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address %B101000,
-tick,
-output;
-tock,
-output;
-set address %B101001,
-eval,
-output;
-set address %B101010,
-eval,
-output;
-set address %B101011,
-eval,
-output;
-set address %B101100,
-eval,
-output;
-set address %B101101,
-eval,
-output;
-set address %B101110,
-eval,
-output;
-set address %B101111,
-eval,
-output;
-
-set load 1,
-set address %B101010,
-set in %B0101010101010101,
-tick,
-output,
-tock,
-output;
-set address %B101011,
-set in %B1010101010101010,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address %B101000,
-tick,
-output;
-tock,
-output;
-set address %B101001,
-eval,
-output;
-set address %B101010,
-eval,
-output;
-set address %B101011,
-eval,
-output;
-set address %B101100,
-eval,
-output;
-set address %B101101,
-eval,
-output;
-set address %B101110,
-eval,
-output;
-set address %B101111,
-eval,
-output;
-
-set load 1,
-set address %B101011,
-set in %B0101010101010101,
-tick,
-output,
-tock,
-output;
-set address %B101100,
-set in %B1010101010101010,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address %B101000,
-tick,
-output;
-tock,
-output;
-set address %B101001,
-eval,
-output;
-set address %B101010,
-eval,
-output;
-set address %B101011,
-eval,
-output;
-set address %B101100,
-eval,
-output;
-set address %B101101,
-eval,
-output;
-set address %B101110,
-eval,
-output;
-set address %B101111,
-eval,
-output;
-
-set load 1,
-set address %B101100,
-set in %B0101010101010101,
-tick,
-output,
-tock,
-output;
-set address %B101101,
-set in %B1010101010101010,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address %B101000,
-tick,
-output;
-tock,
-output;
-set address %B101001,
-eval,
-output;
-set address %B101010,
-eval,
-output;
-set address %B101011,
-eval,
-output;
-set address %B101100,
-eval,
-output;
-set address %B101101,
-eval,
-output;
-set address %B101110,
-eval,
-output;
-set address %B101111,
-eval,
-output;
-
-set load 1,
-set address %B101101,
-set in %B0101010101010101,
-tick,
-output,
-tock,
-output;
-set address %B101110,
-set in %B1010101010101010,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address %B101000,
-tick,
-output;
-tock,
-output;
-set address %B101001,
-eval,
-output;
-set address %B101010,
-eval,
-output;
-set address %B101011,
-eval,
-output;
-set address %B101100,
-eval,
-output;
-set address %B101101,
-eval,
-output;
-set address %B101110,
-eval,
-output;
-set address %B101111,
-eval,
-output;
-
-set load 1,
-set address %B101110,
-set in %B0101010101010101,
-tick,
-output,
-tock,
-output;
-set address %B101111,
-set in %B1010101010101010,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address %B101000,
-tick,
-output;
-tock,
-output;
-set address %B101001,
-eval,
-output;
-set address %B101010,
-eval,
-output;
-set address %B101011,
-eval,
-output;
-set address %B101100,
-eval,
-output;
-set address %B101101,
-eval,
-output;
-set address %B101110,
-eval,
-output;
-set address %B101111,
-eval,
-output;
-
-set load 1,
-set address %B101111,
-set in %B0101010101010101,
-tick,
-output,
-tock,
-output;
-
-set load 0,
-set address %B101000,
-tick,
-output;
-tock,
-output;
-set address %B101001,
-eval,
-output;
-set address %B101010,
-eval,
-output;
-set address %B101011,
-eval,
-output;
-set address %B101100,
-eval,
-output;
-set address %B101101,
-eval,
-output;
-set address %B101110,
-eval,
-output;
-set address %B101111,
-eval,
-output;
-
-
-set load 0,
-set address %B000101,
-tick,
-output;
-tock,
-output;
-set address %B001101,
-eval,
-output;
-set address %B010101,
-eval,
-output;
-set address %B011101,
-eval,
-output;
-set address %B100101,
-eval,
-output;
-set address %B101101,
-eval,
-output;
-set address %B110101,
-eval,
-output;
-set address %B111101,
-eval,
-output;
-
-set load 1,
-set in %B0101010101010101,
-set address %B000101,
-tick,
-output;
-tock,
-output;
-set address %B001101,
-tick,
-output,
-tock,
-output;
-set address %B010101,
-tick,
-output,
-tock,
-output;
-set address %B011101,
-tick,
-output,
-tock,
-output;
-set address %B100101,
-tick,
-output,
-tock,
-output;
-set address %B101101,
-tick,
-output,
-tock,
-output;
-set address %B110101,
-tick,
-output,
-tock,
-output;
-set address %B111101,
-tick,
-output,
-tock,
-output;
-
-set load 0,
-set address %B000101,
-tick,
-output;
-tock,
-output;
-set address %B001101,
-eval,
-output;
-set address %B010101,
-eval,
-output;
-set address %B011101,
-eval,
-output;
-set address %B100101,
-eval,
-output;
-set address %B101101,
-eval,
-output;
-set address %B110101,
-eval,
-output;
-set address %B111101,
-eval,
-output;
-
-set load 1,
-set address %B000101,
-set in %B1010101010101010,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address %B000101,
-tick,
-output;
-tock,
-output;
-set address %B001101,
-eval,
-output;
-set address %B010101,
-eval,
-output;
-set address %B011101,
-eval,
-output;
-set address %B100101,
-eval,
-output;
-set address %B101101,
-eval,
-output;
-set address %B110101,
-eval,
-output;
-set address %B111101,
-eval,
-output;
-
-set load 1,
-set address %B000101,
-set in %B0101010101010101,
-tick,
-output,
-tock,
-output;
-set address %B001101,
-set in %B1010101010101010,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address %B000101,
-tick,
-output;
-tock,
-output;
-set address %B001101,
-eval,
-output;
-set address %B010101,
-eval,
-output;
-set address %B011101,
-eval,
-output;
-set address %B100101,
-eval,
-output;
-set address %B101101,
-eval,
-output;
-set address %B110101,
-eval,
-output;
-set address %B111101,
-eval,
-output;
-
-set load 1,
-set address %B001101,
-set in %B0101010101010101,
-tick,
-output,
-tock,
-output;
-set address %B010101,
-set in %B1010101010101010,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address %B000101,
-tick,
-output;
-tock,
-output;
-set address %B001101,
-eval,
-output;
-set address %B010101,
-eval,
-output;
-set address %B011101,
-eval,
-output;
-set address %B100101,
-eval,
-output;
-set address %B101101,
-eval,
-output;
-set address %B110101,
-eval,
-output;
-set address %B111101,
-eval,
-output;
-
-set load 1,
-set address %B010101,
-set in %B0101010101010101,
-tick,
-output,
-tock,
-output;
-set address %B011101,
-set in %B1010101010101010,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address %B000101,
-tick,
-output;
-tock,
-output;
-set address %B001101,
-eval,
-output;
-set address %B010101,
-eval,
-output;
-set address %B011101,
-eval,
-output;
-set address %B100101,
-eval,
-output;
-set address %B101101,
-eval,
-output;
-set address %B110101,
-eval,
-output;
-set address %B111101,
-eval,
-output;
-
-set load 1,
-set address %B011101,
-set in %B0101010101010101,
-tick,
-output,
-tock,
-output;
-set address %B100101,
-set in %B1010101010101010,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address %B000101,
-tick,
-output;
-tock,
-output;
-set address %B001101,
-eval,
-output;
-set address %B010101,
-eval,
-output;
-set address %B011101,
-eval,
-output;
-set address %B100101,
-eval,
-output;
-set address %B101101,
-eval,
-output;
-set address %B110101,
-eval,
-output;
-set address %B111101,
-eval,
-output;
-
-set load 1,
-set address %B100101,
-set in %B0101010101010101,
-tick,
-output,
-tock,
-output;
-set address %B101101,
-set in %B1010101010101010,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address %B000101,
-tick,
-output;
-tock,
-output;
-set address %B001101,
-eval,
-output;
-set address %B010101,
-eval,
-output;
-set address %B011101,
-eval,
-output;
-set address %B100101,
-eval,
-output;
-set address %B101101,
-eval,
-output;
-set address %B110101,
-eval,
-output;
-set address %B111101,
-eval,
-output;
-
-set load 1,
-set address %B101101,
-set in %B0101010101010101,
-tick,
-output,
-tock,
-output;
-set address %B110101,
-set in %B1010101010101010,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address %B000101,
-tick,
-output;
-tock,
-output;
-set address %B001101,
-eval,
-output;
-set address %B010101,
-eval,
-output;
-set address %B011101,
-eval,
-output;
-set address %B100101,
-eval,
-output;
-set address %B101101,
-eval,
-output;
-set address %B110101,
-eval,
-output;
-set address %B111101,
-eval,
-output;
-
-set load 1,
-set address %B110101,
-set in %B0101010101010101,
-tick,
-output,
-tock,
-output;
-set address %B111101,
-set in %B1010101010101010,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address %B000101,
-tick,
-output;
-tock,
-output;
-set address %B001101,
-eval,
-output;
-set address %B010101,
-eval,
-output;
-set address %B011101,
-eval,
-output;
-set address %B100101,
-eval,
-output;
-set address %B101101,
-eval,
-output;
-set address %B110101,
-eval,
-output;
-set address %B111101,
-eval,
-output;
-
-set load 1,
-set address %B111101,
-set in %B0101010101010101,
-tick,
-output,
-tock,
-output;
-
-set load 0,
-set address %B000101,
-tick,
-output;
-tock,
-output;
-set address %B001101,
-eval,
-output;
-set address %B010101,
-eval,
-output;
-set address %B011101,
-eval,
-output;
-set address %B100101,
-eval,
-output;
-set address %B101101,
-eval,
-output;
-set address %B110101,
-eval,
-output;
-set address %B111101,
-eval,
-output;
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+load RAM64.hdl,
+output-file RAM64.out,
+compare-to RAM64.cmp,
+output-list time%S1.3.1 in%D1.6.1 load%B2.1.1 address%D2.3.2 out%D1.6.1;
+
+set in 0,
+set load 0,
+set address 0,
+tick,
+output;
+tock,
+output;
+
+set load 1,
+tick,
+output;
+tock,
+output;
+
+set in 1313,
+set load 0,
+tick,
+output;
+tock,
+output;
+
+set load 1,
+set address 13,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address 0,
+tick,
+output;
+tock,
+output;
+
+set in 4747,
+set address 47,
+tick,
+output;
+tock,
+output;
+
+set load 1,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+tick,
+output;
+tock,
+output;
+
+set address 13,
+eval,
+output;
+
+set in 6363,
+tick,
+output;
+tock,
+output;
+
+set load 1,
+set address 63,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+tick,
+output;
+tock,
+output;
+
+set address 47,
+eval,
+output;
+
+set address 63,
+eval,
+output;
+
+
+set load 0,
+set address %B101000,
+tick,
+output;
+tock,
+output;
+set address %B101001,
+eval,
+output;
+set address %B101010,
+eval,
+output;
+set address %B101011,
+eval,
+output;
+set address %B101100,
+eval,
+output;
+set address %B101101,
+eval,
+output;
+set address %B101110,
+eval,
+output;
+set address %B101111,
+eval,
+output;
+
+set load 1,
+set in %B0101010101010101,
+set address %B101000,
+tick,
+output;
+tock,
+output;
+set address %B101001,
+tick,
+output,
+tock,
+output;
+set address %B101010,
+tick,
+output,
+tock,
+output;
+set address %B101011,
+tick,
+output,
+tock,
+output;
+set address %B101100,
+tick,
+output,
+tock,
+output;
+set address %B101101,
+tick,
+output,
+tock,
+output;
+set address %B101110,
+tick,
+output,
+tock,
+output;
+set address %B101111,
+tick,
+output,
+tock,
+output;
+
+set load 0,
+set address %B101000,
+tick,
+output;
+tock,
+output;
+set address %B101001,
+eval,
+output;
+set address %B101010,
+eval,
+output;
+set address %B101011,
+eval,
+output;
+set address %B101100,
+eval,
+output;
+set address %B101101,
+eval,
+output;
+set address %B101110,
+eval,
+output;
+set address %B101111,
+eval,
+output;
+
+set load 1,
+set address %B101000,
+set in %B1010101010101010,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address %B101000,
+tick,
+output;
+tock,
+output;
+set address %B101001,
+eval,
+output;
+set address %B101010,
+eval,
+output;
+set address %B101011,
+eval,
+output;
+set address %B101100,
+eval,
+output;
+set address %B101101,
+eval,
+output;
+set address %B101110,
+eval,
+output;
+set address %B101111,
+eval,
+output;
+
+set load 1,
+set address %B101000,
+set in %B0101010101010101,
+tick,
+output,
+tock,
+output;
+set address %B101001,
+set in %B1010101010101010,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address %B101000,
+tick,
+output;
+tock,
+output;
+set address %B101001,
+eval,
+output;
+set address %B101010,
+eval,
+output;
+set address %B101011,
+eval,
+output;
+set address %B101100,
+eval,
+output;
+set address %B101101,
+eval,
+output;
+set address %B101110,
+eval,
+output;
+set address %B101111,
+eval,
+output;
+
+set load 1,
+set address %B101001,
+set in %B0101010101010101,
+tick,
+output,
+tock,
+output;
+set address %B101010,
+set in %B1010101010101010,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address %B101000,
+tick,
+output;
+tock,
+output;
+set address %B101001,
+eval,
+output;
+set address %B101010,
+eval,
+output;
+set address %B101011,
+eval,
+output;
+set address %B101100,
+eval,
+output;
+set address %B101101,
+eval,
+output;
+set address %B101110,
+eval,
+output;
+set address %B101111,
+eval,
+output;
+
+set load 1,
+set address %B101010,
+set in %B0101010101010101,
+tick,
+output,
+tock,
+output;
+set address %B101011,
+set in %B1010101010101010,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address %B101000,
+tick,
+output;
+tock,
+output;
+set address %B101001,
+eval,
+output;
+set address %B101010,
+eval,
+output;
+set address %B101011,
+eval,
+output;
+set address %B101100,
+eval,
+output;
+set address %B101101,
+eval,
+output;
+set address %B101110,
+eval,
+output;
+set address %B101111,
+eval,
+output;
+
+set load 1,
+set address %B101011,
+set in %B0101010101010101,
+tick,
+output,
+tock,
+output;
+set address %B101100,
+set in %B1010101010101010,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address %B101000,
+tick,
+output;
+tock,
+output;
+set address %B101001,
+eval,
+output;
+set address %B101010,
+eval,
+output;
+set address %B101011,
+eval,
+output;
+set address %B101100,
+eval,
+output;
+set address %B101101,
+eval,
+output;
+set address %B101110,
+eval,
+output;
+set address %B101111,
+eval,
+output;
+
+set load 1,
+set address %B101100,
+set in %B0101010101010101,
+tick,
+output,
+tock,
+output;
+set address %B101101,
+set in %B1010101010101010,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address %B101000,
+tick,
+output;
+tock,
+output;
+set address %B101001,
+eval,
+output;
+set address %B101010,
+eval,
+output;
+set address %B101011,
+eval,
+output;
+set address %B101100,
+eval,
+output;
+set address %B101101,
+eval,
+output;
+set address %B101110,
+eval,
+output;
+set address %B101111,
+eval,
+output;
+
+set load 1,
+set address %B101101,
+set in %B0101010101010101,
+tick,
+output,
+tock,
+output;
+set address %B101110,
+set in %B1010101010101010,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address %B101000,
+tick,
+output;
+tock,
+output;
+set address %B101001,
+eval,
+output;
+set address %B101010,
+eval,
+output;
+set address %B101011,
+eval,
+output;
+set address %B101100,
+eval,
+output;
+set address %B101101,
+eval,
+output;
+set address %B101110,
+eval,
+output;
+set address %B101111,
+eval,
+output;
+
+set load 1,
+set address %B101110,
+set in %B0101010101010101,
+tick,
+output,
+tock,
+output;
+set address %B101111,
+set in %B1010101010101010,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address %B101000,
+tick,
+output;
+tock,
+output;
+set address %B101001,
+eval,
+output;
+set address %B101010,
+eval,
+output;
+set address %B101011,
+eval,
+output;
+set address %B101100,
+eval,
+output;
+set address %B101101,
+eval,
+output;
+set address %B101110,
+eval,
+output;
+set address %B101111,
+eval,
+output;
+
+set load 1,
+set address %B101111,
+set in %B0101010101010101,
+tick,
+output,
+tock,
+output;
+
+set load 0,
+set address %B101000,
+tick,
+output;
+tock,
+output;
+set address %B101001,
+eval,
+output;
+set address %B101010,
+eval,
+output;
+set address %B101011,
+eval,
+output;
+set address %B101100,
+eval,
+output;
+set address %B101101,
+eval,
+output;
+set address %B101110,
+eval,
+output;
+set address %B101111,
+eval,
+output;
+
+
+set load 0,
+set address %B000101,
+tick,
+output;
+tock,
+output;
+set address %B001101,
+eval,
+output;
+set address %B010101,
+eval,
+output;
+set address %B011101,
+eval,
+output;
+set address %B100101,
+eval,
+output;
+set address %B101101,
+eval,
+output;
+set address %B110101,
+eval,
+output;
+set address %B111101,
+eval,
+output;
+
+set load 1,
+set in %B0101010101010101,
+set address %B000101,
+tick,
+output;
+tock,
+output;
+set address %B001101,
+tick,
+output,
+tock,
+output;
+set address %B010101,
+tick,
+output,
+tock,
+output;
+set address %B011101,
+tick,
+output,
+tock,
+output;
+set address %B100101,
+tick,
+output,
+tock,
+output;
+set address %B101101,
+tick,
+output,
+tock,
+output;
+set address %B110101,
+tick,
+output,
+tock,
+output;
+set address %B111101,
+tick,
+output,
+tock,
+output;
+
+set load 0,
+set address %B000101,
+tick,
+output;
+tock,
+output;
+set address %B001101,
+eval,
+output;
+set address %B010101,
+eval,
+output;
+set address %B011101,
+eval,
+output;
+set address %B100101,
+eval,
+output;
+set address %B101101,
+eval,
+output;
+set address %B110101,
+eval,
+output;
+set address %B111101,
+eval,
+output;
+
+set load 1,
+set address %B000101,
+set in %B1010101010101010,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address %B000101,
+tick,
+output;
+tock,
+output;
+set address %B001101,
+eval,
+output;
+set address %B010101,
+eval,
+output;
+set address %B011101,
+eval,
+output;
+set address %B100101,
+eval,
+output;
+set address %B101101,
+eval,
+output;
+set address %B110101,
+eval,
+output;
+set address %B111101,
+eval,
+output;
+
+set load 1,
+set address %B000101,
+set in %B0101010101010101,
+tick,
+output,
+tock,
+output;
+set address %B001101,
+set in %B1010101010101010,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address %B000101,
+tick,
+output;
+tock,
+output;
+set address %B001101,
+eval,
+output;
+set address %B010101,
+eval,
+output;
+set address %B011101,
+eval,
+output;
+set address %B100101,
+eval,
+output;
+set address %B101101,
+eval,
+output;
+set address %B110101,
+eval,
+output;
+set address %B111101,
+eval,
+output;
+
+set load 1,
+set address %B001101,
+set in %B0101010101010101,
+tick,
+output,
+tock,
+output;
+set address %B010101,
+set in %B1010101010101010,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address %B000101,
+tick,
+output;
+tock,
+output;
+set address %B001101,
+eval,
+output;
+set address %B010101,
+eval,
+output;
+set address %B011101,
+eval,
+output;
+set address %B100101,
+eval,
+output;
+set address %B101101,
+eval,
+output;
+set address %B110101,
+eval,
+output;
+set address %B111101,
+eval,
+output;
+
+set load 1,
+set address %B010101,
+set in %B0101010101010101,
+tick,
+output,
+tock,
+output;
+set address %B011101,
+set in %B1010101010101010,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address %B000101,
+tick,
+output;
+tock,
+output;
+set address %B001101,
+eval,
+output;
+set address %B010101,
+eval,
+output;
+set address %B011101,
+eval,
+output;
+set address %B100101,
+eval,
+output;
+set address %B101101,
+eval,
+output;
+set address %B110101,
+eval,
+output;
+set address %B111101,
+eval,
+output;
+
+set load 1,
+set address %B011101,
+set in %B0101010101010101,
+tick,
+output,
+tock,
+output;
+set address %B100101,
+set in %B1010101010101010,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address %B000101,
+tick,
+output;
+tock,
+output;
+set address %B001101,
+eval,
+output;
+set address %B010101,
+eval,
+output;
+set address %B011101,
+eval,
+output;
+set address %B100101,
+eval,
+output;
+set address %B101101,
+eval,
+output;
+set address %B110101,
+eval,
+output;
+set address %B111101,
+eval,
+output;
+
+set load 1,
+set address %B100101,
+set in %B0101010101010101,
+tick,
+output,
+tock,
+output;
+set address %B101101,
+set in %B1010101010101010,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address %B000101,
+tick,
+output;
+tock,
+output;
+set address %B001101,
+eval,
+output;
+set address %B010101,
+eval,
+output;
+set address %B011101,
+eval,
+output;
+set address %B100101,
+eval,
+output;
+set address %B101101,
+eval,
+output;
+set address %B110101,
+eval,
+output;
+set address %B111101,
+eval,
+output;
+
+set load 1,
+set address %B101101,
+set in %B0101010101010101,
+tick,
+output,
+tock,
+output;
+set address %B110101,
+set in %B1010101010101010,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address %B000101,
+tick,
+output;
+tock,
+output;
+set address %B001101,
+eval,
+output;
+set address %B010101,
+eval,
+output;
+set address %B011101,
+eval,
+output;
+set address %B100101,
+eval,
+output;
+set address %B101101,
+eval,
+output;
+set address %B110101,
+eval,
+output;
+set address %B111101,
+eval,
+output;
+
+set load 1,
+set address %B110101,
+set in %B0101010101010101,
+tick,
+output,
+tock,
+output;
+set address %B111101,
+set in %B1010101010101010,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address %B000101,
+tick,
+output;
+tock,
+output;
+set address %B001101,
+eval,
+output;
+set address %B010101,
+eval,
+output;
+set address %B011101,
+eval,
+output;
+set address %B100101,
+eval,
+output;
+set address %B101101,
+eval,
+output;
+set address %B110101,
+eval,
+output;
+set address %B111101,
+eval,
+output;
+
+set load 1,
+set address %B111101,
+set in %B0101010101010101,
+tick,
+output,
+tock,
+output;
+
+set load 0,
+set address %B000101,
+tick,
+output;
+tock,
+output;
+set address %B001101,
+eval,
+output;
+set address %B010101,
+eval,
+output;
+set address %B011101,
+eval,
+output;
+set address %B100101,
+eval,
+output;
+set address %B101101,
+eval,
+output;
+set address %B110101,
+eval,
+output;
+set address %B111101,
+eval,
+output;
diff --git a/3/RAM8.cmp b/3/RAM8.cmp
new file mode 100644
index 0000000..b43d136
--- /dev/null
+++ b/3/RAM8.cmp
@@ -0,0 +1,173 @@
+|time | in |load|address| out |
+| 0+ | 0 | 0 | 0 | 0 |
+| 1 | 0 | 0 | 0 | 0 |
+| 1+ | 0 | 1 | 0 | 0 |
+| 2 | 0 | 1 | 0 | 0 |
+| 2+ | 11111 | 0 | 0 | 0 |
+| 3 | 11111 | 0 | 0 | 0 |
+| 3+ | 11111 | 1 | 1 | 0 |
+| 4 | 11111 | 1 | 1 | 11111 |
+| 4+ | 11111 | 0 | 0 | 0 |
+| 5 | 11111 | 0 | 0 | 0 |
+| 5+ | 3333 | 0 | 3 | 0 |
+| 6 | 3333 | 0 | 3 | 0 |
+| 6+ | 3333 | 1 | 3 | 0 |
+| 7 | 3333 | 1 | 3 | 3333 |
+| 7+ | 3333 | 0 | 3 | 3333 |
+| 8 | 3333 | 0 | 3 | 3333 |
+| 8 | 3333 | 0 | 1 | 11111 |
+| 8+ | 7777 | 0 | 1 | 11111 |
+| 9 | 7777 | 0 | 1 | 11111 |
+| 9+ | 7777 | 1 | 7 | 0 |
+| 10 | 7777 | 1 | 7 | 7777 |
+| 10+ | 7777 | 0 | 7 | 7777 |
+| 11 | 7777 | 0 | 7 | 7777 |
+| 11 | 7777 | 0 | 3 | 3333 |
+| 11 | 7777 | 0 | 7 | 7777 |
+| 11+ | 7777 | 0 | 0 | 0 |
+| 12 | 7777 | 0 | 0 | 0 |
+| 12 | 7777 | 0 | 1 | 11111 |
+| 12 | 7777 | 0 | 2 | 0 |
+| 12 | 7777 | 0 | 3 | 3333 |
+| 12 | 7777 | 0 | 4 | 0 |
+| 12 | 7777 | 0 | 5 | 0 |
+| 12 | 7777 | 0 | 6 | 0 |
+| 12 | 7777 | 0 | 7 | 7777 |
+| 12+ | 21845 | 1 | 0 | 0 |
+| 13 | 21845 | 1 | 0 | 21845 |
+| 13+ | 21845 | 1 | 1 | 11111 |
+| 14 | 21845 | 1 | 1 | 21845 |
+| 14+ | 21845 | 1 | 2 | 0 |
+| 15 | 21845 | 1 | 2 | 21845 |
+| 15+ | 21845 | 1 | 3 | 3333 |
+| 16 | 21845 | 1 | 3 | 21845 |
+| 16+ | 21845 | 1 | 4 | 0 |
+| 17 | 21845 | 1 | 4 | 21845 |
+| 17+ | 21845 | 1 | 5 | 0 |
+| 18 | 21845 | 1 | 5 | 21845 |
+| 18+ | 21845 | 1 | 6 | 0 |
+| 19 | 21845 | 1 | 6 | 21845 |
+| 19+ | 21845 | 1 | 7 | 7777 |
+| 20 | 21845 | 1 | 7 | 21845 |
+| 20+ | 21845 | 0 | 0 | 21845 |
+| 21 | 21845 | 0 | 0 | 21845 |
+| 21 | 21845 | 0 | 1 | 21845 |
+| 21 | 21845 | 0 | 2 | 21845 |
+| 21 | 21845 | 0 | 3 | 21845 |
+| 21 | 21845 | 0 | 4 | 21845 |
+| 21 | 21845 | 0 | 5 | 21845 |
+| 21 | 21845 | 0 | 6 | 21845 |
+| 21 | 21845 | 0 | 7 | 21845 |
+| 21+ | -21846 | 1 | 0 | 21845 |
+| 22 | -21846 | 1 | 0 | -21846 |
+| 22+ | -21846 | 0 | 0 | -21846 |
+| 23 | -21846 | 0 | 0 | -21846 |
+| 23 | -21846 | 0 | 1 | 21845 |
+| 23 | -21846 | 0 | 2 | 21845 |
+| 23 | -21846 | 0 | 3 | 21845 |
+| 23 | -21846 | 0 | 4 | 21845 |
+| 23 | -21846 | 0 | 5 | 21845 |
+| 23 | -21846 | 0 | 6 | 21845 |
+| 23 | -21846 | 0 | 7 | 21845 |
+| 23+ | 21845 | 1 | 0 | -21846 |
+| 24 | 21845 | 1 | 0 | 21845 |
+| 24+ | -21846 | 1 | 1 | 21845 |
+| 25 | -21846 | 1 | 1 | -21846 |
+| 25+ | -21846 | 0 | 0 | 21845 |
+| 26 | -21846 | 0 | 0 | 21845 |
+| 26 | -21846 | 0 | 1 | -21846 |
+| 26 | -21846 | 0 | 2 | 21845 |
+| 26 | -21846 | 0 | 3 | 21845 |
+| 26 | -21846 | 0 | 4 | 21845 |
+| 26 | -21846 | 0 | 5 | 21845 |
+| 26 | -21846 | 0 | 6 | 21845 |
+| 26 | -21846 | 0 | 7 | 21845 |
+| 26+ | 21845 | 1 | 1 | -21846 |
+| 27 | 21845 | 1 | 1 | 21845 |
+| 27+ | -21846 | 1 | 2 | 21845 |
+| 28 | -21846 | 1 | 2 | -21846 |
+| 28+ | -21846 | 0 | 0 | 21845 |
+| 29 | -21846 | 0 | 0 | 21845 |
+| 29 | -21846 | 0 | 1 | 21845 |
+| 29 | -21846 | 0 | 2 | -21846 |
+| 29 | -21846 | 0 | 3 | 21845 |
+| 29 | -21846 | 0 | 4 | 21845 |
+| 29 | -21846 | 0 | 5 | 21845 |
+| 29 | -21846 | 0 | 6 | 21845 |
+| 29 | -21846 | 0 | 7 | 21845 |
+| 29+ | 21845 | 1 | 2 | -21846 |
+| 30 | 21845 | 1 | 2 | 21845 |
+| 30+ | -21846 | 1 | 3 | 21845 |
+| 31 | -21846 | 1 | 3 | -21846 |
+| 31+ | -21846 | 0 | 0 | 21845 |
+| 32 | -21846 | 0 | 0 | 21845 |
+| 32 | -21846 | 0 | 1 | 21845 |
+| 32 | -21846 | 0 | 2 | 21845 |
+| 32 | -21846 | 0 | 3 | -21846 |
+| 32 | -21846 | 0 | 4 | 21845 |
+| 32 | -21846 | 0 | 5 | 21845 |
+| 32 | -21846 | 0 | 6 | 21845 |
+| 32 | -21846 | 0 | 7 | 21845 |
+| 32+ | 21845 | 1 | 3 | -21846 |
+| 33 | 21845 | 1 | 3 | 21845 |
+| 33+ | -21846 | 1 | 4 | 21845 |
+| 34 | -21846 | 1 | 4 | -21846 |
+| 34+ | -21846 | 0 | 0 | 21845 |
+| 35 | -21846 | 0 | 0 | 21845 |
+| 35 | -21846 | 0 | 1 | 21845 |
+| 35 | -21846 | 0 | 2 | 21845 |
+| 35 | -21846 | 0 | 3 | 21845 |
+| 35 | -21846 | 0 | 4 | -21846 |
+| 35 | -21846 | 0 | 5 | 21845 |
+| 35 | -21846 | 0 | 6 | 21845 |
+| 35 | -21846 | 0 | 7 | 21845 |
+| 35+ | 21845 | 1 | 4 | -21846 |
+| 36 | 21845 | 1 | 4 | 21845 |
+| 36+ | -21846 | 1 | 5 | 21845 |
+| 37 | -21846 | 1 | 5 | -21846 |
+| 37+ | -21846 | 0 | 0 | 21845 |
+| 38 | -21846 | 0 | 0 | 21845 |
+| 38 | -21846 | 0 | 1 | 21845 |
+| 38 | -21846 | 0 | 2 | 21845 |
+| 38 | -21846 | 0 | 3 | 21845 |
+| 38 | -21846 | 0 | 4 | 21845 |
+| 38 | -21846 | 0 | 5 | -21846 |
+| 38 | -21846 | 0 | 6 | 21845 |
+| 38 | -21846 | 0 | 7 | 21845 |
+| 38+ | 21845 | 1 | 5 | -21846 |
+| 39 | 21845 | 1 | 5 | 21845 |
+| 39+ | -21846 | 1 | 6 | 21845 |
+| 40 | -21846 | 1 | 6 | -21846 |
+| 40+ | -21846 | 0 | 0 | 21845 |
+| 41 | -21846 | 0 | 0 | 21845 |
+| 41 | -21846 | 0 | 1 | 21845 |
+| 41 | -21846 | 0 | 2 | 21845 |
+| 41 | -21846 | 0 | 3 | 21845 |
+| 41 | -21846 | 0 | 4 | 21845 |
+| 41 | -21846 | 0 | 5 | 21845 |
+| 41 | -21846 | 0 | 6 | -21846 |
+| 41 | -21846 | 0 | 7 | 21845 |
+| 41+ | 21845 | 1 | 6 | -21846 |
+| 42 | 21845 | 1 | 6 | 21845 |
+| 42+ | -21846 | 1 | 7 | 21845 |
+| 43 | -21846 | 1 | 7 | -21846 |
+| 43+ | -21846 | 0 | 0 | 21845 |
+| 44 | -21846 | 0 | 0 | 21845 |
+| 44 | -21846 | 0 | 1 | 21845 |
+| 44 | -21846 | 0 | 2 | 21845 |
+| 44 | -21846 | 0 | 3 | 21845 |
+| 44 | -21846 | 0 | 4 | 21845 |
+| 44 | -21846 | 0 | 5 | 21845 |
+| 44 | -21846 | 0 | 6 | 21845 |
+| 44 | -21846 | 0 | 7 | -21846 |
+| 44+ | 21845 | 1 | 7 | -21846 |
+| 45 | 21845 | 1 | 7 | 21845 |
+| 45+ | 21845 | 0 | 0 | 21845 |
+| 46 | 21845 | 0 | 0 | 21845 |
+| 46 | 21845 | 0 | 1 | 21845 |
+| 46 | 21845 | 0 | 2 | 21845 |
+| 46 | 21845 | 0 | 3 | 21845 |
+| 46 | 21845 | 0 | 4 | 21845 |
+| 46 | 21845 | 0 | 5 | 21845 |
+| 46 | 21845 | 0 | 6 | 21845 |
+| 46 | 21845 | 0 | 7 | 21845 |
diff --git a/3/RAM8.hdl b/3/RAM8.hdl
new file mode 100644
index 0000000..aaf951a
--- /dev/null
+++ b/3/RAM8.hdl
@@ -0,0 +1,16 @@
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+/**
+ * Memory of eight 16-bit registers.
+ * If load is asserted, the value of the register selected by
+ * address is set to in; Otherwise, the value does not change.
+ * The value of the selected register is emitted by out.
+ */
+CHIP RAM8 {
+ IN in[16], load, address[3];
+ OUT out[16];
+
+ PARTS:
+ //// Replace this comment with your code.
+}
diff --git a/03/a/RAM8.tst b/3/RAM8.tst
similarity index 88%
rename from 03/a/RAM8.tst
rename to 3/RAM8.tst
index 9b6069c..95a6dff 100644
--- a/03/a/RAM8.tst
+++ b/3/RAM8.tst
@@ -1,560 +1,559 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/03/a/RAM8.tst
-
-load RAM8.hdl,
-output-file RAM8.out,
-compare-to RAM8.cmp,
-output-list time%S1.4.1 in%D1.6.1 load%B2.1.2 address%D3.1.3 out%D1.6.1;
-
-set in 0,
-set load 0,
-set address 0,
-tick,
-output;
-tock,
-output;
-
-set load 1,
-tick,
-output;
-tock,
-output;
-
-set in 11111,
-set load 0,
-tick,
-output;
-tock,
-output;
-
-set load 1,
-set address 1,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address 0,
-tick,
-output;
-tock,
-output;
-
-set in 3333,
-set address 3,
-tick,
-output;
-tock,
-output;
-
-set load 1,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-tick,
-output;
-tock,
-output;
-
-set address 1,
-eval,
-output;
-
-set in 7777,
-tick,
-output;
-tock,
-output;
-
-set load 1,
-set address 7,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-tick,
-output;
-tock,
-output;
-
-set address 3,
-eval,
-output;
-
-set address 7,
-eval,
-output;
-
-set load 0,
-set address 0,
-tick,
-output;
-tock,
-output;
-set address 1,
-eval,
-output;
-set address 2,
-eval,
-output;
-set address 3,
-eval,
-output;
-set address 4,
-eval,
-output;
-set address 5,
-eval,
-output;
-set address 6,
-eval,
-output;
-set address 7,
-eval,
-output;
-
-set load 1,
-set in %B0101010101010101,
-set address 0,
-tick,
-output;
-tock,
-output;
-set address 1,
-tick,
-output,
-tock,
-output;
-set address 2,
-tick,
-output,
-tock,
-output;
-set address 3,
-tick,
-output,
-tock,
-output;
-set address 4,
-tick,
-output,
-tock,
-output;
-set address 5,
-tick,
-output,
-tock,
-output;
-set address 6,
-tick,
-output,
-tock,
-output;
-set address 7,
-tick,
-output,
-tock,
-output;
-
-set load 0,
-set address 0,
-tick,
-output;
-tock,
-output;
-set address 1,
-eval,
-output;
-set address 2,
-eval,
-output;
-set address 3,
-eval,
-output;
-set address 4,
-eval,
-output;
-set address 5,
-eval,
-output;
-set address 6,
-eval,
-output;
-set address 7,
-eval,
-output;
-
-set load 1,
-set address 0,
-set in %B1010101010101010,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address 0,
-tick,
-output;
-tock,
-output;
-set address 1,
-eval,
-output;
-set address 2,
-eval,
-output;
-set address 3,
-eval,
-output;
-set address 4,
-eval,
-output;
-set address 5,
-eval,
-output;
-set address 6,
-eval,
-output;
-set address 7,
-eval,
-output;
-
-set load 1,
-set address 0,
-set in %B0101010101010101,
-tick,
-output,
-tock,
-output;
-set address 1,
-set in %B1010101010101010,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address 0,
-tick,
-output;
-tock,
-output;
-set address 1,
-eval,
-output;
-set address 2,
-eval,
-output;
-set address 3,
-eval,
-output;
-set address 4,
-eval,
-output;
-set address 5,
-eval,
-output;
-set address 6,
-eval,
-output;
-set address 7,
-eval,
-output;
-
-set load 1,
-set address 1,
-set in %B0101010101010101,
-tick,
-output,
-tock,
-output;
-set address 2,
-set in %B1010101010101010,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address 0,
-tick,
-output;
-tock,
-output;
-set address 1,
-eval,
-output;
-set address 2,
-eval,
-output;
-set address 3,
-eval,
-output;
-set address 4,
-eval,
-output;
-set address 5,
-eval,
-output;
-set address 6,
-eval,
-output;
-set address 7,
-eval,
-output;
-
-set load 1,
-set address 2,
-set in %B0101010101010101,
-tick,
-output,
-tock,
-output;
-set address 3,
-set in %B1010101010101010,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address 0,
-tick,
-output;
-tock,
-output;
-set address 1,
-eval,
-output;
-set address 2,
-eval,
-output;
-set address 3,
-eval,
-output;
-set address 4,
-eval,
-output;
-set address 5,
-eval,
-output;
-set address 6,
-eval,
-output;
-set address 7,
-eval,
-output;
-
-set load 1,
-set address 3,
-set in %B0101010101010101,
-tick,
-output,
-tock,
-output;
-set address 4,
-set in %B1010101010101010,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address 0,
-tick,
-output;
-tock,
-output;
-set address 1,
-eval,
-output;
-set address 2,
-eval,
-output;
-set address 3,
-eval,
-output;
-set address 4,
-eval,
-output;
-set address 5,
-eval,
-output;
-set address 6,
-eval,
-output;
-set address 7,
-eval,
-output;
-
-set load 1,
-set address 4,
-set in %B0101010101010101,
-tick,
-output,
-tock,
-output;
-set address 5,
-set in %B1010101010101010,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address 0,
-tick,
-output;
-tock,
-output;
-set address 1,
-eval,
-output;
-set address 2,
-eval,
-output;
-set address 3,
-eval,
-output;
-set address 4,
-eval,
-output;
-set address 5,
-eval,
-output;
-set address 6,
-eval,
-output;
-set address 7,
-eval,
-output;
-
-set load 1,
-set address 5,
-set in %B0101010101010101,
-tick,
-output,
-tock,
-output;
-set address 6,
-set in %B1010101010101010,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address 0,
-tick,
-output;
-tock,
-output;
-set address 1,
-eval,
-output;
-set address 2,
-eval,
-output;
-set address 3,
-eval,
-output;
-set address 4,
-eval,
-output;
-set address 5,
-eval,
-output;
-set address 6,
-eval,
-output;
-set address 7,
-eval,
-output;
-
-set load 1,
-set address 6,
-set in %B0101010101010101,
-tick,
-output,
-tock,
-output;
-set address 7,
-set in %B1010101010101010,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address 0,
-tick,
-output;
-tock,
-output;
-set address 1,
-eval,
-output;
-set address 2,
-eval,
-output;
-set address 3,
-eval,
-output;
-set address 4,
-eval,
-output;
-set address 5,
-eval,
-output;
-set address 6,
-eval,
-output;
-set address 7,
-eval,
-output;
-
-set load 1,
-set address 7,
-set in %B0101010101010101,
-tick,
-output,
-tock,
-output;
-
-set load 0,
-set address 0,
-tick,
-output;
-tock,
-output;
-set address 1,
-eval,
-output;
-set address 2,
-eval,
-output;
-set address 3,
-eval,
-output;
-set address 4,
-eval,
-output;
-set address 5,
-eval,
-output;
-set address 6,
-eval,
-output;
-set address 7,
-eval,
-output;
-
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+load RAM8.hdl,
+output-file RAM8.out,
+compare-to RAM8.cmp,
+output-list time%S1.3.1 in%D1.6.1 load%B2.1.1 address%D3.1.3 out%D1.6.1;
+
+set in 0,
+set load 0,
+set address 0,
+tick,
+output;
+tock,
+output;
+
+set load 1,
+tick,
+output;
+tock,
+output;
+
+set in 11111,
+set load 0,
+tick,
+output;
+tock,
+output;
+
+set load 1,
+set address 1,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address 0,
+tick,
+output;
+tock,
+output;
+
+set in 3333,
+set address 3,
+tick,
+output;
+tock,
+output;
+
+set load 1,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+tick,
+output;
+tock,
+output;
+
+set address 1,
+eval,
+output;
+
+set in 7777,
+tick,
+output;
+tock,
+output;
+
+set load 1,
+set address 7,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+tick,
+output;
+tock,
+output;
+
+set address 3,
+eval,
+output;
+
+set address 7,
+eval,
+output;
+
+set load 0,
+set address 0,
+tick,
+output;
+tock,
+output;
+set address 1,
+eval,
+output;
+set address 2,
+eval,
+output;
+set address 3,
+eval,
+output;
+set address 4,
+eval,
+output;
+set address 5,
+eval,
+output;
+set address 6,
+eval,
+output;
+set address 7,
+eval,
+output;
+
+set load 1,
+set in %B0101010101010101,
+set address 0,
+tick,
+output;
+tock,
+output;
+set address 1,
+tick,
+output,
+tock,
+output;
+set address 2,
+tick,
+output,
+tock,
+output;
+set address 3,
+tick,
+output,
+tock,
+output;
+set address 4,
+tick,
+output,
+tock,
+output;
+set address 5,
+tick,
+output,
+tock,
+output;
+set address 6,
+tick,
+output,
+tock,
+output;
+set address 7,
+tick,
+output,
+tock,
+output;
+
+set load 0,
+set address 0,
+tick,
+output;
+tock,
+output;
+set address 1,
+eval,
+output;
+set address 2,
+eval,
+output;
+set address 3,
+eval,
+output;
+set address 4,
+eval,
+output;
+set address 5,
+eval,
+output;
+set address 6,
+eval,
+output;
+set address 7,
+eval,
+output;
+
+set load 1,
+set address 0,
+set in %B1010101010101010,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address 0,
+tick,
+output;
+tock,
+output;
+set address 1,
+eval,
+output;
+set address 2,
+eval,
+output;
+set address 3,
+eval,
+output;
+set address 4,
+eval,
+output;
+set address 5,
+eval,
+output;
+set address 6,
+eval,
+output;
+set address 7,
+eval,
+output;
+
+set load 1,
+set address 0,
+set in %B0101010101010101,
+tick,
+output,
+tock,
+output;
+set address 1,
+set in %B1010101010101010,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address 0,
+tick,
+output;
+tock,
+output;
+set address 1,
+eval,
+output;
+set address 2,
+eval,
+output;
+set address 3,
+eval,
+output;
+set address 4,
+eval,
+output;
+set address 5,
+eval,
+output;
+set address 6,
+eval,
+output;
+set address 7,
+eval,
+output;
+
+set load 1,
+set address 1,
+set in %B0101010101010101,
+tick,
+output,
+tock,
+output;
+set address 2,
+set in %B1010101010101010,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address 0,
+tick,
+output;
+tock,
+output;
+set address 1,
+eval,
+output;
+set address 2,
+eval,
+output;
+set address 3,
+eval,
+output;
+set address 4,
+eval,
+output;
+set address 5,
+eval,
+output;
+set address 6,
+eval,
+output;
+set address 7,
+eval,
+output;
+
+set load 1,
+set address 2,
+set in %B0101010101010101,
+tick,
+output,
+tock,
+output;
+set address 3,
+set in %B1010101010101010,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address 0,
+tick,
+output;
+tock,
+output;
+set address 1,
+eval,
+output;
+set address 2,
+eval,
+output;
+set address 3,
+eval,
+output;
+set address 4,
+eval,
+output;
+set address 5,
+eval,
+output;
+set address 6,
+eval,
+output;
+set address 7,
+eval,
+output;
+
+set load 1,
+set address 3,
+set in %B0101010101010101,
+tick,
+output,
+tock,
+output;
+set address 4,
+set in %B1010101010101010,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address 0,
+tick,
+output;
+tock,
+output;
+set address 1,
+eval,
+output;
+set address 2,
+eval,
+output;
+set address 3,
+eval,
+output;
+set address 4,
+eval,
+output;
+set address 5,
+eval,
+output;
+set address 6,
+eval,
+output;
+set address 7,
+eval,
+output;
+
+set load 1,
+set address 4,
+set in %B0101010101010101,
+tick,
+output,
+tock,
+output;
+set address 5,
+set in %B1010101010101010,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address 0,
+tick,
+output;
+tock,
+output;
+set address 1,
+eval,
+output;
+set address 2,
+eval,
+output;
+set address 3,
+eval,
+output;
+set address 4,
+eval,
+output;
+set address 5,
+eval,
+output;
+set address 6,
+eval,
+output;
+set address 7,
+eval,
+output;
+
+set load 1,
+set address 5,
+set in %B0101010101010101,
+tick,
+output,
+tock,
+output;
+set address 6,
+set in %B1010101010101010,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address 0,
+tick,
+output;
+tock,
+output;
+set address 1,
+eval,
+output;
+set address 2,
+eval,
+output;
+set address 3,
+eval,
+output;
+set address 4,
+eval,
+output;
+set address 5,
+eval,
+output;
+set address 6,
+eval,
+output;
+set address 7,
+eval,
+output;
+
+set load 1,
+set address 6,
+set in %B0101010101010101,
+tick,
+output,
+tock,
+output;
+set address 7,
+set in %B1010101010101010,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address 0,
+tick,
+output;
+tock,
+output;
+set address 1,
+eval,
+output;
+set address 2,
+eval,
+output;
+set address 3,
+eval,
+output;
+set address 4,
+eval,
+output;
+set address 5,
+eval,
+output;
+set address 6,
+eval,
+output;
+set address 7,
+eval,
+output;
+
+set load 1,
+set address 7,
+set in %B0101010101010101,
+tick,
+output,
+tock,
+output;
+
+set load 0,
+set address 0,
+tick,
+output;
+tock,
+output;
+set address 1,
+eval,
+output;
+set address 2,
+eval,
+output;
+set address 3,
+eval,
+output;
+set address 4,
+eval,
+output;
+set address 5,
+eval,
+output;
+set address 6,
+eval,
+output;
+set address 7,
+eval,
+output;
+
diff --git a/3/Register.cmp b/3/Register.cmp
new file mode 100644
index 0000000..ad75755
--- /dev/null
+++ b/3/Register.cmp
@@ -0,0 +1,149 @@
+|time | in |load| out |
+| 0+ | 0 | 0 | 0 |
+| 1 | 0 | 0 | 0 |
+| 1+ | 0 | 1 | 0 |
+| 2 | 0 | 1 | 0 |
+| 2+ | -32123 | 0 | 0 |
+| 3 | -32123 | 0 | 0 |
+| 3+ | 11111 | 0 | 0 |
+| 4 | 11111 | 0 | 0 |
+| 4+ | -32123 | 1 | 0 |
+| 5 | -32123 | 1 | -32123 |
+| 5+ | -32123 | 1 | -32123 |
+| 6 | -32123 | 1 | -32123 |
+| 6+ | -32123 | 0 | -32123 |
+| 7 | -32123 | 0 | -32123 |
+| 7+ | 12345 | 1 | -32123 |
+| 8 | 12345 | 1 | 12345 |
+| 8+ | 0 | 0 | 12345 |
+| 9 | 0 | 0 | 12345 |
+| 9+ | 0 | 1 | 12345 |
+| 10 | 0 | 1 | 0 |
+| 10+ | 1 | 0 | 0 |
+| 11 | 1 | 0 | 0 |
+| 11+ | 1 | 1 | 0 |
+| 12 | 1 | 1 | 1 |
+| 12+ | 2 | 0 | 1 |
+| 13 | 2 | 0 | 1 |
+| 13+ | 2 | 1 | 1 |
+| 14 | 2 | 1 | 2 |
+| 14+ | 4 | 0 | 2 |
+| 15 | 4 | 0 | 2 |
+| 15+ | 4 | 1 | 2 |
+| 16 | 4 | 1 | 4 |
+| 16+ | 8 | 0 | 4 |
+| 17 | 8 | 0 | 4 |
+| 17+ | 8 | 1 | 4 |
+| 18 | 8 | 1 | 8 |
+| 18+ | 16 | 0 | 8 |
+| 19 | 16 | 0 | 8 |
+| 19+ | 16 | 1 | 8 |
+| 20 | 16 | 1 | 16 |
+| 20+ | 32 | 0 | 16 |
+| 21 | 32 | 0 | 16 |
+| 21+ | 32 | 1 | 16 |
+| 22 | 32 | 1 | 32 |
+| 22+ | 64 | 0 | 32 |
+| 23 | 64 | 0 | 32 |
+| 23+ | 64 | 1 | 32 |
+| 24 | 64 | 1 | 64 |
+| 24+ | 128 | 0 | 64 |
+| 25 | 128 | 0 | 64 |
+| 25+ | 128 | 1 | 64 |
+| 26 | 128 | 1 | 128 |
+| 26+ | 256 | 0 | 128 |
+| 27 | 256 | 0 | 128 |
+| 27+ | 256 | 1 | 128 |
+| 28 | 256 | 1 | 256 |
+| 28+ | 512 | 0 | 256 |
+| 29 | 512 | 0 | 256 |
+| 29+ | 512 | 1 | 256 |
+| 30 | 512 | 1 | 512 |
+| 30+ | 1024 | 0 | 512 |
+| 31 | 1024 | 0 | 512 |
+| 31+ | 1024 | 1 | 512 |
+| 32 | 1024 | 1 | 1024 |
+| 32+ | 2048 | 0 | 1024 |
+| 33 | 2048 | 0 | 1024 |
+| 33+ | 2048 | 1 | 1024 |
+| 34 | 2048 | 1 | 2048 |
+| 34+ | 4096 | 0 | 2048 |
+| 35 | 4096 | 0 | 2048 |
+| 35+ | 4096 | 1 | 2048 |
+| 36 | 4096 | 1 | 4096 |
+| 36+ | 8192 | 0 | 4096 |
+| 37 | 8192 | 0 | 4096 |
+| 37+ | 8192 | 1 | 4096 |
+| 38 | 8192 | 1 | 8192 |
+| 38+ | 16384 | 0 | 8192 |
+| 39 | 16384 | 0 | 8192 |
+| 39+ | 16384 | 1 | 8192 |
+| 40 | 16384 | 1 | 16384 |
+| 40+ | -32768 | 0 | 16384 |
+| 41 | -32768 | 0 | 16384 |
+| 41+ | -32768 | 1 | 16384 |
+| 42 | -32768 | 1 | -32768 |
+| 42+ | -2 | 0 | -32768 |
+| 43 | -2 | 0 | -32768 |
+| 43+ | -2 | 1 | -32768 |
+| 44 | -2 | 1 | -2 |
+| 44+ | -3 | 0 | -2 |
+| 45 | -3 | 0 | -2 |
+| 45+ | -3 | 1 | -2 |
+| 46 | -3 | 1 | -3 |
+| 46+ | -5 | 0 | -3 |
+| 47 | -5 | 0 | -3 |
+| 47+ | -5 | 1 | -3 |
+| 48 | -5 | 1 | -5 |
+| 48+ | -9 | 0 | -5 |
+| 49 | -9 | 0 | -5 |
+| 49+ | -9 | 1 | -5 |
+| 50 | -9 | 1 | -9 |
+| 50+ | -17 | 0 | -9 |
+| 51 | -17 | 0 | -9 |
+| 51+ | -17 | 1 | -9 |
+| 52 | -17 | 1 | -17 |
+| 52+ | -33 | 0 | -17 |
+| 53 | -33 | 0 | -17 |
+| 53+ | -33 | 1 | -17 |
+| 54 | -33 | 1 | -33 |
+| 54+ | -65 | 0 | -33 |
+| 55 | -65 | 0 | -33 |
+| 55+ | -65 | 1 | -33 |
+| 56 | -65 | 1 | -65 |
+| 56+ | -129 | 0 | -65 |
+| 57 | -129 | 0 | -65 |
+| 57+ | -129 | 1 | -65 |
+| 58 | -129 | 1 | -129 |
+| 58+ | -257 | 0 | -129 |
+| 59 | -257 | 0 | -129 |
+| 59+ | -257 | 1 | -129 |
+| 60 | -257 | 1 | -257 |
+| 60+ | -513 | 0 | -257 |
+| 61 | -513 | 0 | -257 |
+| 61+ | -513 | 1 | -257 |
+| 62 | -513 | 1 | -513 |
+| 62+ | -1025 | 0 | -513 |
+| 63 | -1025 | 0 | -513 |
+| 63+ | -1025 | 1 | -513 |
+| 64 | -1025 | 1 | -1025 |
+| 64+ | -2049 | 0 | -1025 |
+| 65 | -2049 | 0 | -1025 |
+| 65+ | -2049 | 1 | -1025 |
+| 66 | -2049 | 1 | -2049 |
+| 66+ | -4097 | 0 | -2049 |
+| 67 | -4097 | 0 | -2049 |
+| 67+ | -4097 | 1 | -2049 |
+| 68 | -4097 | 1 | -4097 |
+| 68+ | -8193 | 0 | -4097 |
+| 69 | -8193 | 0 | -4097 |
+| 69+ | -8193 | 1 | -4097 |
+| 70 | -8193 | 1 | -8193 |
+| 70+ | -16385 | 0 | -8193 |
+| 71 | -16385 | 0 | -8193 |
+| 71+ | -16385 | 1 | -8193 |
+| 72 | -16385 | 1 | -16385 |
+| 72+ | 32767 | 0 | -16385 |
+| 73 | 32767 | 0 | -16385 |
+| 73+ | 32767 | 1 | -16385 |
+| 74 | 32767 | 1 | 32767 |
diff --git a/03/a/Register.hdl b/3/Register.hdl
similarity index 51%
rename from 03/a/Register.hdl
rename to 3/Register.hdl
index 926b99f..0a66081 100644
--- a/03/a/Register.hdl
+++ b/3/Register.hdl
@@ -1,18 +1,16 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/03/a/Register.hdl
-
-/**
- * 16-bit register:
- * If load[t] == 1 then out[t+1] = in[t]
- * else out does not change
- */
-
-CHIP Register {
- IN in[16], load;
- OUT out[16];
-
- PARTS:
- // Put your code here:
-}
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+/**
+ * 16-bit register:
+ * If load is asserted, the register's value is set to in;
+ * Otherwise, the register maintains its current value:
+ * if (load(t)) out(t+1) = int(t), else out(t+1) = out(t)
+ */
+CHIP Register {
+ IN in[16], load;
+ OUT out[16];
+
+ PARTS:
+ //// Replace this comment with your code.
+}
diff --git a/03/a/Register.tst b/3/Register.tst
similarity index 86%
rename from 03/a/Register.tst
rename to 3/Register.tst
index aeec166..a005e38 100644
--- a/03/a/Register.tst
+++ b/3/Register.tst
@@ -1,569 +1,568 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/03/a/Register.tst
-
-load Register.hdl,
-output-file Register.out,
-compare-to Register.cmp,
-output-list time%S1.4.1 in%D1.6.1 load%B2.1.2 out%D1.6.1;
-
-set in 0,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 0,
-set load 1,
-tick,
-output;
-
-tock,
-output;
-
-set in -32123,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 11111,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in -32123,
-set load 1,
-tick,
-output;
-
-tock,
-output;
-
-set in -32123,
-set load 1,
-tick,
-output;
-
-tock,
-output;
-
-set in -32123,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 12345,
-set load 1,
-tick,
-output;
-
-tock,
-output;
-
-set in 0,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set in 0,
-set load 1,
-tick,
-output;
-
-tock,
-output;
-
-set in %B0000000000000001,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set load 1,
-tick,
-output;
-
-tock,
-output;
-
-set in %B0000000000000010,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set load 1,
-tick,
-output;
-
-tock,
-output;
-
-set in %B0000000000000100,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set load 1,
-tick,
-output;
-
-tock,
-output;
-
-set in %B0000000000001000,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set load 1,
-tick,
-output;
-
-tock,
-output;
-
-set in %B0000000000010000,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set load 1,
-tick,
-output;
-
-tock,
-output;
-
-set in %B0000000000100000,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set load 1,
-tick,
-output;
-
-tock,
-output;
-
-set in %B0000000001000000,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set load 1,
-tick,
-output;
-
-tock,
-output;
-
-set in %B0000000010000000,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set load 1,
-tick,
-output;
-
-tock,
-output;
-
-set in %B0000000100000000,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set load 1,
-tick,
-output;
-
-tock,
-output;
-
-set in %B0000001000000000,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set load 1,
-tick,
-output;
-
-tock,
-output;
-
-set in %B0000010000000000,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set load 1,
-tick,
-output;
-
-tock,
-output;
-
-set in %B0000100000000000,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set load 1,
-tick,
-output;
-
-tock,
-output;
-
-set in %B0001000000000000,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set load 1,
-tick,
-output;
-
-tock,
-output;
-
-set in %B0010000000000000,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set load 1,
-tick,
-output;
-
-tock,
-output;
-
-set in %B0100000000000000,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set load 1,
-tick,
-output;
-
-tock,
-output;
-
-set in %B1000000000000000,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set load 1,
-tick,
-output;
-
-tock,
-output;
-
-set in %B1111111111111110,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set load 1,
-tick,
-output;
-
-tock,
-output;
-
-set in %B1111111111111101,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set load 1,
-tick,
-output;
-
-tock,
-output;
-
-set in %B1111111111111011,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set load 1,
-tick,
-output;
-
-tock,
-output;
-
-set in %B1111111111110111,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set load 1,
-tick,
-output;
-
-tock,
-output;
-
-set in %B1111111111101111,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set load 1,
-tick,
-output;
-
-tock,
-output;
-
-set in %B1111111111011111,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set load 1,
-tick,
-output;
-
-tock,
-output;
-
-set in %B1111111110111111,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set load 1,
-tick,
-output;
-
-tock,
-output;
-
-set in %B1111111101111111,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set load 1,
-tick,
-output;
-
-tock,
-output;
-
-set in %B1111111011111111,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set load 1,
-tick,
-output;
-
-tock,
-output;
-
-set in %B1111110111111111,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set load 1,
-tick,
-output;
-
-tock,
-output;
-
-set in %B1111101111111111,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set load 1,
-tick,
-output;
-
-tock,
-output;
-
-set in %B1111011111111111,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set load 1,
-tick,
-output;
-
-tock,
-output;
-
-set in %B1110111111111111,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set load 1,
-tick,
-output;
-
-tock,
-output;
-
-set in %B1101111111111111,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set load 1,
-tick,
-output;
-
-tock,
-output;
-
-set in %B1011111111111111,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set load 1,
-tick,
-output;
-
-tock,
-output;
-
-set in %B0111111111111111,
-set load 0,
-tick,
-output;
-
-tock,
-output;
-
-set load 1,
-tick,
-output;
-
-tock,
-output;
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+load Register.hdl,
+output-file Register.out,
+compare-to Register.cmp,
+output-list time%S1.3.1 in%D1.6.1 load%B2.1.1 out%D1.6.1;
+
+set in 0,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 0,
+set load 1,
+tick,
+output;
+
+tock,
+output;
+
+set in -32123,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 11111,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in -32123,
+set load 1,
+tick,
+output;
+
+tock,
+output;
+
+set in -32123,
+set load 1,
+tick,
+output;
+
+tock,
+output;
+
+set in -32123,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 12345,
+set load 1,
+tick,
+output;
+
+tock,
+output;
+
+set in 0,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set in 0,
+set load 1,
+tick,
+output;
+
+tock,
+output;
+
+set in %B0000000000000001,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set load 1,
+tick,
+output;
+
+tock,
+output;
+
+set in %B0000000000000010,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set load 1,
+tick,
+output;
+
+tock,
+output;
+
+set in %B0000000000000100,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set load 1,
+tick,
+output;
+
+tock,
+output;
+
+set in %B0000000000001000,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set load 1,
+tick,
+output;
+
+tock,
+output;
+
+set in %B0000000000010000,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set load 1,
+tick,
+output;
+
+tock,
+output;
+
+set in %B0000000000100000,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set load 1,
+tick,
+output;
+
+tock,
+output;
+
+set in %B0000000001000000,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set load 1,
+tick,
+output;
+
+tock,
+output;
+
+set in %B0000000010000000,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set load 1,
+tick,
+output;
+
+tock,
+output;
+
+set in %B0000000100000000,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set load 1,
+tick,
+output;
+
+tock,
+output;
+
+set in %B0000001000000000,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set load 1,
+tick,
+output;
+
+tock,
+output;
+
+set in %B0000010000000000,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set load 1,
+tick,
+output;
+
+tock,
+output;
+
+set in %B0000100000000000,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set load 1,
+tick,
+output;
+
+tock,
+output;
+
+set in %B0001000000000000,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set load 1,
+tick,
+output;
+
+tock,
+output;
+
+set in %B0010000000000000,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set load 1,
+tick,
+output;
+
+tock,
+output;
+
+set in %B0100000000000000,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set load 1,
+tick,
+output;
+
+tock,
+output;
+
+set in %B1000000000000000,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set load 1,
+tick,
+output;
+
+tock,
+output;
+
+set in %B1111111111111110,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set load 1,
+tick,
+output;
+
+tock,
+output;
+
+set in %B1111111111111101,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set load 1,
+tick,
+output;
+
+tock,
+output;
+
+set in %B1111111111111011,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set load 1,
+tick,
+output;
+
+tock,
+output;
+
+set in %B1111111111110111,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set load 1,
+tick,
+output;
+
+tock,
+output;
+
+set in %B1111111111101111,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set load 1,
+tick,
+output;
+
+tock,
+output;
+
+set in %B1111111111011111,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set load 1,
+tick,
+output;
+
+tock,
+output;
+
+set in %B1111111110111111,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set load 1,
+tick,
+output;
+
+tock,
+output;
+
+set in %B1111111101111111,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set load 1,
+tick,
+output;
+
+tock,
+output;
+
+set in %B1111111011111111,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set load 1,
+tick,
+output;
+
+tock,
+output;
+
+set in %B1111110111111111,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set load 1,
+tick,
+output;
+
+tock,
+output;
+
+set in %B1111101111111111,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set load 1,
+tick,
+output;
+
+tock,
+output;
+
+set in %B1111011111111111,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set load 1,
+tick,
+output;
+
+tock,
+output;
+
+set in %B1110111111111111,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set load 1,
+tick,
+output;
+
+tock,
+output;
+
+set in %B1101111111111111,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set load 1,
+tick,
+output;
+
+tock,
+output;
+
+set in %B1011111111111111,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set load 1,
+tick,
+output;
+
+tock,
+output;
+
+set in %B0111111111111111,
+set load 0,
+tick,
+output;
+
+tock,
+output;
+
+set load 1,
+tick,
+output;
+
+tock,
+output;
diff --git a/4/fill/Fill.asm b/4/fill/Fill.asm
new file mode 100644
index 0000000..15f3c5c
--- /dev/null
+++ b/4/fill/Fill.asm
@@ -0,0 +1,10 @@
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+// Runs an infinite loop that listens to the keyboard input.
+// When a key is pressed (any key), the program blackens the screen,
+// i.e. writes "black" in every pixel. When no key is pressed,
+// the screen should be cleared.
+
+//// Replace this comment with your code.
diff --git a/04/fill/Fill.tst b/4/fill/Fill.tst
similarity index 80%
rename from 04/fill/Fill.tst
rename to 4/fill/Fill.tst
index e8bb385..5acfa87 100644
--- a/04/fill/Fill.tst
+++ b/4/fill/Fill.tst
@@ -1,11 +1,12 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/04/fill/Fill.tst
-
-load Fill.asm;
-echo "Make sure that 'No Animation' is selected. Then, select the keyboard, press any key for some time, and inspect the screen.";
-
-repeat {
- ticktock;
-}
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+// Tests the Fill.hack program in the CPU emulator.
+
+load Fill.hack;
+echo "Make sure that 'No Animation' is selected. Then, select the keyboard, press any key for some time, and inspect the screen.";
+
+repeat {
+ ticktock;
+}
diff --git a/04/fill/FillAutomatic.cmp b/4/fill/FillAutomatic.cmp
similarity index 100%
rename from 04/fill/FillAutomatic.cmp
rename to 4/fill/FillAutomatic.cmp
diff --git a/04/fill/FillAutomatic.tst b/4/fill/FillAutomatic.tst
similarity index 76%
rename from 04/fill/FillAutomatic.tst
rename to 4/fill/FillAutomatic.tst
index fbc29a0..0a7c9c7 100644
--- a/04/fill/FillAutomatic.tst
+++ b/4/fill/FillAutomatic.tst
@@ -1,13 +1,12 @@
// This file is part of www.nand2tetris.org
// and the book "The Elements of Computing Systems"
// by Nisan and Schocken, MIT Press.
-// File name: projects/04/fill/FillAutomatic
// This script can be used to test the Fill program automatically,
// rather than interactively. Specifically, the script sets the keyboard
// memory map (RAM[24576]) to 0, 1, and then again to 0. This simulates the
// acts of leaving the keyboard untouched, pressing some key, and then releasing
-// the key. After each on of these simulated events, the script outputs the values
+// the key. After each one of these simulated events, the script outputs the values
// of some selected registers from the screen memory map (RAM[16384]-RAM[24576]).
// This is done in order to test that these registers are set to 000...0 or 111....1,
// as mandated by how the Fill program should react to the keyboard events.
@@ -21,17 +20,16 @@ set RAM[24576] 0, // the keyboard is untouched
repeat 1000000 {
ticktock;
}
-output; // test that the screen is white
+output; // tests that the screen is white
set RAM[24576] 1, // a keyboard key is pressed
repeat 1000000 {
ticktock;
}
-output; // test that the screen is black
+output; // tests that the screen is black
-set RAM[24576] 0, // they keyboard in untouched
+set RAM[24576] 0, // the keyboard is untouched
repeat 1000000 {
ticktock;
}
-output; // test that the screen is white
-
+output; // tests that the screen is white
diff --git a/04/mult/Mult.asm b/4/mult/Mult.asm
similarity index 59%
rename from 04/mult/Mult.asm
rename to 4/mult/Mult.asm
index d49da5c..f669659 100644
--- a/04/mult/Mult.asm
+++ b/4/mult/Mult.asm
@@ -1,12 +1,9 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/04/Mult.asm
-
-// Multiplies R0 and R1 and stores the result in R2.
-// (R0, R1, R2 refer to RAM[0], RAM[1], and RAM[2], respectively.)
-//
-// This program only needs to handle arguments that satisfy
-// R0 >= 0, R1 >= 0, and R0*R1 < 32768.
-
-// Put your code here.
\ No newline at end of file
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+// Multiplies R0 and R1 and stores the result in R2.
+// (R0, R1, R2 refer to RAM[0], RAM[1], and RAM[2], respectively.)
+// The algorithm is based on repetitive addition.
+
+//// Replace this comment with your code.
diff --git a/04/mult/Mult.cmp b/4/mult/Mult.cmp
similarity index 84%
rename from 04/mult/Mult.cmp
rename to 4/mult/Mult.cmp
index 296b5fb..e31b5df 100644
--- a/04/mult/Mult.cmp
+++ b/4/mult/Mult.cmp
@@ -1,7 +1,7 @@
-| RAM[0] | RAM[1] | RAM[2] |
-| 0 | 0 | 0 |
-| 1 | 0 | 0 |
-| 0 | 2 | 0 |
-| 3 | 1 | 3 |
-| 2 | 4 | 8 |
-| 6 | 7 | 42 |
\ No newline at end of file
+| RAM[0] | RAM[1] | RAM[2] |
+| 0 | 0 | 0 |
+| 1 | 0 | 0 |
+| 0 | 2 | 0 |
+| 3 | 1 | 3 |
+| 2 | 4 | 8 |
+| 6 | 7 | 42 |
diff --git a/4/mult/Mult.tst b/4/mult/Mult.tst
new file mode 100644
index 0000000..0d18cd4
--- /dev/null
+++ b/4/mult/Mult.tst
@@ -0,0 +1,77 @@
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+// Tests the Mult program, designed to compute R2 = R0 * R1.
+// Tests the program by having it multiply several sets of
+// R0 and R1 values.
+
+load Mult.asm,
+output-file Mult.out,
+compare-to Mult.cmp,
+output-list RAM[0]%D2.6.2 RAM[1]%D2.6.2 RAM[2]%D2.6.2;
+
+set RAM[0] 0, // Sets R0 and R1 to some input values
+set RAM[1] 0,
+set RAM[2] -1; // Ensures that the program initialized R2 to 0
+repeat 20 {
+ ticktock;
+}
+set RAM[0] 0, // Restores R0 and R1 in case the program changed them
+set RAM[1] 0,
+output;
+
+set PC 0,
+set RAM[0] 1, // Sets R0 and R1 to some input values
+set RAM[1] 0,
+set RAM[2] -1; // Ensures that the program initialized R2 to 0
+repeat 50 {
+ ticktock;
+}
+set RAM[0] 1, // Restores R0 and R1 in case the program changed them
+set RAM[1] 0,
+output;
+
+set PC 0,
+set RAM[0] 0, // Sets R0 and R1 to some input values
+set RAM[1] 2,
+set RAM[2] -1; // Ensures that the program initialized R2 to 0
+repeat 80 {
+ ticktock;
+}
+set RAM[0] 0, // Restores R0 and R1 in case the program changed them
+set RAM[1] 2,
+output;
+
+set PC 0,
+set RAM[0] 3, // Sets R0 and R1 to some input values
+set RAM[1] 1,
+set RAM[2] -1; // Ensures that the program initialized R2 to 0
+repeat 120 {
+ ticktock;
+}
+set RAM[0] 3, // Restores R0 and R1 in case the program changed them
+set RAM[1] 1,
+output;
+
+set PC 0,
+set RAM[0] 2, // Sets R0 and R1 to some input values
+set RAM[1] 4,
+set RAM[2] -1; // Ensures that the program initialized R2 to 0
+repeat 150 {
+ ticktock;
+}
+set RAM[0] 2, // Restores R0 and R1 in case the program changed them
+set RAM[1] 4,
+output;
+
+set PC 0,
+set RAM[0] 6, // Sets R0 and R1 to some input values
+set RAM[1] 7,
+set RAM[2] -1; // Ensures that the program initialized R2 to 0
+repeat 210 {
+ ticktock;
+}
+set RAM[0] 6, // Restores R0 and R1 in case the program changed them
+set RAM[1] 7,
+output;
diff --git a/05/Add.hack b/5/Add.hack
similarity index 94%
rename from 05/Add.hack
rename to 5/Add.hack
index fe5969d..8297cbb 100644
--- a/05/Add.hack
+++ b/5/Add.hack
@@ -1,6 +1,6 @@
-0000000000000010
-1110110000010000
-0000000000000011
-1110000010010000
-0000000000000000
-1110001100001000
+0000000000000010
+1110110000010000
+0000000000000011
+1110000010010000
+0000000000000000
+1110001100001000
diff --git a/05/CPU-external.cmp b/5/CPU-external.cmp
similarity index 98%
rename from 05/CPU-external.cmp
rename to 5/CPU-external.cmp
index 58f43bd..360eb8c 100644
--- a/05/CPU-external.cmp
+++ b/5/CPU-external.cmp
@@ -1,93 +1,94 @@
-|time| inM | instruction |reset| outM |writeM |addre| pc |
-|0+ | 0|0011000000111001| 0 |*******| 0 | 0| 0|
-|1 | 0|0011000000111001| 0 |*******| 0 |12345| 1|
-|1+ | 0|1110110000010000| 0 |*******| 0 |12345| 1|
-|2 | 0|1110110000010000| 0 |*******| 0 |12345| 2|
-|2+ | 0|0101101110100000| 0 |*******| 0 |12345| 2|
-|3 | 0|0101101110100000| 0 |*******| 0 |23456| 3|
-|3+ | 0|1110000111010000| 0 |*******| 0 |23456| 3|
-|4 | 0|1110000111010000| 0 |*******| 0 |23456| 4|
-|4+ | 0|0000001111101000| 0 |*******| 0 |23456| 4|
-|5 | 0|0000001111101000| 0 |*******| 0 | 1000| 5|
-|5+ | 0|1110001100001000| 0 | 11111| 1 | 1000| 5|
-|6 | 0|1110001100001000| 0 | 11111| 1 | 1000| 6|
-|6+ | 0|0000001111101001| 0 |*******| 0 | 1000| 6|
-|7 | 0|0000001111101001| 0 |*******| 0 | 1001| 7|
-|7+ | 0|1110001110011000| 0 | 11110| 1 | 1001| 7|
-|8 | 0|1110001110011000| 0 | 11109| 1 | 1001| 8|
-|8+ | 0|0000001111101000| 0 |*******| 0 | 1001| 8|
-|9 | 0|0000001111101000| 0 |*******| 0 | 1000| 9|
-|9+ | 11111|1111010011010000| 0 |*******| 0 | 1000| 9|
-|10 | 11111|1111010011010000| 0 |*******| 0 | 1000| 10|
-|10+ | 11111|0000000000001110| 0 |*******| 0 | 1000| 10|
-|11 | 11111|0000000000001110| 0 |*******| 0 | 14| 11|
-|11+ | 11111|1110001100000100| 0 |*******| 0 | 14| 11|
-|12 | 11111|1110001100000100| 0 |*******| 0 | 14| 14|
-|12+ | 11111|0000001111100111| 0 |*******| 0 | 14| 14|
-|13 | 11111|0000001111100111| 0 |*******| 0 | 999| 15|
-|13+ | 11111|1110110111100000| 0 |*******| 0 | 999| 15|
-|14 | 11111|1110110111100000| 0 |*******| 0 | 1000| 16|
-|14+ | 11111|1110001100001000| 0 | -1| 1 | 1000| 16|
-|15 | 11111|1110001100001000| 0 | -1| 1 | 1000| 17|
-|15+ | 11111|0000000000010101| 0 |*******| 0 | 1000| 17|
-|16 | 11111|0000000000010101| 0 |*******| 0 | 21| 18|
-|16+ | 11111|1110011111000010| 0 |*******| 0 | 21| 18|
-|17 | 11111|1110011111000010| 0 |*******| 0 | 21| 21|
-|17+ | 11111|0000000000000010| 0 |*******| 0 | 21| 21|
-|18 | 11111|0000000000000010| 0 |*******| 0 | 2| 22|
-|18+ | 11111|1110000010010000| 0 |*******| 0 | 2| 22|
-|19 | 11111|1110000010010000| 0 |*******| 0 | 2| 23|
-|19+ | 11111|0000001111101000| 0 |*******| 0 | 2| 23|
-|20 | 11111|0000001111101000| 0 |*******| 0 | 1000| 24|
-|20+ | 11111|1110111010010000| 0 |*******| 0 | 1000| 24|
-|21 | 11111|1110111010010000| 0 |*******| 0 | 1000| 25|
-|21+ | 11111|1110001100000001| 0 |*******| 0 | 1000| 25|
-|22 | 11111|1110001100000001| 0 |*******| 0 | 1000| 26|
-|22+ | 11111|1110001100000010| 0 |*******| 0 | 1000| 26|
-|23 | 11111|1110001100000010| 0 |*******| 0 | 1000| 27|
-|23+ | 11111|1110001100000011| 0 |*******| 0 | 1000| 27|
-|24 | 11111|1110001100000011| 0 |*******| 0 | 1000| 28|
-|24+ | 11111|1110001100000100| 0 |*******| 0 | 1000| 28|
-|25 | 11111|1110001100000100| 0 |*******| 0 | 1000| 1000|
-|25+ | 11111|1110001100000101| 0 |*******| 0 | 1000| 1000|
-|26 | 11111|1110001100000101| 0 |*******| 0 | 1000| 1000|
-|26+ | 11111|1110001100000110| 0 |*******| 0 | 1000| 1000|
-|27 | 11111|1110001100000110| 0 |*******| 0 | 1000| 1000|
-|27+ | 11111|1110001100000111| 0 |*******| 0 | 1000| 1000|
-|28 | 11111|1110001100000111| 0 |*******| 0 | 1000| 1000|
-|28+ | 11111|1110101010010000| 0 |*******| 0 | 1000| 1000|
-|29 | 11111|1110101010010000| 0 |*******| 0 | 1000| 1001|
-|29+ | 11111|1110001100000001| 0 |*******| 0 | 1000| 1001|
-|30 | 11111|1110001100000001| 0 |*******| 0 | 1000| 1002|
-|30+ | 11111|1110001100000010| 0 |*******| 0 | 1000| 1002|
-|31 | 11111|1110001100000010| 0 |*******| 0 | 1000| 1000|
-|31+ | 11111|1110001100000011| 0 |*******| 0 | 1000| 1000|
-|32 | 11111|1110001100000011| 0 |*******| 0 | 1000| 1000|
-|32+ | 11111|1110001100000100| 0 |*******| 0 | 1000| 1000|
-|33 | 11111|1110001100000100| 0 |*******| 0 | 1000| 1001|
-|33+ | 11111|1110001100000101| 0 |*******| 0 | 1000| 1001|
-|34 | 11111|1110001100000101| 0 |*******| 0 | 1000| 1002|
-|34+ | 11111|1110001100000110| 0 |*******| 0 | 1000| 1002|
-|35 | 11111|1110001100000110| 0 |*******| 0 | 1000| 1000|
-|35+ | 11111|1110001100000111| 0 |*******| 0 | 1000| 1000|
-|36 | 11111|1110001100000111| 0 |*******| 0 | 1000| 1000|
-|36+ | 11111|1110111111010000| 0 |*******| 0 | 1000| 1000|
-|37 | 11111|1110111111010000| 0 |*******| 0 | 1000| 1001|
-|37+ | 11111|1110001100000001| 0 |*******| 0 | 1000| 1001|
-|38 | 11111|1110001100000001| 0 |*******| 0 | 1000| 1000|
-|38+ | 11111|1110001100000010| 0 |*******| 0 | 1000| 1000|
-|39 | 11111|1110001100000010| 0 |*******| 0 | 1000| 1001|
-|39+ | 11111|1110001100000011| 0 |*******| 0 | 1000| 1001|
-|40 | 11111|1110001100000011| 0 |*******| 0 | 1000| 1000|
-|40+ | 11111|1110001100000100| 0 |*******| 0 | 1000| 1000|
-|41 | 11111|1110001100000100| 0 |*******| 0 | 1000| 1001|
-|41+ | 11111|1110001100000101| 0 |*******| 0 | 1000| 1001|
-|42 | 11111|1110001100000101| 0 |*******| 0 | 1000| 1000|
-|42+ | 11111|1110001100000110| 0 |*******| 0 | 1000| 1000|
-|43 | 11111|1110001100000110| 0 |*******| 0 | 1000| 1001|
-|43+ | 11111|1110001100000111| 0 |*******| 0 | 1000| 1001|
-|44 | 11111|1110001100000111| 0 |*******| 0 | 1000| 1000|
-|44+ | 11111|1110001100000111| 1 |*******| 0 | 1000| 1000|
-|45 | 11111|1110001100000111| 1 |*******| 0 | 1000| 0|
-|45+ | 11111|0111111111111111| 0 |*******| 0 | 1000| 0|
-|46 | 11111|0111111111111111| 0 |*******| 0 |32767| 1|
+|time| inM | instruction |reset| outM |writeM |addre| pc |
+|0+ | 0|0011000000111001| 0 |*******| 0 | 0| 0|
+|1 | 0|0011000000111001| 0 |*******| 0 |12345| 1|
+|1+ | 0|1110110000010000| 0 |*******| 0 |12345| 1|
+|2 | 0|1110110000010000| 0 |*******| 0 |12345| 2|
+|2+ | 0|0101101110100000| 0 |*******| 0 |12345| 2|
+|3 | 0|0101101110100000| 0 |*******| 0 |23456| 3|
+|3+ | 0|1110000111010000| 0 |*******| 0 |23456| 3|
+|4 | 0|1110000111010000| 0 |*******| 0 |23456| 4|
+|4+ | 0|0000001111101000| 0 |*******| 0 |23456| 4|
+|5 | 0|0000001111101000| 0 |*******| 0 | 1000| 5|
+|5+ | 0|1110001100001000| 0 | 11111| 1 | 1000| 5|
+|6 | 0|1110001100001000| 0 | 11111| 1 | 1000| 6|
+|6+ | 0|0000001111101001| 0 |*******| 0 | 1000| 6|
+|7 | 0|0000001111101001| 0 |*******| 0 | 1001| 7|
+|7+ | 0|1110001110011000| 0 | 11110| 1 | 1001| 7|
+|8 | 0|1110001110011000| 0 | 11109| 1 | 1001| 8|
+|8+ | 0|0000001111101000| 0 |*******| 0 | 1001| 8|
+|9 | 0|0000001111101000| 0 |*******| 0 | 1000| 9|
+|9+ | 11111|1111010011010000| 0 |*******| 0 | 1000| 9|
+|10 | 11111|1111010011010000| 0 |*******| 0 | 1000| 10|
+|10+ | 11111|0000000000001110| 0 |*******| 0 | 1000| 10|
+|11 | 11111|0000000000001110| 0 |*******| 0 | 14| 11|
+|11+ | 11111|1110001100000100| 0 |*******| 0 | 14| 11|
+|12 | 11111|1110001100000100| 0 |*******| 0 | 14| 14|
+|12+ | 11111|0000001111100111| 0 |*******| 0 | 14| 14|
+|13 | 11111|0000001111100111| 0 |*******| 0 | 999| 15|
+|13+ | 11111|1110110111100000| 0 |*******| 0 | 999| 15|
+|14 | 11111|1110110111100000| 0 |*******| 0 | 1000| 16|
+|14+ | 11111|1110001100001000| 0 | -1| 1 | 1000| 16|
+|15 | 11111|1110001100001000| 0 | -1| 1 | 1000| 17|
+|15+ | 11111|0000000000010101| 0 |*******| 0 | 1000| 17|
+|16 | 11111|0000000000010101| 0 |*******| 0 | 21| 18|
+|16+ | 11111|1110011111000010| 0 |*******| 0 | 21| 18|
+|17 | 11111|1110011111000010| 0 |*******| 0 | 21| 21|
+|17+ | 11111|0000000000000010| 0 |*******| 0 | 21| 21|
+|18 | 11111|0000000000000010| 0 |*******| 0 | 2| 22|
+|18+ | 11111|1110000010010000| 0 |*******| 0 | 2| 22|
+|19 | 11111|1110000010010000| 0 |*******| 0 | 2| 23|
+|19+ | 11111|0000001111101000| 0 |*******| 0 | 2| 23|
+|20 | 11111|0000001111101000| 0 |*******| 0 | 1000| 24|
+|20+ | 11111|1110111010010000| 0 |*******| 0 | 1000| 24|
+|21 | 11111|1110111010010000| 0 |*******| 0 | 1000| 25|
+|21+ | 11111|1110001100000001| 0 |*******| 0 | 1000| 25|
+|22 | 11111|1110001100000001| 0 |*******| 0 | 1000| 26|
+|22+ | 11111|1110001100000010| 0 |*******| 0 | 1000| 26|
+|23 | 11111|1110001100000010| 0 |*******| 0 | 1000| 27|
+|23+ | 11111|1110001100000011| 0 |*******| 0 | 1000| 27|
+|24 | 11111|1110001100000011| 0 |*******| 0 | 1000| 28|
+|24+ | 11111|1110001100000100| 0 |*******| 0 | 1000| 28|
+|25 | 11111|1110001100000100| 0 |*******| 0 | 1000| 1000|
+|25+ | 11111|1110001100000101| 0 |*******| 0 | 1000| 1000|
+|26 | 11111|1110001100000101| 0 |*******| 0 | 1000| 1000|
+|26+ | 11111|1110001100000110| 0 |*******| 0 | 1000| 1000|
+|27 | 11111|1110001100000110| 0 |*******| 0 | 1000| 1000|
+|27+ | 11111|1110001100000111| 0 |*******| 0 | 1000| 1000|
+|28 | 11111|1110001100000111| 0 |*******| 0 | 1000| 1000|
+|28+ | 11111|1110101010010000| 0 |*******| 0 | 1000| 1000|
+|29 | 11111|1110101010010000| 0 |*******| 0 | 1000| 1001|
+|29+ | 11111|1110001100000001| 0 |*******| 0 | 1000| 1001|
+|30 | 11111|1110001100000001| 0 |*******| 0 | 1000| 1002|
+|30+ | 11111|1110001100000010| 0 |*******| 0 | 1000| 1002|
+|31 | 11111|1110001100000010| 0 |*******| 0 | 1000| 1000|
+|31+ | 11111|1110001100000011| 0 |*******| 0 | 1000| 1000|
+|32 | 11111|1110001100000011| 0 |*******| 0 | 1000| 1000|
+|32+ | 11111|1110001100000100| 0 |*******| 0 | 1000| 1000|
+|33 | 11111|1110001100000100| 0 |*******| 0 | 1000| 1001|
+|33+ | 11111|1110001100000101| 0 |*******| 0 | 1000| 1001|
+|34 | 11111|1110001100000101| 0 |*******| 0 | 1000| 1002|
+|34+ | 11111|1110001100000110| 0 |*******| 0 | 1000| 1002|
+|35 | 11111|1110001100000110| 0 |*******| 0 | 1000| 1000|
+|35+ | 11111|1110001100000111| 0 |*******| 0 | 1000| 1000|
+|36 | 11111|1110001100000111| 0 |*******| 0 | 1000| 1000|
+|36+ | 11111|1110111111010000| 0 |*******| 0 | 1000| 1000|
+|37 | 11111|1110111111010000| 0 |*******| 0 | 1000| 1001|
+|37+ | 11111|1110001100000001| 0 |*******| 0 | 1000| 1001|
+|38 | 11111|1110001100000001| 0 |*******| 0 | 1000| 1000|
+|38+ | 11111|1110001100000010| 0 |*******| 0 | 1000| 1000|
+|39 | 11111|1110001100000010| 0 |*******| 0 | 1000| 1001|
+|39+ | 11111|1110001100000011| 0 |*******| 0 | 1000| 1001|
+|40 | 11111|1110001100000011| 0 |*******| 0 | 1000| 1000|
+|40+ | 11111|1110001100000100| 0 |*******| 0 | 1000| 1000|
+|41 | 11111|1110001100000100| 0 |*******| 0 | 1000| 1001|
+|41+ | 11111|1110001100000101| 0 |*******| 0 | 1000| 1001|
+|42 | 11111|1110001100000101| 0 |*******| 0 | 1000| 1000|
+|42+ | 11111|1110001100000110| 0 |*******| 0 | 1000| 1000|
+|43 | 11111|1110001100000110| 0 |*******| 0 | 1000| 1001|
+|43+ | 11111|1110001100000111| 0 |*******| 0 | 1000| 1001|
+|44 | 11111|1110001100000111| 0 |*******| 0 | 1000| 1000|
+|44+ | 11111|1110001100000111| 1 |*******| 0 | 1000| 1000|
+|45 | 11111|1110001100000111| 1 |*******| 0 | 1000| 0|
+|45+ | 11111|0111111111111111| 0 |*******| 0 | 1000| 0|
+|46 | 11111|0111111111111111| 0 |*******| 0 |32767| 1|
+
diff --git a/05/CPU-external.tst b/5/CPU-external.tst
similarity index 95%
rename from 05/CPU-external.tst
rename to 5/CPU-external.tst
index 5aa0295..ad5ceda 100644
--- a/05/CPU-external.tst
+++ b/5/CPU-external.tst
@@ -1,150 +1,149 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/05/CPU-external.tst
-
-load CPU.hdl,
-output-file CPU-external.out,
-compare-to CPU-external.cmp,
-output-list time%S0.4.0 inM%D0.6.0 instruction%B0.16.0 reset%B2.1.2 outM%D1.6.0 writeM%B3.1.3 addressM%D0.5.0 pc%D0.5.0;
-
-
-set instruction %B0011000000111001, // @12345
-tick, output, tock, output;
-
-set instruction %B1110110000010000, // D=A
-tick, output, tock, output;
-
-set instruction %B0101101110100000, // @23456
-tick, output, tock, output;
-
-set instruction %B1110000111010000, // D=A-D
-tick, output, tock, output;
-
-set instruction %B0000001111101000, // @1000
-tick, output, tock, output;
-
-set instruction %B1110001100001000, // M=D
-tick, output, tock, output;
-
-set instruction %B0000001111101001, // @1001
-tick, output, tock, output;
-
-set instruction %B1110001110011000, // MD=D-1
-tick, output, tock, output;
-
-set instruction %B0000001111101000, // @1000
-tick, output, tock, output;
-
-set instruction %B1111010011010000, // D=D-M
-set inM 11111,
-tick, output, tock, output;
-
-set instruction %B0000000000001110, // @14
-tick, output, tock, output;
-
-set instruction %B1110001100000100, // D;jlt
-tick, output, tock, output;
-
-set instruction %B0000001111100111, // @999
-tick, output, tock, output;
-
-set instruction %B1110110111100000, // A=A+1
-tick, output, tock, output;
-
-set instruction %B1110001100001000, // M=D
-tick, output, tock, output;
-
-set instruction %B0000000000010101, // @21
-tick, output, tock, output;
-
-set instruction %B1110011111000010, // D+1;jeq
-tick, output, tock, output;
-
-set instruction %B0000000000000010, // @2
-tick, output, tock, output;
-
-set instruction %B1110000010010000, // D=D+A
-tick, output, tock, output;
-
-set instruction %B0000001111101000, // @1000
-tick, output, tock, output;
-
-set instruction %B1110111010010000, // D=-1
-tick, output, tock, output;
-
-set instruction %B1110001100000001, // D;JGT
-tick, output, tock, output;
-
-set instruction %B1110001100000010, // D;JEQ
-tick, output, tock, output;
-
-set instruction %B1110001100000011, // D;JGE
-tick, output, tock, output;
-
-set instruction %B1110001100000100, // D;JLT
-tick, output, tock, output;
-
-set instruction %B1110001100000101, // D;JNE
-tick, output, tock, output;
-
-set instruction %B1110001100000110, // D;JLE
-tick, output, tock, output;
-
-set instruction %B1110001100000111, // D;JMP
-tick, output, tock, output;
-
-set instruction %B1110101010010000, // D=0
-tick, output, tock, output;
-
-set instruction %B1110001100000001, // D;JGT
-tick, output, tock, output;
-
-set instruction %B1110001100000010, // D;JEQ
-tick, output, tock, output;
-
-set instruction %B1110001100000011, // D;JGE
-tick, output, tock, output;
-
-set instruction %B1110001100000100, // D;JLT
-tick, output, tock, output;
-
-set instruction %B1110001100000101, // D;JNE
-tick, output, tock, output;
-
-set instruction %B1110001100000110, // D;JLE
-tick, output, tock, output;
-
-set instruction %B1110001100000111, // D;JMP
-tick, output, tock, output;
-
-set instruction %B1110111111010000, // D=1
-tick, output, tock, output;
-
-set instruction %B1110001100000001, // D;JGT
-tick, output, tock, output;
-
-set instruction %B1110001100000010, // D;JEQ
-tick, output, tock, output;
-
-set instruction %B1110001100000011, // D;JGE
-tick, output, tock, output;
-
-set instruction %B1110001100000100, // D;JLT
-tick, output, tock, output;
-
-set instruction %B1110001100000101, // D;JNE
-tick, output, tock, output;
-
-set instruction %B1110001100000110, // D;JLE
-tick, output, tock, output;
-
-set instruction %B1110001100000111, // D;JMP
-tick, output, tock, output;
-
-set reset 1;
-tick, output, tock, output;
-
-set instruction %B0111111111111111, // @32767
-set reset 0;
-tick, output, tock, output;
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+load CPU.hdl,
+output-file CPU-external.out,
+compare-to CPU-external.cmp,
+output-list time%S0.4.0 inM%D0.6.0 instruction%B0.16.0 reset%B2.1.2 outM%D1.6.0 writeM%B3.1.3 addressM%D0.5.0 pc%D0.5.0;
+
+
+set instruction %B0011000000111001, // @12345
+tick, output, tock, output;
+
+set instruction %B1110110000010000, // D=A
+tick, output, tock, output;
+
+set instruction %B0101101110100000, // @23456
+tick, output, tock, output;
+
+set instruction %B1110000111010000, // D=A-D
+tick, output, tock, output;
+
+set instruction %B0000001111101000, // @1000
+tick, output, tock, output;
+
+set instruction %B1110001100001000, // M=D
+tick, output, tock, output;
+
+set instruction %B0000001111101001, // @1001
+tick, output, tock, output;
+
+set instruction %B1110001110011000, // MD=D-1
+tick, output, tock, output;
+
+set instruction %B0000001111101000, // @1000
+tick, output, tock, output;
+
+set instruction %B1111010011010000, // D=D-M
+set inM 11111,
+tick, output, tock, output;
+
+set instruction %B0000000000001110, // @14
+tick, output, tock, output;
+
+set instruction %B1110001100000100, // D;jlt
+tick, output, tock, output;
+
+set instruction %B0000001111100111, // @999
+tick, output, tock, output;
+
+set instruction %B1110110111100000, // A=A+1
+tick, output, tock, output;
+
+set instruction %B1110001100001000, // M=D
+tick, output, tock, output;
+
+set instruction %B0000000000010101, // @21
+tick, output, tock, output;
+
+set instruction %B1110011111000010, // D+1;jeq
+tick, output, tock, output;
+
+set instruction %B0000000000000010, // @2
+tick, output, tock, output;
+
+set instruction %B1110000010010000, // D=D+A
+tick, output, tock, output;
+
+set instruction %B0000001111101000, // @1000
+tick, output, tock, output;
+
+set instruction %B1110111010010000, // D=-1
+tick, output, tock, output;
+
+set instruction %B1110001100000001, // D;JGT
+tick, output, tock, output;
+
+set instruction %B1110001100000010, // D;JEQ
+tick, output, tock, output;
+
+set instruction %B1110001100000011, // D;JGE
+tick, output, tock, output;
+
+set instruction %B1110001100000100, // D;JLT
+tick, output, tock, output;
+
+set instruction %B1110001100000101, // D;JNE
+tick, output, tock, output;
+
+set instruction %B1110001100000110, // D;JLE
+tick, output, tock, output;
+
+set instruction %B1110001100000111, // D;JMP
+tick, output, tock, output;
+
+set instruction %B1110101010010000, // D=0
+tick, output, tock, output;
+
+set instruction %B1110001100000001, // D;JGT
+tick, output, tock, output;
+
+set instruction %B1110001100000010, // D;JEQ
+tick, output, tock, output;
+
+set instruction %B1110001100000011, // D;JGE
+tick, output, tock, output;
+
+set instruction %B1110001100000100, // D;JLT
+tick, output, tock, output;
+
+set instruction %B1110001100000101, // D;JNE
+tick, output, tock, output;
+
+set instruction %B1110001100000110, // D;JLE
+tick, output, tock, output;
+
+set instruction %B1110001100000111, // D;JMP
+tick, output, tock, output;
+
+set instruction %B1110111111010000, // D=1
+tick, output, tock, output;
+
+set instruction %B1110001100000001, // D;JGT
+tick, output, tock, output;
+
+set instruction %B1110001100000010, // D;JEQ
+tick, output, tock, output;
+
+set instruction %B1110001100000011, // D;JGE
+tick, output, tock, output;
+
+set instruction %B1110001100000100, // D;JLT
+tick, output, tock, output;
+
+set instruction %B1110001100000101, // D;JNE
+tick, output, tock, output;
+
+set instruction %B1110001100000110, // D;JLE
+tick, output, tock, output;
+
+set instruction %B1110001100000111, // D;JMP
+tick, output, tock, output;
+
+set reset 1;
+tick, output, tock, output;
+
+set instruction %B0111111111111111, // @32767
+set reset 0;
+tick, output, tock, output;
diff --git a/5/CPU.cmp b/5/CPU.cmp
new file mode 100644
index 0000000..108fc46
--- /dev/null
+++ b/5/CPU.cmp
@@ -0,0 +1,93 @@
+|time| inM | instruction |reset| outM |writeM |addre| pc |DRegiste|
+|0+ | 0|0011000000111001| 0 |*******| 0 | 0| 0| 0 |
+|1 | 0|0011000000111001| 0 |*******| 0 |12345| 1| 0 |
+|1+ | 0|1110110000010000| 0 |*******| 0 |12345| 1| 12345 |
+|2 | 0|1110110000010000| 0 |*******| 0 |12345| 2| 12345 |
+|2+ | 0|0101101110100000| 0 |*******| 0 |12345| 2| 12345 |
+|3 | 0|0101101110100000| 0 |*******| 0 |23456| 3| 12345 |
+|3+ | 0|1110000111010000| 0 |*******| 0 |23456| 3| 11111 |
+|4 | 0|1110000111010000| 0 |*******| 0 |23456| 4| 11111 |
+|4+ | 0|0000001111101000| 0 |*******| 0 |23456| 4| 11111 |
+|5 | 0|0000001111101000| 0 |*******| 0 | 1000| 5| 11111 |
+|5+ | 0|1110001100001000| 0 | 11111| 1 | 1000| 5| 11111 |
+|6 | 0|1110001100001000| 0 | 11111| 1 | 1000| 6| 11111 |
+|6+ | 0|0000001111101001| 0 |*******| 0 | 1000| 6| 11111 |
+|7 | 0|0000001111101001| 0 |*******| 0 | 1001| 7| 11111 |
+|7+ | 0|1110001110011000| 0 | 11110| 1 | 1001| 7| 11110 |
+|8 | 0|1110001110011000| 0 | 11109| 1 | 1001| 8| 11110 |
+|8+ | 0|0000001111101000| 0 |*******| 0 | 1001| 8| 11110 |
+|9 | 0|0000001111101000| 0 |*******| 0 | 1000| 9| 11110 |
+|9+ | 11111|1111010011010000| 0 |*******| 0 | 1000| 9| -1 |
+|10 | 11111|1111010011010000| 0 |*******| 0 | 1000| 10| -1 |
+|10+ | 11111|0000000000001110| 0 |*******| 0 | 1000| 10| -1 |
+|11 | 11111|0000000000001110| 0 |*******| 0 | 14| 11| -1 |
+|11+ | 11111|1110001100000100| 0 |*******| 0 | 14| 11| -1 |
+|12 | 11111|1110001100000100| 0 |*******| 0 | 14| 14| -1 |
+|12+ | 11111|0000001111100111| 0 |*******| 0 | 14| 14| -1 |
+|13 | 11111|0000001111100111| 0 |*******| 0 | 999| 15| -1 |
+|13+ | 11111|1110110111100000| 0 |*******| 0 | 999| 15| -1 |
+|14 | 11111|1110110111100000| 0 |*******| 0 | 1000| 16| -1 |
+|14+ | 11111|1110001100001000| 0 | -1| 1 | 1000| 16| -1 |
+|15 | 11111|1110001100001000| 0 | -1| 1 | 1000| 17| -1 |
+|15+ | 11111|0000000000010101| 0 |*******| 0 | 1000| 17| -1 |
+|16 | 11111|0000000000010101| 0 |*******| 0 | 21| 18| -1 |
+|16+ | 11111|1110011111000010| 0 |*******| 0 | 21| 18| -1 |
+|17 | 11111|1110011111000010| 0 |*******| 0 | 21| 21| -1 |
+|17+ | 11111|0000000000000010| 0 |*******| 0 | 21| 21| -1 |
+|18 | 11111|0000000000000010| 0 |*******| 0 | 2| 22| -1 |
+|18+ | 11111|1110000010010000| 0 |*******| 0 | 2| 22| 1 |
+|19 | 11111|1110000010010000| 0 |*******| 0 | 2| 23| 1 |
+|19+ | 11111|0000001111101000| 0 |*******| 0 | 2| 23| 1 |
+|20 | 11111|0000001111101000| 0 |*******| 0 | 1000| 24| 1 |
+|20+ | 11111|1110111010010000| 0 |*******| 0 | 1000| 24| -1 |
+|21 | 11111|1110111010010000| 0 |*******| 0 | 1000| 25| -1 |
+|21+ | 11111|1110001100000001| 0 |*******| 0 | 1000| 25| -1 |
+|22 | 11111|1110001100000001| 0 |*******| 0 | 1000| 26| -1 |
+|22+ | 11111|1110001100000010| 0 |*******| 0 | 1000| 26| -1 |
+|23 | 11111|1110001100000010| 0 |*******| 0 | 1000| 27| -1 |
+|23+ | 11111|1110001100000011| 0 |*******| 0 | 1000| 27| -1 |
+|24 | 11111|1110001100000011| 0 |*******| 0 | 1000| 28| -1 |
+|24+ | 11111|1110001100000100| 0 |*******| 0 | 1000| 28| -1 |
+|25 | 11111|1110001100000100| 0 |*******| 0 | 1000| 1000| -1 |
+|25+ | 11111|1110001100000101| 0 |*******| 0 | 1000| 1000| -1 |
+|26 | 11111|1110001100000101| 0 |*******| 0 | 1000| 1000| -1 |
+|26+ | 11111|1110001100000110| 0 |*******| 0 | 1000| 1000| -1 |
+|27 | 11111|1110001100000110| 0 |*******| 0 | 1000| 1000| -1 |
+|27+ | 11111|1110001100000111| 0 |*******| 0 | 1000| 1000| -1 |
+|28 | 11111|1110001100000111| 0 |*******| 0 | 1000| 1000| -1 |
+|28+ | 11111|1110101010010000| 0 |*******| 0 | 1000| 1000| 0 |
+|29 | 11111|1110101010010000| 0 |*******| 0 | 1000| 1001| 0 |
+|29+ | 11111|1110001100000001| 0 |*******| 0 | 1000| 1001| 0 |
+|30 | 11111|1110001100000001| 0 |*******| 0 | 1000| 1002| 0 |
+|30+ | 11111|1110001100000010| 0 |*******| 0 | 1000| 1002| 0 |
+|31 | 11111|1110001100000010| 0 |*******| 0 | 1000| 1000| 0 |
+|31+ | 11111|1110001100000011| 0 |*******| 0 | 1000| 1000| 0 |
+|32 | 11111|1110001100000011| 0 |*******| 0 | 1000| 1000| 0 |
+|32+ | 11111|1110001100000100| 0 |*******| 0 | 1000| 1000| 0 |
+|33 | 11111|1110001100000100| 0 |*******| 0 | 1000| 1001| 0 |
+|33+ | 11111|1110001100000101| 0 |*******| 0 | 1000| 1001| 0 |
+|34 | 11111|1110001100000101| 0 |*******| 0 | 1000| 1002| 0 |
+|34+ | 11111|1110001100000110| 0 |*******| 0 | 1000| 1002| 0 |
+|35 | 11111|1110001100000110| 0 |*******| 0 | 1000| 1000| 0 |
+|35+ | 11111|1110001100000111| 0 |*******| 0 | 1000| 1000| 0 |
+|36 | 11111|1110001100000111| 0 |*******| 0 | 1000| 1000| 0 |
+|36+ | 11111|1110111111010000| 0 |*******| 0 | 1000| 1000| 1 |
+|37 | 11111|1110111111010000| 0 |*******| 0 | 1000| 1001| 1 |
+|37+ | 11111|1110001100000001| 0 |*******| 0 | 1000| 1001| 1 |
+|38 | 11111|1110001100000001| 0 |*******| 0 | 1000| 1000| 1 |
+|38+ | 11111|1110001100000010| 0 |*******| 0 | 1000| 1000| 1 |
+|39 | 11111|1110001100000010| 0 |*******| 0 | 1000| 1001| 1 |
+|39+ | 11111|1110001100000011| 0 |*******| 0 | 1000| 1001| 1 |
+|40 | 11111|1110001100000011| 0 |*******| 0 | 1000| 1000| 1 |
+|40+ | 11111|1110001100000100| 0 |*******| 0 | 1000| 1000| 1 |
+|41 | 11111|1110001100000100| 0 |*******| 0 | 1000| 1001| 1 |
+|41+ | 11111|1110001100000101| 0 |*******| 0 | 1000| 1001| 1 |
+|42 | 11111|1110001100000101| 0 |*******| 0 | 1000| 1000| 1 |
+|42+ | 11111|1110001100000110| 0 |*******| 0 | 1000| 1000| 1 |
+|43 | 11111|1110001100000110| 0 |*******| 0 | 1000| 1001| 1 |
+|43+ | 11111|1110001100000111| 0 |*******| 0 | 1000| 1001| 1 |
+|44 | 11111|1110001100000111| 0 |*******| 0 | 1000| 1000| 1 |
+|44+ | 11111|1110001100000111| 1 |*******| 0 | 1000| 1000| 1 |
+|45 | 11111|1110001100000111| 1 |*******| 0 | 1000| 0| 1 |
+|45+ | 11111|0111111111111111| 0 |*******| 0 | 1000| 0| 1 |
+|46 | 11111|0111111111111111| 0 |*******| 0 |32767| 1| 1 |
diff --git a/5/CPU.hdl b/5/CPU.hdl
new file mode 100644
index 0000000..a92d2f6
--- /dev/null
+++ b/5/CPU.hdl
@@ -0,0 +1,35 @@
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+/**
+ * The Hack Central Processing unit (CPU).
+ * Parses the binary code in the instruction input and executes it according to the
+ * Hack machine language specification. In the case of a C-instruction, computes the
+ * function specified by the instruction. If the instruction specifies to read a memory
+ * value, the inM input is expected to contain this value. If the instruction specifies
+ * to write a value to the memory, sets the outM output to this value, sets the addressM
+ * output to the target address, and asserts the writeM output (when writeM = 0, any
+ * value may appear in outM).
+ * If the reset input is 0, computes the address of the next instruction and sets the
+ * pc output to that value. If the reset input is 1, sets pc to 0.
+ * Note: The outM and writeM outputs are combinational: they are affected by the
+ * instruction's execution during the current cycle. The addressM and pc outputs are
+ * clocked: although they are affected by the instruction's execution, they commit to
+ * their new values only in the next cycle.
+ */
+CHIP CPU {
+
+ IN inM[16], // M value input (M = contents of RAM[A])
+ instruction[16], // Instruction for execution
+ reset; // Signals whether to re-start the current
+ // program (reset==1) or continue executing
+ // the current program (reset==0).
+
+ OUT outM[16], // M value output
+ writeM, // Write to M?
+ addressM[15], // Address in data memory (of M)
+ pc[15]; // address of next instruction
+
+ PARTS:
+ //// Replace this comment with your code.
+}
\ No newline at end of file
diff --git a/05/CPU.tst b/5/CPU.tst
similarity index 83%
rename from 05/CPU.tst
rename to 5/CPU.tst
index 680a292..b175c3f 100644
--- a/05/CPU.tst
+++ b/5/CPU.tst
@@ -1,156 +1,149 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/05/CPU.tst
-
-load CPU.hdl,
-output-file CPU.out,
-compare-to CPU.cmp,
-output-list time%S0.4.0 inM%D0.6.0 instruction%B0.16.0 reset%B2.1.2 outM%D1.6.0 writeM%B3.1.3 addressM%D0.5.0 pc%D0.5.0 DRegister[]%D1.6.1;
-
-
-set instruction %B0011000000111001, // @12345
-tick, output, tock, output;
-
-set instruction %B1110110000010000, // D=A
-tick, output, tock, output;
-
-set instruction %B0101101110100000, // @23456
-tick, output, tock, output;
-
-set instruction %B1110000111110000, // AD=A-D
-tick, output, tock, output;
-
-set instruction %B0000001111101011, // @1003
-tick, output, tock, output;
-
-set instruction %B1110001100001000, // M=D
-tick, output, tock, output;
-
-set instruction %B0000001111101100, // @1004
-tick, output, tock, output;
-
-set instruction %B1110001110011000, // MD=D-1
-tick, output, tock, output;
-
-set instruction %B0000001111101000, // @1000
-tick, output, tock, output;
-
-set instruction %B1111010011110000, // AD=D-M
-set inM 11111,
-tick, output, tock, output;
-
-set instruction %B0000000000001110, // @14
-tick, output, tock, output;
-
-set instruction %B1110001100000100, // D;jlt
-tick, output, tock, output;
-
-set instruction %B0000001111100111, // @999
-tick, output, tock, output;
-
-set instruction %B1111110111100000, // A=M+1
-tick, output, tock, output;
-
-set instruction %B1110001100101000, // AM=D
-tick, output, tock, output;
-
-set instruction %B0000000000010101, // @21
-tick, output, tock, output;
-
-set instruction %B1110011111000010, // D+1;jeq
-tick, output, tock, output;
-
-set instruction %B0000000000000010, // @2
-tick, output, tock, output;
-
-set instruction %B1110000010111000, // AMD=D+A
-tick, output, tock, output;
-
-set instruction %B1111110111001000, // M=M+1
-tick, output, tock, output;
-
-set instruction %B1111110010101000, // AM=M-1
-tick, output, tock, output;
-
-set instruction %B0000001111101000, // @1000
-tick, output, tock, output;
-
-set instruction %B1110111010010000, // D=-1
-tick, output, tock, output;
-
-set instruction %B1110001100000001, // D;JGT
-tick, output, tock, output;
-
-set instruction %B1110001100000010, // D;JEQ
-tick, output, tock, output;
-
-set instruction %B1110001100000011, // D;JGE
-tick, output, tock, output;
-
-set instruction %B1110001100000100, // D;JLT
-tick, output, tock, output;
-
-set instruction %B1110001100000101, // D;JNE
-tick, output, tock, output;
-
-set instruction %B1110001100000110, // D;JLE
-tick, output, tock, output;
-
-set instruction %B1110001100000111, // D;JMP
-tick, output, tock, output;
-
-set instruction %B1110101010010000, // D=0
-tick, output, tock, output;
-
-set instruction %B1110001100000001, // D;JGT
-tick, output, tock, output;
-
-set instruction %B1110001100000010, // D;JEQ
-tick, output, tock, output;
-
-set instruction %B1110001100000011, // D;JGE
-tick, output, tock, output;
-
-set instruction %B1110001100000100, // D;JLT
-tick, output, tock, output;
-
-set instruction %B1110001100000101, // D;JNE
-tick, output, tock, output;
-
-set instruction %B1110001100000110, // D;JLE
-tick, output, tock, output;
-
-set instruction %B1110001100000111, // D;JMP
-tick, output, tock, output;
-
-set instruction %B1110111111010000, // D=1
-tick, output, tock, output;
-
-set instruction %B1110001100000001, // D;JGT
-tick, output, tock, output;
-
-set instruction %B1110001100000010, // D;JEQ
-tick, output, tock, output;
-
-set instruction %B1110001100000011, // D;JGE
-tick, output, tock, output;
-
-set instruction %B1110001100000100, // D;JLT
-tick, output, tock, output;
-
-set instruction %B1110001100000101, // D;JNE
-tick, output, tock, output;
-
-set instruction %B1110001100000110, // D;JLE
-tick, output, tock, output;
-
-set instruction %B1110001100000111, // D;JMP
-tick, output, tock, output;
-
-set reset 1;
-tick, output, tock, output;
-
-set instruction %B0111111111111111, // @32767
-set reset 0;
-tick, output, tock, output;
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+load CPU.hdl,
+output-file CPU.out,
+compare-to CPU.cmp,
+output-list time%S0.4.0 inM%D0.6.0 instruction%B0.16.0 reset%B2.1.2 outM%D1.6.0 writeM%B3.1.3 addressM%D0.5.0 pc%D0.5.0 DRegister[]%D1.6.1;
+
+
+set instruction %B0011000000111001, // @12345
+tick, output, tock, output;
+
+set instruction %B1110110000010000, // D=A
+tick, output, tock, output;
+
+set instruction %B0101101110100000, // @23456
+tick, output, tock, output;
+
+set instruction %B1110000111010000, // D=A-D
+tick, output, tock, output;
+
+set instruction %B0000001111101000, // @1000
+tick, output, tock, output;
+
+set instruction %B1110001100001000, // M=D
+tick, output, tock, output;
+
+set instruction %B0000001111101001, // @1001
+tick, output, tock, output;
+
+set instruction %B1110001110011000, // MD=D-1
+tick, output, tock, output;
+
+set instruction %B0000001111101000, // @1000
+tick, output, tock, output;
+
+set instruction %B1111010011010000, // D=D-M
+set inM 11111,
+tick, output, tock, output;
+
+set instruction %B0000000000001110, // @14
+tick, output, tock, output;
+
+set instruction %B1110001100000100, // D;jlt
+tick, output, tock, output;
+
+set instruction %B0000001111100111, // @999
+tick, output, tock, output;
+
+set instruction %B1110110111100000, // A=A+1
+tick, output, tock, output;
+
+set instruction %B1110001100001000, // M=D
+tick, output, tock, output;
+
+set instruction %B0000000000010101, // @21
+tick, output, tock, output;
+
+set instruction %B1110011111000010, // D+1;jeq
+tick, output, tock, output;
+
+set instruction %B0000000000000010, // @2
+tick, output, tock, output;
+
+set instruction %B1110000010010000, // D=D+A
+tick, output, tock, output;
+
+set instruction %B0000001111101000, // @1000
+tick, output, tock, output;
+
+set instruction %B1110111010010000, // D=-1
+tick, output, tock, output;
+
+set instruction %B1110001100000001, // D;JGT
+tick, output, tock, output;
+
+set instruction %B1110001100000010, // D;JEQ
+tick, output, tock, output;
+
+set instruction %B1110001100000011, // D;JGE
+tick, output, tock, output;
+
+set instruction %B1110001100000100, // D;JLT
+tick, output, tock, output;
+
+set instruction %B1110001100000101, // D;JNE
+tick, output, tock, output;
+
+set instruction %B1110001100000110, // D;JLE
+tick, output, tock, output;
+
+set instruction %B1110001100000111, // D;JMP
+tick, output, tock, output;
+
+set instruction %B1110101010010000, // D=0
+tick, output, tock, output;
+
+set instruction %B1110001100000001, // D;JGT
+tick, output, tock, output;
+
+set instruction %B1110001100000010, // D;JEQ
+tick, output, tock, output;
+
+set instruction %B1110001100000011, // D;JGE
+tick, output, tock, output;
+
+set instruction %B1110001100000100, // D;JLT
+tick, output, tock, output;
+
+set instruction %B1110001100000101, // D;JNE
+tick, output, tock, output;
+
+set instruction %B1110001100000110, // D;JLE
+tick, output, tock, output;
+
+set instruction %B1110001100000111, // D;JMP
+tick, output, tock, output;
+
+set instruction %B1110111111010000, // D=1
+tick, output, tock, output;
+
+set instruction %B1110001100000001, // D;JGT
+tick, output, tock, output;
+
+set instruction %B1110001100000010, // D;JEQ
+tick, output, tock, output;
+
+set instruction %B1110001100000011, // D;JGE
+tick, output, tock, output;
+
+set instruction %B1110001100000100, // D;JLT
+tick, output, tock, output;
+
+set instruction %B1110001100000101, // D;JNE
+tick, output, tock, output;
+
+set instruction %B1110001100000110, // D;JLE
+tick, output, tock, output;
+
+set instruction %B1110001100000111, // D;JMP
+tick, output, tock, output;
+
+set reset 1;
+tick, output, tock, output;
+
+set instruction %B0111111111111111, // @32767
+set reset 0;
+tick, output, tock, output;
diff --git a/5/Computer.hdl b/5/Computer.hdl
new file mode 100644
index 0000000..fcfc680
--- /dev/null
+++ b/5/Computer.hdl
@@ -0,0 +1,21 @@
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+/**
+ * The Hack computer, consisting of CPU, ROM and RAM.
+ * When reset = 0, the program stored in the ROM executes.
+ * When reset = 1, the program's execution restarts.
+ * Thus, to start running the currently loaded program,
+ * set reset to 1, and then set it to 0.
+ * From this point onwards, the user is at the mercy of the software.
+ * Depending on the program's code, and whether the code is correct,
+ * the screen may show some output, the user may be expected to enter
+ * some input using the keyboard, or the program may do some procerssing.
+ */
+CHIP Computer {
+
+ IN reset;
+
+ PARTS:
+ //// Replace this comment with your code.
+}
diff --git a/5/ComputerAdd.cmp b/5/ComputerAdd.cmp
new file mode 100644
index 0000000..d867a0c
--- /dev/null
+++ b/5/ComputerAdd.cmp
@@ -0,0 +1,15 @@
+|time |reset|ARegister|DRegister|PC[]|RAM16K[0]|RAM16K[1]|RAM16K[2]|
+| 0 | 0 | 0 | 0 | 0| 0 | 0 | 0 |
+| 1 | 0 | 2 | 0 | 1| 0 | 0 | 0 |
+| 2 | 0 | 2 | 2 | 2| 0 | 0 | 0 |
+| 3 | 0 | 3 | 2 | 3| 0 | 0 | 0 |
+| 4 | 0 | 3 | 5 | 4| 0 | 0 | 0 |
+| 5 | 0 | 0 | 5 | 5| 0 | 0 | 0 |
+| 6 | 0 | 0 | 5 | 6| 5 | 0 | 0 |
+| 7 | 1 | 0 | 5 | 0| 0 | 0 | 0 |
+| 8 | 0 | 2 | 5 | 1| 0 | 0 | 0 |
+| 9 | 0 | 2 | 2 | 2| 0 | 0 | 0 |
+| 10 | 0 | 3 | 2 | 3| 0 | 0 | 0 |
+| 11 | 0 | 3 | 5 | 4| 0 | 0 | 0 |
+| 12 | 0 | 0 | 5 | 5| 0 | 0 | 0 |
+| 13 | 0 | 0 | 5 | 6| 5 | 0 | 0 |
diff --git a/05/ComputerAdd.tst b/5/ComputerAdd.tst
similarity index 57%
rename from 05/ComputerAdd.tst
rename to 5/ComputerAdd.tst
index 27f4411..bd0584a 100644
--- a/05/ComputerAdd.tst
+++ b/5/ComputerAdd.tst
@@ -1,32 +1,34 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/05/ComputerAdd.tst
-
-load Computer.hdl,
-output-file ComputerAdd.out,
-compare-to ComputerAdd.cmp,
-output-list time%S1.4.1 reset%B2.1.2 ARegister[0]%D1.7.1 DRegister[0]%D1.7.1 PC[]%D0.4.0 RAM16K[0]%D1.7.1 RAM16K[1]%D1.7.1 RAM16K[2]%D1.7.1;
-
-// Load a program written in the Hack machine language.
-// The program adds the two constants 2 and 3 and writes the result in RAM[0].
-ROM32K load Add.hack,
-output;
-
-// First run (at the beginning PC=0)
-repeat 6 {
- tick, tock, output;
-}
-
-// Reset the PC
-set reset 1,
-set RAM16K[0] 0,
-tick, tock, output;
-
-
-// Second run, to check that the PC was reset correctly.
-set reset 0,
-
-repeat 6 {
- tick, tock, output;
-}
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+// Tests the Computer chip by having it execute the program Add.hack.
+// The program adds up the constants 2 and 3 and writes the result in RAM[0].
+
+load Computer.hdl,
+output-file ComputerAdd.out,
+compare-to ComputerAdd.cmp,
+// Tracks the values of the time, reset bit, A-register, D-register,
+// program counter, R0, R1, and R2.
+output-list time%S1.3.1 reset%B2.1.2 ARegister[0]%D1.7.1 DRegister[0]%D1.7.1 PC[]%D0.4.0 RAM16K[0]%D1.7.1 RAM16K[1]%D1.7.1 RAM16K[2]%D1.7.1;
+
+// Loads the binary program Add.hack into the computer's instruction memory
+ROM32K load Add.hack,
+output;
+
+// First run (at the beginning PC=0)
+repeat 6 {
+ tick, tock, output;
+}
+
+// Resets the PC
+set reset 1,
+set RAM16K[0] 0,
+tick, tock, output;
+
+// Second run, to check that the PC was reset correctly.
+set reset 0,
+
+repeat 6 {
+ tick, tock, output;
+}
diff --git a/5/ComputerMax.cmp b/5/ComputerMax.cmp
new file mode 100644
index 0000000..3830dd7
--- /dev/null
+++ b/5/ComputerMax.cmp
@@ -0,0 +1,28 @@
+|time |reset|ARegister|DRegister|PC[]|RAM16K[0]|RAM16K[1]|RAM16K[2]|
+| 0 | 0 | 0 | 0 | 0| 3 | 5 | 0 |
+| 1 | 0 | 0 | 0 | 1| 3 | 5 | 0 |
+| 2 | 0 | 0 | 3 | 2| 3 | 5 | 0 |
+| 3 | 0 | 1 | 3 | 3| 3 | 5 | 0 |
+| 4 | 0 | 1 | -2 | 4| 3 | 5 | 0 |
+| 5 | 0 | 10 | -2 | 5| 3 | 5 | 0 |
+| 6 | 0 | 10 | -2 | 6| 3 | 5 | 0 |
+| 7 | 0 | 1 | -2 | 7| 3 | 5 | 0 |
+| 8 | 0 | 1 | 5 | 8| 3 | 5 | 0 |
+| 9 | 0 | 12 | 5 | 9| 3 | 5 | 0 |
+| 10 | 0 | 12 | 5 | 12| 3 | 5 | 0 |
+| 11 | 0 | 2 | 5 | 13| 3 | 5 | 0 |
+| 12 | 0 | 2 | 5 | 14| 3 | 5 | 5 |
+| 13 | 0 | 14 | 5 | 15| 3 | 5 | 5 |
+| 14 | 0 | 14 | 5 | 14| 3 | 5 | 5 |
+| 15 | 1 | 14 | 5 | 0| 3 | 5 | 5 |
+| 15 | 0 | 14 | 5 | 0| 23456 | 12345 | 5 |
+| 16 | 0 | 0 | 5 | 1| 23456 | 12345 | 5 |
+| 17 | 0 | 0 | 23456 | 2| 23456 | 12345 | 5 |
+| 18 | 0 | 1 | 23456 | 3| 23456 | 12345 | 5 |
+| 19 | 0 | 1 | 11111 | 4| 23456 | 12345 | 5 |
+| 20 | 0 | 10 | 11111 | 5| 23456 | 12345 | 5 |
+| 21 | 0 | 10 | 11111 | 10| 23456 | 12345 | 5 |
+| 22 | 0 | 0 | 11111 | 11| 23456 | 12345 | 5 |
+| 23 | 0 | 0 | 23456 | 12| 23456 | 12345 | 5 |
+| 24 | 0 | 2 | 23456 | 13| 23456 | 12345 | 5 |
+| 25 | 0 | 2 | 23456 | 14| 23456 | 12345 | 23456 |
diff --git a/5/ComputerMax.tst b/5/ComputerMax.tst
new file mode 100644
index 0000000..897a2c3
--- /dev/null
+++ b/5/ComputerMax.tst
@@ -0,0 +1,40 @@
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+// Tests the Computer chip by having it execute the program Max.hack.
+// The program computes maximum(R0, R1) and writes the result in RAM[2].
+
+load Computer.hdl,
+output-file ComputerMax.out,
+compare-to ComputerMax.cmp,
+// Tracks the values of the time, reset bit, A-register, D-register,
+// program counter, R0, R1, and R2.
+output-list time%S1.3.1 reset%B2.1.2 ARegister[]%D1.7.1 DRegister[]%D1.7.1 PC[]%D0.4.0 RAM16K[0]%D1.7.1 RAM16K[1]%D1.7.1 RAM16K[2]%D1.7.1;
+
+// Loads the binary program Add.hack into the computer's instruction memory
+ROM32K load Max.hack,
+
+// first run: computes max(3,5)
+set RAM16K[0] 3,
+set RAM16K[1] 5,
+output;
+
+repeat 14 {
+ tick, tock, output;
+}
+
+// resets the PC
+set reset 1,
+tick, tock, output;
+
+// second run: computes max(23456,12345)
+set reset 0,
+set RAM16K[0] 23456,
+set RAM16K[1] 12345,
+output;
+
+// The run on these inputs requires less cycles (different branching)
+repeat 10 {
+ tick, tock, output;
+}
diff --git a/5/ComputerRect.cmp b/5/ComputerRect.cmp
new file mode 100644
index 0000000..5c375a4
--- /dev/null
+++ b/5/ComputerRect.cmp
@@ -0,0 +1,65 @@
+|time |ARegister|DRegister|PC[]|RAM16K[0]|RAM16K[1]|RAM16K[2]|
+| 0 | 0 | 0 | 0| 4 | 0 | 0 |
+| 1 | 0 | 0 | 1| 4 | 0 | 0 |
+| 2 | 0 | 4 | 2| 4 | 0 | 0 |
+| 3 | 23 | 4 | 3| 4 | 0 | 0 |
+| 4 | 23 | 4 | 4| 4 | 0 | 0 |
+| 5 | 16 | 4 | 5| 4 | 0 | 0 |
+| 6 | 16 | 4 | 6| 4 | 0 | 0 |
+| 7 | 16384 | 4 | 7| 4 | 0 | 0 |
+| 8 | 16384 | 16384 | 8| 4 | 0 | 0 |
+| 9 | 17 | 16384 | 9| 4 | 0 | 0 |
+| 10 | 17 | 16384 | 10| 4 | 0 | 0 |
+| 11 | 17 | 16384 | 11| 4 | 0 | 0 |
+| 12 | 16384 | 16384 | 12| 4 | 0 | 0 |
+| 13 | 16384 | 16384 | 13| 4 | 0 | 0 |
+| 14 | 17 | 16384 | 14| 4 | 0 | 0 |
+| 15 | 17 | 16384 | 15| 4 | 0 | 0 |
+| 16 | 32 | 16384 | 16| 4 | 0 | 0 |
+| 17 | 32 | 16416 | 17| 4 | 0 | 0 |
+| 18 | 17 | 16416 | 18| 4 | 0 | 0 |
+| 19 | 17 | 16416 | 19| 4 | 0 | 0 |
+| 20 | 16 | 16416 | 20| 4 | 0 | 0 |
+| 21 | 16 | 3 | 21| 4 | 0 | 0 |
+| 22 | 10 | 3 | 22| 4 | 0 | 0 |
+| 23 | 10 | 3 | 10| 4 | 0 | 0 |
+| 24 | 17 | 3 | 11| 4 | 0 | 0 |
+| 25 | 16416 | 3 | 12| 4 | 0 | 0 |
+| 26 | 16416 | 3 | 13| 4 | 0 | 0 |
+| 27 | 17 | 3 | 14| 4 | 0 | 0 |
+| 28 | 17 | 16416 | 15| 4 | 0 | 0 |
+| 29 | 32 | 16416 | 16| 4 | 0 | 0 |
+| 30 | 32 | 16448 | 17| 4 | 0 | 0 |
+| 31 | 17 | 16448 | 18| 4 | 0 | 0 |
+| 32 | 17 | 16448 | 19| 4 | 0 | 0 |
+| 33 | 16 | 16448 | 20| 4 | 0 | 0 |
+| 34 | 16 | 2 | 21| 4 | 0 | 0 |
+| 35 | 10 | 2 | 22| 4 | 0 | 0 |
+| 36 | 10 | 2 | 10| 4 | 0 | 0 |
+| 37 | 17 | 2 | 11| 4 | 0 | 0 |
+| 38 | 16448 | 2 | 12| 4 | 0 | 0 |
+| 39 | 16448 | 2 | 13| 4 | 0 | 0 |
+| 40 | 17 | 2 | 14| 4 | 0 | 0 |
+| 41 | 17 | 16448 | 15| 4 | 0 | 0 |
+| 42 | 32 | 16448 | 16| 4 | 0 | 0 |
+| 43 | 32 | 16480 | 17| 4 | 0 | 0 |
+| 44 | 17 | 16480 | 18| 4 | 0 | 0 |
+| 45 | 17 | 16480 | 19| 4 | 0 | 0 |
+| 46 | 16 | 16480 | 20| 4 | 0 | 0 |
+| 47 | 16 | 1 | 21| 4 | 0 | 0 |
+| 48 | 10 | 1 | 22| 4 | 0 | 0 |
+| 49 | 10 | 1 | 10| 4 | 0 | 0 |
+| 50 | 17 | 1 | 11| 4 | 0 | 0 |
+| 51 | 16480 | 1 | 12| 4 | 0 | 0 |
+| 52 | 16480 | 1 | 13| 4 | 0 | 0 |
+| 53 | 17 | 1 | 14| 4 | 0 | 0 |
+| 54 | 17 | 16480 | 15| 4 | 0 | 0 |
+| 55 | 32 | 16480 | 16| 4 | 0 | 0 |
+| 56 | 32 | 16512 | 17| 4 | 0 | 0 |
+| 57 | 17 | 16512 | 18| 4 | 0 | 0 |
+| 58 | 17 | 16512 | 19| 4 | 0 | 0 |
+| 59 | 16 | 16512 | 20| 4 | 0 | 0 |
+| 60 | 16 | 0 | 21| 4 | 0 | 0 |
+| 61 | 10 | 0 | 22| 4 | 0 | 0 |
+| 62 | 10 | 0 | 23| 4 | 0 | 0 |
+| 63 | 23 | 0 | 24| 4 | 0 | 0 |
diff --git a/05/ComputerRect.tst b/5/ComputerRect.tst
similarity index 54%
rename from 05/ComputerRect.tst
rename to 5/ComputerRect.tst
index b1e2126..2d73e3d 100644
--- a/05/ComputerRect.tst
+++ b/5/ComputerRect.tst
@@ -1,26 +1,28 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/05/ComputerRect.tst
-
-load Computer.hdl,
-output-file ComputerRect.out,
-compare-to ComputerRect.cmp,
-output-list time%S1.4.1 ARegister[]%D1.7.1 DRegister[]%D1.7.1 PC[]%D0.4.0 RAM16K[0]%D1.7.1 RAM16K[1]%D1.7.1 RAM16K[2]%D1.7.1;
-
-// Load a program written in the Hack machine language.
-// The program draws a rectangle of width 16 pixels and
-// length RAM[0] at the top left of the screen.
-ROM32K load Rect.hack,
-
-echo "Before you run this script, select the 'Screen' option from the 'View' menu";
-
-echo "A small rectangle should be drawn at the top left of the screen (the 'Screen' option of the 'View' menu should be selected.)";
-
-// Draws a rectangle 16 pixels wide and 4 pixels long
-set RAM16K[0] 4,
-output;
-
-repeat 63 {
- tick, tock, output;
-}
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+// Tests the Computer chip by having it execute the program Rect.hack.
+// The program draws a rectangle of width 16 pixels and length RAM[0]
+// at the top left corner of the screen.
+
+load Computer.hdl,
+output-file ComputerRect.out,
+compare-to ComputerRect.cmp,
+// Tracks the values of the time, A-register, D-register, program counter, R0, R1, and R2.
+output-list time%S1.3.1 ARegister[]%D1.7.1 DRegister[]%D1.7.1 PC[]%D0.4.0 RAM16K[0]%D1.7.1 RAM16K[1]%D1.7.1 RAM16K[2]%D1.7.1;
+
+// Loads the binary program Rect.hack into the computer's instruction memory
+ROM32K load Rect.hack,
+
+echo "Before you run this script, select the 'Screen' option from the 'View' menu";
+
+echo "A small rectangle should be drawn at the top left of the screen (the 'Screen' option of the 'View' menu should be selected.)";
+
+// Draws a rectangle consisting of 4 rows (each 16 pixels wide)
+set RAM16K[0] 4,
+output;
+
+repeat 63 {
+ tick, tock, output;
+}
diff --git a/05/Max.hack b/5/Max.hack
similarity index 94%
rename from 05/Max.hack
rename to 5/Max.hack
index 2e04a8d..ab8a440 100644
--- a/05/Max.hack
+++ b/5/Max.hack
@@ -1,16 +1,16 @@
-0000000000000000
-1111110000010000
-0000000000000001
-1111010011010000
-0000000000001010
-1110001100000001
-0000000000000001
-1111110000010000
-0000000000001100
-1110101010000111
-0000000000000000
-1111110000010000
-0000000000000010
-1110001100001000
-0000000000001110
-1110101010000111
+0000000000000000
+1111110000010000
+0000000000000001
+1111010011010000
+0000000000001010
+1110001100000001
+0000000000000001
+1111110000010000
+0000000000001100
+1110101010000111
+0000000000000000
+1111110000010000
+0000000000000010
+1110001100001000
+0000000000001110
+1110101010000111
diff --git a/05/Memory.cmp b/5/Memory.cmp
similarity index 97%
rename from 05/Memory.cmp
rename to 5/Memory.cmp
index 2f4c727..839a730 100644
--- a/05/Memory.cmp
+++ b/5/Memory.cmp
@@ -1,68 +1,68 @@
-| in |load | address | out |
-| 12345 | 1 | 010000000000000 | 0 |
-| 12345 | 1 | 010000000000000 | 12345 |
-| 12345 | 1 | 100000000000000 | 0 |
-| 12345 | 1 | 100000000000000 | 12345 |
-| -1 | 1 | 000000000000000 | 0 |
-| -1 | 1 | 000000000000000 | -1 |
-| 9999 | 0 | 000000000000000 | -1 |
-| 9999 | 0 | 000000000000000 | -1 |
-| 9999 | 0 | 010000000000000 | 12345 |
-| 9999 | 0 | 100000000000000 | 12345 |
-| 12345 | 1 | 000000000000000 | -1 |
-| 12345 | 1 | 000000000000000 | 12345 |
-| 12345 | 1 | 100000000000000 | 12345 |
-| 12345 | 1 | 100000000000000 | 12345 |
-| 2222 | 1 | 010000000000000 | 12345 |
-| 2222 | 1 | 010000000000000 | 2222 |
-| 9999 | 0 | 010000000000000 | 2222 |
-| 9999 | 0 | 010000000000000 | 2222 |
-| 9999 | 0 | 000000000000000 | 12345 |
-| 9999 | 0 | 100000000000000 | 12345 |
-| 9999 | 0 | 000000000000001 | 0 |
-| 9999 | 0 | 000000000000010 | 0 |
-| 9999 | 0 | 000000000000100 | 0 |
-| 9999 | 0 | 000000000001000 | 0 |
-| 9999 | 0 | 000000000010000 | 0 |
-| 9999 | 0 | 000000000100000 | 0 |
-| 9999 | 0 | 000000001000000 | 0 |
-| 9999 | 0 | 000000010000000 | 0 |
-| 9999 | 0 | 000000100000000 | 0 |
-| 9999 | 0 | 000001000000000 | 0 |
-| 9999 | 0 | 000010000000000 | 0 |
-| 9999 | 0 | 000100000000000 | 0 |
-| 9999 | 0 | 001000000000000 | 0 |
-| 9999 | 0 | 010000000000000 | 2222 |
-| 1234 | 1 | 001001000110100 | 0 |
-| 1234 | 1 | 001001000110100 | 1234 |
-| 1234 | 0 | 010001000110100 | 0 |
-| 1234 | 0 | 110001000110100 | 0 |
-| 2345 | 1 | 010001101000101 | 0 |
-| 2345 | 1 | 010001101000101 | 2345 |
-| 2345 | 0 | 000001101000101 | 0 |
-| 2345 | 0 | 100001101000101 | 0 |
-| 0 | 1 | 100000000000000 | 12345 |
-| 0 | 1 | 100000000000000 | 0 |
-| 0 | 1 | 110000000000000 | 75 |
-| 12345 | 1 | 000111111001111 | 0 |
-| 12345 | 1 | 000111111001111 | 12345 |
-| 12345 | 1 | 010111111001111 | 0 |
-| 12345 | 1 | 010111111001111 | 12345 |
-| -1 | 1 | 100111111001111 | -1 |
-| -1 | 1 | 101000001001111 | -1 |
-| -1 | 1 | 000111111001111 | 12345 |
-| -1 | 1 | 010111111001111 | 12345 |
-| -1 | 0 | 100111111001110 | 0 |
-| -1 | 0 | 100111111001101 | 0 |
-| -1 | 0 | 100111111001011 | 0 |
-| -1 | 0 | 100111111000111 | 0 |
-| -1 | 0 | 100111111011111 | 0 |
-| -1 | 0 | 100111111101111 | 0 |
-| -1 | 0 | 100111110001111 | 0 |
-| -1 | 0 | 100111101001111 | 0 |
-| -1 | 0 | 100111011001111 | 0 |
-| -1 | 0 | 100110111001111 | 0 |
-| -1 | 0 | 100101111001111 | 0 |
-| -1 | 0 | 100011111001111 | 0 |
-| -1 | 0 | 101111111001111 | 0 |
-| -1 | 0 | 110000000000000 | 89 |
+| in |load | address | out |
+| 12345 | 1 | 010000000000000 | 0 |
+| 12345 | 1 | 010000000000000 | 12345 |
+| 12345 | 1 | 100000000000000 | 0 |
+| 12345 | 1 | 100000000000000 | 12345 |
+| -1 | 1 | 000000000000000 | 0 |
+| -1 | 1 | 000000000000000 | -1 |
+| 9999 | 0 | 000000000000000 | -1 |
+| 9999 | 0 | 000000000000000 | -1 |
+| 9999 | 0 | 010000000000000 | 12345 |
+| 9999 | 0 | 100000000000000 | 12345 |
+| 12345 | 1 | 000000000000000 | -1 |
+| 12345 | 1 | 000000000000000 | 12345 |
+| 12345 | 1 | 100000000000000 | 12345 |
+| 12345 | 1 | 100000000000000 | 12345 |
+| 2222 | 1 | 010000000000000 | 12345 |
+| 2222 | 1 | 010000000000000 | 2222 |
+| 9999 | 0 | 010000000000000 | 2222 |
+| 9999 | 0 | 010000000000000 | 2222 |
+| 9999 | 0 | 000000000000000 | 12345 |
+| 9999 | 0 | 100000000000000 | 12345 |
+| 9999 | 0 | 000000000000001 | 0 |
+| 9999 | 0 | 000000000000010 | 0 |
+| 9999 | 0 | 000000000000100 | 0 |
+| 9999 | 0 | 000000000001000 | 0 |
+| 9999 | 0 | 000000000010000 | 0 |
+| 9999 | 0 | 000000000100000 | 0 |
+| 9999 | 0 | 000000001000000 | 0 |
+| 9999 | 0 | 000000010000000 | 0 |
+| 9999 | 0 | 000000100000000 | 0 |
+| 9999 | 0 | 000001000000000 | 0 |
+| 9999 | 0 | 000010000000000 | 0 |
+| 9999 | 0 | 000100000000000 | 0 |
+| 9999 | 0 | 001000000000000 | 0 |
+| 9999 | 0 | 010000000000000 | 2222 |
+| 1234 | 1 | 001001000110100 | 0 |
+| 1234 | 1 | 001001000110100 | 1234 |
+| 1234 | 0 | 010001000110100 | 0 |
+| 1234 | 0 | 110001000110100 | 0 |
+| 2345 | 1 | 010001101000101 | 0 |
+| 2345 | 1 | 010001101000101 | 2345 |
+| 2345 | 0 | 000001101000101 | 0 |
+| 2345 | 0 | 100001101000101 | 0 |
+| 0 | 1 | 100000000000000 | 12345 |
+| 0 | 1 | 100000000000000 | 0 |
+| 0 | 1 | 110000000000000 | 75 |
+| 12345 | 1 | 000111111001111 | 0 |
+| 12345 | 1 | 000111111001111 | 12345 |
+| 12345 | 1 | 010111111001111 | 0 |
+| 12345 | 1 | 010111111001111 | 12345 |
+| -1 | 1 | 100111111001111 | -1 |
+| -1 | 1 | 101000001001111 | -1 |
+| -1 | 1 | 000111111001111 | 12345 |
+| -1 | 1 | 010111111001111 | 12345 |
+| -1 | 0 | 100111111001110 | 0 |
+| -1 | 0 | 100111111001101 | 0 |
+| -1 | 0 | 100111111001011 | 0 |
+| -1 | 0 | 100111111000111 | 0 |
+| -1 | 0 | 100111111011111 | 0 |
+| -1 | 0 | 100111111101111 | 0 |
+| -1 | 0 | 100111110001111 | 0 |
+| -1 | 0 | 100111101001111 | 0 |
+| -1 | 0 | 100111011001111 | 0 |
+| -1 | 0 | 100110111001111 | 0 |
+| -1 | 0 | 100101111001111 | 0 |
+| -1 | 0 | 100011111001111 | 0 |
+| -1 | 0 | 101111111001111 | 0 |
+| -1 | 0 | 110000000000000 | 89 |
diff --git a/05/Memory.hdl b/5/Memory.hdl
similarity index 81%
rename from 05/Memory.hdl
rename to 5/Memory.hdl
index 62a4fd2..e16f819 100644
--- a/05/Memory.hdl
+++ b/5/Memory.hdl
@@ -1,31 +1,28 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/05/Memory.hdl
-
-/**
- * The complete address space of the Hack computer's memory,
- * including RAM and memory-mapped I/O.
- * The chip facilitates read and write operations, as follows:
- * Read: out(t) = Memory[address(t)](t)
- * Write: if load(t-1) then Memory[address(t-1)](t) = in(t-1)
- * In words: the chip always outputs the value stored at the memory
- * location specified by address. If load==1, the in value is loaded
- * into the memory location specified by address. This value becomes
- * available through the out output from the next time step onward.
- * Address space rules:
- * Only the upper 16K+8K+1 words of the Memory chip are used.
- * Access to address>0x6000 is invalid. Access to any address in
- * the range 0x4000-0x5FFF results in accessing the screen memory
- * map. Access to address 0x6000 results in accessing the keyboard
- * memory map. The behavior in these addresses is described in the
- * Screen and Keyboard chip specifications given in the book.
- */
-
-CHIP Memory {
- IN in[16], load, address[15];
- OUT out[16];
-
- PARTS:
- // Put your code here:
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+/**
+ * The complete address space of the Hack computer's memory,
+ * including RAM and memory-mapped I/O.
+ * The chip facilitates read and write operations, as follows:
+ * Read: out(t) = Memory[address(t)](t)
+ * Write: if load(t-1) then Memory[address(t-1)](t) = in(t-1)
+ * In words: the chip always outputs the value stored at the memory
+ * location specified by address. If load=1, the in value is loaded
+ * into the memory location specified by address. This value becomes
+ * available through the out output from the next time step onward.
+ * Address space rules:
+ * Only the upper 16K+8K+1 words of the Memory chip are used.
+ * Access to address>0x6000 is invalid. Access to any address in
+ * the range 0x4000-0x5FFF results in accessing the screen memory
+ * map. Access to address 0x6000 results in accessing the keyboard
+ * memory map. The behavior in these addresses is described in the Screen
+ * and Keyboard chip specifications given in the lectures and the book.
+ */
+CHIP Memory {
+ IN in[16], load, address[15];
+ OUT out[16];
+
+ PARTS:
+ //// Replace this comment with your code.
}
\ No newline at end of file
diff --git a/05/Memory.tst b/5/Memory.tst
similarity index 72%
rename from 05/Memory.tst
rename to 5/Memory.tst
index e88a704..ce6428c 100644
--- a/05/Memory.tst
+++ b/5/Memory.tst
@@ -1,191 +1,190 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/05/Memory.tst
-
-load Memory.hdl,
-output-file Memory.out,
-compare-to Memory.cmp,
-output-list in%D1.6.1 load%B2.1.2 address%B1.15.1 out%D1.6.1;
-
-echo "Before you run this script, select the 'Screen' option from the 'View' menu";
-
-
-// There is an interesting design error that has shown up in several students'
-// Memory.hdl files that causes zeros to be written in the corresponding offset
-// in the inactive memory segments to the actual write. To detect this, the
-// test must not only look for writes into the wrong segment, but changes.
-// The following initialization writes a signal number into the memory where
-// the bad writes may occur.
-
-//// Set RAM[2000], RAM[4000] = 12345 (for following overwrite test)
-set in 12345, set load 1, set address %X2000, tick, output; tock, output;
-set address %X4000, tick, output; tock, output;
-
-
-set in -1, // Set RAM[0] = -1
-set load 1,
-set address 0,
-tick,
-output;
-tock,
-output;
-
-set in 9999, // RAM[0] holds value
-set load 0,
-tick,
-output;
-tock,
-output;
-
-set address %X2000, // Did not also write to upper RAM or Screen
-eval,
-output;
-set address %X4000,
-eval,
-output;
-
-
-//// Set RAM[0], RAM[4000] = 12345 (for following overwrite test)
-set in 12345, set load 1, set address %X0000, tick, output; tock, output;
-set address %X4000, tick, output; tock, output;
-
-
-set in 2222, // Set RAM[2000] = 2222
-set load 1,
-set address %X2000,
-tick,
-output;
-tock,
-output;
-
-set in 9999, // RAM[2000] holds value
-set load 0,
-tick,
-output;
-tock,
-output;
-
-set address 0, // Did not also write to lower RAM or Screen
-eval,
-output;
-set address %X4000,
-eval,
-output;
-
-set load 0, // Low order address bits connected
-set address %X0001, eval, output;
-set address %X0002, eval, output;
-set address %X0004, eval, output;
-set address %X0008, eval, output;
-set address %X0010, eval, output;
-set address %X0020, eval, output;
-set address %X0040, eval, output;
-set address %X0080, eval, output;
-set address %X0100, eval, output;
-set address %X0200, eval, output;
-set address %X0400, eval, output;
-set address %X0800, eval, output;
-set address %X1000, eval, output;
-set address %X2000, eval, output;
-
-set address %X1234, // RAM[1234] = 1234
-set in 1234,
-set load 1,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address %X2234, // Did not also write to upper RAM or Screen
-eval, output;
-set address %X6234,
-eval, output;
-
-set address %X2345, // RAM[2345] = 2345
-set in 2345,
-set load 1,
-tick,
-output;
-tock,
-output;
-
-set load 0,
-set address %X0345, // Did not also write to lower RAM or Screen
-eval, output;
-set address %X4345,
-eval, output;
-
-
-//// Clear the overwrite detection value from the screen
-set in 0, set load 1, set address %X4000, tick, output; tock, output;
-
-
-// Keyboard test
-
-set address 24576,
-echo "Click the Keyboard icon and hold down the 'K' key (uppercase) until you see the next message (it should appear shortly after that) ...",
-// It's important to keep holding the key down since if the system is busy,
-// the memory will zero itself before being outputted.
-
-while out <> 75 {
- tick, tock, // tick, tock prevents hang if sync. parts used in KB path.
-}
-
-clear-echo,
-output;
-
-// Screen test
-
-//// Set RAM[0FCF], RAM[2FCF] = 12345 (for following overwrite test)
-set in 12345, set load 1, set address %X0FCF, tick, output; tock, output;
-set address %X2FCF, tick, output; tock, output;
-
-set load 1,
-set in -1,
-set address %X4FCF,
-tick,
-tock,
-output,
-
-set address %X504F,
-tick,
-tock,
-output;
-
-set address %X0FCF, // Did not also write to lower or upper RAM
-eval,
-output;
-set address %X2FCF,
-eval,
-output;
-
-set load 0, // Low order address bits connected
-set address %X4FCE, eval, output;
-set address %X4FCD, eval, output;
-set address %X4FCB, eval, output;
-set address %X4FC7, eval, output;
-set address %X4FDF, eval, output;
-set address %X4FEF, eval, output;
-set address %X4F8F, eval, output;
-set address %X4F4F, eval, output;
-set address %X4ECF, eval, output;
-set address %X4DCF, eval, output;
-set address %X4BCF, eval, output;
-set address %X47CF, eval, output;
-set address %X5FCF, eval, output;
-
-
-set load 0,
-set address 24576,
-echo "Make sure you see ONLY two horizontal lines in the middle of the screen. Hold down 'Y' (uppercase) until you see the next message ...",
-// It's important to keep holding the key down since if the system is busy,
-// the memory will zero itself before being outputted.
-
-while out <> 89 {
- tick, tock, // tick, tock prevents hang if sync. parts used in KB path.
-}
-
-clear-echo,
-output;
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+// Tests the Memory chip by inputting values to selected addresses,
+// verifying that these addresses were indeed written to, and verifying
+// that other addresses were not accessed by mistake. In particular, we
+// focus on probing the registers in addresses 'lower RAM', 'upper RAM',
+// and 'Screen', which correspond to 0, %X2000, and %X4000 in Hexadecimal
+// (0, 8192 (8K), and 16385 (16K+1) in decimal).
+
+load Memory.hdl,
+output-file Memory.out,
+compare-to Memory.cmp,
+output-list in%D1.6.1 load%B2.1.2 address%B1.15.1 out%D1.6.1;
+
+echo "Before you run this script, select the 'Screen' option from the 'View' menu";
+
+// We've noticed a common design mistake in several students' Memory.hdl files.
+// This error leads to zeros being written in the offset of inactive memory segments
+// instead of the intended location. To identify this issue, the test should check not
+// only for incorrect writes into the wrong segment but also for any unexpected changes.
+// To prepare for this, we've initialized the memory with a specific number in the areas
+// where these erroneous writes might happen.
+
+//// Sets RAM[2000], RAM[4000] = 12345 (for the following overwrite test)
+set in 12345, set load 1, set address %X2000, tick, output; tock, output;
+set address %X4000, tick, output; tock, output;
+
+set in -1, // Sets RAM[0] = -1
+set load 1,
+set address 0,
+tick,
+output;
+tock,
+output;
+
+set in 9999, // RAM[0] holds value
+set load 0,
+tick,
+output;
+tock,
+output;
+
+set address %X2000, // Did not also write to upper RAM or Screen
+eval,
+output;
+set address %X4000,
+eval,
+output;
+
+//// Sets RAM[0], RAM[4000] = 12345 (for following overwrite test)
+set in 12345, set load 1, set address %X0000, tick, output; tock, output;
+set address %X4000, tick, output; tock, output;
+
+set in 2222, // Sets RAM[2000] = 2222
+set load 1,
+set address %X2000,
+tick,
+output;
+tock,
+output;
+
+set in 9999, // RAM[2000] holds value
+set load 0,
+tick,
+output;
+tock,
+output;
+
+set address 0, // Did not also write to lower RAM or Screen
+eval,
+output;
+set address %X4000,
+eval,
+output;
+
+set load 0, // Low order address bits connected
+set address %X0001, eval, output;
+set address %X0002, eval, output;
+set address %X0004, eval, output;
+set address %X0008, eval, output;
+set address %X0010, eval, output;
+set address %X0020, eval, output;
+set address %X0040, eval, output;
+set address %X0080, eval, output;
+set address %X0100, eval, output;
+set address %X0200, eval, output;
+set address %X0400, eval, output;
+set address %X0800, eval, output;
+set address %X1000, eval, output;
+set address %X2000, eval, output;
+
+set address %X1234, // RAM[1234] = 1234
+set in 1234,
+set load 1,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address %X2234, // Did not also write to upper RAM or Screen
+eval, output;
+set address %X6234,
+eval, output;
+
+set address %X2345, // RAM[2345] = 2345
+set in 2345,
+set load 1,
+tick,
+output;
+tock,
+output;
+
+set load 0,
+set address %X0345, // Did not also write to lower RAM or Screen
+eval, output;
+set address %X4345,
+eval, output;
+
+//// Clears the overwrite detection value from the screen
+set in 0, set load 1, set address %X4000, tick, output; tock, output;
+
+// Keyboard test
+
+set address 24576,
+echo "Click the Keyboard icon and hold down the 'K' key (uppercase) until you see the next message...",
+// It's important to keep holding the key down since if the system is busy,
+// the memory will zero itself before being outputted.
+
+while out <> 75 {
+ tick, tock, // tick, tock prevents hang if sync. parts used in KB path.
+}
+
+clear-echo,
+output;
+
+// Screen test
+
+//// Sets RAM[0FCF], RAM[2FCF] = 12345 (for following overwrite test)
+set in 12345, set load 1, set address %X0FCF, tick, output; tock, output;
+set address %X2FCF, tick, output; tock, output;
+
+set load 1,
+set in -1,
+set address %X4FCF,
+tick,
+tock,
+output,
+
+set address %X504F,
+tick,
+tock,
+output;
+
+set address %X0FCF, // Did not also write to lower or upper RAM
+eval,
+output;
+set address %X2FCF,
+eval,
+output;
+
+set load 0, // Low order address bits connected
+set address %X4FCE, eval, output;
+set address %X4FCD, eval, output;
+set address %X4FCB, eval, output;
+set address %X4FC7, eval, output;
+set address %X4FDF, eval, output;
+set address %X4FEF, eval, output;
+set address %X4F8F, eval, output;
+set address %X4F4F, eval, output;
+set address %X4ECF, eval, output;
+set address %X4DCF, eval, output;
+set address %X4BCF, eval, output;
+set address %X47CF, eval, output;
+set address %X5FCF, eval, output;
+
+set load 0,
+set address 24576,
+echo "Two horizontal lines should be in the middle of the screen. Hold down 'Y' (uppercase) until you see the next message ...",
+// It's important to keep holding the key down since if the system is busy,
+// the memory will zero itself before being outputted.
+
+while out <> 89 {
+ tick, tock, // tick, tock prevents hang if sync. parts used in KB path.
+}
+
+clear-echo,
+output;
diff --git a/05/Rect.hack b/5/Rect.hack
similarity index 94%
rename from 05/Rect.hack
rename to 5/Rect.hack
index ee017ab..f33a9d1 100644
--- a/05/Rect.hack
+++ b/5/Rect.hack
@@ -1,25 +1,25 @@
-0000000000000000
-1111110000010000
-0000000000010111
-1110001100000110
-0000000000010000
-1110001100001000
-0100000000000000
-1110110000010000
-0000000000010001
-1110001100001000
-0000000000010001
-1111110000100000
-1110111010001000
-0000000000010001
-1111110000010000
-0000000000100000
-1110000010010000
-0000000000010001
-1110001100001000
-0000000000010000
-1111110010011000
-0000000000001010
-1110001100000001
-0000000000010111
-1110101010000111
+0000000000000000
+1111110000010000
+0000000000010111
+1110001100000110
+0000000000010000
+1110001100001000
+0100000000000000
+1110110000010000
+0000000000010001
+1110001100001000
+0000000000010001
+1111110000100000
+1110111010001000
+0000000000010001
+1111110000010000
+0000000000100000
+1110000010010000
+0000000000010001
+1110001100001000
+0000000000010000
+1111110010011000
+0000000000001010
+1110001100000001
+0000000000010111
+1110101010000111
diff --git a/06/add/Add.asm b/6/add/Add.asm
similarity index 80%
rename from 06/add/Add.asm
rename to 6/add/Add.asm
index 3d4ec46..91428d8 100644
--- a/06/add/Add.asm
+++ b/6/add/Add.asm
@@ -1,13 +1,12 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/06/add/Add.asm
-
-// Computes R0 = 2 + 3 (R0 refers to RAM[0])
-
-@2
-D=A
-@3
-D=D+A
-@0
-M=D
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+// Computes R0 = 2 + 3 (R0 refers to RAM[0])
+
+@2
+D=A
+@3
+D=D+A
+@0
+M=D
diff --git a/6/max/Max.asm b/6/max/Max.asm
new file mode 100644
index 0000000..f520e31
--- /dev/null
+++ b/6/max/Max.asm
@@ -0,0 +1,29 @@
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+// Computes R2 = max(R0, R1) (R0,R1,R2 refer to RAM[0],RAM[1],RAM[2])
+// Usage: Before executing, put two values in R0 and R1.
+
+ // D = R0 - R1
+ @R0
+ D=M
+ @R1
+ D=D-M
+ // If (D > 0) goto ITSR0
+ @ITSR0
+ D;JGT
+ // Its R1
+ @R1
+ D=M
+ @OUTPUT_D
+ 0;JMP
+(ITSR0)
+ @R0
+ D=M
+(OUTPUT_D)
+ @R2
+ M=D
+(END)
+ @END
+ 0;JMP
diff --git a/06/max/MaxL.asm b/6/max/MaxL.asm
similarity index 80%
rename from 06/max/MaxL.asm
rename to 6/max/MaxL.asm
index fc3ccbf..c6b1d1e 100644
--- a/06/max/MaxL.asm
+++ b/6/max/MaxL.asm
@@ -1,23 +1,23 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/06/max/MaxL.asm
-
-// Symbol-less version of the Max.asm program.
-
-@0
-D=M
-@1
-D=D-M
-@10
-D;JGT
-@1
-D=M
-@12
-0;JMP
-@0
-D=M
-@2
-M=D
-@14
-0;JMP
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+// Symbol-less version of the Max.asm program.
+// Designed for testing the basic version of the assembler.
+
+@0
+D=M
+@1
+D=D-M
+@10
+D;JGT
+@1
+D=M
+@12
+0;JMP
+@0
+D=M
+@2
+M=D
+@14
+0;JMP
diff --git a/06/pong/Pong.asm b/6/pong/Pong.asm
similarity index 85%
rename from 06/pong/Pong.asm
rename to 6/pong/Pong.asm
index 79691f0..bae9eda 100644
--- a/06/pong/Pong.asm
+++ b/6/pong/Pong.asm
@@ -1,28375 +1,28377 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/06/pong/Pong.asm
-
-// The Pong game program was originally written in the high-level Jack language.
-// The Jack code was then translated by the Jack compiler into VM code.
-// The VM code was then translated by the VM translator into the Hack
-// assembly code shown here.
-
-@256
-D=A
-@SP
-M=D
-@133
-0;JMP
-@R15
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-D=M-D
-M=0
-@END_EQ
-D;JNE
-@SP
-A=M-1
-M=-1
-(END_EQ)
-@R15
-A=M
-0;JMP
-@R15
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-D=M-D
-M=0
-@END_GT
-D;JLE
-@SP
-A=M-1
-M=-1
-(END_GT)
-@R15
-A=M
-0;JMP
-@R15
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-D=M-D
-M=0
-@END_LT
-D;JGE
-@SP
-A=M-1
-M=-1
-(END_LT)
-@R15
-A=M
-0;JMP
-@5
-D=A
-@LCL
-A=M-D
-D=M
-@R13
-M=D
-@SP
-AM=M-1
-D=M
-@ARG
-A=M
-M=D
-D=A
-@SP
-M=D+1
-@LCL
-D=M
-@R14
-AM=D-1
-D=M
-@THAT
-M=D
-@R14
-AM=M-1
-D=M
-@THIS
-M=D
-@R14
-AM=M-1
-D=M
-@ARG
-M=D
-@R14
-AM=M-1
-D=M
-@LCL
-M=D
-@R13
-A=M
-0;JMP
-@SP
-A=M
-M=D
-@LCL
-D=M
-@SP
-AM=M+1
-M=D
-@ARG
-D=M
-@SP
-AM=M+1
-M=D
-@THIS
-D=M
-@SP
-AM=M+1
-M=D
-@THAT
-D=M
-@SP
-AM=M+1
-M=D
-@4
-D=A
-@R13
-D=D+M
-@SP
-D=M-D
-@ARG
-M=D
-@SP
-MD=M+1
-@LCL
-M=D
-@R14
-A=M
-0;JMP
-@0
-D=A
-@R13
-M=D
-@sys.init
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL0
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL0)
-(ball.new)
-@15
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@memory.alloc
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL1
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL1)
-@SP
-AM=M-1
-D=M
-@THIS
-M=D
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THIS
-A=M
-M=D
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THIS
-A=M+1
-M=D
-@ARG
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@THIS
-D=M
-@10
-D=D+A
-@R13
-M=D
-@SP
-AM=M-1
-D=M
-@R13
-A=M
-M=D
-@ARG
-D=M
-@3
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@THIS
-D=M
-@11
-D=D+A
-@R13
-M=D
-@SP
-AM=M-1
-D=M
-@R13
-A=M
-M=D
-@ARG
-D=M
-@4
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@THIS
-D=M
-@12
-D=D+A
-@R13
-M=D
-@SP
-AM=M-1
-D=M
-@R13
-A=M
-M=D
-@ARG
-D=M
-@5
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@THIS
-D=M
-@13
-D=D+A
-@R13
-M=D
-@SP
-AM=M-1
-D=M
-@R13
-A=M
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@THIS
-D=M
-@14
-D=D+A
-@R13
-M=D
-@SP
-AM=M-1
-D=M
-@R13
-A=M
-M=D
-@THIS
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@ball.show
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL2
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL2)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@THIS
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@54
-0;JMP
-(ball.dispose)
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THIS
-M=D
-@THIS
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@memory.dealloc
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL3
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL3)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-(ball.show)
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THIS
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-A=M-1
-M=!M
-@1
-D=A
-@R13
-M=D
-@screen.setcolor
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL4
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL4)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@THIS
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@ball.draw
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL5
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL5)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-(ball.hide)
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THIS
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@1
-D=A
-@R13
-M=D
-@screen.setcolor
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL6
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL6)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@THIS
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@ball.draw
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL7
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL7)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-(ball.draw)
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THIS
-M=D
-@THIS
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@THIS
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@THIS
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@5
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@THIS
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@5
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@4
-D=A
-@R13
-M=D
-@screen.drawrectangle
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL8
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL8)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-(ball.getleft)
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THIS
-M=D
-@THIS
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@54
-0;JMP
-(ball.getright)
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THIS
-M=D
-@THIS
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@5
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@54
-0;JMP
-(ball.setdestination)
-@3
-D=A
-(LOOP_ball.setdestination)
-D=D-1
-@SP
-AM=M+1
-A=A-1
-M=0
-@LOOP_ball.setdestination
-D;JGT
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THIS
-M=D
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@THIS
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@SP
-AM=M-1
-D=M
-@THIS
-A=M+1
-A=A+1
-M=D
-@ARG
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@THIS
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@SP
-AM=M-1
-D=M
-@THIS
-A=M+1
-A=A+1
-A=A+1
-M=D
-@THIS
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@math.abs
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL9
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL9)
-@SP
-AM=M-1
-D=M
-@LCL
-A=M
-M=D
-@THIS
-D=M
-@3
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@math.abs
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL10
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL10)
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-M=D
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_LT0
-D=A
-@38
-0;JMP
-(RET_ADDRESS_LT0)
-@THIS
-D=M
-@7
-D=D+A
-@R13
-M=D
-@SP
-AM=M-1
-D=M
-@R13
-A=M
-M=D
-@THIS
-D=M
-@7
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@ball.setdestination$if_true0
-D;JNE
-@ball.setdestination$if_false0
-0;JMP
-(ball.setdestination$if_true0)
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-A=A+1
-M=D
-@LCL
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@LCL
-A=M
-M=D
-@LCL
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-M=D
-@THIS
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@ARG
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_LT1
-D=A
-@38
-0;JMP
-(RET_ADDRESS_LT1)
-@THIS
-D=M
-@8
-D=D+A
-@R13
-M=D
-@SP
-AM=M-1
-D=M
-@R13
-A=M
-M=D
-@THIS
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_LT2
-D=A
-@38
-0;JMP
-(RET_ADDRESS_LT2)
-@THIS
-D=M
-@9
-D=D+A
-@R13
-M=D
-@SP
-AM=M-1
-D=M
-@R13
-A=M
-M=D
-@ball.setdestination$if_end0
-0;JMP
-(ball.setdestination$if_false0)
-@THIS
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_LT3
-D=A
-@38
-0;JMP
-(RET_ADDRESS_LT3)
-@THIS
-D=M
-@8
-D=D+A
-@R13
-M=D
-@SP
-AM=M-1
-D=M
-@R13
-A=M
-M=D
-@THIS
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@ARG
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_LT4
-D=A
-@38
-0;JMP
-(RET_ADDRESS_LT4)
-@THIS
-D=M
-@9
-D=D+A
-@R13
-M=D
-@SP
-AM=M-1
-D=M
-@R13
-A=M
-M=D
-(ball.setdestination$if_end0)
-@2
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@math.multiply
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL11
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL11)
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@SP
-AM=M-1
-D=M
-@THIS
-A=M+1
-A=A+1
-A=A+1
-A=A+1
-M=D
-@2
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@math.multiply
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL12
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL12)
-@SP
-AM=M-1
-D=M
-@THIS
-A=M+1
-A=A+1
-A=A+1
-A=A+1
-A=A+1
-M=D
-@2
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@2
-D=A
-@R13
-M=D
-@math.multiply
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL13
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL13)
-@SP
-AM=M-1
-D=M
-@THIS
-A=M+1
-A=A+1
-A=A+1
-A=A+1
-A=A+1
-A=A+1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-(ball.move)
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THIS
-M=D
-@THIS
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@ball.hide
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL14
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL14)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@THIS
-D=M
-@4
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@RET_ADDRESS_LT5
-D=A
-@38
-0;JMP
-(RET_ADDRESS_LT5)
-@SP
-AM=M-1
-D=M
-@ball.move$if_true0
-D;JNE
-@ball.move$if_false0
-0;JMP
-(ball.move$if_true0)
-@THIS
-D=M
-@4
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@THIS
-D=M
-@5
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@THIS
-A=M+1
-A=A+1
-A=A+1
-A=A+1
-M=D
-@ball.move$if_end0
-0;JMP
-(ball.move$if_false0)
-@THIS
-D=M
-@4
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@THIS
-D=M
-@6
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@THIS
-A=M+1
-A=A+1
-A=A+1
-A=A+1
-M=D
-@THIS
-D=M
-@9
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@ball.move$if_true1
-D;JNE
-@ball.move$if_false1
-0;JMP
-(ball.move$if_true1)
-@THIS
-D=M
-@7
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@ball.move$if_true2
-D;JNE
-@ball.move$if_false2
-0;JMP
-(ball.move$if_true2)
-@THIS
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@4
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@THIS
-A=M
-M=D
-@ball.move$if_end2
-0;JMP
-(ball.move$if_false2)
-@THIS
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@4
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@THIS
-A=M+1
-M=D
-(ball.move$if_end2)
-@ball.move$if_end1
-0;JMP
-(ball.move$if_false1)
-@THIS
-D=M
-@7
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@ball.move$if_true3
-D;JNE
-@ball.move$if_false3
-0;JMP
-(ball.move$if_true3)
-@THIS
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@4
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@SP
-AM=M-1
-D=M
-@THIS
-A=M
-M=D
-@ball.move$if_end3
-0;JMP
-(ball.move$if_false3)
-@THIS
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@4
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@SP
-AM=M-1
-D=M
-@THIS
-A=M+1
-M=D
-(ball.move$if_end3)
-(ball.move$if_end1)
-(ball.move$if_end0)
-@THIS
-D=M
-@8
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@ball.move$if_true4
-D;JNE
-@ball.move$if_false4
-0;JMP
-(ball.move$if_true4)
-@THIS
-D=M
-@7
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@ball.move$if_true5
-D;JNE
-@ball.move$if_false5
-0;JMP
-(ball.move$if_true5)
-@THIS
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@4
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@THIS
-A=M+1
-M=D
-@ball.move$if_end5
-0;JMP
-(ball.move$if_false5)
-@THIS
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@4
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@THIS
-A=M
-M=D
-(ball.move$if_end5)
-@ball.move$if_end4
-0;JMP
-(ball.move$if_false4)
-@THIS
-D=M
-@7
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@ball.move$if_true6
-D;JNE
-@ball.move$if_false6
-0;JMP
-(ball.move$if_true6)
-@THIS
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@4
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@SP
-AM=M-1
-D=M
-@THIS
-A=M+1
-M=D
-@ball.move$if_end6
-0;JMP
-(ball.move$if_false6)
-@THIS
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@4
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@SP
-AM=M-1
-D=M
-@THIS
-A=M
-M=D
-(ball.move$if_end6)
-(ball.move$if_end4)
-@THIS
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@THIS
-D=M
-@10
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_GT0
-D=A
-@22
-0;JMP
-(RET_ADDRESS_GT0)
-@SP
-A=M-1
-M=!M
-@SP
-AM=M-1
-D=M
-@ball.move$if_true7
-D;JNE
-@ball.move$if_false7
-0;JMP
-(ball.move$if_true7)
-@SP
-M=M+1
-A=M-1
-M=1
-@THIS
-D=M
-@14
-D=D+A
-@R13
-M=D
-@SP
-AM=M-1
-D=M
-@R13
-A=M
-M=D
-@THIS
-D=M
-@10
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THIS
-A=M
-M=D
-(ball.move$if_false7)
-@THIS
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@THIS
-D=M
-@11
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_LT6
-D=A
-@38
-0;JMP
-(RET_ADDRESS_LT6)
-@SP
-A=M-1
-M=!M
-@SP
-AM=M-1
-D=M
-@ball.move$if_true8
-D;JNE
-@ball.move$if_false8
-0;JMP
-(ball.move$if_true8)
-@2
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@THIS
-D=M
-@14
-D=D+A
-@R13
-M=D
-@SP
-AM=M-1
-D=M
-@R13
-A=M
-M=D
-@THIS
-D=M
-@11
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THIS
-A=M
-M=D
-(ball.move$if_false8)
-@THIS
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@THIS
-D=M
-@12
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_GT1
-D=A
-@22
-0;JMP
-(RET_ADDRESS_GT1)
-@SP
-A=M-1
-M=!M
-@SP
-AM=M-1
-D=M
-@ball.move$if_true9
-D;JNE
-@ball.move$if_false9
-0;JMP
-(ball.move$if_true9)
-@3
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@THIS
-D=M
-@14
-D=D+A
-@R13
-M=D
-@SP
-AM=M-1
-D=M
-@R13
-A=M
-M=D
-@THIS
-D=M
-@12
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THIS
-A=M+1
-M=D
-(ball.move$if_false9)
-@THIS
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@THIS
-D=M
-@13
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_LT7
-D=A
-@38
-0;JMP
-(RET_ADDRESS_LT7)
-@SP
-A=M-1
-M=!M
-@SP
-AM=M-1
-D=M
-@ball.move$if_true10
-D;JNE
-@ball.move$if_false10
-0;JMP
-(ball.move$if_true10)
-@4
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@THIS
-D=M
-@14
-D=D+A
-@R13
-M=D
-@SP
-AM=M-1
-D=M
-@R13
-A=M
-M=D
-@THIS
-D=M
-@13
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THIS
-A=M+1
-M=D
-(ball.move$if_false10)
-@THIS
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@ball.show
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL15
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL15)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@THIS
-D=M
-@14
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@54
-0;JMP
-(ball.bounce)
-@5
-D=A
-(LOOP_ball.bounce)
-D=D-1
-@SP
-AM=M+1
-A=A-1
-M=0
-@LOOP_ball.bounce
-D;JGT
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THIS
-M=D
-@THIS
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@10
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@math.divide
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL16
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL16)
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-A=A+1
-M=D
-@THIS
-D=M
-@3
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@10
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@math.divide
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL17
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL17)
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-A=A+1
-A=A+1
-M=D
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@RET_ADDRESS_EQ0
-D=A
-@6
-0;JMP
-(RET_ADDRESS_EQ0)
-@SP
-AM=M-1
-D=M
-@ball.bounce$if_true0
-D;JNE
-@ball.bounce$if_false0
-0;JMP
-(ball.bounce$if_true0)
-@10
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-A=A+1
-A=A+1
-A=A+1
-M=D
-@ball.bounce$if_end0
-0;JMP
-(ball.bounce$if_false0)
-@THIS
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@RET_ADDRESS_LT8
-D=A
-@38
-0;JMP
-(RET_ADDRESS_LT8)
-@SP
-A=M-1
-M=!M
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=1
-@RET_ADDRESS_EQ1
-D=A
-@6
-0;JMP
-(RET_ADDRESS_EQ1)
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D&M
-@THIS
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@RET_ADDRESS_LT9
-D=A
-@38
-0;JMP
-(RET_ADDRESS_LT9)
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D|M
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=1
-@SP
-A=M-1
-D=!M
-M=D+1
-@RET_ADDRESS_EQ2
-D=A
-@6
-0;JMP
-(RET_ADDRESS_EQ2)
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D&M
-@SP
-AM=M-1
-D=M
-@ball.bounce$if_true1
-D;JNE
-@ball.bounce$if_false1
-0;JMP
-(ball.bounce$if_true1)
-@20
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-A=A+1
-A=A+1
-A=A+1
-M=D
-@ball.bounce$if_end1
-0;JMP
-(ball.bounce$if_false1)
-@5
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-A=A+1
-A=A+1
-A=A+1
-M=D
-(ball.bounce$if_end1)
-(ball.bounce$if_end0)
-@THIS
-D=M
-@14
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=1
-@RET_ADDRESS_EQ3
-D=A
-@6
-0;JMP
-(RET_ADDRESS_EQ3)
-@SP
-AM=M-1
-D=M
-@ball.bounce$if_true2
-D;JNE
-@ball.bounce$if_false2
-0;JMP
-(ball.bounce$if_true2)
-@506
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@LCL
-A=M
-M=D
-@LCL
-D=M
-@3
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@50
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-A=M-1
-D=!M
-M=D+1
-@2
-D=A
-@R13
-M=D
-@math.multiply
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL18
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL18)
-@LCL
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@math.divide
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL19
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL19)
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-M=D
-@THIS
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-D=M
-@4
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@math.multiply
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL20
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL20)
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-M=D
-@ball.bounce$if_end2
-0;JMP
-(ball.bounce$if_false2)
-@THIS
-D=M
-@14
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_EQ4
-D=A
-@6
-0;JMP
-(RET_ADDRESS_EQ4)
-@SP
-AM=M-1
-D=M
-@ball.bounce$if_true3
-D;JNE
-@ball.bounce$if_false3
-0;JMP
-(ball.bounce$if_true3)
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-AM=M-1
-D=M
-@LCL
-A=M
-M=D
-@LCL
-D=M
-@3
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@50
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@math.multiply
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL21
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL21)
-@LCL
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@math.divide
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL22
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL22)
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-M=D
-@THIS
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-D=M
-@4
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@math.multiply
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL23
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL23)
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-M=D
-@ball.bounce$if_end3
-0;JMP
-(ball.bounce$if_false3)
-@THIS
-D=M
-@14
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_EQ5
-D=A
-@6
-0;JMP
-(RET_ADDRESS_EQ5)
-@SP
-AM=M-1
-D=M
-@ball.bounce$if_true4
-D;JNE
-@ball.bounce$if_false4
-0;JMP
-(ball.bounce$if_true4)
-@250
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-M=D
-@LCL
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@25
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-A=M-1
-D=!M
-M=D+1
-@2
-D=A
-@R13
-M=D
-@math.multiply
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL24
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL24)
-@LCL
-D=M
-@3
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@math.divide
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL25
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL25)
-@SP
-AM=M-1
-D=M
-@LCL
-A=M
-M=D
-@THIS
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-D=M
-@4
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@math.multiply
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL26
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL26)
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@LCL
-A=M
-M=D
-@ball.bounce$if_end4
-0;JMP
-(ball.bounce$if_false4)
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-M=D
-@LCL
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@25
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@math.multiply
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL27
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL27)
-@LCL
-D=M
-@3
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@math.divide
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL28
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL28)
-@SP
-AM=M-1
-D=M
-@LCL
-A=M
-M=D
-@THIS
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-D=M
-@4
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@math.multiply
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL29
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL29)
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@LCL
-A=M
-M=D
-(ball.bounce$if_end4)
-(ball.bounce$if_end3)
-(ball.bounce$if_end2)
-@THIS
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@R13
-M=D
-@ball.setdestination
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL30
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL30)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-(bat.new)
-@5
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@memory.alloc
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL31
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL31)
-@SP
-AM=M-1
-D=M
-@THIS
-M=D
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THIS
-A=M
-M=D
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THIS
-A=M+1
-M=D
-@ARG
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THIS
-A=M+1
-A=A+1
-M=D
-@ARG
-D=M
-@3
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THIS
-A=M+1
-A=A+1
-A=A+1
-M=D
-@2
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THIS
-A=M+1
-A=A+1
-A=A+1
-A=A+1
-M=D
-@THIS
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@bat.show
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL32
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL32)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@THIS
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@54
-0;JMP
-(bat.dispose)
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THIS
-M=D
-@THIS
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@memory.dealloc
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL33
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL33)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-(bat.show)
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THIS
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-A=M-1
-M=!M
-@1
-D=A
-@R13
-M=D
-@screen.setcolor
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL34
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL34)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@THIS
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@bat.draw
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL35
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL35)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-(bat.hide)
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THIS
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@1
-D=A
-@R13
-M=D
-@screen.setcolor
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL36
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL36)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@THIS
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@bat.draw
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL37
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL37)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-(bat.draw)
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THIS
-M=D
-@THIS
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@THIS
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@THIS
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@THIS
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@THIS
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@THIS
-D=M
-@3
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@4
-D=A
-@R13
-M=D
-@screen.drawrectangle
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL38
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL38)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-(bat.setdirection)
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THIS
-M=D
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THIS
-A=M+1
-A=A+1
-A=A+1
-A=A+1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-(bat.getleft)
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THIS
-M=D
-@THIS
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@54
-0;JMP
-(bat.getright)
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THIS
-M=D
-@THIS
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@THIS
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@54
-0;JMP
-(bat.setwidth)
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THIS
-M=D
-@THIS
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@bat.hide
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL39
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL39)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THIS
-A=M+1
-A=A+1
-M=D
-@THIS
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@bat.show
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL40
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL40)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-(bat.move)
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THIS
-M=D
-@THIS
-D=M
-@4
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=1
-@RET_ADDRESS_EQ6
-D=A
-@6
-0;JMP
-(RET_ADDRESS_EQ6)
-@SP
-AM=M-1
-D=M
-@bat.move$if_true0
-D;JNE
-@bat.move$if_false0
-0;JMP
-(bat.move$if_true0)
-@THIS
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@4
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@SP
-AM=M-1
-D=M
-@THIS
-A=M
-M=D
-@THIS
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@RET_ADDRESS_LT10
-D=A
-@38
-0;JMP
-(RET_ADDRESS_LT10)
-@SP
-AM=M-1
-D=M
-@bat.move$if_true1
-D;JNE
-@bat.move$if_false1
-0;JMP
-(bat.move$if_true1)
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-AM=M-1
-D=M
-@THIS
-A=M
-M=D
-(bat.move$if_false1)
-@SP
-M=M+1
-A=M-1
-M=0
-@1
-D=A
-@R13
-M=D
-@screen.setcolor
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL41
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL41)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@THIS
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@THIS
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-M=M+1
-A=M-1
-M=1
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@THIS
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@THIS
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@THIS
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@4
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@THIS
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@THIS
-D=M
-@3
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@4
-D=A
-@R13
-M=D
-@screen.drawrectangle
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL42
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL42)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-A=M-1
-M=!M
-@1
-D=A
-@R13
-M=D
-@screen.setcolor
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL43
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL43)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@THIS
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@THIS
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@THIS
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@THIS
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@THIS
-D=M
-@3
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@4
-D=A
-@R13
-M=D
-@screen.drawrectangle
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL44
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL44)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@bat.move$if_end0
-0;JMP
-(bat.move$if_false0)
-@THIS
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@4
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@THIS
-A=M
-M=D
-@THIS
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@THIS
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@511
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_GT2
-D=A
-@22
-0;JMP
-(RET_ADDRESS_GT2)
-@SP
-AM=M-1
-D=M
-@bat.move$if_true2
-D;JNE
-@bat.move$if_false2
-0;JMP
-(bat.move$if_true2)
-@511
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@THIS
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@SP
-AM=M-1
-D=M
-@THIS
-A=M
-M=D
-(bat.move$if_false2)
-@SP
-M=M+1
-A=M-1
-M=0
-@1
-D=A
-@R13
-M=D
-@screen.setcolor
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL45
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL45)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@THIS
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@4
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@THIS
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@THIS
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=1
-@SP
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@THIS
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@THIS
-D=M
-@3
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@4
-D=A
-@R13
-M=D
-@screen.drawrectangle
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL46
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL46)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-A=M-1
-M=!M
-@1
-D=A
-@R13
-M=D
-@screen.setcolor
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL47
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL47)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@THIS
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@THIS
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@3
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@THIS
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@THIS
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@THIS
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@THIS
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@THIS
-D=M
-@3
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@4
-D=A
-@R13
-M=D
-@screen.drawrectangle
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL48
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL48)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-(bat.move$if_end0)
-@SP
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-(main.main)
-@SP
-AM=M+1
-A=A-1
-M=0
-@0
-D=A
-@R13
-M=D
-@ponggame.newinstance
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL49
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL49)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@0
-D=A
-@R13
-M=D
-@ponggame.getinstance
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL50
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL50)
-@SP
-AM=M-1
-D=M
-@LCL
-A=M
-M=D
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@ponggame.run
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL51
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL51)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@ponggame.dispose
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL52
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL52)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-(ponggame.new)
-@7
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@memory.alloc
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL53
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL53)
-@SP
-AM=M-1
-D=M
-@THIS
-M=D
-@0
-D=A
-@R13
-M=D
-@screen.clearscreen
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL54
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL54)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@50
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THIS
-A=M+1
-A=A+1
-A=A+1
-A=A+1
-A=A+1
-A=A+1
-M=D
-@230
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@229
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@THIS
-D=M
-@6
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@7
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@4
-D=A
-@R13
-M=D
-@bat.new
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL55
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL55)
-@SP
-AM=M-1
-D=M
-@THIS
-A=M
-M=D
-@253
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@222
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@511
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@229
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@R13
-M=D
-@ball.new
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL56
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL56)
-@SP
-AM=M-1
-D=M
-@THIS
-A=M+1
-M=D
-@THIS
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@400
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@3
-D=A
-@R13
-M=D
-@ball.setdestination
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL57
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL57)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@238
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@511
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@240
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@4
-D=A
-@R13
-M=D
-@screen.drawrectangle
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL58
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL58)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@22
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@2
-D=A
-@R13
-M=D
-@output.movecursor
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL59
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL59)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@8
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@string.new
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL60
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL60)
-@83
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@string.appendchar
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL61
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL61)
-@99
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@string.appendchar
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL62
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL62)
-@111
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@string.appendchar
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL63
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL63)
-@114
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@string.appendchar
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL64
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL64)
-@101
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@string.appendchar
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL65
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL65)
-@58
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@string.appendchar
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL66
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL66)
-@32
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@string.appendchar
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL67
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL67)
-@48
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@string.appendchar
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL68
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL68)
-@1
-D=A
-@R13
-M=D
-@output.printstring
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL69
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL69)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-AM=M-1
-D=M
-@THIS
-A=M+1
-A=A+1
-A=A+1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-AM=M-1
-D=M
-@THIS
-A=M+1
-A=A+1
-A=A+1
-A=A+1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-AM=M-1
-D=M
-@THIS
-A=M+1
-A=A+1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-AM=M-1
-D=M
-@THIS
-A=M+1
-A=A+1
-A=A+1
-A=A+1
-A=A+1
-M=D
-@THIS
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@54
-0;JMP
-(ponggame.dispose)
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THIS
-M=D
-@THIS
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@bat.dispose
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL70
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL70)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@THIS
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@ball.dispose
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL71
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL71)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@THIS
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@memory.dealloc
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL72
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL72)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-(ponggame.newinstance)
-@0
-D=A
-@R13
-M=D
-@ponggame.new
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL73
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL73)
-@SP
-AM=M-1
-D=M
-@ponggame.0
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-(ponggame.getinstance)
-@ponggame.0
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@54
-0;JMP
-(ponggame.run)
-@SP
-AM=M+1
-A=A-1
-M=0
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THIS
-M=D
-(ponggame.run$while_exp0)
-@THIS
-D=M
-@3
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-A=M-1
-M=!M
-@SP
-A=M-1
-M=!M
-@SP
-AM=M-1
-D=M
-@ponggame.run$while_end0
-D;JNE
-(ponggame.run$while_exp1)
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@RET_ADDRESS_EQ7
-D=A
-@6
-0;JMP
-(RET_ADDRESS_EQ7)
-@THIS
-D=M
-@3
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-A=M-1
-M=!M
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D&M
-@SP
-A=M-1
-M=!M
-@SP
-AM=M-1
-D=M
-@ponggame.run$while_end1
-D;JNE
-@0
-D=A
-@R13
-M=D
-@keyboard.keypressed
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL74
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL74)
-@SP
-AM=M-1
-D=M
-@LCL
-A=M
-M=D
-@THIS
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@bat.move
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL75
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL75)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@THIS
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@ponggame.moveball
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL76
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL76)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@ponggame.run$while_exp1
-0;JMP
-(ponggame.run$while_end1)
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@130
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_EQ8
-D=A
-@6
-0;JMP
-(RET_ADDRESS_EQ8)
-@SP
-AM=M-1
-D=M
-@ponggame.run$if_true0
-D;JNE
-@ponggame.run$if_false0
-0;JMP
-(ponggame.run$if_true0)
-@THIS
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=1
-@2
-D=A
-@R13
-M=D
-@bat.setdirection
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL77
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL77)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@ponggame.run$if_end0
-0;JMP
-(ponggame.run$if_false0)
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@132
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_EQ9
-D=A
-@6
-0;JMP
-(RET_ADDRESS_EQ9)
-@SP
-AM=M-1
-D=M
-@ponggame.run$if_true1
-D;JNE
-@ponggame.run$if_false1
-0;JMP
-(ponggame.run$if_true1)
-@THIS
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@bat.setdirection
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL78
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL78)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@ponggame.run$if_end1
-0;JMP
-(ponggame.run$if_false1)
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@140
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_EQ10
-D=A
-@6
-0;JMP
-(RET_ADDRESS_EQ10)
-@SP
-AM=M-1
-D=M
-@ponggame.run$if_true2
-D;JNE
-@ponggame.run$if_false2
-0;JMP
-(ponggame.run$if_true2)
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-A=M-1
-M=!M
-@SP
-AM=M-1
-D=M
-@THIS
-A=M+1
-A=A+1
-A=A+1
-M=D
-(ponggame.run$if_false2)
-(ponggame.run$if_end1)
-(ponggame.run$if_end0)
-(ponggame.run$while_exp2)
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@RET_ADDRESS_EQ11
-D=A
-@6
-0;JMP
-(RET_ADDRESS_EQ11)
-@SP
-A=M-1
-M=!M
-@THIS
-D=M
-@3
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-A=M-1
-M=!M
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D&M
-@SP
-A=M-1
-M=!M
-@SP
-AM=M-1
-D=M
-@ponggame.run$while_end2
-D;JNE
-@0
-D=A
-@R13
-M=D
-@keyboard.keypressed
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL79
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL79)
-@SP
-AM=M-1
-D=M
-@LCL
-A=M
-M=D
-@THIS
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@bat.move
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL80
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL80)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@THIS
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@ponggame.moveball
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL81
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL81)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@ponggame.run$while_exp2
-0;JMP
-(ponggame.run$while_end2)
-@ponggame.run$while_exp0
-0;JMP
-(ponggame.run$while_end0)
-@THIS
-D=M
-@3
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@ponggame.run$if_true3
-D;JNE
-@ponggame.run$if_false3
-0;JMP
-(ponggame.run$if_true3)
-@10
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@27
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@output.movecursor
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL82
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL82)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@9
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@string.new
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL83
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL83)
-@71
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@string.appendchar
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL84
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL84)
-@97
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@string.appendchar
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL85
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL85)
-@109
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@string.appendchar
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL86
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL86)
-@101
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@string.appendchar
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL87
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL87)
-@32
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@string.appendchar
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL88
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL88)
-@79
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@string.appendchar
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL89
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL89)
-@118
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@string.appendchar
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL90
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL90)
-@101
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@string.appendchar
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL91
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL91)
-@114
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@string.appendchar
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL92
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL92)
-@1
-D=A
-@R13
-M=D
-@output.printstring
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL93
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL93)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-(ponggame.run$if_false3)
-@SP
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-(ponggame.moveball)
-@5
-D=A
-(LOOP_ponggame.moveball)
-D=D-1
-@SP
-AM=M+1
-A=A-1
-M=0
-@LOOP_ponggame.moveball
-D;JGT
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THIS
-M=D
-@THIS
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@ball.move
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL94
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL94)
-@SP
-AM=M-1
-D=M
-@THIS
-A=M+1
-A=A+1
-M=D
-@THIS
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@RET_ADDRESS_GT3
-D=A
-@22
-0;JMP
-(RET_ADDRESS_GT3)
-@THIS
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@THIS
-D=M
-@5
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_EQ12
-D=A
-@6
-0;JMP
-(RET_ADDRESS_EQ12)
-@SP
-A=M-1
-M=!M
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D&M
-@SP
-AM=M-1
-D=M
-@ponggame.moveball$if_true0
-D;JNE
-@ponggame.moveball$if_false0
-0;JMP
-(ponggame.moveball$if_true0)
-@THIS
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THIS
-A=M+1
-A=A+1
-A=A+1
-A=A+1
-A=A+1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-AM=M-1
-D=M
-@LCL
-A=M
-M=D
-@THIS
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@bat.getleft
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL95
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL95)
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-M=D
-@THIS
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@bat.getright
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL96
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL96)
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-A=A+1
-M=D
-@THIS
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@ball.getleft
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL97
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL97)
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-A=A+1
-A=A+1
-M=D
-@THIS
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@ball.getright
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL98
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL98)
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-A=A+1
-A=A+1
-A=A+1
-M=D
-@THIS
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@4
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_EQ13
-D=A
-@6
-0;JMP
-(RET_ADDRESS_EQ13)
-@SP
-AM=M-1
-D=M
-@ponggame.moveball$if_true1
-D;JNE
-@ponggame.moveball$if_false1
-0;JMP
-(ponggame.moveball$if_true1)
-@LCL
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-D=M
-@4
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_GT4
-D=A
-@22
-0;JMP
-(RET_ADDRESS_GT4)
-@LCL
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-D=M
-@3
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_LT11
-D=A
-@38
-0;JMP
-(RET_ADDRESS_LT11)
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D|M
-@SP
-AM=M-1
-D=M
-@THIS
-A=M+1
-A=A+1
-A=A+1
-M=D
-@THIS
-D=M
-@3
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-A=M-1
-M=!M
-@SP
-AM=M-1
-D=M
-@ponggame.moveball$if_true2
-D;JNE
-@ponggame.moveball$if_false2
-0;JMP
-(ponggame.moveball$if_true2)
-@LCL
-D=M
-@4
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@10
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@RET_ADDRESS_LT12
-D=A
-@38
-0;JMP
-(RET_ADDRESS_LT12)
-@SP
-AM=M-1
-D=M
-@ponggame.moveball$if_true3
-D;JNE
-@ponggame.moveball$if_false3
-0;JMP
-(ponggame.moveball$if_true3)
-@SP
-M=M+1
-A=M-1
-M=1
-@SP
-A=M-1
-D=!M
-M=D+1
-@SP
-AM=M-1
-D=M
-@LCL
-A=M
-M=D
-@ponggame.moveball$if_end3
-0;JMP
-(ponggame.moveball$if_false3)
-@LCL
-D=M
-@3
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@10
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@RET_ADDRESS_GT5
-D=A
-@22
-0;JMP
-(RET_ADDRESS_GT5)
-@SP
-AM=M-1
-D=M
-@ponggame.moveball$if_true4
-D;JNE
-@ponggame.moveball$if_false4
-0;JMP
-(ponggame.moveball$if_true4)
-@SP
-M=M+1
-A=M-1
-M=1
-@SP
-AM=M-1
-D=M
-@LCL
-A=M
-M=D
-(ponggame.moveball$if_false4)
-(ponggame.moveball$if_end3)
-@THIS
-D=M
-@6
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@SP
-AM=M-1
-D=M
-@THIS
-A=M+1
-A=A+1
-A=A+1
-A=A+1
-A=A+1
-A=A+1
-M=D
-@THIS
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@THIS
-D=M
-@6
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@bat.setwidth
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL99
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL99)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@THIS
-D=M
-@4
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=1
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@THIS
-A=M+1
-A=A+1
-A=A+1
-A=A+1
-M=D
-@22
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@7
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@output.movecursor
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL100
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL100)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@THIS
-D=M
-@4
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@output.printint
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL101
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL101)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-(ponggame.moveball$if_false2)
-(ponggame.moveball$if_false1)
-@THIS
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@ball.bounce
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL102
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL102)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-(ponggame.moveball$if_false0)
-@SP
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-(array.new)
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@RET_ADDRESS_GT6
-D=A
-@22
-0;JMP
-(RET_ADDRESS_GT6)
-@SP
-A=M-1
-M=!M
-@SP
-AM=M-1
-D=M
-@array.new$if_true0
-D;JNE
-@array.new$if_false0
-0;JMP
-(array.new$if_true0)
-@2
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@sys.error
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL103
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL103)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-(array.new$if_false0)
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@memory.alloc
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL104
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL104)
-@54
-0;JMP
-(array.dispose)
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THIS
-M=D
-@THIS
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@memory.dealloc
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL105
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL105)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-(keyboard.init)
-@SP
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-(keyboard.keypressed)
-@24576
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@memory.peek
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL106
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL106)
-@54
-0;JMP
-(keyboard.readchar)
-@SP
-A=M
-M=0
-AD=A+1
-M=0
-@SP
-M=D+1
-@SP
-M=M+1
-A=M-1
-M=0
-@1
-D=A
-@R13
-M=D
-@output.printchar
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL107
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL107)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-(keyboard.readchar$while_exp0)
-@LCL
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@RET_ADDRESS_EQ14
-D=A
-@6
-0;JMP
-(RET_ADDRESS_EQ14)
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@RET_ADDRESS_GT7
-D=A
-@22
-0;JMP
-(RET_ADDRESS_GT7)
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D|M
-@SP
-A=M-1
-M=!M
-@SP
-AM=M-1
-D=M
-@keyboard.readchar$while_end0
-D;JNE
-@0
-D=A
-@R13
-M=D
-@keyboard.keypressed
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL108
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL108)
-@SP
-AM=M-1
-D=M
-@LCL
-A=M
-M=D
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@RET_ADDRESS_GT8
-D=A
-@22
-0;JMP
-(RET_ADDRESS_GT8)
-@SP
-AM=M-1
-D=M
-@keyboard.readchar$if_true0
-D;JNE
-@keyboard.readchar$if_false0
-0;JMP
-(keyboard.readchar$if_true0)
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-M=D
-(keyboard.readchar$if_false0)
-@keyboard.readchar$while_exp0
-0;JMP
-(keyboard.readchar$while_end0)
-@0
-D=A
-@R13
-M=D
-@string.backspace
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL109
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL109)
-@1
-D=A
-@R13
-M=D
-@output.printchar
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL110
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL110)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@LCL
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@output.printchar
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL111
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL111)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@LCL
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@54
-0;JMP
-(keyboard.readline)
-@5
-D=A
-(LOOP_keyboard.readline)
-D=D-1
-@SP
-AM=M+1
-A=A-1
-M=0
-@LOOP_keyboard.readline
-D;JGT
-@80
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@string.new
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL112
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL112)
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-A=A+1
-A=A+1
-M=D
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@output.printstring
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL113
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL113)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@0
-D=A
-@R13
-M=D
-@string.newline
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL114
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL114)
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-M=D
-@0
-D=A
-@R13
-M=D
-@string.backspace
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL115
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL115)
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-A=A+1
-M=D
-(keyboard.readline$while_exp0)
-@LCL
-D=M
-@4
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-A=M-1
-M=!M
-@SP
-A=M-1
-M=!M
-@SP
-AM=M-1
-D=M
-@keyboard.readline$while_end0
-D;JNE
-@0
-D=A
-@R13
-M=D
-@keyboard.readchar
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL116
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL116)
-@SP
-AM=M-1
-D=M
-@LCL
-A=M
-M=D
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_EQ15
-D=A
-@6
-0;JMP
-(RET_ADDRESS_EQ15)
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-A=A+1
-A=A+1
-A=A+1
-M=D
-@LCL
-D=M
-@4
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-A=M-1
-M=!M
-@SP
-AM=M-1
-D=M
-@keyboard.readline$if_true0
-D;JNE
-@keyboard.readline$if_false0
-0;JMP
-(keyboard.readline$if_true0)
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_EQ16
-D=A
-@6
-0;JMP
-(RET_ADDRESS_EQ16)
-@SP
-AM=M-1
-D=M
-@keyboard.readline$if_true1
-D;JNE
-@keyboard.readline$if_false1
-0;JMP
-(keyboard.readline$if_true1)
-@LCL
-D=M
-@3
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@string.eraselastchar
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL117
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL117)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@keyboard.readline$if_end1
-0;JMP
-(keyboard.readline$if_false1)
-@LCL
-D=M
-@3
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@string.appendchar
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL118
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL118)
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-A=A+1
-A=A+1
-M=D
-(keyboard.readline$if_end1)
-(keyboard.readline$if_false0)
-@keyboard.readline$while_exp0
-0;JMP
-(keyboard.readline$while_end0)
-@LCL
-D=M
-@3
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@54
-0;JMP
-(keyboard.readint)
-@SP
-A=M
-M=0
-AD=A+1
-M=0
-@SP
-M=D+1
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@keyboard.readline
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL119
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL119)
-@SP
-AM=M-1
-D=M
-@LCL
-A=M
-M=D
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@string.intvalue
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL120
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL120)
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-M=D
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@string.dispose
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL121
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL121)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@LCL
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@54
-0;JMP
-(math.init)
-@SP
-AM=M+1
-A=A-1
-M=0
-@16
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@array.new
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL122
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL122)
-@SP
-AM=M-1
-D=M
-@math.1
-M=D
-@16
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@array.new
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL123
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL123)
-@SP
-AM=M-1
-D=M
-@math.0
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@math.0
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-M=M+1
-A=M-1
-M=1
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@R5
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-A=M
-M=D
-(math.init$while_exp0)
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@15
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_LT13
-D=A
-@38
-0;JMP
-(RET_ADDRESS_LT13)
-@SP
-A=M-1
-M=!M
-@SP
-AM=M-1
-D=M
-@math.init$while_end0
-D;JNE
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=1
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@LCL
-A=M
-M=D
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@math.0
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=1
-@SP
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@math.0
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@THAT
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=1
-@SP
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@math.0
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@THAT
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@R5
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-A=M
-M=D
-@math.init$while_exp0
-0;JMP
-(math.init$while_end0)
-@SP
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-(math.abs)
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@RET_ADDRESS_LT14
-D=A
-@38
-0;JMP
-(RET_ADDRESS_LT14)
-@SP
-AM=M-1
-D=M
-@math.abs$if_true0
-D;JNE
-@math.abs$if_false0
-0;JMP
-(math.abs$if_true0)
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-A=M-1
-D=!M
-M=D+1
-@SP
-AM=M-1
-D=M
-@ARG
-A=M
-M=D
-(math.abs$if_false0)
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@54
-0;JMP
-(math.multiply)
-@5
-D=A
-(LOOP_math.multiply)
-D=D-1
-@SP
-AM=M+1
-A=A-1
-M=0
-@LOOP_math.multiply
-D;JGT
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@RET_ADDRESS_LT15
-D=A
-@38
-0;JMP
-(RET_ADDRESS_LT15)
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@RET_ADDRESS_GT9
-D=A
-@22
-0;JMP
-(RET_ADDRESS_GT9)
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D&M
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@RET_ADDRESS_GT10
-D=A
-@22
-0;JMP
-(RET_ADDRESS_GT10)
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@RET_ADDRESS_LT16
-D=A
-@38
-0;JMP
-(RET_ADDRESS_LT16)
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D&M
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D|M
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-A=A+1
-A=A+1
-A=A+1
-M=D
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@math.abs
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL124
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL124)
-@SP
-AM=M-1
-D=M
-@ARG
-A=M
-M=D
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@math.abs
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL125
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL125)
-@SP
-AM=M-1
-D=M
-@ARG
-A=M+1
-M=D
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_LT17
-D=A
-@38
-0;JMP
-(RET_ADDRESS_LT17)
-@SP
-AM=M-1
-D=M
-@math.multiply$if_true0
-D;JNE
-@math.multiply$if_false0
-0;JMP
-(math.multiply$if_true0)
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-M=D
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@ARG
-A=M
-M=D
-@LCL
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@ARG
-A=M+1
-M=D
-(math.multiply$if_false0)
-(math.multiply$while_exp0)
-@LCL
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_LT18
-D=A
-@38
-0;JMP
-(RET_ADDRESS_LT18)
-@SP
-A=M-1
-M=!M
-@SP
-AM=M-1
-D=M
-@math.multiply$while_end0
-D;JNE
-@LCL
-D=M
-@3
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@math.0
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@THAT
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D&M
-@SP
-M=M+1
-A=M-1
-M=0
-@RET_ADDRESS_GT11
-D=A
-@22
-0;JMP
-(RET_ADDRESS_GT11)
-@SP
-AM=M-1
-D=M
-@math.multiply$if_true1
-D;JNE
-@math.multiply$if_false1
-0;JMP
-(math.multiply$if_true1)
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@LCL
-A=M
-M=D
-@LCL
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-D=M
-@3
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@math.0
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@THAT
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-A=A+1
-M=D
-(math.multiply$if_false1)
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@ARG
-A=M
-M=D
-@LCL
-D=M
-@3
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=1
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-A=A+1
-A=A+1
-M=D
-@math.multiply$while_exp0
-0;JMP
-(math.multiply$while_end0)
-@LCL
-D=M
-@4
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@math.multiply$if_true2
-D;JNE
-@math.multiply$if_false2
-0;JMP
-(math.multiply$if_true2)
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-A=M-1
-D=!M
-M=D+1
-@SP
-AM=M-1
-D=M
-@LCL
-A=M
-M=D
-(math.multiply$if_false2)
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@54
-0;JMP
-(math.divide)
-@4
-D=A
-(LOOP_math.divide)
-D=D-1
-@SP
-AM=M+1
-A=A-1
-M=0
-@LOOP_math.divide
-D;JGT
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@RET_ADDRESS_EQ17
-D=A
-@6
-0;JMP
-(RET_ADDRESS_EQ17)
-@SP
-AM=M-1
-D=M
-@math.divide$if_true0
-D;JNE
-@math.divide$if_false0
-0;JMP
-(math.divide$if_true0)
-@3
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@sys.error
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL126
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL126)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-(math.divide$if_false0)
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@RET_ADDRESS_LT19
-D=A
-@38
-0;JMP
-(RET_ADDRESS_LT19)
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@RET_ADDRESS_GT12
-D=A
-@22
-0;JMP
-(RET_ADDRESS_GT12)
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D&M
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@RET_ADDRESS_GT13
-D=A
-@22
-0;JMP
-(RET_ADDRESS_GT13)
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@RET_ADDRESS_LT20
-D=A
-@38
-0;JMP
-(RET_ADDRESS_LT20)
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D&M
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D|M
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-A=A+1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@math.1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@math.abs
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL127
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL127)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@R5
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-A=M
-M=D
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@math.abs
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL128
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL128)
-@SP
-AM=M-1
-D=M
-@ARG
-A=M
-M=D
-(math.divide$while_exp0)
-@LCL
-D=M
-@3
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-A=M-1
-M=!M
-@SP
-A=M-1
-M=!M
-@SP
-AM=M-1
-D=M
-@math.divide$while_end0
-D;JNE
-@32767
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@math.1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@THAT
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@math.1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@THAT
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_LT21
-D=A
-@38
-0;JMP
-(RET_ADDRESS_LT21)
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-A=A+1
-A=A+1
-M=D
-@LCL
-D=M
-@3
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-A=M-1
-M=!M
-@SP
-AM=M-1
-D=M
-@math.divide$if_true1
-D;JNE
-@math.divide$if_false1
-0;JMP
-(math.divide$if_true1)
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=1
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@math.1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@math.1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@THAT
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@math.1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@THAT
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@R5
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-A=M
-M=D
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=1
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@math.1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@THAT
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_GT14
-D=A
-@22
-0;JMP
-(RET_ADDRESS_GT14)
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-A=A+1
-A=A+1
-M=D
-@LCL
-D=M
-@3
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-A=M-1
-M=!M
-@SP
-AM=M-1
-D=M
-@math.divide$if_true2
-D;JNE
-@math.divide$if_false2
-0;JMP
-(math.divide$if_true2)
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=1
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@LCL
-A=M
-M=D
-(math.divide$if_false2)
-(math.divide$if_false1)
-@math.divide$while_exp0
-0;JMP
-(math.divide$while_end0)
-(math.divide$while_exp1)
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=1
-@SP
-A=M-1
-D=!M
-M=D+1
-@RET_ADDRESS_GT15
-D=A
-@22
-0;JMP
-(RET_ADDRESS_GT15)
-@SP
-A=M-1
-M=!M
-@SP
-AM=M-1
-D=M
-@math.divide$while_end1
-D;JNE
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@math.1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@THAT
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_GT16
-D=A
-@22
-0;JMP
-(RET_ADDRESS_GT16)
-@SP
-A=M-1
-M=!M
-@SP
-AM=M-1
-D=M
-@math.divide$if_true3
-D;JNE
-@math.divide$if_false3
-0;JMP
-(math.divide$if_true3)
-@LCL
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@math.0
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@THAT
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-M=D
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@math.1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@THAT
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@SP
-AM=M-1
-D=M
-@ARG
-A=M
-M=D
-(math.divide$if_false3)
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=1
-@SP
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@SP
-AM=M-1
-D=M
-@LCL
-A=M
-M=D
-@math.divide$while_exp1
-0;JMP
-(math.divide$while_end1)
-@LCL
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@math.divide$if_true4
-D;JNE
-@math.divide$if_false4
-0;JMP
-(math.divide$if_true4)
-@LCL
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-A=M-1
-D=!M
-M=D+1
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-M=D
-(math.divide$if_false4)
-@LCL
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@54
-0;JMP
-(math.sqrt)
-@4
-D=A
-(LOOP_math.sqrt)
-D=D-1
-@SP
-AM=M+1
-A=A-1
-M=0
-@LOOP_math.sqrt
-D;JGT
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@RET_ADDRESS_LT22
-D=A
-@38
-0;JMP
-(RET_ADDRESS_LT22)
-@SP
-AM=M-1
-D=M
-@math.sqrt$if_true0
-D;JNE
-@math.sqrt$if_false0
-0;JMP
-(math.sqrt$if_true0)
-@4
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@sys.error
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL129
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL129)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-(math.sqrt$if_false0)
-@7
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@LCL
-A=M
-M=D
-(math.sqrt$while_exp0)
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=1
-@SP
-A=M-1
-D=!M
-M=D+1
-@RET_ADDRESS_GT17
-D=A
-@22
-0;JMP
-(RET_ADDRESS_GT17)
-@SP
-A=M-1
-M=!M
-@SP
-AM=M-1
-D=M
-@math.sqrt$while_end0
-D;JNE
-@LCL
-D=M
-@3
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@math.0
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@THAT
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-M=D
-@LCL
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@math.multiply
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL130
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL130)
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-A=A+1
-M=D
-@LCL
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_GT18
-D=A
-@22
-0;JMP
-(RET_ADDRESS_GT18)
-@SP
-A=M-1
-M=!M
-@LCL
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@RET_ADDRESS_LT23
-D=A
-@38
-0;JMP
-(RET_ADDRESS_LT23)
-@SP
-A=M-1
-M=!M
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D&M
-@SP
-AM=M-1
-D=M
-@math.sqrt$if_true1
-D;JNE
-@math.sqrt$if_false1
-0;JMP
-(math.sqrt$if_true1)
-@LCL
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-A=A+1
-A=A+1
-M=D
-(math.sqrt$if_false1)
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=1
-@SP
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@SP
-AM=M-1
-D=M
-@LCL
-A=M
-M=D
-@math.sqrt$while_exp0
-0;JMP
-(math.sqrt$while_end0)
-@LCL
-D=M
-@3
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@54
-0;JMP
-(math.max)
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_GT19
-D=A
-@22
-0;JMP
-(RET_ADDRESS_GT19)
-@SP
-AM=M-1
-D=M
-@math.max$if_true0
-D;JNE
-@math.max$if_false0
-0;JMP
-(math.max$if_true0)
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@ARG
-A=M+1
-M=D
-(math.max$if_false0)
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@54
-0;JMP
-(math.min)
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_LT24
-D=A
-@38
-0;JMP
-(RET_ADDRESS_LT24)
-@SP
-AM=M-1
-D=M
-@math.min$if_true0
-D;JNE
-@math.min$if_false0
-0;JMP
-(math.min$if_true0)
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@ARG
-A=M+1
-M=D
-(math.min$if_false0)
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@54
-0;JMP
-(memory.init)
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-AM=M-1
-D=M
-@memory.0
-M=D
-@2048
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@memory.0
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@14334
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@R5
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-A=M
-M=D
-@2049
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@memory.0
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@2050
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@R5
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-A=M
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-(memory.peek)
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@memory.0
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@THAT
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@54
-0;JMP
-(memory.poke)
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@memory.0
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@R5
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-A=M
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-(memory.alloc)
-@SP
-AM=M+1
-A=A-1
-M=0
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=1
-@RET_ADDRESS_LT25
-D=A
-@38
-0;JMP
-(RET_ADDRESS_LT25)
-@SP
-AM=M-1
-D=M
-@memory.alloc$if_true0
-D;JNE
-@memory.alloc$if_false0
-0;JMP
-(memory.alloc$if_true0)
-@5
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@sys.error
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL131
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL131)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-(memory.alloc$if_false0)
-@2048
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@LCL
-A=M
-M=D
-(memory.alloc$while_exp0)
-@SP
-M=M+1
-A=M-1
-M=0
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@THAT
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_LT26
-D=A
-@38
-0;JMP
-(RET_ADDRESS_LT26)
-@SP
-A=M-1
-M=!M
-@SP
-AM=M-1
-D=M
-@memory.alloc$while_end0
-D;JNE
-@SP
-M=M+1
-A=M-1
-M=1
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@THAT
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@LCL
-A=M
-M=D
-@memory.alloc$while_exp0
-0;JMP
-(memory.alloc$while_end0)
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@16379
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_GT20
-D=A
-@22
-0;JMP
-(RET_ADDRESS_GT20)
-@SP
-AM=M-1
-D=M
-@memory.alloc$if_true1
-D;JNE
-@memory.alloc$if_false1
-0;JMP
-(memory.alloc$if_true1)
-@6
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@sys.error
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL132
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL132)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-(memory.alloc$if_false1)
-@SP
-M=M+1
-A=M-1
-M=0
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@THAT
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@RET_ADDRESS_GT21
-D=A
-@22
-0;JMP
-(RET_ADDRESS_GT21)
-@SP
-AM=M-1
-D=M
-@memory.alloc$if_true2
-D;JNE
-@memory.alloc$if_false2
-0;JMP
-(memory.alloc$if_true2)
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-M=M+1
-A=M-1
-M=0
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@THAT
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@2
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@R5
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-A=M
-M=D
-@SP
-M=M+1
-A=M-1
-M=1
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@THAT
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@RET_ADDRESS_EQ18
-D=A
-@6
-0;JMP
-(RET_ADDRESS_EQ18)
-@SP
-AM=M-1
-D=M
-@memory.alloc$if_true3
-D;JNE
-@memory.alloc$if_false3
-0;JMP
-(memory.alloc$if_true3)
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@4
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@R5
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-A=M
-M=D
-@memory.alloc$if_end3
-0;JMP
-(memory.alloc$if_false3)
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-M=M+1
-A=M-1
-M=1
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@THAT
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@R5
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-A=M
-M=D
-(memory.alloc$if_end3)
-@SP
-M=M+1
-A=M-1
-M=1
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@2
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@R5
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-A=M
-M=D
-(memory.alloc$if_false2)
-@SP
-M=M+1
-A=M-1
-M=0
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@R5
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-A=M
-M=D
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@54
-0;JMP
-(memory.dealloc)
-@SP
-A=M
-M=0
-AD=A+1
-M=0
-@SP
-M=D+1
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@SP
-AM=M-1
-D=M
-@LCL
-A=M
-M=D
-@SP
-M=M+1
-A=M-1
-M=1
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@THAT
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@LCL
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@THAT
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@RET_ADDRESS_EQ19
-D=A
-@6
-0;JMP
-(RET_ADDRESS_EQ19)
-@SP
-AM=M-1
-D=M
-@memory.dealloc$if_true0
-D;JNE
-@memory.dealloc$if_false0
-0;JMP
-(memory.dealloc$if_true0)
-@SP
-M=M+1
-A=M-1
-M=0
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-M=M+1
-A=M-1
-M=1
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@THAT
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@2
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@R5
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-A=M
-M=D
-@memory.dealloc$if_end0
-0;JMP
-(memory.dealloc$if_false0)
-@SP
-M=M+1
-A=M-1
-M=0
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-M=M+1
-A=M-1
-M=1
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@THAT
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@SP
-M=M+1
-A=M-1
-M=0
-@LCL
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@THAT
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@R5
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-A=M
-M=D
-@SP
-M=M+1
-A=M-1
-M=1
-@LCL
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@THAT
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@RET_ADDRESS_EQ20
-D=A
-@6
-0;JMP
-(RET_ADDRESS_EQ20)
-@SP
-AM=M-1
-D=M
-@memory.dealloc$if_true1
-D;JNE
-@memory.dealloc$if_false1
-0;JMP
-(memory.dealloc$if_true1)
-@SP
-M=M+1
-A=M-1
-M=1
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@R5
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-A=M
-M=D
-@memory.dealloc$if_end1
-0;JMP
-(memory.dealloc$if_false1)
-@SP
-M=M+1
-A=M-1
-M=1
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-M=M+1
-A=M-1
-M=1
-@LCL
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@THAT
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@R5
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-A=M
-M=D
-(memory.dealloc$if_end1)
-(memory.dealloc$if_end0)
-@SP
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-(output.init)
-@16384
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@output.4
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-A=M-1
-M=!M
-@SP
-AM=M-1
-D=M
-@output.2
-M=D
-@32
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@output.1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-AM=M-1
-D=M
-@output.0
-M=D
-@6
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@string.new
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL133
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL133)
-@SP
-AM=M-1
-D=M
-@output.3
-M=D
-@0
-D=A
-@R13
-M=D
-@output.initmap
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL134
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL134)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@0
-D=A
-@R13
-M=D
-@output.createshiftedmap
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL135
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL135)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-(output.initmap)
-@127
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@array.new
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL136
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL136)
-@SP
-AM=M-1
-D=M
-@output.5
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@63
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL137
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL137)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@32
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL138
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL138)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@33
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL139
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL139)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@34
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@54
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@54
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@20
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL140
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL140)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@35
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@18
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@18
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@18
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@18
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@18
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@18
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL141
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL141)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@36
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@48
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL142
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL142)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@37
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@35
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@24
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@49
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL143
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL143)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@38
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@54
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@27
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@27
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@27
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@54
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL144
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL144)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@39
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL145
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL145)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@40
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@24
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@24
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL146
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL146)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@41
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@24
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@24
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@24
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@24
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@24
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL147
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL147)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@42
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL148
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL148)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@43
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL149
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL149)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@44
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL150
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL150)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@45
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@63
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL151
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL151)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@46
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL152
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL152)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@47
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@32
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@48
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@24
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=1
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL153
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL153)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@48
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL154
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL154)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@49
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@14
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@15
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL155
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL155)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@50
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@48
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@24
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL156
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL156)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@48
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@48
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@28
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@48
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@48
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL157
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL157)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@52
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@16
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@24
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@28
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@26
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@25
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@24
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@24
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@60
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL158
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL158)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@53
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@31
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@48
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@48
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@48
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL159
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL159)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@54
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@28
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@31
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL160
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL160)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@55
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@49
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@48
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@48
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@24
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL161
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL161)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@56
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL162
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL162)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@57
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@62
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@48
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@48
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@24
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@14
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL163
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL163)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@58
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL164
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL164)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@59
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL165
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL165)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@60
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@24
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@24
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL166
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL166)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@61
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@63
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@63
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL167
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL167)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@62
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@3
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@24
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL168
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL168)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@64
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@59
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@59
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@59
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@27
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL169
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL169)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@63
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@24
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL170
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL170)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@65
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL171
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL171)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@66
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@31
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@31
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@31
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL172
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL172)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@67
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@28
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@54
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@35
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@35
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@54
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@28
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL173
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL173)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@68
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@15
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@27
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@27
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@15
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL174
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL174)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@69
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@35
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@11
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@15
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@11
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@35
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL175
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL175)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@70
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@35
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@11
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@15
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@11
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL176
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL176)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@71
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@28
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@54
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@35
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@59
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@54
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@44
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL177
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL177)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@72
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL178
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL178)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@73
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL179
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL179)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@74
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@60
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@24
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@24
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@24
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@24
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@24
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@27
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@27
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@14
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL180
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL180)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@75
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@27
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@15
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@27
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL181
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL181)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@76
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@35
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL182
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL182)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@77
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@33
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL183
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL183)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@78
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@55
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@55
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@59
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@59
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL184
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL184)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@79
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL185
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL185)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@80
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@31
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@31
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL186
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL186)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@81
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@59
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@48
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL187
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL187)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@82
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@31
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@31
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@27
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL188
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL188)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@83
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@28
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@48
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL189
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL189)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@84
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@45
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL190
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL190)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@85
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL191
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL191)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@86
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL192
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL192)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@87
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@18
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL193
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL193)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@88
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL194
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL194)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@89
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL195
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL195)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@90
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@49
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@24
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@35
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL196
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL196)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@91
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL197
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL197)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@92
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=1
-@3
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@24
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@48
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@32
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL198
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL198)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@93
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@24
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@24
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@24
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@24
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@24
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@24
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@24
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL199
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL199)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@94
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@8
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@28
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@54
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL200
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL200)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@95
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@63
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL201
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL201)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@96
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@24
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL202
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL202)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@97
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@14
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@24
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@27
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@27
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@54
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL203
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL203)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@98
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@15
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@27
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL204
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL204)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@99
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@30
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL205
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL205)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@100
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@48
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@48
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@48
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@60
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@54
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL206
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL206)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@101
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@30
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL207
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL207)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@102
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@28
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@54
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@38
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@15
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@15
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL208
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL208)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@103
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@30
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@62
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@48
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL209
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL209)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@104
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@27
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@55
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL210
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL210)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@105
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@14
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL211
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL211)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@106
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@48
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@48
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@56
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@48
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@48
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@48
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@48
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL212
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL212)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@107
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@27
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@15
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@15
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@27
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL213
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL213)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@108
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@14
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL214
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL214)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@109
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@29
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@43
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@43
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@43
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@43
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL215
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL215)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@110
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@29
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL216
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL216)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@111
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@30
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL217
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL217)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@112
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@30
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@31
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL218
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL218)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@113
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@30
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@62
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@48
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@48
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL219
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL219)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@114
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@29
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@55
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@7
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL220
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL220)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@115
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@30
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@24
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL221
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL221)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@116
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@4
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@15
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@54
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@28
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL222
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL222)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@117
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@27
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@27
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@27
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@27
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@27
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@54
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL223
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL223)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@118
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL224
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL224)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@119
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@18
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL225
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL225)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@120
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL226
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL226)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@121
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@62
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@48
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@24
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@15
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL227
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL227)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@122
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@63
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@27
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL228
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL228)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@123
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@56
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@7
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@56
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL229
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL229)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@124
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL230
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL230)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@125
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@7
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@56
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@7
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL231
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL231)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@126
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@38
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@45
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@25
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@R13
-M=D
-@output.create
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL232
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL232)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-(output.create)
-@SP
-AM=M+1
-A=A-1
-M=0
-@11
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@array.new
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL233
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL233)
-@SP
-AM=M-1
-D=M
-@LCL
-A=M
-M=D
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@output.5
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@R5
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-A=M
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@R5
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-A=M
-M=D
-@SP
-M=M+1
-A=M-1
-M=1
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@ARG
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@R5
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-A=M
-M=D
-@2
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@ARG
-D=M
-@3
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@R5
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-A=M
-M=D
-@3
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@ARG
-D=M
-@4
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@R5
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-A=M
-M=D
-@4
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@ARG
-D=M
-@5
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@R5
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-A=M
-M=D
-@5
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@ARG
-D=M
-@6
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@R5
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-A=M
-M=D
-@6
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@ARG
-D=M
-@7
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@R5
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-A=M
-M=D
-@7
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@ARG
-D=M
-@8
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@R5
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-A=M
-M=D
-@8
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@ARG
-D=M
-@9
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@R5
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-A=M
-M=D
-@9
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@ARG
-D=M
-@10
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@R5
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-A=M
-M=D
-@10
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@ARG
-D=M
-@11
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@R5
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-A=M
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-(output.createshiftedmap)
-@4
-D=A
-(LOOP_output.createshiftedmap)
-D=D-1
-@SP
-AM=M+1
-A=A-1
-M=0
-@LOOP_output.createshiftedmap
-D;JGT
-@127
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@array.new
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL234
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL234)
-@SP
-AM=M-1
-D=M
-@output.6
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-A=A+1
-M=D
-(output.createshiftedmap$while_exp0)
-@LCL
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@127
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_LT27
-D=A
-@38
-0;JMP
-(RET_ADDRESS_LT27)
-@SP
-A=M-1
-M=!M
-@SP
-AM=M-1
-D=M
-@output.createshiftedmap$while_end0
-D;JNE
-@LCL
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@output.5
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@THAT
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@LCL
-A=M
-M=D
-@11
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@array.new
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL235
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL235)
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-M=D
-@LCL
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@output.6
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@LCL
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@R5
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-A=M
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-A=A+1
-A=A+1
-M=D
-(output.createshiftedmap$while_exp1)
-@LCL
-D=M
-@3
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@11
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_LT28
-D=A
-@38
-0;JMP
-(RET_ADDRESS_LT28)
-@SP
-A=M-1
-M=!M
-@SP
-AM=M-1
-D=M
-@output.createshiftedmap$while_end1
-D;JNE
-@LCL
-D=M
-@3
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@LCL
-D=M
-@3
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@THAT
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@256
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@math.multiply
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL236
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL236)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@R5
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-A=M
-M=D
-@LCL
-D=M
-@3
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=1
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-A=A+1
-A=A+1
-M=D
-@output.createshiftedmap$while_exp1
-0;JMP
-(output.createshiftedmap$while_end1)
-@LCL
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@RET_ADDRESS_EQ21
-D=A
-@6
-0;JMP
-(RET_ADDRESS_EQ21)
-@SP
-AM=M-1
-D=M
-@output.createshiftedmap$if_true0
-D;JNE
-@output.createshiftedmap$if_false0
-0;JMP
-(output.createshiftedmap$if_true0)
-@32
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-A=A+1
-M=D
-@output.createshiftedmap$if_end0
-0;JMP
-(output.createshiftedmap$if_false0)
-@LCL
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=1
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-A=A+1
-M=D
-(output.createshiftedmap$if_end0)
-@output.createshiftedmap$while_exp0
-0;JMP
-(output.createshiftedmap$while_end0)
-@SP
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-(output.getmap)
-@SP
-AM=M+1
-A=A-1
-M=0
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@32
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_LT29
-D=A
-@38
-0;JMP
-(RET_ADDRESS_LT29)
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@126
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_GT22
-D=A
-@22
-0;JMP
-(RET_ADDRESS_GT22)
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D|M
-@SP
-AM=M-1
-D=M
-@output.getmap$if_true0
-D;JNE
-@output.getmap$if_false0
-0;JMP
-(output.getmap$if_true0)
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-AM=M-1
-D=M
-@ARG
-A=M
-M=D
-(output.getmap$if_false0)
-@output.2
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@output.getmap$if_true1
-D;JNE
-@output.getmap$if_false1
-0;JMP
-(output.getmap$if_true1)
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@output.5
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@THAT
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@LCL
-A=M
-M=D
-@output.getmap$if_end1
-0;JMP
-(output.getmap$if_false1)
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@output.6
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@THAT
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@LCL
-A=M
-M=D
-(output.getmap$if_end1)
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@54
-0;JMP
-(output.drawchar)
-@4
-D=A
-(LOOP_output.drawchar)
-D=D-1
-@SP
-AM=M+1
-A=A-1
-M=0
-@LOOP_output.drawchar
-D;JGT
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@output.getmap
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL237
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL237)
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-A=A+1
-M=D
-@output.1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@LCL
-A=M
-M=D
-(output.drawchar$while_exp0)
-@LCL
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@11
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_LT30
-D=A
-@38
-0;JMP
-(RET_ADDRESS_LT30)
-@SP
-A=M-1
-M=!M
-@SP
-AM=M-1
-D=M
-@output.drawchar$while_end0
-D;JNE
-@output.2
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@output.drawchar$if_true0
-D;JNE
-@output.drawchar$if_false0
-0;JMP
-(output.drawchar$if_true0)
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@output.4
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@THAT
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@256
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-A=M-1
-D=!M
-M=D+1
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D&M
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-A=A+1
-A=A+1
-M=D
-@output.drawchar$if_end0
-0;JMP
-(output.drawchar$if_false0)
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@output.4
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@THAT
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@255
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D&M
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-A=A+1
-A=A+1
-M=D
-(output.drawchar$if_end0)
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@output.4
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@LCL
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@THAT
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-D=M
-@3
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D|M
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@R5
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-A=M
-M=D
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@32
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@LCL
-A=M
-M=D
-@LCL
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=1
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-M=D
-@output.drawchar$while_exp0
-0;JMP
-(output.drawchar$while_end0)
-@SP
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-(output.movecursor)
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@RET_ADDRESS_LT31
-D=A
-@38
-0;JMP
-(RET_ADDRESS_LT31)
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@22
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_GT23
-D=A
-@22
-0;JMP
-(RET_ADDRESS_GT23)
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D|M
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@RET_ADDRESS_LT32
-D=A
-@38
-0;JMP
-(RET_ADDRESS_LT32)
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D|M
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_GT24
-D=A
-@22
-0;JMP
-(RET_ADDRESS_GT24)
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D|M
-@SP
-AM=M-1
-D=M
-@output.movecursor$if_true0
-D;JNE
-@output.movecursor$if_false0
-0;JMP
-(output.movecursor$if_true0)
-@20
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@sys.error
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL238
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL238)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-(output.movecursor$if_false0)
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@math.divide
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL239
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL239)
-@SP
-AM=M-1
-D=M
-@output.0
-M=D
-@32
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@352
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@math.multiply
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL240
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL240)
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@output.0
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@output.1
-M=D
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@output.0
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@math.multiply
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL241
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL241)
-@RET_ADDRESS_EQ22
-D=A
-@6
-0;JMP
-(RET_ADDRESS_EQ22)
-@SP
-AM=M-1
-D=M
-@output.2
-M=D
-@32
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@output.drawchar
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL242
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL242)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-(output.printchar)
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@0
-D=A
-@R13
-M=D
-@string.newline
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL243
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL243)
-@RET_ADDRESS_EQ23
-D=A
-@6
-0;JMP
-(RET_ADDRESS_EQ23)
-@SP
-AM=M-1
-D=M
-@output.printchar$if_true0
-D;JNE
-@output.printchar$if_false0
-0;JMP
-(output.printchar$if_true0)
-@0
-D=A
-@R13
-M=D
-@output.println
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL244
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL244)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@output.printchar$if_end0
-0;JMP
-(output.printchar$if_false0)
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@0
-D=A
-@R13
-M=D
-@string.backspace
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL245
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL245)
-@RET_ADDRESS_EQ24
-D=A
-@6
-0;JMP
-(RET_ADDRESS_EQ24)
-@SP
-AM=M-1
-D=M
-@output.printchar$if_true1
-D;JNE
-@output.printchar$if_false1
-0;JMP
-(output.printchar$if_true1)
-@0
-D=A
-@R13
-M=D
-@output.backspace
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL246
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL246)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@output.printchar$if_end1
-0;JMP
-(output.printchar$if_false1)
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@output.drawchar
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL247
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL247)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@output.2
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-A=M-1
-M=!M
-@SP
-AM=M-1
-D=M
-@output.printchar$if_true2
-D;JNE
-@output.printchar$if_false2
-0;JMP
-(output.printchar$if_true2)
-@output.0
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=1
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@output.0
-M=D
-@output.1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=1
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@output.1
-M=D
-(output.printchar$if_false2)
-@output.0
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@32
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_EQ25
-D=A
-@6
-0;JMP
-(RET_ADDRESS_EQ25)
-@SP
-AM=M-1
-D=M
-@output.printchar$if_true3
-D;JNE
-@output.printchar$if_false3
-0;JMP
-(output.printchar$if_true3)
-@0
-D=A
-@R13
-M=D
-@output.println
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL248
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL248)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@output.printchar$if_end3
-0;JMP
-(output.printchar$if_false3)
-@output.2
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-A=M-1
-M=!M
-@SP
-AM=M-1
-D=M
-@output.2
-M=D
-(output.printchar$if_end3)
-(output.printchar$if_end1)
-(output.printchar$if_end0)
-@SP
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-(output.printstring)
-@SP
-A=M
-M=0
-AD=A+1
-M=0
-@SP
-M=D+1
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@string.length
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL249
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL249)
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-M=D
-(output.printstring$while_exp0)
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_LT33
-D=A
-@38
-0;JMP
-(RET_ADDRESS_LT33)
-@SP
-A=M-1
-M=!M
-@SP
-AM=M-1
-D=M
-@output.printstring$while_end0
-D;JNE
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@string.charat
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL250
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL250)
-@1
-D=A
-@R13
-M=D
-@output.printchar
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL251
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL251)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=1
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@LCL
-A=M
-M=D
-@output.printstring$while_exp0
-0;JMP
-(output.printstring$while_end0)
-@SP
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-(output.printint)
-@output.3
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@string.setint
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL252
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL252)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@output.3
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@output.printstring
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL253
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL253)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-(output.println)
-@output.1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@352
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@output.0
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@SP
-AM=M-1
-D=M
-@output.1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-AM=M-1
-D=M
-@output.0
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-A=M-1
-M=!M
-@SP
-AM=M-1
-D=M
-@output.2
-M=D
-@output.1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@8128
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_EQ26
-D=A
-@6
-0;JMP
-(RET_ADDRESS_EQ26)
-@SP
-AM=M-1
-D=M
-@output.println$if_true0
-D;JNE
-@output.println$if_false0
-0;JMP
-(output.println$if_true0)
-@32
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@output.1
-M=D
-(output.println$if_false0)
-@SP
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-(output.backspace)
-@output.2
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@output.backspace$if_true0
-D;JNE
-@output.backspace$if_false0
-0;JMP
-(output.backspace$if_true0)
-@output.0
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@RET_ADDRESS_GT25
-D=A
-@22
-0;JMP
-(RET_ADDRESS_GT25)
-@SP
-AM=M-1
-D=M
-@output.backspace$if_true1
-D;JNE
-@output.backspace$if_false1
-0;JMP
-(output.backspace$if_true1)
-@output.0
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=1
-@SP
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@SP
-AM=M-1
-D=M
-@output.0
-M=D
-@output.1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=1
-@SP
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@SP
-AM=M-1
-D=M
-@output.1
-M=D
-@output.backspace$if_end1
-0;JMP
-(output.backspace$if_false1)
-@31
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@output.0
-M=D
-@output.1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@32
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_EQ27
-D=A
-@6
-0;JMP
-(RET_ADDRESS_EQ27)
-@SP
-AM=M-1
-D=M
-@output.backspace$if_true2
-D;JNE
-@output.backspace$if_false2
-0;JMP
-(output.backspace$if_true2)
-@8128
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@output.1
-M=D
-(output.backspace$if_false2)
-@output.1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@321
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@SP
-AM=M-1
-D=M
-@output.1
-M=D
-(output.backspace$if_end1)
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-AM=M-1
-D=M
-@output.2
-M=D
-@output.backspace$if_end0
-0;JMP
-(output.backspace$if_false0)
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-A=M-1
-M=!M
-@SP
-AM=M-1
-D=M
-@output.2
-M=D
-(output.backspace$if_end0)
-@32
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@output.drawchar
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL254
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL254)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-(screen.init)
-@SP
-AM=M+1
-A=A-1
-M=0
-@16384
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@screen.1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-A=M-1
-M=!M
-@SP
-AM=M-1
-D=M
-@screen.2
-M=D
-@17
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@array.new
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL255
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL255)
-@SP
-AM=M-1
-D=M
-@screen.0
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@screen.0
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-M=M+1
-A=M-1
-M=1
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@R5
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-A=M
-M=D
-(screen.init$while_exp0)
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@16
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_LT34
-D=A
-@38
-0;JMP
-(RET_ADDRESS_LT34)
-@SP
-A=M-1
-M=!M
-@SP
-AM=M-1
-D=M
-@screen.init$while_end0
-D;JNE
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=1
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@LCL
-A=M
-M=D
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@screen.0
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=1
-@SP
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@screen.0
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@THAT
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=1
-@SP
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@screen.0
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@THAT
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@R5
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-A=M
-M=D
-@screen.init$while_exp0
-0;JMP
-(screen.init$while_end0)
-@SP
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-(screen.clearscreen)
-@SP
-AM=M+1
-A=A-1
-M=0
-(screen.clearscreen$while_exp0)
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@8192
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_LT35
-D=A
-@38
-0;JMP
-(RET_ADDRESS_LT35)
-@SP
-A=M-1
-M=!M
-@SP
-AM=M-1
-D=M
-@screen.clearscreen$while_end0
-D;JNE
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@screen.1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@R5
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-A=M
-M=D
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=1
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@LCL
-A=M
-M=D
-@screen.clearscreen$while_exp0
-0;JMP
-(screen.clearscreen$while_end0)
-@SP
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-(screen.updatelocation)
-@screen.2
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@screen.updatelocation$if_true0
-D;JNE
-@screen.updatelocation$if_false0
-0;JMP
-(screen.updatelocation$if_true0)
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@screen.1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@screen.1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@THAT
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D|M
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@R5
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-A=M
-M=D
-@screen.updatelocation$if_end0
-0;JMP
-(screen.updatelocation$if_false0)
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@screen.1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@screen.1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@THAT
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-A=M-1
-M=!M
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D&M
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@R5
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-A=M
-M=D
-(screen.updatelocation$if_end0)
-@SP
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-(screen.setcolor)
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@screen.2
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-(screen.drawpixel)
-@3
-D=A
-(LOOP_screen.drawpixel)
-D=D-1
-@SP
-AM=M+1
-A=A-1
-M=0
-@LOOP_screen.drawpixel
-D;JGT
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@RET_ADDRESS_LT36
-D=A
-@38
-0;JMP
-(RET_ADDRESS_LT36)
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@511
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_GT26
-D=A
-@22
-0;JMP
-(RET_ADDRESS_GT26)
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D|M
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@RET_ADDRESS_LT37
-D=A
-@38
-0;JMP
-(RET_ADDRESS_LT37)
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D|M
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@255
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_GT27
-D=A
-@22
-0;JMP
-(RET_ADDRESS_GT27)
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D|M
-@SP
-AM=M-1
-D=M
-@screen.drawpixel$if_true0
-D;JNE
-@screen.drawpixel$if_false0
-0;JMP
-(screen.drawpixel$if_true0)
-@7
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@sys.error
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL256
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL256)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-(screen.drawpixel$if_false0)
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@16
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@math.divide
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL257
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL257)
-@SP
-AM=M-1
-D=M
-@LCL
-A=M
-M=D
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@16
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@math.multiply
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL258
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL258)
-@SP
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-M=D
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@32
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@math.multiply
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL259
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL259)
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-A=A+1
-M=D
-@LCL
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@screen.0
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@THAT
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@screen.updatelocation
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL260
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL260)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-(screen.drawconditional)
-@ARG
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@screen.drawconditional$if_true0
-D;JNE
-@screen.drawconditional$if_false0
-0;JMP
-(screen.drawconditional$if_true0)
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@screen.drawpixel
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL261
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL261)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@screen.drawconditional$if_end0
-0;JMP
-(screen.drawconditional$if_false0)
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@screen.drawpixel
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL262
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL262)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-(screen.drawconditional$if_end0)
-@SP
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-(screen.drawline)
-@11
-D=A
-(LOOP_screen.drawline)
-D=D-1
-@SP
-AM=M+1
-A=A-1
-M=0
-@LOOP_screen.drawline
-D;JGT
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@RET_ADDRESS_LT38
-D=A
-@38
-0;JMP
-(RET_ADDRESS_LT38)
-@ARG
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@511
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_GT28
-D=A
-@22
-0;JMP
-(RET_ADDRESS_GT28)
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D|M
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@RET_ADDRESS_LT39
-D=A
-@38
-0;JMP
-(RET_ADDRESS_LT39)
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D|M
-@ARG
-D=M
-@3
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@255
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_GT29
-D=A
-@22
-0;JMP
-(RET_ADDRESS_GT29)
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D|M
-@SP
-AM=M-1
-D=M
-@screen.drawline$if_true0
-D;JNE
-@screen.drawline$if_false0
-0;JMP
-(screen.drawline$if_true0)
-@8
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@sys.error
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL263
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL263)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-(screen.drawline$if_false0)
-@ARG
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@1
-D=A
-@R13
-M=D
-@math.abs
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL264
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL264)
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-A=A+1
-A=A+1
-M=D
-@ARG
-D=M
-@3
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@1
-D=A
-@R13
-M=D
-@math.abs
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL265
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL265)
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-A=A+1
-M=D
-@LCL
-D=M
-@3
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_LT40
-D=A
-@38
-0;JMP
-(RET_ADDRESS_LT40)
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-A=A+1
-A=A+1
-A=A+1
-A=A+1
-A=A+1
-M=D
-@LCL
-D=M
-@6
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@ARG
-D=M
-@3
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_LT41
-D=A
-@38
-0;JMP
-(RET_ADDRESS_LT41)
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D&M
-@LCL
-D=M
-@6
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-A=M-1
-M=!M
-@ARG
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_LT42
-D=A
-@38
-0;JMP
-(RET_ADDRESS_LT42)
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D&M
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D|M
-@SP
-AM=M-1
-D=M
-@screen.drawline$if_true1
-D;JNE
-@screen.drawline$if_false1
-0;JMP
-(screen.drawline$if_true1)
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-A=A+1
-A=A+1
-A=A+1
-M=D
-@ARG
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@ARG
-A=M
-M=D
-@LCL
-D=M
-@4
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@ARG
-A=M+1
-A=A+1
-M=D
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-A=A+1
-A=A+1
-A=A+1
-M=D
-@ARG
-D=M
-@3
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@ARG
-A=M+1
-M=D
-@LCL
-D=M
-@4
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@ARG
-A=M+1
-A=A+1
-A=A+1
-M=D
-(screen.drawline$if_false1)
-@LCL
-D=M
-@6
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@screen.drawline$if_true2
-D;JNE
-@screen.drawline$if_false2
-0;JMP
-(screen.drawline$if_true2)
-@LCL
-D=M
-@3
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-A=A+1
-A=A+1
-A=A+1
-M=D
-@LCL
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-A=A+1
-A=A+1
-M=D
-@LCL
-D=M
-@4
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-A=A+1
-M=D
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-M=D
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@LCL
-A=M
-M=D
-@ARG
-D=M
-@3
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-D=M
-@8
-D=D+A
-@R13
-M=D
-@SP
-AM=M-1
-D=M
-@R13
-A=M
-M=D
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@ARG
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_GT30
-D=A
-@22
-0;JMP
-(RET_ADDRESS_GT30)
-@LCL
-D=M
-@7
-D=D+A
-@R13
-M=D
-@SP
-AM=M-1
-D=M
-@R13
-A=M
-M=D
-@screen.drawline$if_end2
-0;JMP
-(screen.drawline$if_false2)
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-M=D
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@LCL
-A=M
-M=D
-@ARG
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-D=M
-@8
-D=D+A
-@R13
-M=D
-@SP
-AM=M-1
-D=M
-@R13
-A=M
-M=D
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@ARG
-D=M
-@3
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_GT31
-D=A
-@22
-0;JMP
-(RET_ADDRESS_GT31)
-@LCL
-D=M
-@7
-D=D+A
-@R13
-M=D
-@SP
-AM=M-1
-D=M
-@R13
-A=M
-M=D
-(screen.drawline$if_end2)
-@2
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@math.multiply
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL266
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL266)
-@LCL
-D=M
-@3
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-A=A+1
-A=A+1
-A=A+1
-A=A+1
-M=D
-@2
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@math.multiply
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL267
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL267)
-@LCL
-D=M
-@9
-D=D+A
-@R13
-M=D
-@SP
-AM=M-1
-D=M
-@R13
-A=M
-M=D
-@2
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-D=M
-@3
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@2
-D=A
-@R13
-M=D
-@math.multiply
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL268
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL268)
-@LCL
-D=M
-@10
-D=D+A
-@R13
-M=D
-@SP
-AM=M-1
-D=M
-@R13
-A=M
-M=D
-@LCL
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-D=M
-@6
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@R13
-M=D
-@screen.drawconditional
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL269
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL269)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-(screen.drawline$while_exp0)
-@LCL
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-D=M
-@8
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_LT43
-D=A
-@38
-0;JMP
-(RET_ADDRESS_LT43)
-@SP
-A=M-1
-M=!M
-@SP
-AM=M-1
-D=M
-@screen.drawline$while_end0
-D;JNE
-@LCL
-D=M
-@5
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@RET_ADDRESS_LT44
-D=A
-@38
-0;JMP
-(RET_ADDRESS_LT44)
-@SP
-AM=M-1
-D=M
-@screen.drawline$if_true3
-D;JNE
-@screen.drawline$if_false3
-0;JMP
-(screen.drawline$if_true3)
-@LCL
-D=M
-@5
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-D=M
-@9
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-A=A+1
-A=A+1
-A=A+1
-A=A+1
-M=D
-@screen.drawline$if_end3
-0;JMP
-(screen.drawline$if_false3)
-@LCL
-D=M
-@5
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-D=M
-@10
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-A=A+1
-A=A+1
-A=A+1
-A=A+1
-M=D
-@LCL
-D=M
-@7
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@screen.drawline$if_true4
-D;JNE
-@screen.drawline$if_false4
-0;JMP
-(screen.drawline$if_true4)
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=1
-@SP
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@SP
-AM=M-1
-D=M
-@LCL
-A=M
-M=D
-@screen.drawline$if_end4
-0;JMP
-(screen.drawline$if_false4)
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=1
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@LCL
-A=M
-M=D
-(screen.drawline$if_end4)
-(screen.drawline$if_end3)
-@LCL
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=1
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-M=D
-@LCL
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-D=M
-@6
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@R13
-M=D
-@screen.drawconditional
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL270
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL270)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@screen.drawline$while_exp0
-0;JMP
-(screen.drawline$while_end0)
-@SP
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-(screen.drawrectangle)
-@9
-D=A
-(LOOP_screen.drawrectangle)
-D=D-1
-@SP
-AM=M+1
-A=A-1
-M=0
-@LOOP_screen.drawrectangle
-D;JGT
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@ARG
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_GT32
-D=A
-@22
-0;JMP
-(RET_ADDRESS_GT32)
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@ARG
-D=M
-@3
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_GT33
-D=A
-@22
-0;JMP
-(RET_ADDRESS_GT33)
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D|M
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@RET_ADDRESS_LT45
-D=A
-@38
-0;JMP
-(RET_ADDRESS_LT45)
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D|M
-@ARG
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@511
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_GT34
-D=A
-@22
-0;JMP
-(RET_ADDRESS_GT34)
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D|M
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@RET_ADDRESS_LT46
-D=A
-@38
-0;JMP
-(RET_ADDRESS_LT46)
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D|M
-@ARG
-D=M
-@3
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@255
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_GT35
-D=A
-@22
-0;JMP
-(RET_ADDRESS_GT35)
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D|M
-@SP
-AM=M-1
-D=M
-@screen.drawrectangle$if_true0
-D;JNE
-@screen.drawrectangle$if_false0
-0;JMP
-(screen.drawrectangle$if_true0)
-@9
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@sys.error
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL271
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL271)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-(screen.drawrectangle$if_false0)
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@16
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@math.divide
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL272
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL272)
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-A=A+1
-A=A+1
-M=D
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-D=M
-@3
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@16
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@math.multiply
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL273
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL273)
-@SP
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@LCL
-D=M
-@7
-D=D+A
-@R13
-M=D
-@SP
-AM=M-1
-D=M
-@R13
-A=M
-M=D
-@ARG
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@16
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@math.divide
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL274
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL274)
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-A=A+1
-A=A+1
-A=A+1
-M=D
-@ARG
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-D=M
-@4
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@16
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@math.multiply
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL275
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL275)
-@SP
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@LCL
-D=M
-@8
-D=D+A
-@R13
-M=D
-@SP
-AM=M-1
-D=M
-@R13
-A=M
-M=D
-@LCL
-D=M
-@7
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@screen.0
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@THAT
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=1
-@SP
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@SP
-A=M-1
-M=!M
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-A=A+1
-A=A+1
-A=A+1
-A=A+1
-A=A+1
-M=D
-@LCL
-D=M
-@8
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=1
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@screen.0
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@THAT
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=1
-@SP
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-A=A+1
-A=A+1
-A=A+1
-A=A+1
-M=D
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@32
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@math.multiply
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL276
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL276)
-@LCL
-D=M
-@3
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@LCL
-A=M
-M=D
-@LCL
-D=M
-@4
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-D=M
-@3
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-A=A+1
-M=D
-(screen.drawrectangle$while_exp0)
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@ARG
-D=M
-@3
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_GT36
-D=A
-@22
-0;JMP
-(RET_ADDRESS_GT36)
-@SP
-A=M-1
-M=!M
-@SP
-A=M-1
-M=!M
-@SP
-AM=M-1
-D=M
-@screen.drawrectangle$while_end0
-D;JNE
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-M=D
-@LCL
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@RET_ADDRESS_EQ28
-D=A
-@6
-0;JMP
-(RET_ADDRESS_EQ28)
-@SP
-AM=M-1
-D=M
-@screen.drawrectangle$if_true1
-D;JNE
-@screen.drawrectangle$if_false1
-0;JMP
-(screen.drawrectangle$if_true1)
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-D=M
-@5
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-D=M
-@6
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D&M
-@2
-D=A
-@R13
-M=D
-@screen.updatelocation
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL277
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL277)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@screen.drawrectangle$if_end1
-0;JMP
-(screen.drawrectangle$if_false1)
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-D=M
-@6
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@screen.updatelocation
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL278
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL278)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=1
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@LCL
-A=M
-M=D
-(screen.drawrectangle$while_exp1)
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_LT47
-D=A
-@38
-0;JMP
-(RET_ADDRESS_LT47)
-@SP
-A=M-1
-M=!M
-@SP
-AM=M-1
-D=M
-@screen.drawrectangle$while_end1
-D;JNE
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=1
-@SP
-A=M-1
-D=!M
-M=D+1
-@2
-D=A
-@R13
-M=D
-@screen.updatelocation
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL279
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL279)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=1
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@LCL
-A=M
-M=D
-@screen.drawrectangle$while_exp1
-0;JMP
-(screen.drawrectangle$while_end1)
-@LCL
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-D=M
-@5
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@screen.updatelocation
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL280
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL280)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-(screen.drawrectangle$if_end1)
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=1
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@ARG
-A=M+1
-M=D
-@LCL
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@32
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@LCL
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@SP
-AM=M-1
-D=M
-@LCL
-A=M
-M=D
-@screen.drawrectangle$while_exp0
-0;JMP
-(screen.drawrectangle$while_end0)
-@SP
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-(screen.drawhorizontal)
-@11
-D=A
-(LOOP_screen.drawhorizontal)
-D=D-1
-@SP
-AM=M+1
-A=A-1
-M=0
-@LOOP_screen.drawhorizontal
-D;JGT
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@ARG
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@math.min
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL281
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL281)
-@LCL
-D=M
-@7
-D=D+A
-@R13
-M=D
-@SP
-AM=M-1
-D=M
-@R13
-A=M
-M=D
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@ARG
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@math.max
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL282
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL282)
-@LCL
-D=M
-@8
-D=D+A
-@R13
-M=D
-@SP
-AM=M-1
-D=M
-@R13
-A=M
-M=D
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=1
-@SP
-A=M-1
-D=!M
-M=D+1
-@RET_ADDRESS_GT37
-D=A
-@22
-0;JMP
-(RET_ADDRESS_GT37)
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@256
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_LT48
-D=A
-@38
-0;JMP
-(RET_ADDRESS_LT48)
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D&M
-@LCL
-D=M
-@7
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@512
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_LT49
-D=A
-@38
-0;JMP
-(RET_ADDRESS_LT49)
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D&M
-@LCL
-D=M
-@8
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=1
-@SP
-A=M-1
-D=!M
-M=D+1
-@RET_ADDRESS_GT38
-D=A
-@22
-0;JMP
-(RET_ADDRESS_GT38)
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D&M
-@SP
-AM=M-1
-D=M
-@screen.drawhorizontal$if_true0
-D;JNE
-@screen.drawhorizontal$if_false0
-0;JMP
-(screen.drawhorizontal$if_true0)
-@LCL
-D=M
-@7
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@2
-D=A
-@R13
-M=D
-@math.max
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL283
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL283)
-@LCL
-D=M
-@7
-D=D+A
-@R13
-M=D
-@SP
-AM=M-1
-D=M
-@R13
-A=M
-M=D
-@LCL
-D=M
-@8
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@511
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@math.min
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL284
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL284)
-@LCL
-D=M
-@8
-D=D+A
-@R13
-M=D
-@SP
-AM=M-1
-D=M
-@R13
-A=M
-M=D
-@LCL
-D=M
-@7
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@16
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@math.divide
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL285
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL285)
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-M=D
-@LCL
-D=M
-@7
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@16
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@math.multiply
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL286
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL286)
-@SP
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@LCL
-D=M
-@9
-D=D+A
-@R13
-M=D
-@SP
-AM=M-1
-D=M
-@R13
-A=M
-M=D
-@LCL
-D=M
-@8
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@16
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@math.divide
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL287
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL287)
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-A=A+1
-M=D
-@LCL
-D=M
-@8
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@16
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@math.multiply
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL288
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL288)
-@SP
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@LCL
-D=M
-@10
-D=D+A
-@R13
-M=D
-@SP
-AM=M-1
-D=M
-@R13
-A=M
-M=D
-@LCL
-D=M
-@9
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@screen.0
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@THAT
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=1
-@SP
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@SP
-A=M-1
-M=!M
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-A=A+1
-A=A+1
-A=A+1
-A=A+1
-M=D
-@LCL
-D=M
-@10
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=1
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@screen.0
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@THAT
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=1
-@SP
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-A=A+1
-A=A+1
-A=A+1
-M=D
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@32
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@math.multiply
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL289
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL289)
-@LCL
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@LCL
-A=M
-M=D
-@LCL
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-A=A+1
-A=A+1
-A=A+1
-A=A+1
-A=A+1
-M=D
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-D=M
-@6
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-A=A+1
-A=A+1
-M=D
-@LCL
-D=M
-@6
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@RET_ADDRESS_EQ29
-D=A
-@6
-0;JMP
-(RET_ADDRESS_EQ29)
-@SP
-AM=M-1
-D=M
-@screen.drawhorizontal$if_true1
-D;JNE
-@screen.drawhorizontal$if_false1
-0;JMP
-(screen.drawhorizontal$if_true1)
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-D=M
-@4
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-D=M
-@5
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D&M
-@2
-D=A
-@R13
-M=D
-@screen.updatelocation
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL290
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL290)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@screen.drawhorizontal$if_end1
-0;JMP
-(screen.drawhorizontal$if_false1)
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-D=M
-@5
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@screen.updatelocation
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL291
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL291)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=1
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@LCL
-A=M
-M=D
-(screen.drawhorizontal$while_exp0)
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-D=M
-@3
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_LT50
-D=A
-@38
-0;JMP
-(RET_ADDRESS_LT50)
-@SP
-A=M-1
-M=!M
-@SP
-AM=M-1
-D=M
-@screen.drawhorizontal$while_end0
-D;JNE
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=1
-@SP
-A=M-1
-D=!M
-M=D+1
-@2
-D=A
-@R13
-M=D
-@screen.updatelocation
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL292
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL292)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=1
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@LCL
-A=M
-M=D
-@screen.drawhorizontal$while_exp0
-0;JMP
-(screen.drawhorizontal$while_end0)
-@LCL
-D=M
-@3
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-D=M
-@4
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@screen.updatelocation
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL293
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL293)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-(screen.drawhorizontal$if_end1)
-(screen.drawhorizontal$if_false0)
-@SP
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-(screen.drawsymetric)
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@ARG
-D=M
-@3
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@ARG
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@ARG
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@3
-D=A
-@R13
-M=D
-@screen.drawhorizontal
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL294
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL294)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@ARG
-D=M
-@3
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@ARG
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@ARG
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@3
-D=A
-@R13
-M=D
-@screen.drawhorizontal
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL295
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL295)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@ARG
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@ARG
-D=M
-@3
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@ARG
-D=M
-@3
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@3
-D=A
-@R13
-M=D
-@screen.drawhorizontal
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL296
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL296)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@ARG
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@ARG
-D=M
-@3
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@ARG
-D=M
-@3
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@3
-D=A
-@R13
-M=D
-@screen.drawhorizontal
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL297
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL297)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-(screen.drawcircle)
-@3
-D=A
-(LOOP_screen.drawcircle)
-D=D-1
-@SP
-AM=M+1
-A=A-1
-M=0
-@LOOP_screen.drawcircle
-D;JGT
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@RET_ADDRESS_LT51
-D=A
-@38
-0;JMP
-(RET_ADDRESS_LT51)
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@511
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_GT39
-D=A
-@22
-0;JMP
-(RET_ADDRESS_GT39)
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D|M
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@RET_ADDRESS_LT52
-D=A
-@38
-0;JMP
-(RET_ADDRESS_LT52)
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D|M
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@255
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_GT40
-D=A
-@22
-0;JMP
-(RET_ADDRESS_GT40)
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D|M
-@SP
-AM=M-1
-D=M
-@screen.drawcircle$if_true0
-D;JNE
-@screen.drawcircle$if_false0
-0;JMP
-(screen.drawcircle$if_true0)
-@12
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@sys.error
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL298
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL298)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-(screen.drawcircle$if_false0)
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@ARG
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@SP
-M=M+1
-A=M-1
-M=0
-@RET_ADDRESS_LT53
-D=A
-@38
-0;JMP
-(RET_ADDRESS_LT53)
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@ARG
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@511
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_GT41
-D=A
-@22
-0;JMP
-(RET_ADDRESS_GT41)
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D|M
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@ARG
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@SP
-M=M+1
-A=M-1
-M=0
-@RET_ADDRESS_LT54
-D=A
-@38
-0;JMP
-(RET_ADDRESS_LT54)
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D|M
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@ARG
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@255
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_GT42
-D=A
-@22
-0;JMP
-(RET_ADDRESS_GT42)
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D|M
-@SP
-AM=M-1
-D=M
-@screen.drawcircle$if_true1
-D;JNE
-@screen.drawcircle$if_false1
-0;JMP
-(screen.drawcircle$if_true1)
-@13
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@sys.error
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL299
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL299)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-(screen.drawcircle$if_false1)
-@ARG
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-M=D
-@SP
-M=M+1
-A=M-1
-M=1
-@ARG
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-A=A+1
-M=D
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@4
-D=A
-@R13
-M=D
-@screen.drawsymetric
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL300
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL300)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-(screen.drawcircle$while_exp0)
-@LCL
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_GT43
-D=A
-@22
-0;JMP
-(RET_ADDRESS_GT43)
-@SP
-A=M-1
-M=!M
-@SP
-AM=M-1
-D=M
-@screen.drawcircle$while_end0
-D;JNE
-@LCL
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@RET_ADDRESS_LT55
-D=A
-@38
-0;JMP
-(RET_ADDRESS_LT55)
-@SP
-AM=M-1
-D=M
-@screen.drawcircle$if_true2
-D;JNE
-@screen.drawcircle$if_false2
-0;JMP
-(screen.drawcircle$if_true2)
-@LCL
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@math.multiply
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL301
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL301)
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@3
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-A=A+1
-M=D
-@screen.drawcircle$if_end2
-0;JMP
-(screen.drawcircle$if_false2)
-@LCL
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@2
-D=A
-@R13
-M=D
-@math.multiply
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL302
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL302)
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@5
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-A=A+1
-M=D
-@LCL
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=1
-@SP
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-M=D
-(screen.drawcircle$if_end2)
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=1
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@LCL
-A=M
-M=D
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@4
-D=A
-@R13
-M=D
-@screen.drawsymetric
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL303
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL303)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@screen.drawcircle$while_exp0
-0;JMP
-(screen.drawcircle$while_end0)
-@SP
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-(string.new)
-@3
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@memory.alloc
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL304
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL304)
-@SP
-AM=M-1
-D=M
-@THIS
-M=D
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@RET_ADDRESS_LT56
-D=A
-@38
-0;JMP
-(RET_ADDRESS_LT56)
-@SP
-AM=M-1
-D=M
-@string.new$if_true0
-D;JNE
-@string.new$if_false0
-0;JMP
-(string.new$if_true0)
-@14
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@sys.error
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL305
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL305)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-(string.new$if_false0)
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@RET_ADDRESS_GT44
-D=A
-@22
-0;JMP
-(RET_ADDRESS_GT44)
-@SP
-AM=M-1
-D=M
-@string.new$if_true1
-D;JNE
-@string.new$if_false1
-0;JMP
-(string.new$if_true1)
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@array.new
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL306
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL306)
-@SP
-AM=M-1
-D=M
-@THIS
-A=M+1
-M=D
-(string.new$if_false1)
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THIS
-A=M
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-AM=M-1
-D=M
-@THIS
-A=M+1
-A=A+1
-M=D
-@THIS
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@54
-0;JMP
-(string.dispose)
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THIS
-M=D
-@THIS
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@RET_ADDRESS_GT45
-D=A
-@22
-0;JMP
-(RET_ADDRESS_GT45)
-@SP
-AM=M-1
-D=M
-@string.dispose$if_true0
-D;JNE
-@string.dispose$if_false0
-0;JMP
-(string.dispose$if_true0)
-@THIS
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@array.dispose
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL307
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL307)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-(string.dispose$if_false0)
-@THIS
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@memory.dealloc
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL308
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL308)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-(string.length)
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THIS
-M=D
-@THIS
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@54
-0;JMP
-(string.charat)
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THIS
-M=D
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@RET_ADDRESS_LT57
-D=A
-@38
-0;JMP
-(RET_ADDRESS_LT57)
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@THIS
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_GT46
-D=A
-@22
-0;JMP
-(RET_ADDRESS_GT46)
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D|M
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@THIS
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_EQ30
-D=A
-@6
-0;JMP
-(RET_ADDRESS_EQ30)
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D|M
-@SP
-AM=M-1
-D=M
-@string.charat$if_true0
-D;JNE
-@string.charat$if_false0
-0;JMP
-(string.charat$if_true0)
-@15
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@sys.error
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL309
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL309)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-(string.charat$if_false0)
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@THIS
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@THAT
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@54
-0;JMP
-(string.setcharat)
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THIS
-M=D
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@RET_ADDRESS_LT58
-D=A
-@38
-0;JMP
-(RET_ADDRESS_LT58)
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@THIS
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_GT47
-D=A
-@22
-0;JMP
-(RET_ADDRESS_GT47)
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D|M
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@THIS
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_EQ31
-D=A
-@6
-0;JMP
-(RET_ADDRESS_EQ31)
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D|M
-@SP
-AM=M-1
-D=M
-@string.setcharat$if_true0
-D;JNE
-@string.setcharat$if_false0
-0;JMP
-(string.setcharat$if_true0)
-@16
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@sys.error
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL310
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL310)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-(string.setcharat$if_false0)
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@THIS
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@ARG
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@R5
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-A=M
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-(string.appendchar)
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THIS
-M=D
-@THIS
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@THIS
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_EQ32
-D=A
-@6
-0;JMP
-(RET_ADDRESS_EQ32)
-@SP
-AM=M-1
-D=M
-@string.appendchar$if_true0
-D;JNE
-@string.appendchar$if_false0
-0;JMP
-(string.appendchar$if_true0)
-@17
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@sys.error
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL311
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL311)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-(string.appendchar$if_false0)
-@THIS
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@THIS
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@R5
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-A=M
-M=D
-@THIS
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=1
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@THIS
-A=M+1
-A=A+1
-M=D
-@THIS
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@54
-0;JMP
-(string.eraselastchar)
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THIS
-M=D
-@THIS
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@RET_ADDRESS_EQ33
-D=A
-@6
-0;JMP
-(RET_ADDRESS_EQ33)
-@SP
-AM=M-1
-D=M
-@string.eraselastchar$if_true0
-D;JNE
-@string.eraselastchar$if_false0
-0;JMP
-(string.eraselastchar$if_true0)
-@18
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@sys.error
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL312
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL312)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-(string.eraselastchar$if_false0)
-@THIS
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=1
-@SP
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@SP
-AM=M-1
-D=M
-@THIS
-A=M+1
-A=A+1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-(string.intvalue)
-@5
-D=A
-(LOOP_string.intvalue)
-D=D-1
-@SP
-AM=M+1
-A=A-1
-M=0
-@LOOP_string.intvalue
-D;JGT
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THIS
-M=D
-@THIS
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@RET_ADDRESS_EQ34
-D=A
-@6
-0;JMP
-(RET_ADDRESS_EQ34)
-@SP
-AM=M-1
-D=M
-@string.intvalue$if_true0
-D;JNE
-@string.intvalue$if_false0
-0;JMP
-(string.intvalue$if_true0)
-@SP
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-(string.intvalue$if_false0)
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-A=M-1
-M=!M
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-A=A+1
-A=A+1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@THIS
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@THAT
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@45
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_EQ35
-D=A
-@6
-0;JMP
-(RET_ADDRESS_EQ35)
-@SP
-AM=M-1
-D=M
-@string.intvalue$if_true1
-D;JNE
-@string.intvalue$if_false1
-0;JMP
-(string.intvalue$if_true1)
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-A=M-1
-M=!M
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-A=A+1
-A=A+1
-A=A+1
-M=D
-@SP
-M=M+1
-A=M-1
-M=1
-@SP
-AM=M-1
-D=M
-@LCL
-A=M
-M=D
-(string.intvalue$if_false1)
-(string.intvalue$while_exp0)
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@THIS
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_LT59
-D=A
-@38
-0;JMP
-(RET_ADDRESS_LT59)
-@LCL
-D=M
-@3
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D&M
-@SP
-A=M-1
-M=!M
-@SP
-AM=M-1
-D=M
-@string.intvalue$while_end0
-D;JNE
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@THIS
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@THAT
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@48
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-A=A+1
-M=D
-@LCL
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@RET_ADDRESS_LT60
-D=A
-@38
-0;JMP
-(RET_ADDRESS_LT60)
-@LCL
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@9
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_GT48
-D=A
-@22
-0;JMP
-(RET_ADDRESS_GT48)
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D|M
-@SP
-A=M-1
-M=!M
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-A=A+1
-A=A+1
-M=D
-@LCL
-D=M
-@3
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@string.intvalue$if_true2
-D;JNE
-@string.intvalue$if_false2
-0;JMP
-(string.intvalue$if_true2)
-@LCL
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@10
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@math.multiply
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL313
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL313)
-@LCL
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-M=D
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=1
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@LCL
-A=M
-M=D
-(string.intvalue$if_false2)
-@string.intvalue$while_exp0
-0;JMP
-(string.intvalue$while_end0)
-@LCL
-D=M
-@4
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@string.intvalue$if_true3
-D;JNE
-@string.intvalue$if_false3
-0;JMP
-(string.intvalue$if_true3)
-@LCL
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-A=M-1
-D=!M
-M=D+1
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-M=D
-(string.intvalue$if_false3)
-@LCL
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@54
-0;JMP
-(string.setint)
-@4
-D=A
-(LOOP_string.setint)
-D=D-1
-@SP
-AM=M+1
-A=A-1
-M=0
-@LOOP_string.setint
-D;JGT
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THIS
-M=D
-@THIS
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@RET_ADDRESS_EQ36
-D=A
-@6
-0;JMP
-(RET_ADDRESS_EQ36)
-@SP
-AM=M-1
-D=M
-@string.setint$if_true0
-D;JNE
-@string.setint$if_false0
-0;JMP
-(string.setint$if_true0)
-@19
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@sys.error
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL314
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL314)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-(string.setint$if_false0)
-@6
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@array.new
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL315
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL315)
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-A=A+1
-M=D
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@RET_ADDRESS_LT61
-D=A
-@38
-0;JMP
-(RET_ADDRESS_LT61)
-@SP
-AM=M-1
-D=M
-@string.setint$if_true1
-D;JNE
-@string.setint$if_false1
-0;JMP
-(string.setint$if_true1)
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-A=M-1
-M=!M
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-A=A+1
-A=A+1
-M=D
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-A=M-1
-D=!M
-M=D+1
-@SP
-AM=M-1
-D=M
-@ARG
-A=M+1
-M=D
-(string.setint$if_false1)
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-M=D
-(string.setint$while_exp0)
-@LCL
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@RET_ADDRESS_GT49
-D=A
-@22
-0;JMP
-(RET_ADDRESS_GT49)
-@SP
-A=M-1
-M=!M
-@SP
-AM=M-1
-D=M
-@string.setint$while_end0
-D;JNE
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@10
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@math.divide
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL316
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL316)
-@SP
-AM=M-1
-D=M
-@LCL
-A=M+1
-M=D
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@48
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@ARG
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@10
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@math.multiply
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL317
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL317)
-@SP
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@R5
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-A=M
-M=D
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=1
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@LCL
-A=M
-M=D
-@LCL
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@ARG
-A=M+1
-M=D
-@string.setint$while_exp0
-0;JMP
-(string.setint$while_end0)
-@LCL
-D=M
-@3
-A=D+A
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@string.setint$if_true2
-D;JNE
-@string.setint$if_false2
-0;JMP
-(string.setint$if_true2)
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@45
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@R5
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-A=M
-M=D
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=1
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@LCL
-A=M
-M=D
-(string.setint$if_false2)
-@THIS
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_LT62
-D=A
-@38
-0;JMP
-(RET_ADDRESS_LT62)
-@SP
-AM=M-1
-D=M
-@string.setint$if_true3
-D;JNE
-@string.setint$if_false3
-0;JMP
-(string.setint$if_true3)
-@19
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@sys.error
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL318
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL318)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-(string.setint$if_false3)
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@RET_ADDRESS_EQ37
-D=A
-@6
-0;JMP
-(RET_ADDRESS_EQ37)
-@SP
-AM=M-1
-D=M
-@string.setint$if_true4
-D;JNE
-@string.setint$if_false4
-0;JMP
-(string.setint$if_true4)
-@SP
-M=M+1
-A=M-1
-M=0
-@THIS
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@48
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@R5
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-A=M
-M=D
-@SP
-M=M+1
-A=M-1
-M=1
-@SP
-AM=M-1
-D=M
-@THIS
-A=M+1
-A=A+1
-M=D
-@string.setint$if_end4
-0;JMP
-(string.setint$if_false4)
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-AM=M-1
-D=M
-@THIS
-A=M+1
-A=A+1
-M=D
-(string.setint$while_exp1)
-@THIS
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@RET_ADDRESS_LT63
-D=A
-@38
-0;JMP
-(RET_ADDRESS_LT63)
-@SP
-A=M-1
-M=!M
-@SP
-AM=M-1
-D=M
-@string.setint$while_end1
-D;JNE
-@THIS
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@THIS
-A=M+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@THIS
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=1
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@LCL
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@THAT
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-M=D
-@R5
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@THAT
-A=M
-M=D
-@THIS
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=1
-@SP
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@SP
-AM=M-1
-D=M
-@THIS
-A=M+1
-A=A+1
-M=D
-@string.setint$while_exp1
-0;JMP
-(string.setint$while_end1)
-(string.setint$if_end4)
-@LCL
-A=M+1
-A=A+1
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@array.dispose
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL319
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL319)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-(string.newline)
-@128
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@54
-0;JMP
-(string.backspace)
-@129
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@54
-0;JMP
-(string.doublequote)
-@34
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@54
-0;JMP
-(sys.init)
-@0
-D=A
-@R13
-M=D
-@memory.init
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL320
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL320)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@0
-D=A
-@R13
-M=D
-@math.init
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL321
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL321)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@0
-D=A
-@R13
-M=D
-@screen.init
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL322
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL322)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@0
-D=A
-@R13
-M=D
-@output.init
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL323
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL323)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@0
-D=A
-@R13
-M=D
-@keyboard.init
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL324
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL324)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@0
-D=A
-@R13
-M=D
-@main.main
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL325
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL325)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@0
-D=A
-@R13
-M=D
-@sys.halt
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL326
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL326)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-(sys.halt)
-(sys.halt$while_exp0)
-@SP
-M=M+1
-A=M-1
-M=0
-@SP
-A=M-1
-M=!M
-@SP
-A=M-1
-M=!M
-@SP
-AM=M-1
-D=M
-@sys.halt$while_end0
-D;JNE
-@sys.halt$while_exp0
-0;JMP
-(sys.halt$while_end0)
-(sys.wait)
-@SP
-AM=M+1
-A=A-1
-M=0
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@RET_ADDRESS_LT64
-D=A
-@38
-0;JMP
-(RET_ADDRESS_LT64)
-@SP
-AM=M-1
-D=M
-@sys.wait$if_true0
-D;JNE
-@sys.wait$if_false0
-0;JMP
-(sys.wait$if_true0)
-@SP
-M=M+1
-A=M-1
-M=1
-@1
-D=A
-@R13
-M=D
-@sys.error
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL327
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL327)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-(sys.wait$if_false0)
-(sys.wait$while_exp0)
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@RET_ADDRESS_GT50
-D=A
-@22
-0;JMP
-(RET_ADDRESS_GT50)
-@SP
-A=M-1
-M=!M
-@SP
-AM=M-1
-D=M
-@sys.wait$while_end0
-D;JNE
-@50
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-AM=M-1
-D=M
-@LCL
-A=M
-M=D
-(sys.wait$while_exp1)
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=0
-@RET_ADDRESS_GT51
-D=A
-@22
-0;JMP
-(RET_ADDRESS_GT51)
-@SP
-A=M-1
-M=!M
-@SP
-AM=M-1
-D=M
-@sys.wait$while_end1
-D;JNE
-@LCL
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=1
-@SP
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@SP
-AM=M-1
-D=M
-@LCL
-A=M
-M=D
-@sys.wait$while_exp1
-0;JMP
-(sys.wait$while_end1)
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@SP
-M=M+1
-A=M-1
-M=1
-@SP
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@SP
-AM=M-1
-D=M
-@ARG
-A=M
-M=D
-@sys.wait$while_exp0
-0;JMP
-(sys.wait$while_end0)
-@SP
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-(sys.error)
-@3
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@string.new
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL328
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL328)
-@69
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@string.appendchar
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL329
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL329)
-@82
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@string.appendchar
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL330
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL330)
-@82
-D=A
-@SP
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@R13
-M=D
-@string.appendchar
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL331
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL331)
-@1
-D=A
-@R13
-M=D
-@output.printstring
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL332
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL332)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@ARG
-A=M
-D=M
-@SP
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@R13
-M=D
-@output.printint
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL333
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL333)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
-@0
-D=A
-@R13
-M=D
-@sys.halt
-D=A
-@R14
-M=D
-@RET_ADDRESS_CALL334
-D=A
-@95
-0;JMP
-(RET_ADDRESS_CALL334)
-@SP
-AM=M-1
-D=M
-@R5
-M=D
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+// This Pong game code was originally written in the high-level Jack language.
+// The Jack code was then translated by the Jack compiler into VM code.
+// The VM code was then translated by the VM translator into the Hack
+// assembly code shown here. The variable and label symbols were generated
+// automatically by the translators. This information is given for context only.
+// Jack, the Jack compiler, and the VM translator are covered in Part II
+// of the course, and are irrelevant for project 6.
+
+@256
+D=A
+@SP
+M=D
+@133
+0;JMP
+@R15
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+D=M-D
+M=0
+@END_EQ
+D;JNE
+@SP
+A=M-1
+M=-1
+(END_EQ)
+@R15
+A=M
+0;JMP
+@R15
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+D=M-D
+M=0
+@END_GT
+D;JLE
+@SP
+A=M-1
+M=-1
+(END_GT)
+@R15
+A=M
+0;JMP
+@R15
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+D=M-D
+M=0
+@END_LT
+D;JGE
+@SP
+A=M-1
+M=-1
+(END_LT)
+@R15
+A=M
+0;JMP
+@5
+D=A
+@LCL
+A=M-D
+D=M
+@R13
+M=D
+@SP
+AM=M-1
+D=M
+@ARG
+A=M
+M=D
+D=A
+@SP
+M=D+1
+@LCL
+D=M
+@R14
+AM=D-1
+D=M
+@THAT
+M=D
+@R14
+AM=M-1
+D=M
+@THIS
+M=D
+@R14
+AM=M-1
+D=M
+@ARG
+M=D
+@R14
+AM=M-1
+D=M
+@LCL
+M=D
+@R13
+A=M
+0;JMP
+@SP
+A=M
+M=D
+@LCL
+D=M
+@SP
+AM=M+1
+M=D
+@ARG
+D=M
+@SP
+AM=M+1
+M=D
+@THIS
+D=M
+@SP
+AM=M+1
+M=D
+@THAT
+D=M
+@SP
+AM=M+1
+M=D
+@4
+D=A
+@R13
+D=D+M
+@SP
+D=M-D
+@ARG
+M=D
+@SP
+MD=M+1
+@LCL
+M=D
+@R14
+A=M
+0;JMP
+@0
+D=A
+@R13
+M=D
+@sys.init
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL0
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL0)
+(ball.new)
+@15
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@memory.alloc
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL1
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL1)
+@SP
+AM=M-1
+D=M
+@THIS
+M=D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+A=M
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+M=D
+@ARG
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+D=M
+@10
+D=D+A
+@R13
+M=D
+@SP
+AM=M-1
+D=M
+@R13
+A=M
+M=D
+@ARG
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@THIS
+D=M
+@11
+D=D+A
+@R13
+M=D
+@SP
+AM=M-1
+D=M
+@R13
+A=M
+M=D
+@ARG
+D=M
+@4
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+D=M
+@12
+D=D+A
+@R13
+M=D
+@SP
+AM=M-1
+D=M
+@R13
+A=M
+M=D
+@ARG
+D=M
+@5
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@THIS
+D=M
+@13
+D=D+A
+@R13
+M=D
+@SP
+AM=M-1
+D=M
+@R13
+A=M
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@THIS
+D=M
+@14
+D=D+A
+@R13
+M=D
+@SP
+AM=M-1
+D=M
+@R13
+A=M
+M=D
+@THIS
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@ball.show
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL2
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL2)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@THIS
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+(ball.dispose)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+M=D
+@THIS
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@memory.dealloc
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL3
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL3)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(ball.show)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+A=M-1
+M=!M
+@1
+D=A
+@R13
+M=D
+@screen.setcolor
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL4
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL4)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@THIS
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@ball.draw
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL5
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL5)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(ball.hide)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@1
+D=A
+@R13
+M=D
+@screen.setcolor
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL6
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL6)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@THIS
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@ball.draw
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL7
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL7)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(ball.draw)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+M=D
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@5
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@5
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@4
+D=A
+@R13
+M=D
+@screen.drawrectangle
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL8
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL8)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(ball.getleft)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+M=D
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+(ball.getright)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+M=D
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@5
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@54
+0;JMP
+(ball.setdestination)
+@3
+D=A
+(LOOP_ball.setdestination)
+D=D-1
+@SP
+AM=M+1
+A=A-1
+M=0
+@LOOP_ball.setdestination
+D;JGT
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+A=A+1
+M=D
+@ARG
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+A=A+1
+A=A+1
+M=D
+@THIS
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@math.abs
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL9
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL9)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@THIS
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@math.abs
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL10
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL10)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_LT0
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT0)
+@THIS
+D=M
+@7
+D=D+A
+@R13
+M=D
+@SP
+AM=M-1
+D=M
+@R13
+A=M
+M=D
+@THIS
+D=M
+@7
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@ball.setdestination$if_true0
+D;JNE
+@ball.setdestination$if_false0
+0;JMP
+(ball.setdestination$if_true0)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+M=D
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+M=D
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_LT1
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT1)
+@THIS
+D=M
+@8
+D=D+A
+@R13
+M=D
+@SP
+AM=M-1
+D=M
+@R13
+A=M
+M=D
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_LT2
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT2)
+@THIS
+D=M
+@9
+D=D+A
+@R13
+M=D
+@SP
+AM=M-1
+D=M
+@R13
+A=M
+M=D
+@ball.setdestination$if_end0
+0;JMP
+(ball.setdestination$if_false0)
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_LT3
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT3)
+@THIS
+D=M
+@8
+D=D+A
+@R13
+M=D
+@SP
+AM=M-1
+D=M
+@R13
+A=M
+M=D
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_LT4
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT4)
+@THIS
+D=M
+@9
+D=D+A
+@R13
+M=D
+@SP
+AM=M-1
+D=M
+@R13
+A=M
+M=D
+(ball.setdestination$if_end0)
+@2
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.multiply
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL11
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL11)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@2
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.multiply
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL12
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL12)
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@2
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@2
+D=A
+@R13
+M=D
+@math.multiply
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL13
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL13)
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(ball.move)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+M=D
+@THIS
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@ball.hide
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL14
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL14)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@THIS
+D=M
+@4
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_LT5
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT5)
+@SP
+AM=M-1
+D=M
+@ball.move$if_true0
+D;JNE
+@ball.move$if_false0
+0;JMP
+(ball.move$if_true0)
+@THIS
+D=M
+@4
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+D=M
+@5
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@ball.move$if_end0
+0;JMP
+(ball.move$if_false0)
+@THIS
+D=M
+@4
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+D=M
+@6
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@THIS
+D=M
+@9
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@ball.move$if_true1
+D;JNE
+@ball.move$if_false1
+0;JMP
+(ball.move$if_true1)
+@THIS
+D=M
+@7
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@ball.move$if_true2
+D;JNE
+@ball.move$if_false2
+0;JMP
+(ball.move$if_true2)
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@4
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THIS
+A=M
+M=D
+@ball.move$if_end2
+0;JMP
+(ball.move$if_false2)
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@4
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+M=D
+(ball.move$if_end2)
+@ball.move$if_end1
+0;JMP
+(ball.move$if_false1)
+@THIS
+D=M
+@7
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@ball.move$if_true3
+D;JNE
+@ball.move$if_false3
+0;JMP
+(ball.move$if_true3)
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@4
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+AM=M-1
+D=M
+@THIS
+A=M
+M=D
+@ball.move$if_end3
+0;JMP
+(ball.move$if_false3)
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@4
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+M=D
+(ball.move$if_end3)
+(ball.move$if_end1)
+(ball.move$if_end0)
+@THIS
+D=M
+@8
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@ball.move$if_true4
+D;JNE
+@ball.move$if_false4
+0;JMP
+(ball.move$if_true4)
+@THIS
+D=M
+@7
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@ball.move$if_true5
+D;JNE
+@ball.move$if_false5
+0;JMP
+(ball.move$if_true5)
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@4
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+M=D
+@ball.move$if_end5
+0;JMP
+(ball.move$if_false5)
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@4
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THIS
+A=M
+M=D
+(ball.move$if_end5)
+@ball.move$if_end4
+0;JMP
+(ball.move$if_false4)
+@THIS
+D=M
+@7
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@ball.move$if_true6
+D;JNE
+@ball.move$if_false6
+0;JMP
+(ball.move$if_true6)
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@4
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+M=D
+@ball.move$if_end6
+0;JMP
+(ball.move$if_false6)
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@4
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+AM=M-1
+D=M
+@THIS
+A=M
+M=D
+(ball.move$if_end6)
+(ball.move$if_end4)
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+D=M
+@10
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_GT0
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT0)
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@ball.move$if_true7
+D;JNE
+@ball.move$if_false7
+0;JMP
+(ball.move$if_true7)
+@SP
+M=M+1
+A=M-1
+M=1
+@THIS
+D=M
+@14
+D=D+A
+@R13
+M=D
+@SP
+AM=M-1
+D=M
+@R13
+A=M
+M=D
+@THIS
+D=M
+@10
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+A=M
+M=D
+(ball.move$if_false7)
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+D=M
+@11
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_LT6
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT6)
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@ball.move$if_true8
+D;JNE
+@ball.move$if_false8
+0;JMP
+(ball.move$if_true8)
+@2
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+D=M
+@14
+D=D+A
+@R13
+M=D
+@SP
+AM=M-1
+D=M
+@R13
+A=M
+M=D
+@THIS
+D=M
+@11
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+A=M
+M=D
+(ball.move$if_false8)
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+D=M
+@12
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_GT1
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT1)
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@ball.move$if_true9
+D;JNE
+@ball.move$if_false9
+0;JMP
+(ball.move$if_true9)
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+D=M
+@14
+D=D+A
+@R13
+M=D
+@SP
+AM=M-1
+D=M
+@R13
+A=M
+M=D
+@THIS
+D=M
+@12
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+M=D
+(ball.move$if_false9)
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+D=M
+@13
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_LT7
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT7)
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@ball.move$if_true10
+D;JNE
+@ball.move$if_false10
+0;JMP
+(ball.move$if_true10)
+@4
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+D=M
+@14
+D=D+A
+@R13
+M=D
+@SP
+AM=M-1
+D=M
+@R13
+A=M
+M=D
+@THIS
+D=M
+@13
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+M=D
+(ball.move$if_false10)
+@THIS
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@ball.show
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL15
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL15)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@THIS
+D=M
+@14
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+(ball.bounce)
+@5
+D=A
+(LOOP_ball.bounce)
+D=D-1
+@SP
+AM=M+1
+A=A-1
+M=0
+@LOOP_ball.bounce
+D;JGT
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+M=D
+@THIS
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@10
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.divide
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL16
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL16)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+M=D
+@THIS
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@10
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.divide
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL17
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL17)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_EQ0
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ0)
+@SP
+AM=M-1
+D=M
+@ball.bounce$if_true0
+D;JNE
+@ball.bounce$if_false0
+0;JMP
+(ball.bounce$if_true0)
+@10
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@ball.bounce$if_end0
+0;JMP
+(ball.bounce$if_false0)
+@THIS
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_LT8
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT8)
+@SP
+A=M-1
+M=!M
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@RET_ADDRESS_EQ1
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ1)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@THIS
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_LT9
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT9)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+A=M-1
+D=!M
+M=D+1
+@RET_ADDRESS_EQ2
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ2)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@SP
+AM=M-1
+D=M
+@ball.bounce$if_true1
+D;JNE
+@ball.bounce$if_false1
+0;JMP
+(ball.bounce$if_true1)
+@20
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@ball.bounce$if_end1
+0;JMP
+(ball.bounce$if_false1)
+@5
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+(ball.bounce$if_end1)
+(ball.bounce$if_end0)
+@THIS
+D=M
+@14
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@RET_ADDRESS_EQ3
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ3)
+@SP
+AM=M-1
+D=M
+@ball.bounce$if_true2
+D;JNE
+@ball.bounce$if_false2
+0;JMP
+(ball.bounce$if_true2)
+@506
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@LCL
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@50
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+A=M-1
+D=!M
+M=D+1
+@2
+D=A
+@R13
+M=D
+@math.multiply
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL18
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL18)
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.divide
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL19
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL19)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+M=D
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+D=M
+@4
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.multiply
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL20
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL20)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+M=D
+@ball.bounce$if_end2
+0;JMP
+(ball.bounce$if_false2)
+@THIS
+D=M
+@14
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_EQ4
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ4)
+@SP
+AM=M-1
+D=M
+@ball.bounce$if_true3
+D;JNE
+@ball.bounce$if_false3
+0;JMP
+(ball.bounce$if_true3)
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@LCL
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@50
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.multiply
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL21
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL21)
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.divide
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL22
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL22)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+M=D
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+D=M
+@4
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.multiply
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL23
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL23)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+M=D
+@ball.bounce$if_end3
+0;JMP
+(ball.bounce$if_false3)
+@THIS
+D=M
+@14
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_EQ5
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ5)
+@SP
+AM=M-1
+D=M
+@ball.bounce$if_true4
+D;JNE
+@ball.bounce$if_false4
+0;JMP
+(ball.bounce$if_true4)
+@250
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+M=D
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@25
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+A=M-1
+D=!M
+M=D+1
+@2
+D=A
+@R13
+M=D
+@math.multiply
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL24
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL24)
+@LCL
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.divide
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL25
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL25)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+D=M
+@4
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.multiply
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL26
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL26)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@ball.bounce$if_end4
+0;JMP
+(ball.bounce$if_false4)
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+M=D
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@25
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.multiply
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL27
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL27)
+@LCL
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.divide
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL28
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL28)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+D=M
+@4
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.multiply
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL29
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL29)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+(ball.bounce$if_end4)
+(ball.bounce$if_end3)
+(ball.bounce$if_end2)
+@THIS
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@R13
+M=D
+@ball.setdestination
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL30
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL30)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(bat.new)
+@5
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@memory.alloc
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL31
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL31)
+@SP
+AM=M-1
+D=M
+@THIS
+M=D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+A=M
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+M=D
+@ARG
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+A=A+1
+M=D
+@ARG
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+A=A+1
+A=A+1
+M=D
+@2
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@THIS
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@bat.show
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL32
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL32)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@THIS
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+(bat.dispose)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+M=D
+@THIS
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@memory.dealloc
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL33
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL33)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(bat.show)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+A=M-1
+M=!M
+@1
+D=A
+@R13
+M=D
+@screen.setcolor
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL34
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL34)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@THIS
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@bat.draw
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL35
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL35)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(bat.hide)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@1
+D=A
+@R13
+M=D
+@screen.setcolor
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL36
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL36)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@THIS
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@bat.draw
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL37
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL37)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(bat.draw)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+M=D
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@4
+D=A
+@R13
+M=D
+@screen.drawrectangle
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL38
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL38)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(bat.setdirection)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(bat.getleft)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+M=D
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+(bat.getright)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+M=D
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@54
+0;JMP
+(bat.setwidth)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+M=D
+@THIS
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@bat.hide
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL39
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL39)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+A=A+1
+M=D
+@THIS
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@bat.show
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL40
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL40)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(bat.move)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+M=D
+@THIS
+D=M
+@4
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@RET_ADDRESS_EQ6
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ6)
+@SP
+AM=M-1
+D=M
+@bat.move$if_true0
+D;JNE
+@bat.move$if_false0
+0;JMP
+(bat.move$if_true0)
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@4
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+AM=M-1
+D=M
+@THIS
+A=M
+M=D
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_LT10
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT10)
+@SP
+AM=M-1
+D=M
+@bat.move$if_true1
+D;JNE
+@bat.move$if_false1
+0;JMP
+(bat.move$if_true1)
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+AM=M-1
+D=M
+@THIS
+A=M
+M=D
+(bat.move$if_false1)
+@SP
+M=M+1
+A=M-1
+M=0
+@1
+D=A
+@R13
+M=D
+@screen.setcolor
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL41
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL41)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@4
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@4
+D=A
+@R13
+M=D
+@screen.drawrectangle
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL42
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL42)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+A=M-1
+M=!M
+@1
+D=A
+@R13
+M=D
+@screen.setcolor
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL43
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL43)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@4
+D=A
+@R13
+M=D
+@screen.drawrectangle
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL44
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL44)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@bat.move$if_end0
+0;JMP
+(bat.move$if_false0)
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@4
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THIS
+A=M
+M=D
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@511
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_GT2
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT2)
+@SP
+AM=M-1
+D=M
+@bat.move$if_true2
+D;JNE
+@bat.move$if_false2
+0;JMP
+(bat.move$if_true2)
+@511
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+AM=M-1
+D=M
+@THIS
+A=M
+M=D
+(bat.move$if_false2)
+@SP
+M=M+1
+A=M-1
+M=0
+@1
+D=A
+@R13
+M=D
+@screen.setcolor
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL45
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL45)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@4
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@4
+D=A
+@R13
+M=D
+@screen.drawrectangle
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL46
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL46)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+A=M-1
+M=!M
+@1
+D=A
+@R13
+M=D
+@screen.setcolor
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL47
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL47)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@4
+D=A
+@R13
+M=D
+@screen.drawrectangle
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL48
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL48)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+(bat.move$if_end0)
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(main.main)
+@SP
+AM=M+1
+A=A-1
+M=0
+@0
+D=A
+@R13
+M=D
+@ponggame.newinstance
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL49
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL49)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@0
+D=A
+@R13
+M=D
+@ponggame.getinstance
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL50
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL50)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@ponggame.run
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL51
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL51)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@ponggame.dispose
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL52
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL52)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(ponggame.new)
+@7
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@memory.alloc
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL53
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL53)
+@SP
+AM=M-1
+D=M
+@THIS
+M=D
+@0
+D=A
+@R13
+M=D
+@screen.clearscreen
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL54
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL54)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@50
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@230
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@229
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+D=M
+@6
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@7
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@4
+D=A
+@R13
+M=D
+@bat.new
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL55
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL55)
+@SP
+AM=M-1
+D=M
+@THIS
+A=M
+M=D
+@253
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@222
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@511
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@229
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@R13
+M=D
+@ball.new
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL56
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL56)
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+M=D
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@400
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@3
+D=A
+@R13
+M=D
+@ball.setdestination
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL57
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL57)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@238
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@511
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@240
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@4
+D=A
+@R13
+M=D
+@screen.drawrectangle
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL58
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL58)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@22
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@2
+D=A
+@R13
+M=D
+@output.movecursor
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL59
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL59)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@8
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@string.new
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL60
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL60)
+@83
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@string.appendchar
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL61
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL61)
+@99
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@string.appendchar
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL62
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL62)
+@111
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@string.appendchar
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL63
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL63)
+@114
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@string.appendchar
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL64
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL64)
+@101
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@string.appendchar
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL65
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL65)
+@58
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@string.appendchar
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL66
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL66)
+@32
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@string.appendchar
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL67
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL67)
+@48
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@string.appendchar
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL68
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL68)
+@1
+D=A
+@R13
+M=D
+@output.printstring
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL69
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL69)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+A=A+1
+A=A+1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+A=A+1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@THIS
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+(ponggame.dispose)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+M=D
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@bat.dispose
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL70
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL70)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@ball.dispose
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL71
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL71)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@THIS
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@memory.dealloc
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL72
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL72)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(ponggame.newinstance)
+@0
+D=A
+@R13
+M=D
+@ponggame.new
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL73
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL73)
+@SP
+AM=M-1
+D=M
+@ponggame.0
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(ponggame.getinstance)
+@ponggame.0
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+(ponggame.run)
+@SP
+AM=M+1
+A=A-1
+M=0
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+M=D
+(ponggame.run$while_exp0)
+@THIS
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+A=M-1
+M=!M
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@ponggame.run$while_end0
+D;JNE
+(ponggame.run$while_exp1)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_EQ7
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ7)
+@THIS
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@ponggame.run$while_end1
+D;JNE
+@0
+D=A
+@R13
+M=D
+@keyboard.keypressed
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL74
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL74)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@bat.move
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL75
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL75)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@THIS
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@ponggame.moveball
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL76
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL76)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@ponggame.run$while_exp1
+0;JMP
+(ponggame.run$while_end1)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@130
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_EQ8
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ8)
+@SP
+AM=M-1
+D=M
+@ponggame.run$if_true0
+D;JNE
+@ponggame.run$if_false0
+0;JMP
+(ponggame.run$if_true0)
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@2
+D=A
+@R13
+M=D
+@bat.setdirection
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL77
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL77)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@ponggame.run$if_end0
+0;JMP
+(ponggame.run$if_false0)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@132
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_EQ9
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ9)
+@SP
+AM=M-1
+D=M
+@ponggame.run$if_true1
+D;JNE
+@ponggame.run$if_false1
+0;JMP
+(ponggame.run$if_true1)
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@bat.setdirection
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL78
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL78)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@ponggame.run$if_end1
+0;JMP
+(ponggame.run$if_false1)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@140
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_EQ10
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ10)
+@SP
+AM=M-1
+D=M
+@ponggame.run$if_true2
+D;JNE
+@ponggame.run$if_false2
+0;JMP
+(ponggame.run$if_true2)
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+A=A+1
+A=A+1
+M=D
+(ponggame.run$if_false2)
+(ponggame.run$if_end1)
+(ponggame.run$if_end0)
+(ponggame.run$while_exp2)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_EQ11
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ11)
+@SP
+A=M-1
+M=!M
+@THIS
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@ponggame.run$while_end2
+D;JNE
+@0
+D=A
+@R13
+M=D
+@keyboard.keypressed
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL79
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL79)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@bat.move
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL80
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL80)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@THIS
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@ponggame.moveball
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL81
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL81)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@ponggame.run$while_exp2
+0;JMP
+(ponggame.run$while_end2)
+@ponggame.run$while_exp0
+0;JMP
+(ponggame.run$while_end0)
+@THIS
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@ponggame.run$if_true3
+D;JNE
+@ponggame.run$if_false3
+0;JMP
+(ponggame.run$if_true3)
+@10
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@output.movecursor
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL82
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL82)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@9
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@string.new
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL83
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL83)
+@71
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@string.appendchar
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL84
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL84)
+@97
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@string.appendchar
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL85
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL85)
+@109
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@string.appendchar
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL86
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL86)
+@101
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@string.appendchar
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL87
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL87)
+@32
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@string.appendchar
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL88
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL88)
+@79
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@string.appendchar
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL89
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL89)
+@118
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@string.appendchar
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL90
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL90)
+@101
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@string.appendchar
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL91
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL91)
+@114
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@string.appendchar
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL92
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL92)
+@1
+D=A
+@R13
+M=D
+@output.printstring
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL93
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL93)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+(ponggame.run$if_false3)
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(ponggame.moveball)
+@5
+D=A
+(LOOP_ponggame.moveball)
+D=D-1
+@SP
+AM=M+1
+A=A-1
+M=0
+@LOOP_ponggame.moveball
+D;JGT
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+M=D
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@ball.move
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL94
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL94)
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+A=A+1
+M=D
+@THIS
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_GT3
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT3)
+@THIS
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+D=M
+@5
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_EQ12
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ12)
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@SP
+AM=M-1
+D=M
+@ponggame.moveball$if_true0
+D;JNE
+@ponggame.moveball$if_false0
+0;JMP
+(ponggame.moveball$if_true0)
+@THIS
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@bat.getleft
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL95
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL95)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+M=D
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@bat.getright
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL96
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL96)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+M=D
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@ball.getleft
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL97
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL97)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+M=D
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@ball.getright
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL98
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL98)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@THIS
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@4
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_EQ13
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ13)
+@SP
+AM=M-1
+D=M
+@ponggame.moveball$if_true1
+D;JNE
+@ponggame.moveball$if_false1
+0;JMP
+(ponggame.moveball$if_true1)
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+D=M
+@4
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_GT4
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT4)
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_LT11
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT11)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+A=A+1
+A=A+1
+M=D
+@THIS
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@ponggame.moveball$if_true2
+D;JNE
+@ponggame.moveball$if_false2
+0;JMP
+(ponggame.moveball$if_true2)
+@LCL
+D=M
+@4
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@10
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@RET_ADDRESS_LT12
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT12)
+@SP
+AM=M-1
+D=M
+@ponggame.moveball$if_true3
+D;JNE
+@ponggame.moveball$if_false3
+0;JMP
+(ponggame.moveball$if_true3)
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+A=M-1
+D=!M
+M=D+1
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@ponggame.moveball$if_end3
+0;JMP
+(ponggame.moveball$if_false3)
+@LCL
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@10
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@RET_ADDRESS_GT5
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT5)
+@SP
+AM=M-1
+D=M
+@ponggame.moveball$if_true4
+D;JNE
+@ponggame.moveball$if_false4
+0;JMP
+(ponggame.moveball$if_true4)
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+(ponggame.moveball$if_false4)
+(ponggame.moveball$if_end3)
+@THIS
+D=M
+@6
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+D=M
+@6
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@bat.setwidth
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL99
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL99)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@THIS
+D=M
+@4
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@22
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@7
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@output.movecursor
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL100
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL100)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@THIS
+D=M
+@4
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@output.printint
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL101
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL101)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+(ponggame.moveball$if_false2)
+(ponggame.moveball$if_false1)
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@ball.bounce
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL102
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL102)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+(ponggame.moveball$if_false0)
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(array.new)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_GT6
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT6)
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@array.new$if_true0
+D;JNE
+@array.new$if_false0
+0;JMP
+(array.new$if_true0)
+@2
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@sys.error
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL103
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL103)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+(array.new$if_false0)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@memory.alloc
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL104
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL104)
+@54
+0;JMP
+(array.dispose)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+M=D
+@THIS
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@memory.dealloc
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL105
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL105)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(keyboard.init)
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(keyboard.keypressed)
+@24576
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@memory.peek
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL106
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL106)
+@54
+0;JMP
+(keyboard.readchar)
+@SP
+A=M
+M=0
+AD=A+1
+M=0
+@SP
+M=D+1
+@SP
+M=M+1
+A=M-1
+M=0
+@1
+D=A
+@R13
+M=D
+@output.printchar
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL107
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL107)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+(keyboard.readchar$while_exp0)
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_EQ14
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ14)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_GT7
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT7)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@keyboard.readchar$while_end0
+D;JNE
+@0
+D=A
+@R13
+M=D
+@keyboard.keypressed
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL108
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL108)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_GT8
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT8)
+@SP
+AM=M-1
+D=M
+@keyboard.readchar$if_true0
+D;JNE
+@keyboard.readchar$if_false0
+0;JMP
+(keyboard.readchar$if_true0)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+M=D
+(keyboard.readchar$if_false0)
+@keyboard.readchar$while_exp0
+0;JMP
+(keyboard.readchar$while_end0)
+@0
+D=A
+@R13
+M=D
+@string.backspace
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL109
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL109)
+@1
+D=A
+@R13
+M=D
+@output.printchar
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL110
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL110)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@output.printchar
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL111
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL111)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+(keyboard.readline)
+@5
+D=A
+(LOOP_keyboard.readline)
+D=D-1
+@SP
+AM=M+1
+A=A-1
+M=0
+@LOOP_keyboard.readline
+D;JGT
+@80
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@string.new
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL112
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL112)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+M=D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@output.printstring
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL113
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL113)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@0
+D=A
+@R13
+M=D
+@string.newline
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL114
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL114)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+M=D
+@0
+D=A
+@R13
+M=D
+@string.backspace
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL115
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL115)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+M=D
+(keyboard.readline$while_exp0)
+@LCL
+D=M
+@4
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+A=M-1
+M=!M
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@keyboard.readline$while_end0
+D;JNE
+@0
+D=A
+@R13
+M=D
+@keyboard.readchar
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL116
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL116)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_EQ15
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ15)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@LCL
+D=M
+@4
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@keyboard.readline$if_true0
+D;JNE
+@keyboard.readline$if_false0
+0;JMP
+(keyboard.readline$if_true0)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_EQ16
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ16)
+@SP
+AM=M-1
+D=M
+@keyboard.readline$if_true1
+D;JNE
+@keyboard.readline$if_false1
+0;JMP
+(keyboard.readline$if_true1)
+@LCL
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@string.eraselastchar
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL117
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL117)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@keyboard.readline$if_end1
+0;JMP
+(keyboard.readline$if_false1)
+@LCL
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@string.appendchar
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL118
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL118)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+M=D
+(keyboard.readline$if_end1)
+(keyboard.readline$if_false0)
+@keyboard.readline$while_exp0
+0;JMP
+(keyboard.readline$while_end0)
+@LCL
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+(keyboard.readint)
+@SP
+A=M
+M=0
+AD=A+1
+M=0
+@SP
+M=D+1
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@keyboard.readline
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL119
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL119)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@string.intvalue
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL120
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL120)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@string.dispose
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL121
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL121)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+(math.init)
+@SP
+AM=M+1
+A=A-1
+M=0
+@16
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@array.new
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL122
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL122)
+@SP
+AM=M-1
+D=M
+@math.1
+M=D
+@16
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@array.new
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL123
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL123)
+@SP
+AM=M-1
+D=M
+@math.0
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@math.0
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+(math.init$while_exp0)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@15
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_LT13
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT13)
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@math.init$while_end0
+D;JNE
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@math.0
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@math.0
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@math.0
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+@math.init$while_exp0
+0;JMP
+(math.init$while_end0)
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(math.abs)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_LT14
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT14)
+@SP
+AM=M-1
+D=M
+@math.abs$if_true0
+D;JNE
+@math.abs$if_false0
+0;JMP
+(math.abs$if_true0)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+A=M-1
+D=!M
+M=D+1
+@SP
+AM=M-1
+D=M
+@ARG
+A=M
+M=D
+(math.abs$if_false0)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+(math.multiply)
+@5
+D=A
+(LOOP_math.multiply)
+D=D-1
+@SP
+AM=M+1
+A=A-1
+M=0
+@LOOP_math.multiply
+D;JGT
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_LT15
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT15)
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_GT9
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT9)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_GT10
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT10)
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_LT16
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT16)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@math.abs
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL124
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL124)
+@SP
+AM=M-1
+D=M
+@ARG
+A=M
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@math.abs
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL125
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL125)
+@SP
+AM=M-1
+D=M
+@ARG
+A=M+1
+M=D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_LT17
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT17)
+@SP
+AM=M-1
+D=M
+@math.multiply$if_true0
+D;JNE
+@math.multiply$if_false0
+0;JMP
+(math.multiply$if_true0)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@ARG
+A=M
+M=D
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@ARG
+A=M+1
+M=D
+(math.multiply$if_false0)
+(math.multiply$while_exp0)
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_LT18
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT18)
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@math.multiply$while_end0
+D;JNE
+@LCL
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@math.0
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_GT11
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT11)
+@SP
+AM=M-1
+D=M
+@math.multiply$if_true1
+D;JNE
+@math.multiply$if_false1
+0;JMP
+(math.multiply$if_true1)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@math.0
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+M=D
+(math.multiply$if_false1)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@ARG
+A=M
+M=D
+@LCL
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+M=D
+@math.multiply$while_exp0
+0;JMP
+(math.multiply$while_end0)
+@LCL
+D=M
+@4
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@math.multiply$if_true2
+D;JNE
+@math.multiply$if_false2
+0;JMP
+(math.multiply$if_true2)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+A=M-1
+D=!M
+M=D+1
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+(math.multiply$if_false2)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+(math.divide)
+@4
+D=A
+(LOOP_math.divide)
+D=D-1
+@SP
+AM=M+1
+A=A-1
+M=0
+@LOOP_math.divide
+D;JGT
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_EQ17
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ17)
+@SP
+AM=M-1
+D=M
+@math.divide$if_true0
+D;JNE
+@math.divide$if_false0
+0;JMP
+(math.divide$if_true0)
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@sys.error
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL126
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL126)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+(math.divide$if_false0)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_LT19
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT19)
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_GT12
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT12)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_GT13
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT13)
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_LT20
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT20)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@math.1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@math.abs
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL127
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL127)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@math.abs
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL128
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL128)
+@SP
+AM=M-1
+D=M
+@ARG
+A=M
+M=D
+(math.divide$while_exp0)
+@LCL
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+A=M-1
+M=!M
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@math.divide$while_end0
+D;JNE
+@32767
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@math.1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@math.1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_LT21
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT21)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+M=D
+@LCL
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@math.divide$if_true1
+D;JNE
+@math.divide$if_false1
+0;JMP
+(math.divide$if_true1)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@math.1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@math.1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@math.1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@math.1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_GT14
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT14)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+M=D
+@LCL
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@math.divide$if_true2
+D;JNE
+@math.divide$if_false2
+0;JMP
+(math.divide$if_true2)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+(math.divide$if_false2)
+(math.divide$if_false1)
+@math.divide$while_exp0
+0;JMP
+(math.divide$while_end0)
+(math.divide$while_exp1)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+A=M-1
+D=!M
+M=D+1
+@RET_ADDRESS_GT15
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT15)
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@math.divide$while_end1
+D;JNE
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@math.1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_GT16
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT16)
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@math.divide$if_true3
+D;JNE
+@math.divide$if_false3
+0;JMP
+(math.divide$if_true3)
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@math.0
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+M=D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@math.1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+AM=M-1
+D=M
+@ARG
+A=M
+M=D
+(math.divide$if_false3)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@math.divide$while_exp1
+0;JMP
+(math.divide$while_end1)
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@math.divide$if_true4
+D;JNE
+@math.divide$if_false4
+0;JMP
+(math.divide$if_true4)
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+A=M-1
+D=!M
+M=D+1
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+M=D
+(math.divide$if_false4)
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+(math.sqrt)
+@4
+D=A
+(LOOP_math.sqrt)
+D=D-1
+@SP
+AM=M+1
+A=A-1
+M=0
+@LOOP_math.sqrt
+D;JGT
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_LT22
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT22)
+@SP
+AM=M-1
+D=M
+@math.sqrt$if_true0
+D;JNE
+@math.sqrt$if_false0
+0;JMP
+(math.sqrt$if_true0)
+@4
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@sys.error
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL129
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL129)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+(math.sqrt$if_false0)
+@7
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+(math.sqrt$while_exp0)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+A=M-1
+D=!M
+M=D+1
+@RET_ADDRESS_GT17
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT17)
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@math.sqrt$while_end0
+D;JNE
+@LCL
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@math.0
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+M=D
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.multiply
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL130
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL130)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+M=D
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_GT18
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT18)
+@SP
+A=M-1
+M=!M
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_LT23
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT23)
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@SP
+AM=M-1
+D=M
+@math.sqrt$if_true1
+D;JNE
+@math.sqrt$if_false1
+0;JMP
+(math.sqrt$if_true1)
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+M=D
+(math.sqrt$if_false1)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@math.sqrt$while_exp0
+0;JMP
+(math.sqrt$while_end0)
+@LCL
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+(math.max)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_GT19
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT19)
+@SP
+AM=M-1
+D=M
+@math.max$if_true0
+D;JNE
+@math.max$if_false0
+0;JMP
+(math.max$if_true0)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@ARG
+A=M+1
+M=D
+(math.max$if_false0)
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+(math.min)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_LT24
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT24)
+@SP
+AM=M-1
+D=M
+@math.min$if_true0
+D;JNE
+@math.min$if_false0
+0;JMP
+(math.min$if_true0)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@ARG
+A=M+1
+M=D
+(math.min$if_false0)
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+(memory.init)
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+AM=M-1
+D=M
+@memory.0
+M=D
+@2048
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@memory.0
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@14334
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+@2049
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@memory.0
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@2050
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(memory.peek)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@memory.0
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+(memory.poke)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@memory.0
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(memory.alloc)
+@SP
+AM=M+1
+A=A-1
+M=0
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@RET_ADDRESS_LT25
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT25)
+@SP
+AM=M-1
+D=M
+@memory.alloc$if_true0
+D;JNE
+@memory.alloc$if_false0
+0;JMP
+(memory.alloc$if_true0)
+@5
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@sys.error
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL131
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL131)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+(memory.alloc$if_false0)
+@2048
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+(memory.alloc$while_exp0)
+@SP
+M=M+1
+A=M-1
+M=0
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_LT26
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT26)
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@memory.alloc$while_end0
+D;JNE
+@SP
+M=M+1
+A=M-1
+M=1
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@memory.alloc$while_exp0
+0;JMP
+(memory.alloc$while_end0)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@16379
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_GT20
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT20)
+@SP
+AM=M-1
+D=M
+@memory.alloc$if_true1
+D;JNE
+@memory.alloc$if_false1
+0;JMP
+(memory.alloc$if_true1)
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@sys.error
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL132
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL132)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+(memory.alloc$if_false1)
+@SP
+M=M+1
+A=M-1
+M=0
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@RET_ADDRESS_GT21
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT21)
+@SP
+AM=M-1
+D=M
+@memory.alloc$if_true2
+D;JNE
+@memory.alloc$if_false2
+0;JMP
+(memory.alloc$if_true2)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+M=M+1
+A=M-1
+M=0
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@2
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@RET_ADDRESS_EQ18
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ18)
+@SP
+AM=M-1
+D=M
+@memory.alloc$if_true3
+D;JNE
+@memory.alloc$if_false3
+0;JMP
+(memory.alloc$if_true3)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@4
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+@memory.alloc$if_end3
+0;JMP
+(memory.alloc$if_false3)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+M=M+1
+A=M-1
+M=1
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+(memory.alloc$if_end3)
+@SP
+M=M+1
+A=M-1
+M=1
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@2
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+(memory.alloc$if_false2)
+@SP
+M=M+1
+A=M-1
+M=0
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@54
+0;JMP
+(memory.dealloc)
+@SP
+A=M
+M=0
+AD=A+1
+M=0
+@SP
+M=D+1
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_EQ19
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ19)
+@SP
+AM=M-1
+D=M
+@memory.dealloc$if_true0
+D;JNE
+@memory.dealloc$if_false0
+0;JMP
+(memory.dealloc$if_true0)
+@SP
+M=M+1
+A=M-1
+M=0
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+M=M+1
+A=M-1
+M=1
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@2
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+@memory.dealloc$if_end0
+0;JMP
+(memory.dealloc$if_false0)
+@SP
+M=M+1
+A=M-1
+M=0
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+M=M+1
+A=M-1
+M=1
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+M=M+1
+A=M-1
+M=0
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@RET_ADDRESS_EQ20
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ20)
+@SP
+AM=M-1
+D=M
+@memory.dealloc$if_true1
+D;JNE
+@memory.dealloc$if_false1
+0;JMP
+(memory.dealloc$if_true1)
+@SP
+M=M+1
+A=M-1
+M=1
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+@memory.dealloc$if_end1
+0;JMP
+(memory.dealloc$if_false1)
+@SP
+M=M+1
+A=M-1
+M=1
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+M=M+1
+A=M-1
+M=1
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+(memory.dealloc$if_end1)
+(memory.dealloc$if_end0)
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(output.init)
+@16384
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@output.4
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@output.2
+M=D
+@32
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@output.1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+AM=M-1
+D=M
+@output.0
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@string.new
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL133
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL133)
+@SP
+AM=M-1
+D=M
+@output.3
+M=D
+@0
+D=A
+@R13
+M=D
+@output.initmap
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL134
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL134)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@0
+D=A
+@R13
+M=D
+@output.createshiftedmap
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL135
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL135)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(output.initmap)
+@127
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@array.new
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL136
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL136)
+@SP
+AM=M-1
+D=M
+@output.5
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL137
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL137)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@32
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL138
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL138)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@33
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL139
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL139)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@34
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@20
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL140
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL140)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@35
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@18
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@18
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@18
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@18
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@18
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@18
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL141
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL141)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@36
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL142
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL142)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@37
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@35
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@49
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL143
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL143)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@38
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL144
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL144)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@39
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL145
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL145)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@40
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL146
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL146)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@41
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL147
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL147)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@42
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL148
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL148)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@43
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL149
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL149)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@44
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL150
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL150)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@45
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL151
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL151)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@46
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL152
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL152)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@47
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@32
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL153
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL153)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@48
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL154
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL154)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@49
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@14
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@15
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL155
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL155)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@50
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL156
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL156)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@28
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL157
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL157)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@52
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@16
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@28
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@26
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@25
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@60
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL158
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL158)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@53
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@31
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL159
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL159)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@54
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@28
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@31
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL160
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL160)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@55
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@49
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL161
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL161)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@56
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL162
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL162)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@57
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@62
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@14
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL163
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL163)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@58
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL164
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL164)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@59
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL165
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL165)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@60
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL166
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL166)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@61
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL167
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL167)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@62
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL168
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL168)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@64
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@59
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@59
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@59
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL169
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL169)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL170
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL170)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@65
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL171
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL171)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@66
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@31
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@31
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@31
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL172
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL172)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@67
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@28
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@35
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@35
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@28
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL173
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL173)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@68
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@15
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@15
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL174
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL174)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@69
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@35
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@11
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@15
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@11
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@35
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL175
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL175)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@70
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@35
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@11
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@15
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@11
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL176
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL176)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@71
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@28
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@35
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@59
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@44
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL177
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL177)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@72
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL178
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL178)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@73
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL179
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL179)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@74
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@60
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@14
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL180
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL180)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@75
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@15
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL181
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL181)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@76
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@35
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL182
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL182)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@77
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@33
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL183
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL183)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@78
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@55
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@55
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@59
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@59
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL184
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL184)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@79
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL185
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL185)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@80
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@31
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@31
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL186
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL186)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@81
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@59
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL187
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL187)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@82
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@31
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@31
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL188
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL188)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@83
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@28
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL189
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL189)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@84
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@45
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL190
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL190)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@85
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL191
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL191)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@86
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL192
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL192)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@87
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@18
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL193
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL193)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@88
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL194
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL194)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@89
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL195
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL195)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@90
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@49
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@35
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL196
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL196)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@91
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL197
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL197)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@92
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=1
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@32
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL198
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL198)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@93
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL199
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL199)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@94
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@8
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@28
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL200
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL200)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@95
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL201
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL201)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@96
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL202
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL202)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@97
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@14
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL203
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL203)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@98
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@15
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL204
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL204)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@99
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL205
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL205)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@100
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@60
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL206
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL206)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@101
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL207
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL207)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@102
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@28
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@38
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@15
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@15
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL208
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL208)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@103
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@62
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL209
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL209)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@104
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@55
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL210
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL210)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@105
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@14
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL211
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL211)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@106
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@56
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL212
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL212)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@107
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@15
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@15
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL213
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL213)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@108
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@14
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL214
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL214)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@109
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@29
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@43
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@43
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@43
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@43
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL215
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL215)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@110
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@29
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL216
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL216)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@111
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL217
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL217)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@112
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@31
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL218
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL218)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@113
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@62
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL219
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL219)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@114
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@29
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@55
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@7
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL220
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL220)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@115
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL221
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL221)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@116
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@4
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@15
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@28
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL222
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL222)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@117
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@27
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL223
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL223)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@118
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL224
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL224)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@119
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@18
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL225
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL225)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@120
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL226
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL226)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@121
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@62
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@15
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL227
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL227)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@122
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL228
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL228)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@123
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@56
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@7
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@56
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL229
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL229)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@124
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL230
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL230)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@125
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@7
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@56
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@7
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL231
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL231)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@126
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@38
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@45
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@25
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@R13
+M=D
+@output.create
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL232
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL232)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(output.create)
+@SP
+AM=M+1
+A=A-1
+M=0
+@11
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@array.new
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL233
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL233)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@output.5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@ARG
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+@2
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@ARG
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@ARG
+D=M
+@4
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+@4
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@ARG
+D=M
+@5
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+@5
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@ARG
+D=M
+@6
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@ARG
+D=M
+@7
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+@7
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@ARG
+D=M
+@8
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+@8
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@ARG
+D=M
+@9
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+@9
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@ARG
+D=M
+@10
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+@10
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@ARG
+D=M
+@11
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(output.createshiftedmap)
+@4
+D=A
+(LOOP_output.createshiftedmap)
+D=D-1
+@SP
+AM=M+1
+A=A-1
+M=0
+@LOOP_output.createshiftedmap
+D;JGT
+@127
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@array.new
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL234
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL234)
+@SP
+AM=M-1
+D=M
+@output.6
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+M=D
+(output.createshiftedmap$while_exp0)
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@127
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_LT27
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT27)
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@output.createshiftedmap$while_end0
+D;JNE
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@output.5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@11
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@array.new
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL235
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL235)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+M=D
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@output.6
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+M=D
+(output.createshiftedmap$while_exp1)
+@LCL
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@11
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_LT28
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT28)
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@output.createshiftedmap$while_end1
+D;JNE
+@LCL
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@LCL
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@256
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.multiply
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL236
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL236)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+@LCL
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+M=D
+@output.createshiftedmap$while_exp1
+0;JMP
+(output.createshiftedmap$while_end1)
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_EQ21
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ21)
+@SP
+AM=M-1
+D=M
+@output.createshiftedmap$if_true0
+D;JNE
+@output.createshiftedmap$if_false0
+0;JMP
+(output.createshiftedmap$if_true0)
+@32
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+M=D
+@output.createshiftedmap$if_end0
+0;JMP
+(output.createshiftedmap$if_false0)
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+M=D
+(output.createshiftedmap$if_end0)
+@output.createshiftedmap$while_exp0
+0;JMP
+(output.createshiftedmap$while_end0)
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(output.getmap)
+@SP
+AM=M+1
+A=A-1
+M=0
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@32
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_LT29
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT29)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@126
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_GT22
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT22)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@SP
+AM=M-1
+D=M
+@output.getmap$if_true0
+D;JNE
+@output.getmap$if_false0
+0;JMP
+(output.getmap$if_true0)
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+AM=M-1
+D=M
+@ARG
+A=M
+M=D
+(output.getmap$if_false0)
+@output.2
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@output.getmap$if_true1
+D;JNE
+@output.getmap$if_false1
+0;JMP
+(output.getmap$if_true1)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@output.5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@output.getmap$if_end1
+0;JMP
+(output.getmap$if_false1)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@output.6
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+(output.getmap$if_end1)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+(output.drawchar)
+@4
+D=A
+(LOOP_output.drawchar)
+D=D-1
+@SP
+AM=M+1
+A=A-1
+M=0
+@LOOP_output.drawchar
+D;JGT
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@output.getmap
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL237
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL237)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+M=D
+@output.1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+(output.drawchar$while_exp0)
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@11
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_LT30
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT30)
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@output.drawchar$while_end0
+D;JNE
+@output.2
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@output.drawchar$if_true0
+D;JNE
+@output.drawchar$if_false0
+0;JMP
+(output.drawchar$if_true0)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@output.4
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@256
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+A=M-1
+D=!M
+M=D+1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+M=D
+@output.drawchar$if_end0
+0;JMP
+(output.drawchar$if_false0)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@output.4
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@255
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+M=D
+(output.drawchar$if_end0)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@output.4
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@32
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+M=D
+@output.drawchar$while_exp0
+0;JMP
+(output.drawchar$while_end0)
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(output.movecursor)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_LT31
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT31)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@22
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_GT23
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT23)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_LT32
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT32)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_GT24
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT24)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@SP
+AM=M-1
+D=M
+@output.movecursor$if_true0
+D;JNE
+@output.movecursor$if_false0
+0;JMP
+(output.movecursor$if_true0)
+@20
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@sys.error
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL238
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL238)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+(output.movecursor$if_false0)
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.divide
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL239
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL239)
+@SP
+AM=M-1
+D=M
+@output.0
+M=D
+@32
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@352
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.multiply
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL240
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL240)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@output.0
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@output.1
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@output.0
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.multiply
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL241
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL241)
+@RET_ADDRESS_EQ22
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ22)
+@SP
+AM=M-1
+D=M
+@output.2
+M=D
+@32
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@output.drawchar
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL242
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL242)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(output.printchar)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@0
+D=A
+@R13
+M=D
+@string.newline
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL243
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL243)
+@RET_ADDRESS_EQ23
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ23)
+@SP
+AM=M-1
+D=M
+@output.printchar$if_true0
+D;JNE
+@output.printchar$if_false0
+0;JMP
+(output.printchar$if_true0)
+@0
+D=A
+@R13
+M=D
+@output.println
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL244
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL244)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@output.printchar$if_end0
+0;JMP
+(output.printchar$if_false0)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@0
+D=A
+@R13
+M=D
+@string.backspace
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL245
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL245)
+@RET_ADDRESS_EQ24
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ24)
+@SP
+AM=M-1
+D=M
+@output.printchar$if_true1
+D;JNE
+@output.printchar$if_false1
+0;JMP
+(output.printchar$if_true1)
+@0
+D=A
+@R13
+M=D
+@output.backspace
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL246
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL246)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@output.printchar$if_end1
+0;JMP
+(output.printchar$if_false1)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@output.drawchar
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL247
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL247)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@output.2
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@output.printchar$if_true2
+D;JNE
+@output.printchar$if_false2
+0;JMP
+(output.printchar$if_true2)
+@output.0
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@output.0
+M=D
+@output.1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@output.1
+M=D
+(output.printchar$if_false2)
+@output.0
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@32
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_EQ25
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ25)
+@SP
+AM=M-1
+D=M
+@output.printchar$if_true3
+D;JNE
+@output.printchar$if_false3
+0;JMP
+(output.printchar$if_true3)
+@0
+D=A
+@R13
+M=D
+@output.println
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL248
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL248)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@output.printchar$if_end3
+0;JMP
+(output.printchar$if_false3)
+@output.2
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@output.2
+M=D
+(output.printchar$if_end3)
+(output.printchar$if_end1)
+(output.printchar$if_end0)
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(output.printstring)
+@SP
+A=M
+M=0
+AD=A+1
+M=0
+@SP
+M=D+1
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@string.length
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL249
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL249)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+M=D
+(output.printstring$while_exp0)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_LT33
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT33)
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@output.printstring$while_end0
+D;JNE
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@string.charat
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL250
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL250)
+@1
+D=A
+@R13
+M=D
+@output.printchar
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL251
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL251)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@output.printstring$while_exp0
+0;JMP
+(output.printstring$while_end0)
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(output.printint)
+@output.3
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@string.setint
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL252
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL252)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@output.3
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@output.printstring
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL253
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL253)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(output.println)
+@output.1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@352
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@output.0
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+AM=M-1
+D=M
+@output.1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+AM=M-1
+D=M
+@output.0
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@output.2
+M=D
+@output.1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@8128
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_EQ26
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ26)
+@SP
+AM=M-1
+D=M
+@output.println$if_true0
+D;JNE
+@output.println$if_false0
+0;JMP
+(output.println$if_true0)
+@32
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@output.1
+M=D
+(output.println$if_false0)
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(output.backspace)
+@output.2
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@output.backspace$if_true0
+D;JNE
+@output.backspace$if_false0
+0;JMP
+(output.backspace$if_true0)
+@output.0
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_GT25
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT25)
+@SP
+AM=M-1
+D=M
+@output.backspace$if_true1
+D;JNE
+@output.backspace$if_false1
+0;JMP
+(output.backspace$if_true1)
+@output.0
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+AM=M-1
+D=M
+@output.0
+M=D
+@output.1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+AM=M-1
+D=M
+@output.1
+M=D
+@output.backspace$if_end1
+0;JMP
+(output.backspace$if_false1)
+@31
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@output.0
+M=D
+@output.1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@32
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_EQ27
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ27)
+@SP
+AM=M-1
+D=M
+@output.backspace$if_true2
+D;JNE
+@output.backspace$if_false2
+0;JMP
+(output.backspace$if_true2)
+@8128
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@output.1
+M=D
+(output.backspace$if_false2)
+@output.1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@321
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+AM=M-1
+D=M
+@output.1
+M=D
+(output.backspace$if_end1)
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+AM=M-1
+D=M
+@output.2
+M=D
+@output.backspace$if_end0
+0;JMP
+(output.backspace$if_false0)
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@output.2
+M=D
+(output.backspace$if_end0)
+@32
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@output.drawchar
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL254
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL254)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(screen.init)
+@SP
+AM=M+1
+A=A-1
+M=0
+@16384
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@screen.1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@screen.2
+M=D
+@17
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@array.new
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL255
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL255)
+@SP
+AM=M-1
+D=M
+@screen.0
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@screen.0
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+(screen.init$while_exp0)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@16
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_LT34
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT34)
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@screen.init$while_end0
+D;JNE
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@screen.0
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@screen.0
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@screen.0
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+@screen.init$while_exp0
+0;JMP
+(screen.init$while_end0)
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(screen.clearscreen)
+@SP
+AM=M+1
+A=A-1
+M=0
+(screen.clearscreen$while_exp0)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@8192
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_LT35
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT35)
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@screen.clearscreen$while_end0
+D;JNE
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@screen.1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@screen.clearscreen$while_exp0
+0;JMP
+(screen.clearscreen$while_end0)
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(screen.updatelocation)
+@screen.2
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@screen.updatelocation$if_true0
+D;JNE
+@screen.updatelocation$if_false0
+0;JMP
+(screen.updatelocation$if_true0)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@screen.1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@screen.1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+@screen.updatelocation$if_end0
+0;JMP
+(screen.updatelocation$if_false0)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@screen.1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@screen.1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+(screen.updatelocation$if_end0)
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(screen.setcolor)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@screen.2
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(screen.drawpixel)
+@3
+D=A
+(LOOP_screen.drawpixel)
+D=D-1
+@SP
+AM=M+1
+A=A-1
+M=0
+@LOOP_screen.drawpixel
+D;JGT
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_LT36
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT36)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@511
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_GT26
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT26)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_LT37
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT37)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@255
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_GT27
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT27)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@SP
+AM=M-1
+D=M
+@screen.drawpixel$if_true0
+D;JNE
+@screen.drawpixel$if_false0
+0;JMP
+(screen.drawpixel$if_true0)
+@7
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@sys.error
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL256
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL256)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+(screen.drawpixel$if_false0)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@16
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.divide
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL257
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL257)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@16
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.multiply
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL258
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL258)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@32
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.multiply
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL259
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL259)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+M=D
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@screen.0
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@screen.updatelocation
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL260
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL260)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(screen.drawconditional)
+@ARG
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@screen.drawconditional$if_true0
+D;JNE
+@screen.drawconditional$if_false0
+0;JMP
+(screen.drawconditional$if_true0)
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@screen.drawpixel
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL261
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL261)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@screen.drawconditional$if_end0
+0;JMP
+(screen.drawconditional$if_false0)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@screen.drawpixel
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL262
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL262)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+(screen.drawconditional$if_end0)
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(screen.drawline)
+@11
+D=A
+(LOOP_screen.drawline)
+D=D-1
+@SP
+AM=M+1
+A=A-1
+M=0
+@LOOP_screen.drawline
+D;JGT
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_LT38
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT38)
+@ARG
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@511
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_GT28
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT28)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_LT39
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT39)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@ARG
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@255
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_GT29
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT29)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@SP
+AM=M-1
+D=M
+@screen.drawline$if_true0
+D;JNE
+@screen.drawline$if_false0
+0;JMP
+(screen.drawline$if_true0)
+@8
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@sys.error
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL263
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL263)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+(screen.drawline$if_false0)
+@ARG
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@1
+D=A
+@R13
+M=D
+@math.abs
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL264
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL264)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+M=D
+@ARG
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@1
+D=A
+@R13
+M=D
+@math.abs
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL265
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL265)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+M=D
+@LCL
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_LT40
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT40)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@LCL
+D=M
+@6
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_LT41
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT41)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@LCL
+D=M
+@6
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+A=M-1
+M=!M
+@ARG
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_LT42
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT42)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@SP
+AM=M-1
+D=M
+@screen.drawline$if_true1
+D;JNE
+@screen.drawline$if_false1
+0;JMP
+(screen.drawline$if_true1)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@ARG
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@ARG
+A=M
+M=D
+@LCL
+D=M
+@4
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@ARG
+A=M+1
+A=A+1
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@ARG
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@ARG
+A=M+1
+M=D
+@LCL
+D=M
+@4
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@ARG
+A=M+1
+A=A+1
+A=A+1
+M=D
+(screen.drawline$if_false1)
+@LCL
+D=M
+@6
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@screen.drawline$if_true2
+D;JNE
+@screen.drawline$if_false2
+0;JMP
+(screen.drawline$if_true2)
+@LCL
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+M=D
+@LCL
+D=M
+@4
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+M=D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@ARG
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+D=M
+@8
+D=D+A
+@R13
+M=D
+@SP
+AM=M-1
+D=M
+@R13
+A=M
+M=D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_GT30
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT30)
+@LCL
+D=M
+@7
+D=D+A
+@R13
+M=D
+@SP
+AM=M-1
+D=M
+@R13
+A=M
+M=D
+@screen.drawline$if_end2
+0;JMP
+(screen.drawline$if_false2)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@ARG
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+D=M
+@8
+D=D+A
+@R13
+M=D
+@SP
+AM=M-1
+D=M
+@R13
+A=M
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_GT31
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT31)
+@LCL
+D=M
+@7
+D=D+A
+@R13
+M=D
+@SP
+AM=M-1
+D=M
+@R13
+A=M
+M=D
+(screen.drawline$if_end2)
+@2
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.multiply
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL266
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL266)
+@LCL
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@2
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.multiply
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL267
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL267)
+@LCL
+D=M
+@9
+D=D+A
+@R13
+M=D
+@SP
+AM=M-1
+D=M
+@R13
+A=M
+M=D
+@2
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@2
+D=A
+@R13
+M=D
+@math.multiply
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL268
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL268)
+@LCL
+D=M
+@10
+D=D+A
+@R13
+M=D
+@SP
+AM=M-1
+D=M
+@R13
+A=M
+M=D
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+D=M
+@6
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@R13
+M=D
+@screen.drawconditional
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL269
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL269)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+(screen.drawline$while_exp0)
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+D=M
+@8
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_LT43
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT43)
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@screen.drawline$while_end0
+D;JNE
+@LCL
+D=M
+@5
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_LT44
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT44)
+@SP
+AM=M-1
+D=M
+@screen.drawline$if_true3
+D;JNE
+@screen.drawline$if_false3
+0;JMP
+(screen.drawline$if_true3)
+@LCL
+D=M
+@5
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+D=M
+@9
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@screen.drawline$if_end3
+0;JMP
+(screen.drawline$if_false3)
+@LCL
+D=M
+@5
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+D=M
+@10
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@LCL
+D=M
+@7
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@screen.drawline$if_true4
+D;JNE
+@screen.drawline$if_false4
+0;JMP
+(screen.drawline$if_true4)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@screen.drawline$if_end4
+0;JMP
+(screen.drawline$if_false4)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+(screen.drawline$if_end4)
+(screen.drawline$if_end3)
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+M=D
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+D=M
+@6
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@R13
+M=D
+@screen.drawconditional
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL270
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL270)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@screen.drawline$while_exp0
+0;JMP
+(screen.drawline$while_end0)
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(screen.drawrectangle)
+@9
+D=A
+(LOOP_screen.drawrectangle)
+D=D-1
+@SP
+AM=M+1
+A=A-1
+M=0
+@LOOP_screen.drawrectangle
+D;JGT
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_GT32
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT32)
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_GT33
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT33)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_LT45
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT45)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@ARG
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@511
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_GT34
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT34)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_LT46
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT46)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@ARG
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@255
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_GT35
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT35)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@SP
+AM=M-1
+D=M
+@screen.drawrectangle$if_true0
+D;JNE
+@screen.drawrectangle$if_false0
+0;JMP
+(screen.drawrectangle$if_true0)
+@9
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@sys.error
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL271
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL271)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+(screen.drawrectangle$if_false0)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@16
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.divide
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL272
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL272)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+M=D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@16
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.multiply
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL273
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL273)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@LCL
+D=M
+@7
+D=D+A
+@R13
+M=D
+@SP
+AM=M-1
+D=M
+@R13
+A=M
+M=D
+@ARG
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@16
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.divide
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL274
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL274)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@ARG
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+D=M
+@4
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@16
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.multiply
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL275
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL275)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@LCL
+D=M
+@8
+D=D+A
+@R13
+M=D
+@SP
+AM=M-1
+D=M
+@R13
+A=M
+M=D
+@LCL
+D=M
+@7
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@screen.0
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@LCL
+D=M
+@8
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@screen.0
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@32
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.multiply
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL276
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL276)
+@LCL
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@LCL
+D=M
+@4
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+M=D
+(screen.drawrectangle$while_exp0)
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_GT36
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT36)
+@SP
+A=M-1
+M=!M
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@screen.drawrectangle$while_end0
+D;JNE
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+M=D
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_EQ28
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ28)
+@SP
+AM=M-1
+D=M
+@screen.drawrectangle$if_true1
+D;JNE
+@screen.drawrectangle$if_false1
+0;JMP
+(screen.drawrectangle$if_true1)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+D=M
+@5
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+D=M
+@6
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@2
+D=A
+@R13
+M=D
+@screen.updatelocation
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL277
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL277)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@screen.drawrectangle$if_end1
+0;JMP
+(screen.drawrectangle$if_false1)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+D=M
+@6
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@screen.updatelocation
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL278
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL278)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+(screen.drawrectangle$while_exp1)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_LT47
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT47)
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@screen.drawrectangle$while_end1
+D;JNE
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+A=M-1
+D=!M
+M=D+1
+@2
+D=A
+@R13
+M=D
+@screen.updatelocation
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL279
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL279)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@screen.drawrectangle$while_exp1
+0;JMP
+(screen.drawrectangle$while_end1)
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+D=M
+@5
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@screen.updatelocation
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL280
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL280)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+(screen.drawrectangle$if_end1)
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@ARG
+A=M+1
+M=D
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@32
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@screen.drawrectangle$while_exp0
+0;JMP
+(screen.drawrectangle$while_end0)
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(screen.drawhorizontal)
+@11
+D=A
+(LOOP_screen.drawhorizontal)
+D=D-1
+@SP
+AM=M+1
+A=A-1
+M=0
+@LOOP_screen.drawhorizontal
+D;JGT
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.min
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL281
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL281)
+@LCL
+D=M
+@7
+D=D+A
+@R13
+M=D
+@SP
+AM=M-1
+D=M
+@R13
+A=M
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.max
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL282
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL282)
+@LCL
+D=M
+@8
+D=D+A
+@R13
+M=D
+@SP
+AM=M-1
+D=M
+@R13
+A=M
+M=D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+A=M-1
+D=!M
+M=D+1
+@RET_ADDRESS_GT37
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT37)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@256
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_LT48
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT48)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@LCL
+D=M
+@7
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@512
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_LT49
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT49)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@LCL
+D=M
+@8
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+A=M-1
+D=!M
+M=D+1
+@RET_ADDRESS_GT38
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT38)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@SP
+AM=M-1
+D=M
+@screen.drawhorizontal$if_true0
+D;JNE
+@screen.drawhorizontal$if_false0
+0;JMP
+(screen.drawhorizontal$if_true0)
+@LCL
+D=M
+@7
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@2
+D=A
+@R13
+M=D
+@math.max
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL283
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL283)
+@LCL
+D=M
+@7
+D=D+A
+@R13
+M=D
+@SP
+AM=M-1
+D=M
+@R13
+A=M
+M=D
+@LCL
+D=M
+@8
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@511
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.min
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL284
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL284)
+@LCL
+D=M
+@8
+D=D+A
+@R13
+M=D
+@SP
+AM=M-1
+D=M
+@R13
+A=M
+M=D
+@LCL
+D=M
+@7
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@16
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.divide
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL285
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL285)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+M=D
+@LCL
+D=M
+@7
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@16
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.multiply
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL286
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL286)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@LCL
+D=M
+@9
+D=D+A
+@R13
+M=D
+@SP
+AM=M-1
+D=M
+@R13
+A=M
+M=D
+@LCL
+D=M
+@8
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@16
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.divide
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL287
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL287)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+M=D
+@LCL
+D=M
+@8
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@16
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.multiply
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL288
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL288)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@LCL
+D=M
+@10
+D=D+A
+@R13
+M=D
+@SP
+AM=M-1
+D=M
+@R13
+A=M
+M=D
+@LCL
+D=M
+@9
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@screen.0
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@LCL
+D=M
+@10
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@screen.0
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@32
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.multiply
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL289
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL289)
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+D=M
+@6
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+M=D
+@LCL
+D=M
+@6
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_EQ29
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ29)
+@SP
+AM=M-1
+D=M
+@screen.drawhorizontal$if_true1
+D;JNE
+@screen.drawhorizontal$if_false1
+0;JMP
+(screen.drawhorizontal$if_true1)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+D=M
+@4
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+D=M
+@5
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@2
+D=A
+@R13
+M=D
+@screen.updatelocation
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL290
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL290)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@screen.drawhorizontal$if_end1
+0;JMP
+(screen.drawhorizontal$if_false1)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+D=M
+@5
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@screen.updatelocation
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL291
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL291)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+(screen.drawhorizontal$while_exp0)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_LT50
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT50)
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@screen.drawhorizontal$while_end0
+D;JNE
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+A=M-1
+D=!M
+M=D+1
+@2
+D=A
+@R13
+M=D
+@screen.updatelocation
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL292
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL292)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@screen.drawhorizontal$while_exp0
+0;JMP
+(screen.drawhorizontal$while_end0)
+@LCL
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+D=M
+@4
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@screen.updatelocation
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL293
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL293)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+(screen.drawhorizontal$if_end1)
+(screen.drawhorizontal$if_false0)
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(screen.drawsymetric)
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@3
+D=A
+@R13
+M=D
+@screen.drawhorizontal
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL294
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL294)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@3
+D=A
+@R13
+M=D
+@screen.drawhorizontal
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL295
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL295)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@3
+D=A
+@R13
+M=D
+@screen.drawhorizontal
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL296
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL296)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@3
+D=A
+@R13
+M=D
+@screen.drawhorizontal
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL297
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL297)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(screen.drawcircle)
+@3
+D=A
+(LOOP_screen.drawcircle)
+D=D-1
+@SP
+AM=M+1
+A=A-1
+M=0
+@LOOP_screen.drawcircle
+D;JGT
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_LT51
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT51)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@511
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_GT39
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT39)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_LT52
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT52)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@255
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_GT40
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT40)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@SP
+AM=M-1
+D=M
+@screen.drawcircle$if_true0
+D;JNE
+@screen.drawcircle$if_false0
+0;JMP
+(screen.drawcircle$if_true0)
+@12
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@sys.error
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL298
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL298)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+(screen.drawcircle$if_false0)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_LT53
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT53)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@511
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_GT41
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT41)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_LT54
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT54)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@255
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_GT42
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT42)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@SP
+AM=M-1
+D=M
+@screen.drawcircle$if_true1
+D;JNE
+@screen.drawcircle$if_false1
+0;JMP
+(screen.drawcircle$if_true1)
+@13
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@sys.error
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL299
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL299)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+(screen.drawcircle$if_false1)
+@ARG
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@ARG
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+M=D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@4
+D=A
+@R13
+M=D
+@screen.drawsymetric
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL300
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL300)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+(screen.drawcircle$while_exp0)
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_GT43
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT43)
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@screen.drawcircle$while_end0
+D;JNE
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_LT55
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT55)
+@SP
+AM=M-1
+D=M
+@screen.drawcircle$if_true2
+D;JNE
+@screen.drawcircle$if_false2
+0;JMP
+(screen.drawcircle$if_true2)
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.multiply
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL301
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL301)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+M=D
+@screen.drawcircle$if_end2
+0;JMP
+(screen.drawcircle$if_false2)
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@2
+D=A
+@R13
+M=D
+@math.multiply
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL302
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL302)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@5
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+M=D
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+M=D
+(screen.drawcircle$if_end2)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@4
+D=A
+@R13
+M=D
+@screen.drawsymetric
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL303
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL303)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@screen.drawcircle$while_exp0
+0;JMP
+(screen.drawcircle$while_end0)
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(string.new)
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@memory.alloc
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL304
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL304)
+@SP
+AM=M-1
+D=M
+@THIS
+M=D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_LT56
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT56)
+@SP
+AM=M-1
+D=M
+@string.new$if_true0
+D;JNE
+@string.new$if_false0
+0;JMP
+(string.new$if_true0)
+@14
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@sys.error
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL305
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL305)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+(string.new$if_false0)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_GT44
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT44)
+@SP
+AM=M-1
+D=M
+@string.new$if_true1
+D;JNE
+@string.new$if_false1
+0;JMP
+(string.new$if_true1)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@array.new
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL306
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL306)
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+M=D
+(string.new$if_false1)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+A=M
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+A=A+1
+M=D
+@THIS
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+(string.dispose)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+M=D
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_GT45
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT45)
+@SP
+AM=M-1
+D=M
+@string.dispose$if_true0
+D;JNE
+@string.dispose$if_false0
+0;JMP
+(string.dispose$if_true0)
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@array.dispose
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL307
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL307)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+(string.dispose$if_false0)
+@THIS
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@memory.dealloc
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL308
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL308)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(string.length)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+M=D
+@THIS
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+(string.charat)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_LT57
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT57)
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_GT46
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT46)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_EQ30
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ30)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@SP
+AM=M-1
+D=M
+@string.charat$if_true0
+D;JNE
+@string.charat$if_false0
+0;JMP
+(string.charat$if_true0)
+@15
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@sys.error
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL309
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL309)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+(string.charat$if_false0)
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+(string.setcharat)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_LT58
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT58)
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_GT47
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT47)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_EQ31
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ31)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@SP
+AM=M-1
+D=M
+@string.setcharat$if_true0
+D;JNE
+@string.setcharat$if_false0
+0;JMP
+(string.setcharat$if_true0)
+@16
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@sys.error
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL310
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL310)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+(string.setcharat$if_false0)
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@ARG
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(string.appendchar)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+M=D
+@THIS
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_EQ32
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ32)
+@SP
+AM=M-1
+D=M
+@string.appendchar$if_true0
+D;JNE
+@string.appendchar$if_false0
+0;JMP
+(string.appendchar$if_true0)
+@17
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@sys.error
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL311
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL311)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+(string.appendchar$if_false0)
+@THIS
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+@THIS
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+A=A+1
+M=D
+@THIS
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+(string.eraselastchar)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+M=D
+@THIS
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_EQ33
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ33)
+@SP
+AM=M-1
+D=M
+@string.eraselastchar$if_true0
+D;JNE
+@string.eraselastchar$if_false0
+0;JMP
+(string.eraselastchar$if_true0)
+@18
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@sys.error
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL312
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL312)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+(string.eraselastchar$if_false0)
+@THIS
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+A=A+1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(string.intvalue)
+@5
+D=A
+(LOOP_string.intvalue)
+D=D-1
+@SP
+AM=M+1
+A=A-1
+M=0
+@LOOP_string.intvalue
+D;JGT
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+M=D
+@THIS
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_EQ34
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ34)
+@SP
+AM=M-1
+D=M
+@string.intvalue$if_true0
+D;JNE
+@string.intvalue$if_false0
+0;JMP
+(string.intvalue$if_true0)
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(string.intvalue$if_false0)
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@45
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_EQ35
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ35)
+@SP
+AM=M-1
+D=M
+@string.intvalue$if_true1
+D;JNE
+@string.intvalue$if_false1
+0;JMP
+(string.intvalue$if_true1)
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+(string.intvalue$if_false1)
+(string.intvalue$while_exp0)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_LT59
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT59)
+@LCL
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@string.intvalue$while_end0
+D;JNE
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+M=D
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_LT60
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT60)
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@9
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_GT48
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT48)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+M=D
+@LCL
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@string.intvalue$if_true2
+D;JNE
+@string.intvalue$if_false2
+0;JMP
+(string.intvalue$if_true2)
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@10
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.multiply
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL313
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL313)
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+(string.intvalue$if_false2)
+@string.intvalue$while_exp0
+0;JMP
+(string.intvalue$while_end0)
+@LCL
+D=M
+@4
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@string.intvalue$if_true3
+D;JNE
+@string.intvalue$if_false3
+0;JMP
+(string.intvalue$if_true3)
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+A=M-1
+D=!M
+M=D+1
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+M=D
+(string.intvalue$if_false3)
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+(string.setint)
+@4
+D=A
+(LOOP_string.setint)
+D=D-1
+@SP
+AM=M+1
+A=A-1
+M=0
+@LOOP_string.setint
+D;JGT
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THIS
+M=D
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_EQ36
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ36)
+@SP
+AM=M-1
+D=M
+@string.setint$if_true0
+D;JNE
+@string.setint$if_false0
+0;JMP
+(string.setint$if_true0)
+@19
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@sys.error
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL314
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL314)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+(string.setint$if_false0)
+@6
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@array.new
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL315
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL315)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_LT61
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT61)
+@SP
+AM=M-1
+D=M
+@string.setint$if_true1
+D;JNE
+@string.setint$if_false1
+0;JMP
+(string.setint$if_true1)
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+A=A+1
+A=A+1
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+A=M-1
+D=!M
+M=D+1
+@SP
+AM=M-1
+D=M
+@ARG
+A=M+1
+M=D
+(string.setint$if_false1)
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+M=D
+(string.setint$while_exp0)
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_GT49
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT49)
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@string.setint$while_end0
+D;JNE
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@10
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.divide
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL316
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL316)
+@SP
+AM=M-1
+D=M
+@LCL
+A=M+1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@48
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@ARG
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@10
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@math.multiply
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL317
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL317)
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@LCL
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@ARG
+A=M+1
+M=D
+@string.setint$while_exp0
+0;JMP
+(string.setint$while_end0)
+@LCL
+D=M
+@3
+A=D+A
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@string.setint$if_true2
+D;JNE
+@string.setint$if_false2
+0;JMP
+(string.setint$if_true2)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@45
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+(string.setint$if_false2)
+@THIS
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_LT62
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT62)
+@SP
+AM=M-1
+D=M
+@string.setint$if_true3
+D;JNE
+@string.setint$if_false3
+0;JMP
+(string.setint$if_true3)
+@19
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@sys.error
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL318
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL318)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+(string.setint$if_false3)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_EQ37
+D=A
+@6
+0;JMP
+(RET_ADDRESS_EQ37)
+@SP
+AM=M-1
+D=M
+@string.setint$if_true4
+D;JNE
+@string.setint$if_false4
+0;JMP
+(string.setint$if_true4)
+@SP
+M=M+1
+A=M-1
+M=0
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@48
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+A=A+1
+M=D
+@string.setint$if_end4
+0;JMP
+(string.setint$if_false4)
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+A=A+1
+M=D
+(string.setint$while_exp1)
+@THIS
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@RET_ADDRESS_LT63
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT63)
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@string.setint$while_end1
+D;JNE
+@THIS
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+A=M+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@THIS
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@THAT
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+M=D
+@R5
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@THAT
+A=M
+M=D
+@THIS
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@SP
+AM=M-1
+D=M
+@THIS
+A=M+1
+A=A+1
+M=D
+@string.setint$while_exp1
+0;JMP
+(string.setint$while_end1)
+(string.setint$if_end4)
+@LCL
+A=M+1
+A=A+1
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@array.dispose
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL319
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL319)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(string.newline)
+@128
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+(string.backspace)
+@129
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+(string.doublequote)
+@34
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+(sys.init)
+@0
+D=A
+@R13
+M=D
+@memory.init
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL320
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL320)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@0
+D=A
+@R13
+M=D
+@math.init
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL321
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL321)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@0
+D=A
+@R13
+M=D
+@screen.init
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL322
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL322)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@0
+D=A
+@R13
+M=D
+@output.init
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL323
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL323)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@0
+D=A
+@R13
+M=D
+@keyboard.init
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL324
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL324)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@0
+D=A
+@R13
+M=D
+@main.main
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL325
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL325)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@0
+D=A
+@R13
+M=D
+@sys.halt
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL326
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL326)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+(sys.halt)
+(sys.halt$while_exp0)
+@SP
+M=M+1
+A=M-1
+M=0
+@SP
+A=M-1
+M=!M
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@sys.halt$while_end0
+D;JNE
+@sys.halt$while_exp0
+0;JMP
+(sys.halt$while_end0)
+(sys.wait)
+@SP
+AM=M+1
+A=A-1
+M=0
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_LT64
+D=A
+@38
+0;JMP
+(RET_ADDRESS_LT64)
+@SP
+AM=M-1
+D=M
+@sys.wait$if_true0
+D;JNE
+@sys.wait$if_false0
+0;JMP
+(sys.wait$if_true0)
+@SP
+M=M+1
+A=M-1
+M=1
+@1
+D=A
+@R13
+M=D
+@sys.error
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL327
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL327)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+(sys.wait$if_false0)
+(sys.wait$while_exp0)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_GT50
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT50)
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@sys.wait$while_end0
+D;JNE
+@50
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+(sys.wait$while_exp1)
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=0
+@RET_ADDRESS_GT51
+D=A
+@22
+0;JMP
+(RET_ADDRESS_GT51)
+@SP
+A=M-1
+M=!M
+@SP
+AM=M-1
+D=M
+@sys.wait$while_end1
+D;JNE
+@LCL
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+AM=M-1
+D=M
+@LCL
+A=M
+M=D
+@sys.wait$while_exp1
+0;JMP
+(sys.wait$while_end1)
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@SP
+M=M+1
+A=M-1
+M=1
+@SP
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@SP
+AM=M-1
+D=M
+@ARG
+A=M
+M=D
+@sys.wait$while_exp0
+0;JMP
+(sys.wait$while_end0)
+@SP
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+(sys.error)
+@3
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@string.new
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL328
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL328)
+@69
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@string.appendchar
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL329
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL329)
+@82
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@string.appendchar
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL330
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL330)
+@82
+D=A
+@SP
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@R13
+M=D
+@string.appendchar
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL331
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL331)
+@1
+D=A
+@R13
+M=D
+@output.printstring
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL332
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL332)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@ARG
+A=M
+D=M
+@SP
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@R13
+M=D
+@output.printint
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL333
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL333)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
+@0
+D=A
+@R13
+M=D
+@sys.halt
+D=A
+@R14
+M=D
+@RET_ADDRESS_CALL334
+D=A
+@95
+0;JMP
+(RET_ADDRESS_CALL334)
+@SP
+AM=M-1
+D=M
+@R5
+M=D
diff --git a/06/pong/PongL.asm b/6/pong/PongL.asm
similarity index 82%
rename from 06/pong/PongL.asm
rename to 6/pong/PongL.asm
index 17c1044..9d34e5b 100644
--- a/06/pong/PongL.asm
+++ b/6/pong/PongL.asm
@@ -1,27490 +1,27490 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/06/pong/PongL.asm
-
-// Symbol-less version of the Pong.asm program.
-
-@256
-D=A
-@0
-M=D
-@133
-0;JMP
-@15
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-D=M-D
-M=0
-@19
-D;JNE
-@0
-A=M-1
-M=-1
-@15
-A=M
-0;JMP
-@15
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-D=M-D
-M=0
-@35
-D;JLE
-@0
-A=M-1
-M=-1
-@15
-A=M
-0;JMP
-@15
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-D=M-D
-M=0
-@51
-D;JGE
-@0
-A=M-1
-M=-1
-@15
-A=M
-0;JMP
-@5
-D=A
-@1
-A=M-D
-D=M
-@13
-M=D
-@0
-AM=M-1
-D=M
-@2
-A=M
-M=D
-D=A
-@0
-M=D+1
-@1
-D=M
-@14
-AM=D-1
-D=M
-@4
-M=D
-@14
-AM=M-1
-D=M
-@3
-M=D
-@14
-AM=M-1
-D=M
-@2
-M=D
-@14
-AM=M-1
-D=M
-@1
-M=D
-@13
-A=M
-0;JMP
-@0
-A=M
-M=D
-@1
-D=M
-@0
-AM=M+1
-M=D
-@2
-D=M
-@0
-AM=M+1
-M=D
-@3
-D=M
-@0
-AM=M+1
-M=D
-@4
-D=M
-@0
-AM=M+1
-M=D
-@4
-D=A
-@13
-D=D+M
-@0
-D=M-D
-@2
-M=D
-@0
-MD=M+1
-@1
-M=D
-@14
-A=M
-0;JMP
-@0
-D=A
-@13
-M=D
-@27058
-D=A
-@14
-M=D
-@145
-D=A
-@95
-0;JMP
-@15
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@8643
-D=A
-@14
-M=D
-@163
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@3
-M=D
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@3
-A=M
-M=D
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@3
-A=M+1
-M=D
-@2
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-D=M
-@10
-D=D+A
-@13
-M=D
-@0
-AM=M-1
-D=M
-@13
-A=M
-M=D
-@2
-D=M
-@3
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@3
-D=M
-@11
-D=D+A
-@13
-M=D
-@0
-AM=M-1
-D=M
-@13
-A=M
-M=D
-@2
-D=M
-@4
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-D=M
-@12
-D=D+A
-@13
-M=D
-@0
-AM=M-1
-D=M
-@13
-A=M
-M=D
-@2
-D=M
-@5
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@3
-D=M
-@13
-D=D+A
-@13
-M=D
-@0
-AM=M-1
-D=M
-@13
-A=M
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@3
-D=M
-@14
-D=D+A
-@13
-M=D
-@0
-AM=M-1
-D=M
-@13
-A=M
-M=D
-@3
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@387
-D=A
-@14
-M=D
-@333
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@3
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@54
-0;JMP
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@3
-M=D
-@3
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@9357
-D=A
-@14
-M=D
-@376
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@3
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-A=M-1
-M=!M
-@1
-D=A
-@13
-M=D
-@20889
-D=A
-@14
-M=D
-@418
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@3
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@514
-D=A
-@14
-M=D
-@441
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@3
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@1
-D=A
-@13
-M=D
-@20889
-D=A
-@14
-M=D
-@480
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@3
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@514
-D=A
-@14
-M=D
-@503
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@3
-M=D
-@3
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@5
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@3
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@5
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@4
-D=A
-@13
-M=D
-@22354
-D=A
-@14
-M=D
-@588
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@3
-M=D
-@3
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@54
-0;JMP
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@3
-M=D
-@3
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@5
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@54
-0;JMP
-@3
-D=A
-D=D-1
-@0
-AM=M+1
-A=A-1
-M=0
-@654
-D;JGT
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@3
-M=D
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@0
-AM=M-1
-D=M
-@3
-A=M+1
-A=A+1
-M=D
-@2
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@0
-AM=M-1
-D=M
-@3
-A=M+1
-A=A+1
-A=A+1
-M=D
-@3
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@6774
-D=A
-@14
-M=D
-@747
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@1
-A=M
-M=D
-@3
-D=M
-@3
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@6774
-D=A
-@14
-M=D
-@774
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@798
-D=A
-@38
-0;JMP
-@3
-D=M
-@7
-D=D+A
-@13
-M=D
-@0
-AM=M-1
-D=M
-@13
-A=M
-M=D
-@3
-D=M
-@7
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@826
-D;JNE
-@930
-0;JMP
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-A=A+1
-M=D
-@1
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@1
-A=M
-M=D
-@1
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-M=D
-@3
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@886
-D=A
-@38
-0;JMP
-@3
-D=M
-@8
-D=D+A
-@13
-M=D
-@0
-AM=M-1
-D=M
-@13
-A=M
-M=D
-@3
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@916
-D=A
-@38
-0;JMP
-@3
-D=M
-@9
-D=D+A
-@13
-M=D
-@0
-AM=M-1
-D=M
-@13
-A=M
-M=D
-@991
-0;JMP
-@3
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@948
-D=A
-@38
-0;JMP
-@3
-D=M
-@8
-D=D+A
-@13
-M=D
-@0
-AM=M-1
-D=M
-@13
-A=M
-M=D
-@3
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@979
-D=A
-@38
-0;JMP
-@3
-D=M
-@9
-D=D+A
-@13
-M=D
-@0
-AM=M-1
-D=M
-@13
-A=M
-M=D
-@2
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@6822
-D=A
-@14
-M=D
-@1016
-D=A
-@95
-0;JMP
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@0
-AM=M-1
-D=M
-@3
-A=M+1
-A=A+1
-A=A+1
-A=A+1
-M=D
-@2
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@6822
-D=A
-@14
-M=D
-@1062
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@3
-A=M+1
-A=A+1
-A=A+1
-A=A+1
-A=A+1
-M=D
-@2
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@2
-D=A
-@13
-M=D
-@6822
-D=A
-@14
-M=D
-@1109
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@3
-A=M+1
-A=A+1
-A=A+1
-A=A+1
-A=A+1
-A=A+1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@3
-M=D
-@3
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@452
-D=A
-@14
-M=D
-@1156
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@3
-D=M
-@4
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@1178
-D=A
-@38
-0;JMP
-@0
-AM=M-1
-D=M
-@1185
-D;JNE
-@1219
-0;JMP
-@3
-D=M
-@4
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-D=M
-@5
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@3
-A=M+1
-A=A+1
-A=A+1
-A=A+1
-M=D
-@1401
-0;JMP
-@3
-D=M
-@4
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-D=M
-@6
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@3
-A=M+1
-A=A+1
-A=A+1
-A=A+1
-M=D
-@3
-D=M
-@9
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@1267
-D;JNE
-@1335
-0;JMP
-@3
-D=M
-@7
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@1283
-D;JNE
-@1309
-0;JMP
-@3
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@4
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@3
-A=M
-M=D
-@1333
-0;JMP
-@3
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@4
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@3
-A=M+1
-M=D
-@1401
-0;JMP
-@3
-D=M
-@7
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@1351
-D;JNE
-@1377
-0;JMP
-@3
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@4
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@0
-AM=M-1
-D=M
-@3
-A=M
-M=D
-@1401
-0;JMP
-@3
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@4
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@0
-AM=M-1
-D=M
-@3
-A=M+1
-M=D
-@3
-D=M
-@8
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@1417
-D;JNE
-@1485
-0;JMP
-@3
-D=M
-@7
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@1433
-D;JNE
-@1459
-0;JMP
-@3
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@4
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@3
-A=M+1
-M=D
-@1483
-0;JMP
-@3
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@4
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@3
-A=M
-M=D
-@1551
-0;JMP
-@3
-D=M
-@7
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@1501
-D;JNE
-@1527
-0;JMP
-@3
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@4
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@0
-AM=M-1
-D=M
-@3
-A=M+1
-M=D
-@1551
-0;JMP
-@3
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@4
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@0
-AM=M-1
-D=M
-@3
-A=M
-M=D
-@3
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-D=M
-@10
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1571
-D=A
-@22
-0;JMP
-@0
-A=M-1
-M=!M
-@0
-AM=M-1
-D=M
-@1581
-D;JNE
-@1612
-0;JMP
-@0
-M=M+1
-A=M-1
-M=1
-@3
-D=M
-@14
-D=D+A
-@13
-M=D
-@0
-AM=M-1
-D=M
-@13
-A=M
-M=D
-@3
-D=M
-@10
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@3
-A=M
-M=D
-@3
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-D=M
-@11
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1632
-D=A
-@38
-0;JMP
-@0
-A=M-1
-M=!M
-@0
-AM=M-1
-D=M
-@1642
-D;JNE
-@1675
-0;JMP
-@2
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-D=M
-@14
-D=D+A
-@13
-M=D
-@0
-AM=M-1
-D=M
-@13
-A=M
-M=D
-@3
-D=M
-@11
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@3
-A=M
-M=D
-@3
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-D=M
-@12
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1695
-D=A
-@22
-0;JMP
-@0
-A=M-1
-M=!M
-@0
-AM=M-1
-D=M
-@1705
-D;JNE
-@1738
-0;JMP
-@3
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-D=M
-@14
-D=D+A
-@13
-M=D
-@0
-AM=M-1
-D=M
-@13
-A=M
-M=D
-@3
-D=M
-@12
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@3
-A=M+1
-M=D
-@3
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-D=M
-@13
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1758
-D=A
-@38
-0;JMP
-@0
-A=M-1
-M=!M
-@0
-AM=M-1
-D=M
-@1768
-D;JNE
-@1801
-0;JMP
-@4
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-D=M
-@14
-D=D+A
-@13
-M=D
-@0
-AM=M-1
-D=M
-@13
-A=M
-M=D
-@3
-D=M
-@13
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@3
-A=M+1
-M=D
-@3
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@387
-D=A
-@14
-M=D
-@1819
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@3
-D=M
-@14
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@54
-0;JMP
-@5
-D=A
-D=D-1
-@0
-AM=M+1
-A=A-1
-M=0
-@1837
-D;JGT
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@3
-M=D
-@3
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@10
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@7287
-D=A
-@14
-M=D
-@1882
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-A=A+1
-M=D
-@3
-D=M
-@3
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@10
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@7287
-D=A
-@14
-M=D
-@1916
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-A=A+1
-A=A+1
-M=D
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@1939
-D=A
-@6
-0;JMP
-@0
-AM=M-1
-D=M
-@1946
-D;JNE
-@1963
-0;JMP
-@10
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-A=A+1
-A=A+1
-A=A+1
-M=D
-@2086
-0;JMP
-@3
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@1979
-D=A
-@38
-0;JMP
-@0
-A=M-1
-M=!M
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=1
-@1997
-D=A
-@6
-0;JMP
-@0
-AM=M-1
-D=M
-A=A-1
-M=D&M
-@3
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@2018
-D=A
-@38
-0;JMP
-@0
-AM=M-1
-D=M
-A=A-1
-M=D|M
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=1
-@0
-A=M-1
-D=!M
-M=D+1
-@2042
-D=A
-@6
-0;JMP
-@0
-AM=M-1
-D=M
-A=A-1
-M=D&M
-@0
-AM=M-1
-D=M
-@2054
-D;JNE
-@2071
-0;JMP
-@20
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-A=A+1
-A=A+1
-A=A+1
-M=D
-@2086
-0;JMP
-@5
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-A=A+1
-A=A+1
-A=A+1
-M=D
-@3
-D=M
-@14
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=1
-@2103
-D=A
-@6
-0;JMP
-@0
-AM=M-1
-D=M
-@2110
-D;JNE
-@2227
-0;JMP
-@506
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@1
-A=M
-M=D
-@1
-D=M
-@3
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@50
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-A=M-1
-D=!M
-M=D+1
-@2
-D=A
-@13
-M=D
-@6822
-D=A
-@14
-M=D
-@2153
-D=A
-@95
-0;JMP
-@1
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@7287
-D=A
-@14
-M=D
-@2173
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-M=D
-@3
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=M
-@4
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@6822
-D=A
-@14
-M=D
-@2214
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-M=D
-@2616
-0;JMP
-@3
-D=M
-@14
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@2246
-D=A
-@6
-0;JMP
-@0
-AM=M-1
-D=M
-@2253
-D;JNE
-@2364
-0;JMP
-@0
-M=M+1
-A=M-1
-M=0
-@0
-AM=M-1
-D=M
-@1
-A=M
-M=D
-@1
-D=M
-@3
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@50
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@6822
-D=A
-@14
-M=D
-@2290
-D=A
-@95
-0;JMP
-@1
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@7287
-D=A
-@14
-M=D
-@2310
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-M=D
-@3
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=M
-@4
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@6822
-D=A
-@14
-M=D
-@2351
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-M=D
-@2616
-0;JMP
-@3
-D=M
-@14
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@2383
-D=A
-@6
-0;JMP
-@0
-AM=M-1
-D=M
-@2390
-D;JNE
-@2507
-0;JMP
-@250
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-M=D
-@1
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@25
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-A=M-1
-D=!M
-M=D+1
-@2
-D=A
-@13
-M=D
-@6822
-D=A
-@14
-M=D
-@2432
-D=A
-@95
-0;JMP
-@1
-D=M
-@3
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@7287
-D=A
-@14
-M=D
-@2453
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@1
-A=M
-M=D
-@3
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=M
-@4
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@6822
-D=A
-@14
-M=D
-@2494
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@1
-A=M
-M=D
-@2616
-0;JMP
-@0
-M=M+1
-A=M-1
-M=0
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-M=D
-@1
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@25
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@6822
-D=A
-@14
-M=D
-@2543
-D=A
-@95
-0;JMP
-@1
-D=M
-@3
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@7287
-D=A
-@14
-M=D
-@2564
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@1
-A=M
-M=D
-@3
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=M
-@4
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@6822
-D=A
-@14
-M=D
-@2605
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@1
-A=M
-M=D
-@3
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@13
-M=D
-@652
-D=A
-@14
-M=D
-@2648
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-@5
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@8643
-D=A
-@14
-M=D
-@2677
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@3
-M=D
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@3
-A=M
-M=D
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@3
-A=M+1
-M=D
-@2
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@3
-A=M+1
-A=A+1
-M=D
-@2
-D=M
-@3
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@3
-A=M+1
-A=A+1
-A=A+1
-M=D
-@2
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@3
-A=M+1
-A=A+1
-A=A+1
-A=A+1
-M=D
-@3
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@2827
-D=A
-@14
-M=D
-@2773
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@3
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@54
-0;JMP
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@3
-M=D
-@3
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@9357
-D=A
-@14
-M=D
-@2816
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@3
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-A=M-1
-M=!M
-@1
-D=A
-@13
-M=D
-@20889
-D=A
-@14
-M=D
-@2858
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@3
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@2954
-D=A
-@14
-M=D
-@2881
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@3
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@1
-D=A
-@13
-M=D
-@20889
-D=A
-@14
-M=D
-@2920
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@3
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@2954
-D=A
-@14
-M=D
-@2943
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@3
-M=D
-@3
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@3
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-D=M
-@3
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@4
-D=A
-@13
-M=D
-@22354
-D=A
-@14
-M=D
-@3033
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@3
-M=D
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@3
-A=M+1
-A=A+1
-A=A+1
-A=A+1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@3
-M=D
-@3
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@54
-0;JMP
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@3
-M=D
-@3
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@54
-0;JMP
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@3
-M=D
-@3
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@2892
-D=A
-@14
-M=D
-@3163
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@3
-A=M+1
-A=A+1
-M=D
-@3
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@2827
-D=A
-@14
-M=D
-@3200
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@3
-M=D
-@3
-D=M
-@4
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=1
-@3240
-D=A
-@6
-0;JMP
-@0
-AM=M-1
-D=M
-@3247
-D;JNE
-@3525
-0;JMP
-@3
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@4
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@0
-AM=M-1
-D=M
-@3
-A=M
-M=D
-@3
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@3286
-D=A
-@38
-0;JMP
-@0
-AM=M-1
-D=M
-@3293
-D;JNE
-@3303
-0;JMP
-@0
-M=M+1
-A=M-1
-M=0
-@0
-AM=M-1
-D=M
-@3
-A=M
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@1
-D=A
-@13
-M=D
-@20889
-D=A
-@14
-M=D
-@3319
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@3
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-M=M+1
-A=M-1
-M=1
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@3
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@4
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@3
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-D=M
-@3
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@4
-D=A
-@13
-M=D
-@22354
-D=A
-@14
-M=D
-@3424
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-A=M-1
-M=!M
-@1
-D=A
-@13
-M=D
-@20889
-D=A
-@14
-M=D
-@3448
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@3
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@3
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-D=M
-@3
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@4
-D=A
-@13
-M=D
-@22354
-D=A
-@14
-M=D
-@3518
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@3831
-0;JMP
-@3
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@4
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@3
-A=M
-M=D
-@3
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@511
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@3579
-D=A
-@22
-0;JMP
-@0
-AM=M-1
-D=M
-@3586
-D;JNE
-@3611
-0;JMP
-@511
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@0
-AM=M-1
-D=M
-@3
-A=M
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@1
-D=A
-@13
-M=D
-@20889
-D=A
-@14
-M=D
-@3627
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@3
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@4
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@3
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=1
-@0
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@3
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-D=M
-@3
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@4
-D=A
-@13
-M=D
-@22354
-D=A
-@14
-M=D
-@3706
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-A=M-1
-M=!M
-@1
-D=A
-@13
-M=D
-@20889
-D=A
-@14
-M=D
-@3730
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@3
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@3
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@3
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@3
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-D=M
-@3
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@4
-D=A
-@13
-M=D
-@22354
-D=A
-@14
-M=D
-@3826
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-@0
-AM=M+1
-A=A-1
-M=0
-@0
-D=A
-@13
-M=D
-@4508
-D=A
-@14
-M=D
-@3853
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-D=A
-@13
-M=D
-@4531
-D=A
-@14
-M=D
-@3870
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@1
-A=M
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@4539
-D=A
-@14
-M=D
-@3895
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@4419
-D=A
-@14
-M=D
-@3919
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-@7
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@8643
-D=A
-@14
-M=D
-@3948
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@3
-M=D
-@0
-D=A
-@13
-M=D
-@20598
-D=A
-@14
-M=D
-@3965
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@50
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@3
-A=M+1
-A=A+1
-A=A+1
-A=A+1
-A=A+1
-A=A+1
-M=D
-@230
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@229
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-D=M
-@6
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@7
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@4
-D=A
-@13
-M=D
-@2659
-D=A
-@14
-M=D
-@4026
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@3
-A=M
-M=D
-@253
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@222
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@511
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@229
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@13
-M=D
-@145
-D=A
-@14
-M=D
-@4076
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@3
-A=M+1
-M=D
-@3
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@400
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@3
-D=A
-@13
-M=D
-@652
-D=A
-@14
-M=D
-@4111
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@238
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@511
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@240
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@4
-D=A
-@13
-M=D
-@22354
-D=A
-@14
-M=D
-@4150
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@22
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@2
-D=A
-@13
-M=D
-@19350
-D=A
-@14
-M=D
-@4177
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@8
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@25105
-D=A
-@14
-M=D
-@4200
-D=A
-@95
-0;JMP
-@83
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@25659
-D=A
-@14
-M=D
-@4218
-D=A
-@95
-0;JMP
-@99
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@25659
-D=A
-@14
-M=D
-@4236
-D=A
-@95
-0;JMP
-@111
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@25659
-D=A
-@14
-M=D
-@4254
-D=A
-@95
-0;JMP
-@114
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@25659
-D=A
-@14
-M=D
-@4272
-D=A
-@95
-0;JMP
-@101
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@25659
-D=A
-@14
-M=D
-@4290
-D=A
-@95
-0;JMP
-@58
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@25659
-D=A
-@14
-M=D
-@4308
-D=A
-@95
-0;JMP
-@32
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@25659
-D=A
-@14
-M=D
-@4326
-D=A
-@95
-0;JMP
-@48
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@25659
-D=A
-@14
-M=D
-@4344
-D=A
-@95
-0;JMP
-@1
-D=A
-@13
-M=D
-@19850
-D=A
-@14
-M=D
-@4356
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-AM=M-1
-D=M
-@3
-A=M+1
-A=A+1
-A=A+1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-AM=M-1
-D=M
-@3
-A=M+1
-A=A+1
-A=A+1
-A=A+1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-AM=M-1
-D=M
-@3
-A=M+1
-A=A+1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-AM=M-1
-D=M
-@3
-A=M+1
-A=A+1
-A=A+1
-A=A+1
-A=A+1
-M=D
-@3
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@54
-0;JMP
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@3
-M=D
-@3
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@2786
-D=A
-@14
-M=D
-@4450
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@3
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@346
-D=A
-@14
-M=D
-@4474
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@3
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@9357
-D=A
-@14
-M=D
-@4497
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-@0
-D=A
-@13
-M=D
-@3930
-D=A
-@14
-M=D
-@4520
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@16
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-@16
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@54
-0;JMP
-@0
-AM=M+1
-A=A-1
-M=0
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@3
-M=D
-@3
-D=M
-@3
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-A=M-1
-M=!M
-@0
-A=M-1
-M=!M
-@0
-AM=M-1
-D=M
-@4943
-D;JNE
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@4590
-D=A
-@6
-0;JMP
-@3
-D=M
-@3
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-A=M-1
-M=!M
-@0
-AM=M-1
-D=M
-A=A-1
-M=D&M
-@0
-A=M-1
-M=!M
-@0
-AM=M-1
-D=M
-@4682
-D;JNE
-@0
-D=A
-@13
-M=D
-@5924
-D=A
-@14
-M=D
-@4627
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@1
-A=M
-M=D
-@3
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@3211
-D=A
-@14
-M=D
-@4652
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@3
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@5191
-D=A
-@14
-M=D
-@4675
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@4575
-0;JMP
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@130
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@4699
-D=A
-@6
-0;JMP
-@0
-AM=M-1
-D=M
-@4706
-D;JNE
-@4736
-0;JMP
-@3
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=1
-@2
-D=A
-@13
-M=D
-@3044
-D=A
-@14
-M=D
-@4729
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@4831
-0;JMP
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@132
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@4753
-D=A
-@6
-0;JMP
-@0
-AM=M-1
-D=M
-@4760
-D;JNE
-@4792
-0;JMP
-@3
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@3044
-D=A
-@14
-M=D
-@4785
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@4831
-0;JMP
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@140
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@4809
-D=A
-@6
-0;JMP
-@0
-AM=M-1
-D=M
-@4816
-D;JNE
-@4831
-0;JMP
-@0
-M=M+1
-A=M-1
-M=0
-@0
-A=M-1
-M=!M
-@0
-AM=M-1
-D=M
-@3
-A=M+1
-A=A+1
-A=A+1
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@4846
-D=A
-@6
-0;JMP
-@0
-A=M-1
-M=!M
-@3
-D=M
-@3
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-A=M-1
-M=!M
-@0
-AM=M-1
-D=M
-A=A-1
-M=D&M
-@0
-A=M-1
-M=!M
-@0
-AM=M-1
-D=M
-@4941
-D;JNE
-@0
-D=A
-@13
-M=D
-@5924
-D=A
-@14
-M=D
-@4886
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@1
-A=M
-M=D
-@3
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@3211
-D=A
-@14
-M=D
-@4911
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@3
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@5191
-D=A
-@14
-M=D
-@4934
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@4831
-0;JMP
-@4555
-0;JMP
-@3
-D=M
-@3
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@4959
-D;JNE
-@5185
-0;JMP
-@10
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@27
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@19350
-D=A
-@14
-M=D
-@4983
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@9
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@25105
-D=A
-@14
-M=D
-@5006
-D=A
-@95
-0;JMP
-@71
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@25659
-D=A
-@14
-M=D
-@5024
-D=A
-@95
-0;JMP
-@97
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@25659
-D=A
-@14
-M=D
-@5042
-D=A
-@95
-0;JMP
-@109
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@25659
-D=A
-@14
-M=D
-@5060
-D=A
-@95
-0;JMP
-@101
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@25659
-D=A
-@14
-M=D
-@5078
-D=A
-@95
-0;JMP
-@32
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@25659
-D=A
-@14
-M=D
-@5096
-D=A
-@95
-0;JMP
-@79
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@25659
-D=A
-@14
-M=D
-@5114
-D=A
-@95
-0;JMP
-@118
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@25659
-D=A
-@14
-M=D
-@5132
-D=A
-@95
-0;JMP
-@101
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@25659
-D=A
-@14
-M=D
-@5150
-D=A
-@95
-0;JMP
-@114
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@25659
-D=A
-@14
-M=D
-@5168
-D=A
-@95
-0;JMP
-@1
-D=A
-@13
-M=D
-@19850
-D=A
-@14
-M=D
-@5180
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-@5
-D=A
-D=D-1
-@0
-AM=M+1
-A=A-1
-M=0
-@5193
-D;JGT
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@3
-M=D
-@3
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@1126
-D=A
-@14
-M=D
-@5231
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@3
-A=M+1
-A=A+1
-M=D
-@3
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@5254
-D=A
-@22
-0;JMP
-@3
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-D=M
-@5
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@5275
-D=A
-@6
-0;JMP
-@0
-A=M-1
-M=!M
-@0
-AM=M-1
-D=M
-A=A-1
-M=D&M
-@0
-AM=M-1
-D=M
-@5290
-D;JNE
-@5802
-0;JMP
-@3
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@3
-A=M+1
-A=A+1
-A=A+1
-A=A+1
-A=A+1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-AM=M-1
-D=M
-@1
-A=M
-M=D
-@3
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@3078
-D=A
-@14
-M=D
-@5337
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-M=D
-@3
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@3099
-D=A
-@14
-M=D
-@5362
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-A=A+1
-M=D
-@3
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@599
-D=A
-@14
-M=D
-@5388
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-A=A+1
-A=A+1
-M=D
-@3
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@620
-D=A
-@14
-M=D
-@5415
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-A=A+1
-A=A+1
-A=A+1
-M=D
-@3
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@4
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@5442
-D=A
-@6
-0;JMP
-@0
-AM=M-1
-D=M
-@5449
-D;JNE
-@5771
-0;JMP
-@1
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=M
-@4
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@5469
-D=A
-@22
-0;JMP
-@1
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=M
-@3
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@5490
-D=A
-@38
-0;JMP
-@0
-AM=M-1
-D=M
-A=A-1
-M=D|M
-@0
-AM=M-1
-D=M
-@3
-A=M+1
-A=A+1
-A=A+1
-M=D
-@3
-D=M
-@3
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-A=M-1
-M=!M
-@0
-AM=M-1
-D=M
-@5522
-D;JNE
-@5771
-0;JMP
-@1
-D=M
-@4
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@10
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@5553
-D=A
-@38
-0;JMP
-@0
-AM=M-1
-D=M
-@5560
-D;JNE
-@5576
-0;JMP
-@0
-M=M+1
-A=M-1
-M=1
-@0
-A=M-1
-D=!M
-M=D+1
-@0
-AM=M-1
-D=M
-@1
-A=M
-M=D
-@5625
-0;JMP
-@1
-D=M
-@3
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@10
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@5608
-D=A
-@22
-0;JMP
-@0
-AM=M-1
-D=M
-@5615
-D;JNE
-@5625
-0;JMP
-@0
-M=M+1
-A=M-1
-M=1
-@0
-AM=M-1
-D=M
-@1
-A=M
-M=D
-@3
-D=M
-@6
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@0
-AM=M-1
-D=M
-@3
-A=M+1
-A=A+1
-A=A+1
-A=A+1
-A=A+1
-A=A+1
-M=D
-@3
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-D=M
-@6
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@3133
-D=A
-@14
-M=D
-@5684
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@3
-D=M
-@4
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=1
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@3
-A=M+1
-A=A+1
-A=A+1
-A=A+1
-M=D
-@22
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@7
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@19350
-D=A
-@14
-M=D
-@5740
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@3
-D=M
-@4
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@19981
-D=A
-@14
-M=D
-@5766
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@3
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@1835
-D=A
-@14
-M=D
-@5797
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@5823
-D=A
-@22
-0;JMP
-@0
-A=M-1
-M=!M
-@0
-AM=M-1
-D=M
-@5833
-D;JNE
-@5856
-0;JMP
-@2
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@27353
-D=A
-@14
-M=D
-@5851
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@8643
-D=A
-@14
-M=D
-@5875
-D=A
-@95
-0;JMP
-@54
-0;JMP
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@3
-M=D
-@3
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@9357
-D=A
-@14
-M=D
-@5907
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-@0
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-@24576
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@8558
-D=A
-@14
-M=D
-@5942
-D=A
-@95
-0;JMP
-@54
-0;JMP
-@0
-A=M
-M=0
-AD=A+1
-M=0
-@0
-M=D+1
-@0
-M=M+1
-A=M-1
-M=0
-@1
-D=A
-@13
-M=D
-@19610
-D=A
-@14
-M=D
-@5967
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@1
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@5987
-D=A
-@6
-0;JMP
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@6002
-D=A
-@22
-0;JMP
-@0
-AM=M-1
-D=M
-A=A-1
-M=D|M
-@0
-A=M-1
-M=!M
-@0
-AM=M-1
-D=M
-@6070
-D;JNE
-@0
-D=A
-@13
-M=D
-@5924
-D=A
-@14
-M=D
-@6027
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@1
-A=M
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@6048
-D=A
-@22
-0;JMP
-@0
-AM=M-1
-D=M
-@6055
-D;JNE
-@6068
-0;JMP
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-M=D
-@5972
-0;JMP
-@0
-D=A
-@13
-M=D
-@27042
-D=A
-@14
-M=D
-@6082
-D=A
-@95
-0;JMP
-@1
-D=A
-@13
-M=D
-@19610
-D=A
-@14
-M=D
-@6094
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@1
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@19610
-D=A
-@14
-M=D
-@6118
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@1
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@54
-0;JMP
-@5
-D=A
-D=D-1
-@0
-AM=M+1
-A=A-1
-M=0
-@6134
-D;JGT
-@80
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@25105
-D=A
-@14
-M=D
-@6159
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-A=A+1
-A=A+1
-M=D
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@19850
-D=A
-@14
-M=D
-@6186
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-D=A
-@13
-M=D
-@27034
-D=A
-@14
-M=D
-@6203
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-M=D
-@0
-D=A
-@13
-M=D
-@27042
-D=A
-@14
-M=D
-@6221
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-A=A+1
-M=D
-@1
-D=M
-@4
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-A=M-1
-M=!M
-@0
-A=M-1
-M=!M
-@0
-AM=M-1
-D=M
-@6404
-D;JNE
-@0
-D=A
-@13
-M=D
-@5944
-D=A
-@14
-M=D
-@6260
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@1
-A=M
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@6284
-D=A
-@6
-0;JMP
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-A=A+1
-A=A+1
-A=A+1
-M=D
-@1
-D=M
-@4
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-A=M-1
-M=!M
-@0
-AM=M-1
-D=M
-@6312
-D;JNE
-@6402
-0;JMP
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@6331
-D=A
-@6
-0;JMP
-@0
-AM=M-1
-D=M
-@6338
-D;JNE
-@6366
-0;JMP
-@1
-D=M
-@3
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@25801
-D=A
-@14
-M=D
-@6359
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@6402
-0;JMP
-@1
-D=M
-@3
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@25659
-D=A
-@14
-M=D
-@6394
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-A=A+1
-A=A+1
-M=D
-@6228
-0;JMP
-@1
-D=M
-@3
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@54
-0;JMP
-@0
-A=M
-M=0
-AD=A+1
-M=0
-@0
-M=D+1
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@6132
-D=A
-@14
-M=D
-@6441
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@1
-A=M
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@25889
-D=A
-@14
-M=D
-@6466
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@25252
-D=A
-@14
-M=D
-@6491
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@1
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@54
-0;JMP
-@0
-AM=M+1
-A=A-1
-M=0
-@16
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@5808
-D=A
-@14
-M=D
-@6527
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@17
-M=D
-@16
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@5808
-D=A
-@14
-M=D
-@6550
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@18
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@18
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-M=M+1
-A=M-1
-M=1
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-AM=M-1
-D=M
-@4
-M=D
-@5
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@4
-A=M
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@15
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@6613
-D=A
-@38
-0;JMP
-@0
-A=M-1
-M=!M
-@0
-AM=M-1
-D=M
-@6768
-D;JNE
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=1
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@1
-A=M
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@18
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=1
-@0
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@18
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@4
-M=D
-@4
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=1
-@0
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@18
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@4
-M=D
-@4
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-AM=M-1
-D=M
-@4
-M=D
-@5
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@4
-A=M
-M=D
-@6596
-0;JMP
-@0
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@6789
-D=A
-@38
-0;JMP
-@0
-AM=M-1
-D=M
-@6796
-D;JNE
-@6813
-0;JMP
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-A=M-1
-D=!M
-M=D+1
-@0
-AM=M-1
-D=M
-@2
-A=M
-M=D
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@54
-0;JMP
-@5
-D=A
-D=D-1
-@0
-AM=M+1
-A=A-1
-M=0
-@6824
-D;JGT
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@6846
-D=A
-@38
-0;JMP
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@6861
-D=A
-@22
-0;JMP
-@0
-AM=M-1
-D=M
-A=A-1
-M=D&M
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@6881
-D=A
-@22
-0;JMP
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@6896
-D=A
-@38
-0;JMP
-@0
-AM=M-1
-D=M
-A=A-1
-M=D&M
-@0
-AM=M-1
-D=M
-A=A-1
-M=D|M
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-A=A+1
-A=A+1
-A=A+1
-M=D
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@6774
-D=A
-@14
-M=D
-@6934
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@2
-A=M
-M=D
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@6774
-D=A
-@14
-M=D
-@6959
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@2
-A=M+1
-M=D
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@6983
-D=A
-@38
-0;JMP
-@0
-AM=M-1
-D=M
-@6990
-D;JNE
-@7029
-0;JMP
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-M=D
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@2
-A=M
-M=D
-@1
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@2
-A=M+1
-M=D
-@1
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@7048
-D=A
-@38
-0;JMP
-@0
-A=M-1
-M=!M
-@0
-AM=M-1
-D=M
-@7245
-D;JNE
-@1
-D=M
-@3
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@18
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@4
-M=D
-@4
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D&M
-@0
-M=M+1
-A=M-1
-M=0
-@7108
-D=A
-@22
-0;JMP
-@0
-AM=M-1
-D=M
-@7115
-D;JNE
-@7192
-0;JMP
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@1
-A=M
-M=D
-@1
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=M
-@3
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@18
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@4
-M=D
-@4
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-A=A+1
-M=D
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@2
-A=M
-M=D
-@1
-D=M
-@3
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=1
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-A=A+1
-A=A+1
-M=D
-@7029
-0;JMP
-@1
-D=M
-@4
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@7261
-D;JNE
-@7278
-0;JMP
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-A=M-1
-D=!M
-M=D+1
-@0
-AM=M-1
-D=M
-@1
-A=M
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@54
-0;JMP
-@4
-D=A
-D=D-1
-@0
-AM=M+1
-A=A-1
-M=0
-@7289
-D;JGT
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@7311
-D=A
-@6
-0;JMP
-@0
-AM=M-1
-D=M
-@7318
-D;JNE
-@7341
-0;JMP
-@3
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@27353
-D=A
-@14
-M=D
-@7336
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@7356
-D=A
-@38
-0;JMP
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@7371
-D=A
-@22
-0;JMP
-@0
-AM=M-1
-D=M
-A=A-1
-M=D&M
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@7391
-D=A
-@22
-0;JMP
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@7406
-D=A
-@38
-0;JMP
-@0
-AM=M-1
-D=M
-A=A-1
-M=D&M
-@0
-AM=M-1
-D=M
-A=A-1
-M=D|M
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-A=A+1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@17
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@6774
-D=A
-@14
-M=D
-@7457
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-AM=M-1
-D=M
-@4
-M=D
-@5
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@4
-A=M
-M=D
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@6774
-D=A
-@14
-M=D
-@7498
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@2
-A=M
-M=D
-@1
-D=M
-@3
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-A=M-1
-M=!M
-@0
-A=M-1
-M=!M
-@0
-AM=M-1
-D=M
-@7841
-D;JNE
-@32767
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@17
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@4
-M=D
-@4
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@17
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@4
-M=D
-@4
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@7599
-D=A
-@38
-0;JMP
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-A=A+1
-A=A+1
-M=D
-@1
-D=M
-@3
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-A=M-1
-M=!M
-@0
-AM=M-1
-D=M
-@7626
-D;JNE
-@7839
-0;JMP
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=1
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@17
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@17
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@4
-M=D
-@4
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@17
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@4
-M=D
-@4
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-AM=M-1
-D=M
-@4
-M=D
-@5
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@4
-A=M
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=1
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@17
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@4
-M=D
-@4
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@7790
-D=A
-@22
-0;JMP
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-A=A+1
-A=A+1
-M=D
-@1
-D=M
-@3
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-A=M-1
-M=!M
-@0
-AM=M-1
-D=M
-@7817
-D;JNE
-@7839
-0;JMP
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=1
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@1
-A=M
-M=D
-@7504
-0;JMP
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=1
-@0
-A=M-1
-D=!M
-M=D+1
-@7860
-D=A
-@22
-0;JMP
-@0
-A=M-1
-M=!M
-@0
-AM=M-1
-D=M
-@8039
-D;JNE
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@17
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@4
-M=D
-@4
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@7909
-D=A
-@22
-0;JMP
-@0
-A=M-1
-M=!M
-@0
-AM=M-1
-D=M
-@7919
-D;JNE
-@8015
-0;JMP
-@1
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@18
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@4
-M=D
-@4
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-M=D
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@17
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@4
-M=D
-@4
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@0
-AM=M-1
-D=M
-@2
-A=M
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=1
-@0
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@0
-AM=M-1
-D=M
-@1
-A=M
-M=D
-@7841
-0;JMP
-@1
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@8054
-D;JNE
-@8071
-0;JMP
-@1
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-A=M-1
-D=!M
-M=D+1
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-M=D
-@1
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@54
-0;JMP
-@4
-D=A
-D=D-1
-@0
-AM=M+1
-A=A-1
-M=0
-@8082
-D;JGT
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@8104
-D=A
-@38
-0;JMP
-@0
-AM=M-1
-D=M
-@8111
-D;JNE
-@8134
-0;JMP
-@4
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@27353
-D=A
-@14
-M=D
-@8129
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@7
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@1
-A=M
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=1
-@0
-A=M-1
-D=!M
-M=D+1
-@8165
-D=A
-@22
-0;JMP
-@0
-A=M-1
-M=!M
-@0
-AM=M-1
-D=M
-@8348
-D;JNE
-@1
-D=M
-@3
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@18
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@4
-M=D
-@4
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-M=D
-@1
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@6822
-D=A
-@14
-M=D
-@8249
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-A=A+1
-M=D
-@1
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@8275
-D=A
-@22
-0;JMP
-@0
-A=M-1
-M=!M
-@1
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@8294
-D=A
-@38
-0;JMP
-@0
-A=M-1
-M=!M
-@0
-AM=M-1
-D=M
-A=A-1
-M=D&M
-@0
-AM=M-1
-D=M
-@8309
-D;JNE
-@8324
-0;JMP
-@1
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-A=A+1
-A=A+1
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=1
-@0
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@0
-AM=M-1
-D=M
-@1
-A=M
-M=D
-@8146
-0;JMP
-@1
-D=M
-@3
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@54
-0;JMP
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@8377
-D=A
-@22
-0;JMP
-@0
-AM=M-1
-D=M
-@8384
-D;JNE
-@8397
-0;JMP
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@2
-A=M+1
-M=D
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@54
-0;JMP
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@8424
-D=A
-@38
-0;JMP
-@0
-AM=M-1
-D=M
-@8431
-D;JNE
-@8444
-0;JMP
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@2
-A=M+1
-M=D
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@54
-0;JMP
-@0
-M=M+1
-A=M-1
-M=0
-@0
-AM=M-1
-D=M
-@19
-M=D
-@2048
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@19
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@14334
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-AM=M-1
-D=M
-@4
-M=D
-@5
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@4
-A=M
-M=D
-@2049
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@19
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@2050
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-AM=M-1
-D=M
-@4
-M=D
-@5
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@4
-A=M
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@19
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@4
-M=D
-@4
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@54
-0;JMP
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@19
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-AM=M-1
-D=M
-@4
-M=D
-@5
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@4
-A=M
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-@0
-AM=M+1
-A=A-1
-M=0
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=1
-@8662
-D=A
-@38
-0;JMP
-@0
-AM=M-1
-D=M
-@8669
-D;JNE
-@8692
-0;JMP
-@5
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@27353
-D=A
-@14
-M=D
-@8687
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@2048
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@1
-A=M
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@4
-M=D
-@4
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@8743
-D=A
-@38
-0;JMP
-@0
-A=M-1
-M=!M
-@0
-AM=M-1
-D=M
-@8787
-D;JNE
-@0
-M=M+1
-A=M-1
-M=1
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@4
-M=D
-@4
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@1
-A=M
-M=D
-@8704
-0;JMP
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@16379
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@8816
-D=A
-@22
-0;JMP
-@0
-AM=M-1
-D=M
-@8823
-D;JNE
-@8846
-0;JMP
-@6
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@27353
-D=A
-@14
-M=D
-@8841
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@4
-M=D
-@4
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@8896
-D=A
-@22
-0;JMP
-@0
-AM=M-1
-D=M
-@8903
-D;JNE
-@9295
-0;JMP
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-M=M+1
-A=M-1
-M=0
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@4
-M=D
-@4
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@2
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-AM=M-1
-D=M
-@4
-M=D
-@5
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@4
-A=M
-M=D
-@0
-M=M+1
-A=M-1
-M=1
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@4
-M=D
-@4
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@9056
-D=A
-@6
-0;JMP
-@0
-AM=M-1
-D=M
-@9063
-D;JNE
-@9147
-0;JMP
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@4
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-AM=M-1
-D=M
-@4
-M=D
-@5
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@4
-A=M
-M=D
-@9227
-0;JMP
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-M=M+1
-A=M-1
-M=1
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@4
-M=D
-@4
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-AM=M-1
-D=M
-@4
-M=D
-@5
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@4
-A=M
-M=D
-@0
-M=M+1
-A=M-1
-M=1
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@2
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-AM=M-1
-D=M
-@4
-M=D
-@5
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@4
-A=M
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-M=M+1
-A=M-1
-M=0
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-AM=M-1
-D=M
-@4
-M=D
-@5
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@4
-A=M
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@54
-0;JMP
-@0
-A=M
-M=0
-AD=A+1
-M=0
-@0
-M=D+1
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@0
-AM=M-1
-D=M
-@1
-A=M
-M=D
-@0
-M=M+1
-A=M-1
-M=1
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@4
-M=D
-@4
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@1
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@4
-M=D
-@4
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@9458
-D=A
-@6
-0;JMP
-@0
-AM=M-1
-D=M
-@9465
-D;JNE
-@9556
-0;JMP
-@0
-M=M+1
-A=M-1
-M=0
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-M=M+1
-A=M-1
-M=1
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@4
-M=D
-@4
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@2
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-AM=M-1
-D=M
-@4
-M=D
-@5
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@4
-A=M
-M=D
-@9848
-0;JMP
-@0
-M=M+1
-A=M-1
-M=0
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-M=M+1
-A=M-1
-M=1
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@4
-M=D
-@4
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@0
-M=M+1
-A=M-1
-M=0
-@1
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@4
-M=D
-@4
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-AM=M-1
-D=M
-@4
-M=D
-@5
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@4
-A=M
-M=D
-@0
-M=M+1
-A=M-1
-M=1
-@1
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@4
-M=D
-@4
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@9717
-D=A
-@6
-0;JMP
-@0
-AM=M-1
-D=M
-@9724
-D;JNE
-@9782
-0;JMP
-@0
-M=M+1
-A=M-1
-M=1
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-AM=M-1
-D=M
-@4
-M=D
-@5
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@4
-A=M
-M=D
-@9848
-0;JMP
-@0
-M=M+1
-A=M-1
-M=1
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-M=M+1
-A=M-1
-M=1
-@1
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@4
-M=D
-@4
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-AM=M-1
-D=M
-@4
-M=D
-@5
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@4
-A=M
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-@16384
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@20
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-A=M-1
-M=!M
-@0
-AM=M-1
-D=M
-@21
-M=D
-@32
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@22
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-AM=M-1
-D=M
-@23
-M=D
-@6
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@25105
-D=A
-@14
-M=D
-@9915
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@24
-M=D
-@0
-D=A
-@13
-M=D
-@9960
-D=A
-@14
-M=D
-@9932
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-D=A
-@13
-M=D
-@18456
-D=A
-@14
-M=D
-@9949
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-@127
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@5808
-D=A
-@14
-M=D
-@9978
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@25
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@63
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@10061
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@32
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@10128
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@33
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@10211
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@34
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@54
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@54
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@20
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@10284
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@35
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@18
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@18
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@18
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@18
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@18
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@18
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@10367
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@36
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@48
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@10454
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@37
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@35
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@24
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@49
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@10535
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@38
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@54
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@27
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@27
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@27
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@54
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@10620
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@39
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@10693
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@40
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@24
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@24
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@10778
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@41
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@24
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@24
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@24
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@24
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@24
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@10863
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@42
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@10940
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@43
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@11017
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@44
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@11090
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@45
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@63
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@11159
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@46
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@11230
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@47
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@32
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@48
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@24
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=1
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@11309
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@48
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@11394
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@49
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@14
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@15
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@11479
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@50
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@48
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@24
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@11564
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@48
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@48
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@28
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@48
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@48
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@11649
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@52
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@16
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@24
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@28
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@26
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@25
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@24
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@24
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@60
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@11734
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@53
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@31
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@48
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@48
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@48
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@11819
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@54
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@28
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@31
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@11904
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@55
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@49
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@48
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@48
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@24
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@11989
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@56
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@12074
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@57
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@62
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@48
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@48
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@24
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@14
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@12159
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@58
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@12234
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@59
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@12311
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@60
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@24
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@24
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@12392
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@61
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@63
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@63
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@12463
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@62
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@3
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@24
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@12544
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@64
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@59
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@59
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@59
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@27
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@12629
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@63
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@24
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@12712
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@65
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@12797
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@66
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@31
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@31
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@31
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@12882
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@67
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@28
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@54
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@35
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@35
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@54
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@28
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@12967
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@68
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@15
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@27
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@27
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@15
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@13052
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@69
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@35
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@11
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@15
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@11
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@35
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@13137
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@70
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@35
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@11
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@15
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@11
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@13222
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@71
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@28
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@54
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@35
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@59
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@54
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@44
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@13307
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@72
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@13392
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@73
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@13477
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@74
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@60
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@24
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@24
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@24
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@24
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@24
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@27
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@27
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@14
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@13562
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@75
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@27
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@15
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@27
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@13647
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@76
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@35
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@13732
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@77
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@33
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@13817
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@78
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@55
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@55
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@59
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@59
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@13902
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@79
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@13987
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@80
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@31
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@31
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@14072
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@81
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@59
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@48
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@14159
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@82
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@31
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@31
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@27
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@14244
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@83
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@28
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@48
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@14329
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@84
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@45
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@14414
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@85
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@14499
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@86
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@14584
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@87
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@18
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@14669
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@88
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@14754
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@89
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@14839
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@90
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@49
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@24
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@35
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@14924
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@91
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@15009
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@92
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=1
-@3
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@24
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@48
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@32
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@15088
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@93
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@24
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@24
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@24
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@24
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@24
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@24
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@24
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@15173
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@94
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@8
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@28
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@54
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@15246
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@95
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@63
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@15315
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@96
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@24
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@15388
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@97
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@14
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@24
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@27
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@27
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@54
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@15467
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@98
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@15
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@27
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@15552
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@99
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@30
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@15631
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@100
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@48
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@48
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@48
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@60
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@54
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@15716
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@101
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@30
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@15795
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@102
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@28
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@54
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@38
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@15
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@15
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@15880
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@103
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@30
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@62
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@48
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@15963
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@104
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@27
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@55
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@16048
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@105
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@14
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@16131
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@106
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@48
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@48
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@56
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@48
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@48
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@48
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@48
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@16216
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@107
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@27
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@15
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@15
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@27
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@16301
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@108
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@14
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@16386
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@109
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@29
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@43
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@43
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@43
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@43
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@16465
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@110
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@29
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@16544
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@111
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@30
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@16623
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@112
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@30
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@31
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@16704
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@113
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@30
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@62
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@48
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@48
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@16785
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@114
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@29
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@55
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@7
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@16864
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@115
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@30
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@24
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@16943
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@116
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@4
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@15
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@54
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@28
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@17028
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@117
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@27
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@27
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@27
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@27
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@27
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@54
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@17107
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@118
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@17186
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@119
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@18
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@17265
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@120
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@30
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@17344
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@121
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@62
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@48
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@24
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@15
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@17425
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@122
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@63
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@27
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@6
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@51
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@17504
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@123
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@56
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@7
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@56
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@17589
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@124
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@17674
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@125
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@7
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@56
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@7
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@17759
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@126
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@38
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@45
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@25
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@0
-M=M+1
-A=M-1
-M=0
-@12
-D=A
-@13
-M=D
-@17843
-D=A
-@14
-M=D
-@17832
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-@0
-AM=M+1
-A=A-1
-M=0
-@11
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@5808
-D=A
-@14
-M=D
-@17865
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@1
-A=M
-M=D
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@25
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-AM=M-1
-D=M
-@4
-M=D
-@5
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@4
-A=M
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-AM=M-1
-D=M
-@4
-M=D
-@5
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@4
-A=M
-M=D
-@0
-M=M+1
-A=M-1
-M=1
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@2
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-AM=M-1
-D=M
-@4
-M=D
-@5
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@4
-A=M
-M=D
-@2
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@2
-D=M
-@3
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-AM=M-1
-D=M
-@4
-M=D
-@5
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@4
-A=M
-M=D
-@3
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@2
-D=M
-@4
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-AM=M-1
-D=M
-@4
-M=D
-@5
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@4
-A=M
-M=D
-@4
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@2
-D=M
-@5
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-AM=M-1
-D=M
-@4
-M=D
-@5
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@4
-A=M
-M=D
-@5
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@2
-D=M
-@6
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-AM=M-1
-D=M
-@4
-M=D
-@5
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@4
-A=M
-M=D
-@6
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@2
-D=M
-@7
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-AM=M-1
-D=M
-@4
-M=D
-@5
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@4
-A=M
-M=D
-@7
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@2
-D=M
-@8
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-AM=M-1
-D=M
-@4
-M=D
-@5
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@4
-A=M
-M=D
-@8
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@2
-D=M
-@9
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-AM=M-1
-D=M
-@4
-M=D
-@5
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@4
-A=M
-M=D
-@9
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@2
-D=M
-@10
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-AM=M-1
-D=M
-@4
-M=D
-@5
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@4
-A=M
-M=D
-@10
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@2
-D=M
-@11
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-AM=M-1
-D=M
-@4
-M=D
-@5
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@4
-A=M
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-@4
-D=A
-D=D-1
-@0
-AM=M+1
-A=A-1
-M=0
-@18458
-D;JGT
-@127
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@5808
-D=A
-@14
-M=D
-@18483
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@26
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-A=A+1
-M=D
-@1
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@127
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@18517
-D=A
-@38
-0;JMP
-@0
-A=M-1
-M=!M
-@0
-AM=M-1
-D=M
-@18859
-D;JNE
-@1
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@25
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@4
-M=D
-@4
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@1
-A=M
-M=D
-@11
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@5808
-D=A
-@14
-M=D
-@18580
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-M=D
-@1
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@26
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@1
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-AM=M-1
-D=M
-@4
-M=D
-@5
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@4
-A=M
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-A=A+1
-A=A+1
-M=D
-@1
-D=M
-@3
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@11
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@18665
-D=A
-@38
-0;JMP
-@0
-A=M-1
-M=!M
-@0
-AM=M-1
-D=M
-@18795
-D;JNE
-@1
-D=M
-@3
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@1
-D=M
-@3
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@4
-M=D
-@4
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@256
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@6822
-D=A
-@14
-M=D
-@18745
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-AM=M-1
-D=M
-@4
-M=D
-@5
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@4
-A=M
-M=D
-@1
-D=M
-@3
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=1
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-A=A+1
-A=A+1
-M=D
-@18646
-0;JMP
-@1
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@18811
-D=A
-@6
-0;JMP
-@0
-AM=M-1
-D=M
-@18818
-D;JNE
-@18833
-0;JMP
-@32
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-A=A+1
-M=D
-@18857
-0;JMP
-@1
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=1
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-A=A+1
-M=D
-@18499
-0;JMP
-@0
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-@0
-AM=M+1
-A=A-1
-M=0
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@32
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@18886
-D=A
-@38
-0;JMP
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@126
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@18903
-D=A
-@22
-0;JMP
-@0
-AM=M-1
-D=M
-A=A-1
-M=D|M
-@0
-AM=M-1
-D=M
-@18915
-D;JNE
-@18925
-0;JMP
-@0
-M=M+1
-A=M-1
-M=0
-@0
-AM=M-1
-D=M
-@2
-A=M
-M=D
-@21
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@18938
-D;JNE
-@18976
-0;JMP
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@25
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@4
-M=D
-@4
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@1
-A=M
-M=D
-@19012
-0;JMP
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@26
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@4
-M=D
-@4
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@1
-A=M
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@54
-0;JMP
-@4
-D=A
-D=D-1
-@0
-AM=M+1
-A=A-1
-M=0
-@19023
-D;JGT
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@18865
-D=A
-@14
-M=D
-@19049
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-A=A+1
-M=D
-@22
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@1
-A=M
-M=D
-@1
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@11
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@19085
-D=A
-@38
-0;JMP
-@0
-A=M-1
-M=!M
-@0
-AM=M-1
-D=M
-@19344
-D;JNE
-@21
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@19106
-D;JNE
-@19161
-0;JMP
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@20
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@4
-M=D
-@4
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@256
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-A=M-1
-D=!M
-M=D+1
-@0
-AM=M-1
-D=M
-A=A-1
-M=D&M
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-A=A+1
-A=A+1
-M=D
-@19210
-0;JMP
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@20
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@4
-M=D
-@4
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@255
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D&M
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-A=A+1
-A=A+1
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@20
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@1
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@4
-M=D
-@4
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=M
-@3
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D|M
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-AM=M-1
-D=M
-@4
-M=D
-@5
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@4
-A=M
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@32
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@1
-A=M
-M=D
-@1
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=1
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-M=D
-@19068
-0;JMP
-@0
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@19365
-D=A
-@38
-0;JMP
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@22
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@19382
-D=A
-@22
-0;JMP
-@0
-AM=M-1
-D=M
-A=A-1
-M=D|M
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@19402
-D=A
-@38
-0;JMP
-@0
-AM=M-1
-D=M
-A=A-1
-M=D|M
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@63
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@19424
-D=A
-@22
-0;JMP
-@0
-AM=M-1
-D=M
-A=A-1
-M=D|M
-@0
-AM=M-1
-D=M
-@19436
-D;JNE
-@19459
-0;JMP
-@20
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@27353
-D=A
-@14
-M=D
-@19454
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@7287
-D=A
-@14
-M=D
-@19484
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@23
-M=D
-@32
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@352
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@6822
-D=A
-@14
-M=D
-@19520
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@23
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@22
-M=D
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@23
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@6822
-D=A
-@14
-M=D
-@19572
-D=A
-@95
-0;JMP
-@19576
-D=A
-@6
-0;JMP
-@0
-AM=M-1
-D=M
-@21
-M=D
-@32
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@19021
-D=A
-@14
-M=D
-@19599
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-D=A
-@13
-M=D
-@27034
-D=A
-@14
-M=D
-@19629
-D=A
-@95
-0;JMP
-@19633
-D=A
-@6
-0;JMP
-@0
-AM=M-1
-D=M
-@19640
-D;JNE
-@19659
-0;JMP
-@0
-D=A
-@13
-M=D
-@20040
-D=A
-@14
-M=D
-@19652
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@19844
-0;JMP
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-D=A
-@13
-M=D
-@27042
-D=A
-@14
-M=D
-@19678
-D=A
-@95
-0;JMP
-@19682
-D=A
-@6
-0;JMP
-@0
-AM=M-1
-D=M
-@19689
-D;JNE
-@19708
-0;JMP
-@0
-D=A
-@13
-M=D
-@20134
-D=A
-@14
-M=D
-@19701
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@19844
-0;JMP
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@19021
-D=A
-@14
-M=D
-@19727
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@21
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-A=M-1
-M=!M
-@0
-AM=M-1
-D=M
-@19748
-D;JNE
-@19788
-0;JMP
-@23
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=1
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@23
-M=D
-@22
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=1
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@22
-M=D
-@23
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@32
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@19804
-D=A
-@6
-0;JMP
-@0
-AM=M-1
-D=M
-@19811
-D;JNE
-@19830
-0;JMP
-@0
-D=A
-@13
-M=D
-@20040
-D=A
-@14
-M=D
-@19823
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@19844
-0;JMP
-@21
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-A=M-1
-M=!M
-@0
-AM=M-1
-D=M
-@21
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-@0
-A=M
-M=0
-AD=A+1
-M=0
-@0
-M=D+1
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@25339
-D=A
-@14
-M=D
-@19876
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@19900
-D=A
-@38
-0;JMP
-@0
-A=M-1
-M=!M
-@0
-AM=M-1
-D=M
-@19975
-D;JNE
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@25361
-D=A
-@14
-M=D
-@19934
-D=A
-@95
-0;JMP
-@1
-D=A
-@13
-M=D
-@19610
-D=A
-@14
-M=D
-@19946
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=1
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@1
-A=M
-M=D
-@19882
-0;JMP
-@0
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-@24
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@26291
-D=A
-@14
-M=D
-@20006
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@24
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@19850
-D=A
-@14
-M=D
-@20029
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-@22
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@352
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@23
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@0
-AM=M-1
-D=M
-@22
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-AM=M-1
-D=M
-@23
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-A=M-1
-M=!M
-@0
-AM=M-1
-D=M
-@21
-M=D
-@22
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@8128
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@20110
-D=A
-@6
-0;JMP
-@0
-AM=M-1
-D=M
-@20117
-D;JNE
-@20128
-0;JMP
-@32
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@22
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-@21
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@20147
-D;JNE
-@20288
-0;JMP
-@23
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@20161
-D=A
-@22
-0;JMP
-@0
-AM=M-1
-D=M
-@20168
-D;JNE
-@20210
-0;JMP
-@23
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=1
-@0
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@0
-AM=M-1
-D=M
-@23
-M=D
-@22
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=1
-@0
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@0
-AM=M-1
-D=M
-@22
-M=D
-@20277
-0;JMP
-@31
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@23
-M=D
-@22
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@32
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@20237
-D=A
-@6
-0;JMP
-@0
-AM=M-1
-D=M
-@20244
-D;JNE
-@20255
-0;JMP
-@8128
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@22
-M=D
-@22
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@321
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@0
-AM=M-1
-D=M
-@22
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-AM=M-1
-D=M
-@21
-M=D
-@20300
-0;JMP
-@0
-M=M+1
-A=M-1
-M=0
-@0
-A=M-1
-M=!M
-@0
-AM=M-1
-D=M
-@21
-M=D
-@32
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@19021
-D=A
-@14
-M=D
-@20318
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-@0
-AM=M+1
-A=A-1
-M=0
-@16384
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@27
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-A=M-1
-M=!M
-@0
-AM=M-1
-D=M
-@28
-M=D
-@17
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@5808
-D=A
-@14
-M=D
-@20374
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@29
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@29
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-M=M+1
-A=M-1
-M=1
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-AM=M-1
-D=M
-@4
-M=D
-@5
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@4
-A=M
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@16
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@20437
-D=A
-@38
-0;JMP
-@0
-A=M-1
-M=!M
-@0
-AM=M-1
-D=M
-@20592
-D;JNE
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=1
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@1
-A=M
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@29
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=1
-@0
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@29
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@4
-M=D
-@4
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=1
-@0
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@29
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@4
-M=D
-@4
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-AM=M-1
-D=M
-@4
-M=D
-@5
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@4
-A=M
-M=D
-@20420
-0;JMP
-@0
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-@0
-AM=M+1
-A=A-1
-M=0
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@8192
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@20619
-D=A
-@38
-0;JMP
-@0
-A=M-1
-M=!M
-@0
-AM=M-1
-D=M
-@20695
-D;JNE
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@27
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-M=M+1
-A=M-1
-M=0
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-AM=M-1
-D=M
-@4
-M=D
-@5
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@4
-A=M
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=1
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@1
-A=M
-M=D
-@20602
-0;JMP
-@0
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-@28
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@20714
-D;JNE
-@20798
-0;JMP
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@27
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@27
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@4
-M=D
-@4
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D|M
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-AM=M-1
-D=M
-@4
-M=D
-@5
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@4
-A=M
-M=D
-@20883
-0;JMP
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@27
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@27
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@4
-M=D
-@4
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-A=M-1
-M=!M
-@0
-AM=M-1
-D=M
-A=A-1
-M=D&M
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-AM=M-1
-D=M
-@4
-M=D
-@5
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@4
-A=M
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@28
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-@3
-D=A
-D=D-1
-@0
-AM=M+1
-A=A-1
-M=0
-@20909
-D;JGT
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@20931
-D=A
-@38
-0;JMP
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@511
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@20948
-D=A
-@22
-0;JMP
-@0
-AM=M-1
-D=M
-A=A-1
-M=D|M
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@20968
-D=A
-@38
-0;JMP
-@0
-AM=M-1
-D=M
-A=A-1
-M=D|M
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@255
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@20990
-D=A
-@22
-0;JMP
-@0
-AM=M-1
-D=M
-A=A-1
-M=D|M
-@0
-AM=M-1
-D=M
-@21002
-D;JNE
-@21025
-0;JMP
-@7
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@27353
-D=A
-@14
-M=D
-@21020
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@16
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@7287
-D=A
-@14
-M=D
-@21050
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@1
-A=M
-M=D
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@16
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@6822
-D=A
-@14
-M=D
-@21088
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-M=D
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@32
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@6822
-D=A
-@14
-M=D
-@21124
-D=A
-@95
-0;JMP
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-A=A+1
-M=D
-@1
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@29
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@4
-M=D
-@4
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@20701
-D=A
-@14
-M=D
-@21193
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-@2
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@21219
-D;JNE
-@21252
-0;JMP
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@20907
-D=A
-@14
-M=D
-@21245
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@21283
-0;JMP
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@20907
-D=A
-@14
-M=D
-@21278
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-@11
-D=A
-D=D-1
-@0
-AM=M+1
-A=A-1
-M=0
-@21291
-D;JGT
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@21313
-D=A
-@38
-0;JMP
-@2
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@511
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@21331
-D=A
-@22
-0;JMP
-@0
-AM=M-1
-D=M
-A=A-1
-M=D|M
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@21351
-D=A
-@38
-0;JMP
-@0
-AM=M-1
-D=M
-A=A-1
-M=D|M
-@2
-D=M
-@3
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@255
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@21375
-D=A
-@22
-0;JMP
-@0
-AM=M-1
-D=M
-A=A-1
-M=D|M
-@0
-AM=M-1
-D=M
-@21387
-D;JNE
-@21410
-0;JMP
-@8
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@27353
-D=A
-@14
-M=D
-@21405
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@2
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@1
-D=A
-@13
-M=D
-@6774
-D=A
-@14
-M=D
-@21442
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-A=A+1
-A=A+1
-M=D
-@2
-D=M
-@3
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@1
-D=A
-@13
-M=D
-@6774
-D=A
-@14
-M=D
-@21483
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-A=A+1
-M=D
-@1
-D=M
-@3
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@21511
-D=A
-@38
-0;JMP
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-A=A+1
-A=A+1
-A=A+1
-A=A+1
-A=A+1
-M=D
-@1
-D=M
-@6
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=M
-@3
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@21551
-D=A
-@38
-0;JMP
-@0
-AM=M-1
-D=M
-A=A-1
-M=D&M
-@1
-D=M
-@6
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-A=M-1
-M=!M
-@2
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@21587
-D=A
-@38
-0;JMP
-@0
-AM=M-1
-D=M
-A=A-1
-M=D&M
-@0
-AM=M-1
-D=M
-A=A-1
-M=D|M
-@0
-AM=M-1
-D=M
-@21604
-D;JNE
-@21698
-0;JMP
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-A=A+1
-A=A+1
-A=A+1
-M=D
-@2
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@2
-A=M
-M=D
-@1
-D=M
-@4
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@2
-A=M+1
-A=A+1
-M=D
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-A=A+1
-A=A+1
-A=A+1
-M=D
-@2
-D=M
-@3
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@2
-A=M+1
-M=D
-@1
-D=M
-@4
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@2
-A=M+1
-A=A+1
-A=A+1
-M=D
-@1
-D=M
-@6
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@21714
-D;JNE
-@21844
-0;JMP
-@1
-D=M
-@3
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-A=A+1
-A=A+1
-A=A+1
-M=D
-@1
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-A=A+1
-A=A+1
-M=D
-@1
-D=M
-@4
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-A=A+1
-M=D
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-M=D
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@1
-A=M
-M=D
-@2
-D=M
-@3
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=M
-@8
-D=D+A
-@13
-M=D
-@0
-AM=M-1
-D=M
-@13
-A=M
-M=D
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@21830
-D=A
-@22
-0;JMP
-@1
-D=M
-@7
-D=D+A
-@13
-M=D
-@0
-AM=M-1
-D=M
-@13
-A=M
-M=D
-@21922
-0;JMP
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-M=D
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@1
-A=M
-M=D
-@2
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=M
-@8
-D=D+A
-@13
-M=D
-@0
-AM=M-1
-D=M
-@13
-A=M
-M=D
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=M
-@3
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@21910
-D=A
-@22
-0;JMP
-@1
-D=M
-@7
-D=D+A
-@13
-M=D
-@0
-AM=M-1
-D=M
-@13
-A=M
-M=D
-@2
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@6822
-D=A
-@14
-M=D
-@21948
-D=A
-@95
-0;JMP
-@1
-D=M
-@3
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-A=A+1
-A=A+1
-A=A+1
-A=A+1
-M=D
-@2
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@6822
-D=A
-@14
-M=D
-@21998
-D=A
-@95
-0;JMP
-@1
-D=M
-@9
-D=D+A
-@13
-M=D
-@0
-AM=M-1
-D=M
-@13
-A=M
-M=D
-@2
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=M
-@3
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@2
-D=A
-@13
-M=D
-@6822
-D=A
-@14
-M=D
-@22050
-D=A
-@95
-0;JMP
-@1
-D=M
-@10
-D=D+A
-@13
-M=D
-@0
-AM=M-1
-D=M
-@13
-A=M
-M=D
-@1
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=M
-@6
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@13
-M=D
-@21204
-D=A
-@14
-M=D
-@22097
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@1
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=M
-@8
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@22122
-D=A
-@38
-0;JMP
-@0
-A=M-1
-M=!M
-@0
-AM=M-1
-D=M
-@22348
-D;JNE
-@1
-D=M
-@5
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@22147
-D=A
-@38
-0;JMP
-@0
-AM=M-1
-D=M
-@22154
-D;JNE
-@22189
-0;JMP
-@1
-D=M
-@5
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=M
-@9
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-A=A+1
-A=A+1
-A=A+1
-A=A+1
-M=D
-@22284
-0;JMP
-@1
-D=M
-@5
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=M
-@10
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-A=A+1
-A=A+1
-A=A+1
-A=A+1
-M=D
-@1
-D=M
-@7
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@22238
-D;JNE
-@22262
-0;JMP
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=1
-@0
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@0
-AM=M-1
-D=M
-@1
-A=M
-M=D
-@22284
-0;JMP
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=1
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@1
-A=M
-M=D
-@1
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=1
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-M=D
-@1
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=M
-@6
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-D=A
-@13
-M=D
-@21204
-D=A
-@14
-M=D
-@22341
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@22102
-0;JMP
-@0
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-@9
-D=A
-D=D-1
-@0
-AM=M+1
-A=A-1
-M=0
-@22356
-D;JGT
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@22382
-D=A
-@22
-0;JMP
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=M
-@3
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@22402
-D=A
-@22
-0;JMP
-@0
-AM=M-1
-D=M
-A=A-1
-M=D|M
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@22422
-D=A
-@38
-0;JMP
-@0
-AM=M-1
-D=M
-A=A-1
-M=D|M
-@2
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@511
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@22445
-D=A
-@22
-0;JMP
-@0
-AM=M-1
-D=M
-A=A-1
-M=D|M
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@22465
-D=A
-@38
-0;JMP
-@0
-AM=M-1
-D=M
-A=A-1
-M=D|M
-@2
-D=M
-@3
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@255
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@22489
-D=A
-@22
-0;JMP
-@0
-AM=M-1
-D=M
-A=A-1
-M=D|M
-@0
-AM=M-1
-D=M
-@22501
-D;JNE
-@22524
-0;JMP
-@9
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@27353
-D=A
-@14
-M=D
-@22519
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@16
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@7287
-D=A
-@14
-M=D
-@22549
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-A=A+1
-A=A+1
-M=D
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=M
-@3
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@16
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@6822
-D=A
-@14
-M=D
-@22591
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@1
-D=M
-@7
-D=D+A
-@13
-M=D
-@0
-AM=M-1
-D=M
-@13
-A=M
-M=D
-@2
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@16
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@7287
-D=A
-@14
-M=D
-@22634
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-A=A+1
-A=A+1
-A=A+1
-M=D
-@2
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=M
-@4
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@16
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@6822
-D=A
-@14
-M=D
-@22678
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@1
-D=M
-@8
-D=D+A
-@13
-M=D
-@0
-AM=M-1
-D=M
-@13
-A=M
-M=D
-@1
-D=M
-@7
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@29
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@4
-M=D
-@4
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=1
-@0
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@0
-A=M-1
-M=!M
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-A=A+1
-A=A+1
-A=A+1
-A=A+1
-A=A+1
-M=D
-@1
-D=M
-@8
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=1
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@29
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@4
-M=D
-@4
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=1
-@0
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-A=A+1
-A=A+1
-A=A+1
-A=A+1
-M=D
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@32
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@6822
-D=A
-@14
-M=D
-@22835
-D=A
-@95
-0;JMP
-@1
-D=M
-@3
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@1
-A=M
-M=D
-@1
-D=M
-@4
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=M
-@3
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-A=A+1
-M=D
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=M
-@3
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@22905
-D=A
-@22
-0;JMP
-@0
-A=M-1
-M=!M
-@0
-A=M-1
-M=!M
-@0
-AM=M-1
-D=M
-@23245
-D;JNE
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-M=D
-@1
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@22958
-D=A
-@6
-0;JMP
-@0
-AM=M-1
-D=M
-@22965
-D;JNE
-@23014
-0;JMP
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=M
-@5
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=M
-@6
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D&M
-@2
-D=A
-@13
-M=D
-@20701
-D=A
-@14
-M=D
-@23007
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@23184
-0;JMP
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=M
-@6
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@20701
-D=A
-@14
-M=D
-@23042
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=1
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@1
-A=M
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@23087
-D=A
-@38
-0;JMP
-@0
-A=M-1
-M=!M
-@0
-AM=M-1
-D=M
-@23151
-D;JNE
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=1
-@0
-A=M-1
-D=!M
-M=D+1
-@2
-D=A
-@13
-M=D
-@20701
-D=A
-@14
-M=D
-@23122
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=1
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@1
-A=M
-M=D
-@23069
-0;JMP
-@1
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=M
-@5
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@20701
-D=A
-@14
-M=D
-@23179
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=1
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@2
-A=M+1
-M=D
-@1
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@32
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@1
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@0
-AM=M-1
-D=M
-@1
-A=M
-M=D
-@22885
-0;JMP
-@0
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-@11
-D=A
-D=D-1
-@0
-AM=M+1
-A=A-1
-M=0
-@23253
-D;JGT
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@8406
-D=A
-@14
-M=D
-@23287
-D=A
-@95
-0;JMP
-@1
-D=M
-@7
-D=D+A
-@13
-M=D
-@0
-AM=M-1
-D=M
-@13
-A=M
-M=D
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@8359
-D=A
-@14
-M=D
-@23326
-D=A
-@95
-0;JMP
-@1
-D=M
-@8
-D=D+A
-@13
-M=D
-@0
-AM=M-1
-D=M
-@13
-A=M
-M=D
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=1
-@0
-A=M-1
-D=!M
-M=D+1
-@23357
-D=A
-@22
-0;JMP
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@256
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@23374
-D=A
-@38
-0;JMP
-@0
-AM=M-1
-D=M
-A=A-1
-M=D&M
-@1
-D=M
-@7
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@512
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@23398
-D=A
-@38
-0;JMP
-@0
-AM=M-1
-D=M
-A=A-1
-M=D&M
-@1
-D=M
-@8
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=1
-@0
-A=M-1
-D=!M
-M=D+1
-@23424
-D=A
-@22
-0;JMP
-@0
-AM=M-1
-D=M
-A=A-1
-M=D&M
-@0
-AM=M-1
-D=M
-@23436
-D;JNE
-@24145
-0;JMP
-@1
-D=M
-@7
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@2
-D=A
-@13
-M=D
-@8359
-D=A
-@14
-M=D
-@23461
-D=A
-@95
-0;JMP
-@1
-D=M
-@7
-D=D+A
-@13
-M=D
-@0
-AM=M-1
-D=M
-@13
-A=M
-M=D
-@1
-D=M
-@8
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@511
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@8406
-D=A
-@14
-M=D
-@23500
-D=A
-@95
-0;JMP
-@1
-D=M
-@8
-D=D+A
-@13
-M=D
-@0
-AM=M-1
-D=M
-@13
-A=M
-M=D
-@1
-D=M
-@7
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@16
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@7287
-D=A
-@14
-M=D
-@23539
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-M=D
-@1
-D=M
-@7
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@16
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@6822
-D=A
-@14
-M=D
-@23579
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@1
-D=M
-@9
-D=D+A
-@13
-M=D
-@0
-AM=M-1
-D=M
-@13
-A=M
-M=D
-@1
-D=M
-@8
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@16
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@7287
-D=A
-@14
-M=D
-@23623
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-A=A+1
-M=D
-@1
-D=M
-@8
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@16
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@6822
-D=A
-@14
-M=D
-@23665
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@1
-D=M
-@10
-D=D+A
-@13
-M=D
-@0
-AM=M-1
-D=M
-@13
-A=M
-M=D
-@1
-D=M
-@9
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@29
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@4
-M=D
-@4
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=1
-@0
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@0
-A=M-1
-M=!M
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-A=A+1
-A=A+1
-A=A+1
-A=A+1
-M=D
-@1
-D=M
-@10
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=1
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@29
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@4
-M=D
-@4
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=1
-@0
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-A=A+1
-A=A+1
-A=A+1
-M=D
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@32
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@6822
-D=A
-@14
-M=D
-@23820
-D=A
-@95
-0;JMP
-@1
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@1
-A=M
-M=D
-@1
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-A=A+1
-A=A+1
-A=A+1
-A=A+1
-A=A+1
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=M
-@6
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-A=A+1
-A=A+1
-M=D
-@1
-D=M
-@6
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@23915
-D=A
-@6
-0;JMP
-@0
-AM=M-1
-D=M
-@23922
-D;JNE
-@23971
-0;JMP
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=M
-@4
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=M
-@5
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D&M
-@2
-D=A
-@13
-M=D
-@20701
-D=A
-@14
-M=D
-@23964
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@24145
-0;JMP
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=M
-@5
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@20701
-D=A
-@14
-M=D
-@23999
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=1
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@1
-A=M
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=M
-@3
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@24046
-D=A
-@38
-0;JMP
-@0
-A=M-1
-M=!M
-@0
-AM=M-1
-D=M
-@24110
-D;JNE
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=1
-@0
-A=M-1
-D=!M
-M=D+1
-@2
-D=A
-@13
-M=D
-@20701
-D=A
-@14
-M=D
-@24081
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=1
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@1
-A=M
-M=D
-@24026
-0;JMP
-@1
-D=M
-@3
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=M
-@4
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@20701
-D=A
-@14
-M=D
-@24140
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=M
-@3
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@3
-D=A
-@13
-M=D
-@23251
-D=A
-@14
-M=D
-@24224
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=M
-@3
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@3
-D=A
-@13
-M=D
-@23251
-D=A
-@14
-M=D
-@24302
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=M
-@3
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=M
-@3
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@3
-D=A
-@13
-M=D
-@23251
-D=A
-@14
-M=D
-@24381
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=M
-@3
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=M
-@3
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@3
-D=A
-@13
-M=D
-@23251
-D=A
-@14
-M=D
-@24460
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-@3
-D=A
-D=D-1
-@0
-AM=M+1
-A=A-1
-M=0
-@24473
-D;JGT
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@24495
-D=A
-@38
-0;JMP
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@511
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@24512
-D=A
-@22
-0;JMP
-@0
-AM=M-1
-D=M
-A=A-1
-M=D|M
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@24532
-D=A
-@38
-0;JMP
-@0
-AM=M-1
-D=M
-A=A-1
-M=D|M
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@255
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@24554
-D=A
-@22
-0;JMP
-@0
-AM=M-1
-D=M
-A=A-1
-M=D|M
-@0
-AM=M-1
-D=M
-@24566
-D;JNE
-@24589
-0;JMP
-@12
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@27353
-D=A
-@14
-M=D
-@24584
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@0
-M=M+1
-A=M-1
-M=0
-@24617
-D=A
-@38
-0;JMP
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@511
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@24647
-D=A
-@22
-0;JMP
-@0
-AM=M-1
-D=M
-A=A-1
-M=D|M
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@0
-M=M+1
-A=M-1
-M=0
-@24680
-D=A
-@38
-0;JMP
-@0
-AM=M-1
-D=M
-A=A-1
-M=D|M
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@255
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@24715
-D=A
-@22
-0;JMP
-@0
-AM=M-1
-D=M
-A=A-1
-M=D|M
-@0
-AM=M-1
-D=M
-@24727
-D;JNE
-@24750
-0;JMP
-@13
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@27353
-D=A
-@14
-M=D
-@24745
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@2
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-M=D
-@0
-M=M+1
-A=M-1
-M=1
-@2
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-A=A+1
-M=D
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@4
-D=A
-@13
-M=D
-@24151
-D=A
-@14
-M=D
-@24828
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@1
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@24851
-D=A
-@22
-0;JMP
-@0
-A=M-1
-M=!M
-@0
-AM=M-1
-D=M
-@25099
-D;JNE
-@1
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@24875
-D=A
-@38
-0;JMP
-@0
-AM=M-1
-D=M
-@24882
-D;JNE
-@24940
-0;JMP
-@1
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@6822
-D=A
-@14
-M=D
-@24915
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@3
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-A=A+1
-M=D
-@25030
-0;JMP
-@1
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@2
-D=A
-@13
-M=D
-@6822
-D=A
-@14
-M=D
-@24985
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@5
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-A=A+1
-M=D
-@1
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=1
-@0
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=1
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@1
-A=M
-M=D
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@4
-D=A
-@13
-M=D
-@24151
-D=A
-@14
-M=D
-@25092
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@24833
-0;JMP
-@0
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-@3
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@8643
-D=A
-@14
-M=D
-@25123
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@3
-M=D
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@25143
-D=A
-@38
-0;JMP
-@0
-AM=M-1
-D=M
-@25150
-D;JNE
-@25173
-0;JMP
-@14
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@27353
-D=A
-@14
-M=D
-@25168
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@25188
-D=A
-@22
-0;JMP
-@0
-AM=M-1
-D=M
-@25195
-D;JNE
-@25220
-0;JMP
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@5808
-D=A
-@14
-M=D
-@25214
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@3
-A=M+1
-M=D
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@3
-A=M
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-AM=M-1
-D=M
-@3
-A=M+1
-A=A+1
-M=D
-@3
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@54
-0;JMP
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@3
-M=D
-@3
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@25279
-D=A
-@22
-0;JMP
-@0
-AM=M-1
-D=M
-@25286
-D;JNE
-@25310
-0;JMP
-@3
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@5877
-D=A
-@14
-M=D
-@25305
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@3
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@9357
-D=A
-@14
-M=D
-@25328
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@3
-M=D
-@3
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@54
-0;JMP
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@3
-M=D
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@25388
-D=A
-@38
-0;JMP
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@25407
-D=A
-@22
-0;JMP
-@0
-AM=M-1
-D=M
-A=A-1
-M=D|M
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@25431
-D=A
-@6
-0;JMP
-@0
-AM=M-1
-D=M
-A=A-1
-M=D|M
-@0
-AM=M-1
-D=M
-@25443
-D;JNE
-@25466
-0;JMP
-@15
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@27353
-D=A
-@14
-M=D
-@25461
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@4
-M=D
-@4
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@54
-0;JMP
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@3
-M=D
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@25526
-D=A
-@38
-0;JMP
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@25545
-D=A
-@22
-0;JMP
-@0
-AM=M-1
-D=M
-A=A-1
-M=D|M
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@25569
-D=A
-@6
-0;JMP
-@0
-AM=M-1
-D=M
-A=A-1
-M=D|M
-@0
-AM=M-1
-D=M
-@25581
-D;JNE
-@25604
-0;JMP
-@16
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@27353
-D=A
-@14
-M=D
-@25599
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@2
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-AM=M-1
-D=M
-@4
-M=D
-@5
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@4
-A=M
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@3
-M=D
-@3
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@25690
-D=A
-@6
-0;JMP
-@0
-AM=M-1
-D=M
-@25697
-D;JNE
-@25720
-0;JMP
-@17
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@27353
-D=A
-@14
-M=D
-@25715
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@3
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-AM=M-1
-D=M
-@4
-M=D
-@5
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@4
-A=M
-M=D
-@3
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=1
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@3
-A=M+1
-A=A+1
-M=D
-@3
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@54
-0;JMP
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@3
-M=D
-@3
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@25829
-D=A
-@6
-0;JMP
-@0
-AM=M-1
-D=M
-@25836
-D;JNE
-@25859
-0;JMP
-@18
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@27353
-D=A
-@14
-M=D
-@25854
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@3
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=1
-@0
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@0
-AM=M-1
-D=M
-@3
-A=M+1
-A=A+1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-@5
-D=A
-D=D-1
-@0
-AM=M+1
-A=A-1
-M=0
-@25891
-D;JGT
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@3
-M=D
-@3
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@25926
-D=A
-@6
-0;JMP
-@0
-AM=M-1
-D=M
-@25933
-D;JNE
-@25939
-0;JMP
-@0
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-@0
-M=M+1
-A=M-1
-M=0
-@0
-A=M-1
-M=!M
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-A=A+1
-A=A+1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@3
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@4
-M=D
-@4
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@45
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@25992
-D=A
-@6
-0;JMP
-@0
-AM=M-1
-D=M
-@25999
-D;JNE
-@26025
-0;JMP
-@0
-M=M+1
-A=M-1
-M=0
-@0
-A=M-1
-M=!M
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-A=A+1
-A=A+1
-A=A+1
-M=D
-@0
-M=M+1
-A=M-1
-M=1
-@0
-AM=M-1
-D=M
-@1
-A=M
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@26044
-D=A
-@38
-0;JMP
-@1
-D=M
-@3
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D&M
-@0
-A=M-1
-M=!M
-@0
-AM=M-1
-D=M
-@26249
-D;JNE
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@4
-M=D
-@4
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@48
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-A=A+1
-M=D
-@1
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@26131
-D=A
-@38
-0;JMP
-@1
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@9
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@26149
-D=A
-@22
-0;JMP
-@0
-AM=M-1
-D=M
-A=A-1
-M=D|M
-@0
-A=M-1
-M=!M
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-A=A+1
-A=A+1
-M=D
-@1
-D=M
-@3
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@26181
-D;JNE
-@26247
-0;JMP
-@1
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@10
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@6822
-D=A
-@14
-M=D
-@26206
-D=A
-@95
-0;JMP
-@1
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=1
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@1
-A=M
-M=D
-@26025
-0;JMP
-@1
-D=M
-@4
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@26265
-D;JNE
-@26282
-0;JMP
-@1
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-A=M-1
-D=!M
-M=D+1
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-M=D
-@1
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@54
-0;JMP
-@4
-D=A
-D=D-1
-@0
-AM=M+1
-A=A-1
-M=0
-@26293
-D;JGT
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@3
-M=D
-@3
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@26327
-D=A
-@6
-0;JMP
-@0
-AM=M-1
-D=M
-@26334
-D;JNE
-@26357
-0;JMP
-@19
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@27353
-D=A
-@14
-M=D
-@26352
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@6
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@5808
-D=A
-@14
-M=D
-@26375
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-A=A+1
-M=D
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@26397
-D=A
-@38
-0;JMP
-@0
-AM=M-1
-D=M
-@26404
-D;JNE
-@26436
-0;JMP
-@0
-M=M+1
-A=M-1
-M=0
-@0
-A=M-1
-M=!M
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-A=A+1
-A=A+1
-M=D
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-A=M-1
-D=!M
-M=D+1
-@0
-AM=M-1
-D=M
-@2
-A=M+1
-M=D
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-M=D
-@1
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@26464
-D=A
-@22
-0;JMP
-@0
-A=M-1
-M=!M
-@0
-AM=M-1
-D=M
-@26630
-D;JNE
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@10
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@7287
-D=A
-@14
-M=D
-@26497
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@1
-A=M+1
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@48
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@10
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@6822
-D=A
-@14
-M=D
-@26561
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-AM=M-1
-D=M
-@4
-M=D
-@5
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@4
-A=M
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=1
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@1
-A=M
-M=D
-@1
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@2
-A=M+1
-M=D
-@26449
-0;JMP
-@1
-D=M
-@3
-A=D+A
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@26646
-D;JNE
-@26716
-0;JMP
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@45
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-AM=M-1
-D=M
-@4
-M=D
-@5
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@4
-A=M
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=1
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@1
-A=M
-M=D
-@3
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@26734
-D=A
-@38
-0;JMP
-@0
-AM=M-1
-D=M
-@26741
-D;JNE
-@26764
-0;JMP
-@19
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@27353
-D=A
-@14
-M=D
-@26759
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@26779
-D=A
-@6
-0;JMP
-@0
-AM=M-1
-D=M
-@26786
-D;JNE
-@26843
-0;JMP
-@0
-M=M+1
-A=M-1
-M=0
-@3
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@48
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-AM=M-1
-D=M
-@4
-M=D
-@5
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@4
-A=M
-M=D
-@0
-M=M+1
-A=M-1
-M=1
-@0
-AM=M-1
-D=M
-@3
-A=M+1
-A=A+1
-M=D
-@27003
-0;JMP
-@0
-M=M+1
-A=M-1
-M=0
-@0
-AM=M-1
-D=M
-@3
-A=M+1
-A=A+1
-M=D
-@3
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@26873
-D=A
-@38
-0;JMP
-@0
-A=M-1
-M=!M
-@0
-AM=M-1
-D=M
-@27003
-D;JNE
-@3
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-A=M+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@3
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=1
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@1
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@4
-M=D
-@4
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-AM=M-1
-D=M
-@4
-M=D
-@5
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@4
-A=M
-M=D
-@3
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=1
-@0
-AM=M-1
-D=M
-A=A-1
-M=D+M
-@0
-AM=M-1
-D=M
-@3
-A=M+1
-A=A+1
-M=D
-@26854
-0;JMP
-@1
-A=M+1
-A=A+1
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@5877
-D=A
-@14
-M=D
-@27023
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-@128
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@54
-0;JMP
-@129
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@54
-0;JMP
-@34
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@54
-0;JMP
-@0
-D=A
-@13
-M=D
-@8453
-D=A
-@14
-M=D
-@27070
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-D=A
-@13
-M=D
-@6505
-D=A
-@14
-M=D
-@27087
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-D=A
-@13
-M=D
-@20329
-D=A
-@14
-M=D
-@27104
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-D=A
-@13
-M=D
-@9854
-D=A
-@14
-M=D
-@27121
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-D=A
-@13
-M=D
-@5918
-D=A
-@14
-M=D
-@27138
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-D=A
-@13
-M=D
-@3837
-D=A
-@14
-M=D
-@27155
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-D=A
-@13
-M=D
-@27177
-D=A
-@14
-M=D
-@27172
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@0
-A=M-1
-M=!M
-@0
-A=M-1
-M=!M
-@0
-AM=M-1
-D=M
-@27194
-D;JNE
-@27177
-0;JMP
-@0
-AM=M+1
-A=A-1
-M=0
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@27213
-D=A
-@38
-0;JMP
-@0
-AM=M-1
-D=M
-@27220
-D;JNE
-@27241
-0;JMP
-@0
-M=M+1
-A=M-1
-M=1
-@1
-D=A
-@13
-M=D
-@27353
-D=A
-@14
-M=D
-@27236
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@27256
-D=A
-@22
-0;JMP
-@0
-A=M-1
-M=!M
-@0
-AM=M-1
-D=M
-@27347
-D;JNE
-@50
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-AM=M-1
-D=M
-@1
-A=M
-M=D
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=0
-@27291
-D=A
-@22
-0;JMP
-@0
-A=M-1
-M=!M
-@0
-AM=M-1
-D=M
-@27323
-D;JNE
-@1
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=1
-@0
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@0
-AM=M-1
-D=M
-@1
-A=M
-M=D
-@27276
-0;JMP
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@0
-M=M+1
-A=M-1
-M=1
-@0
-AM=M-1
-D=M
-A=A-1
-M=M-D
-@0
-AM=M-1
-D=M
-@2
-A=M
-M=D
-@27241
-0;JMP
-@0
-M=M+1
-A=M-1
-M=0
-@54
-0;JMP
-@3
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@25105
-D=A
-@14
-M=D
-@27371
-D=A
-@95
-0;JMP
-@69
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@25659
-D=A
-@14
-M=D
-@27389
-D=A
-@95
-0;JMP
-@82
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@25659
-D=A
-@14
-M=D
-@27407
-D=A
-@95
-0;JMP
-@82
-D=A
-@0
-AM=M+1
-A=A-1
-M=D
-@2
-D=A
-@13
-M=D
-@25659
-D=A
-@14
-M=D
-@27425
-D=A
-@95
-0;JMP
-@1
-D=A
-@13
-M=D
-@19850
-D=A
-@14
-M=D
-@27437
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@2
-A=M
-D=M
-@0
-AM=M+1
-A=A-1
-M=D
-@1
-D=A
-@13
-M=D
-@19981
-D=A
-@14
-M=D
-@27461
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
-@0
-D=A
-@13
-M=D
-@27177
-D=A
-@14
-M=D
-@27478
-D=A
-@95
-0;JMP
-@0
-AM=M-1
-D=M
-@5
-M=D
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+// Symbol-less version of the Pong.asm program.
+// Designed for testing the basic version of the assembler.
+
+@256
+D=A
+@0
+M=D
+@133
+0;JMP
+@15
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+D=M-D
+M=0
+@19
+D;JNE
+@0
+A=M-1
+M=-1
+@15
+A=M
+0;JMP
+@15
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+D=M-D
+M=0
+@35
+D;JLE
+@0
+A=M-1
+M=-1
+@15
+A=M
+0;JMP
+@15
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+D=M-D
+M=0
+@51
+D;JGE
+@0
+A=M-1
+M=-1
+@15
+A=M
+0;JMP
+@5
+D=A
+@1
+A=M-D
+D=M
+@13
+M=D
+@0
+AM=M-1
+D=M
+@2
+A=M
+M=D
+D=A
+@0
+M=D+1
+@1
+D=M
+@14
+AM=D-1
+D=M
+@4
+M=D
+@14
+AM=M-1
+D=M
+@3
+M=D
+@14
+AM=M-1
+D=M
+@2
+M=D
+@14
+AM=M-1
+D=M
+@1
+M=D
+@13
+A=M
+0;JMP
+@0
+A=M
+M=D
+@1
+D=M
+@0
+AM=M+1
+M=D
+@2
+D=M
+@0
+AM=M+1
+M=D
+@3
+D=M
+@0
+AM=M+1
+M=D
+@4
+D=M
+@0
+AM=M+1
+M=D
+@4
+D=A
+@13
+D=D+M
+@0
+D=M-D
+@2
+M=D
+@0
+MD=M+1
+@1
+M=D
+@14
+A=M
+0;JMP
+@0
+D=A
+@13
+M=D
+@27058
+D=A
+@14
+M=D
+@145
+D=A
+@95
+0;JMP
+@15
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@8643
+D=A
+@14
+M=D
+@163
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@3
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+A=M
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+M=D
+@2
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=M
+@10
+D=D+A
+@13
+M=D
+@0
+AM=M-1
+D=M
+@13
+A=M
+M=D
+@2
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@3
+D=M
+@11
+D=D+A
+@13
+M=D
+@0
+AM=M-1
+D=M
+@13
+A=M
+M=D
+@2
+D=M
+@4
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=M
+@12
+D=D+A
+@13
+M=D
+@0
+AM=M-1
+D=M
+@13
+A=M
+M=D
+@2
+D=M
+@5
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@3
+D=M
+@13
+D=D+A
+@13
+M=D
+@0
+AM=M-1
+D=M
+@13
+A=M
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@3
+D=M
+@14
+D=D+A
+@13
+M=D
+@0
+AM=M-1
+D=M
+@13
+A=M
+M=D
+@3
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@387
+D=A
+@14
+M=D
+@333
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@3
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+M=D
+@3
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@9357
+D=A
+@14
+M=D
+@376
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+A=M-1
+M=!M
+@1
+D=A
+@13
+M=D
+@20889
+D=A
+@14
+M=D
+@418
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@3
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@514
+D=A
+@14
+M=D
+@441
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@1
+D=A
+@13
+M=D
+@20889
+D=A
+@14
+M=D
+@480
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@3
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@514
+D=A
+@14
+M=D
+@503
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+M=D
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@5
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@5
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@4
+D=A
+@13
+M=D
+@22354
+D=A
+@14
+M=D
+@588
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+M=D
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+M=D
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@5
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@54
+0;JMP
+@3
+D=A
+D=D-1
+@0
+AM=M+1
+A=A-1
+M=0
+@654
+D;JGT
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+A=A+1
+M=D
+@2
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+A=A+1
+A=A+1
+M=D
+@3
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@6774
+D=A
+@14
+M=D
+@747
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@3
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@6774
+D=A
+@14
+M=D
+@774
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@798
+D=A
+@38
+0;JMP
+@3
+D=M
+@7
+D=D+A
+@13
+M=D
+@0
+AM=M-1
+D=M
+@13
+A=M
+M=D
+@3
+D=M
+@7
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@826
+D;JNE
+@930
+0;JMP
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+M=D
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@886
+D=A
+@38
+0;JMP
+@3
+D=M
+@8
+D=D+A
+@13
+M=D
+@0
+AM=M-1
+D=M
+@13
+A=M
+M=D
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@916
+D=A
+@38
+0;JMP
+@3
+D=M
+@9
+D=D+A
+@13
+M=D
+@0
+AM=M-1
+D=M
+@13
+A=M
+M=D
+@991
+0;JMP
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@948
+D=A
+@38
+0;JMP
+@3
+D=M
+@8
+D=D+A
+@13
+M=D
+@0
+AM=M-1
+D=M
+@13
+A=M
+M=D
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@979
+D=A
+@38
+0;JMP
+@3
+D=M
+@9
+D=D+A
+@13
+M=D
+@0
+AM=M-1
+D=M
+@13
+A=M
+M=D
+@2
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@6822
+D=A
+@14
+M=D
+@1016
+D=A
+@95
+0;JMP
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@2
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@6822
+D=A
+@14
+M=D
+@1062
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@2
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@2
+D=A
+@13
+M=D
+@6822
+D=A
+@14
+M=D
+@1109
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+M=D
+@3
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@452
+D=A
+@14
+M=D
+@1156
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@3
+D=M
+@4
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@1178
+D=A
+@38
+0;JMP
+@0
+AM=M-1
+D=M
+@1185
+D;JNE
+@1219
+0;JMP
+@3
+D=M
+@4
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=M
+@5
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@1401
+0;JMP
+@3
+D=M
+@4
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=M
+@6
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@3
+D=M
+@9
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1267
+D;JNE
+@1335
+0;JMP
+@3
+D=M
+@7
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1283
+D;JNE
+@1309
+0;JMP
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@4
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@3
+A=M
+M=D
+@1333
+0;JMP
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@4
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+M=D
+@1401
+0;JMP
+@3
+D=M
+@7
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1351
+D;JNE
+@1377
+0;JMP
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@4
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+AM=M-1
+D=M
+@3
+A=M
+M=D
+@1401
+0;JMP
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@4
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+M=D
+@3
+D=M
+@8
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1417
+D;JNE
+@1485
+0;JMP
+@3
+D=M
+@7
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1433
+D;JNE
+@1459
+0;JMP
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@4
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+M=D
+@1483
+0;JMP
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@4
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@3
+A=M
+M=D
+@1551
+0;JMP
+@3
+D=M
+@7
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1501
+D;JNE
+@1527
+0;JMP
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@4
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+M=D
+@1551
+0;JMP
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@4
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+AM=M-1
+D=M
+@3
+A=M
+M=D
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=M
+@10
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1571
+D=A
+@22
+0;JMP
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@1581
+D;JNE
+@1612
+0;JMP
+@0
+M=M+1
+A=M-1
+M=1
+@3
+D=M
+@14
+D=D+A
+@13
+M=D
+@0
+AM=M-1
+D=M
+@13
+A=M
+M=D
+@3
+D=M
+@10
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+A=M
+M=D
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=M
+@11
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1632
+D=A
+@38
+0;JMP
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@1642
+D;JNE
+@1675
+0;JMP
+@2
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=M
+@14
+D=D+A
+@13
+M=D
+@0
+AM=M-1
+D=M
+@13
+A=M
+M=D
+@3
+D=M
+@11
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+A=M
+M=D
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=M
+@12
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1695
+D=A
+@22
+0;JMP
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@1705
+D;JNE
+@1738
+0;JMP
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=M
+@14
+D=D+A
+@13
+M=D
+@0
+AM=M-1
+D=M
+@13
+A=M
+M=D
+@3
+D=M
+@12
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+M=D
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=M
+@13
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1758
+D=A
+@38
+0;JMP
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@1768
+D;JNE
+@1801
+0;JMP
+@4
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=M
+@14
+D=D+A
+@13
+M=D
+@0
+AM=M-1
+D=M
+@13
+A=M
+M=D
+@3
+D=M
+@13
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+M=D
+@3
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@387
+D=A
+@14
+M=D
+@1819
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@3
+D=M
+@14
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+@5
+D=A
+D=D-1
+@0
+AM=M+1
+A=A-1
+M=0
+@1837
+D;JGT
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+M=D
+@3
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@10
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@7287
+D=A
+@14
+M=D
+@1882
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+M=D
+@3
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@10
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@7287
+D=A
+@14
+M=D
+@1916
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@1939
+D=A
+@6
+0;JMP
+@0
+AM=M-1
+D=M
+@1946
+D;JNE
+@1963
+0;JMP
+@10
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@2086
+0;JMP
+@3
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@1979
+D=A
+@38
+0;JMP
+@0
+A=M-1
+M=!M
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@1997
+D=A
+@6
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@3
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@2018
+D=A
+@38
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+A=M-1
+D=!M
+M=D+1
+@2042
+D=A
+@6
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@0
+AM=M-1
+D=M
+@2054
+D;JNE
+@2071
+0;JMP
+@20
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@2086
+0;JMP
+@5
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@3
+D=M
+@14
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@2103
+D=A
+@6
+0;JMP
+@0
+AM=M-1
+D=M
+@2110
+D;JNE
+@2227
+0;JMP
+@506
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@1
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@50
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+A=M-1
+D=!M
+M=D+1
+@2
+D=A
+@13
+M=D
+@6822
+D=A
+@14
+M=D
+@2153
+D=A
+@95
+0;JMP
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@7287
+D=A
+@14
+M=D
+@2173
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+M=D
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=M
+@4
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@6822
+D=A
+@14
+M=D
+@2214
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+M=D
+@2616
+0;JMP
+@3
+D=M
+@14
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2246
+D=A
+@6
+0;JMP
+@0
+AM=M-1
+D=M
+@2253
+D;JNE
+@2364
+0;JMP
+@0
+M=M+1
+A=M-1
+M=0
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@1
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@50
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@6822
+D=A
+@14
+M=D
+@2290
+D=A
+@95
+0;JMP
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@7287
+D=A
+@14
+M=D
+@2310
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+M=D
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=M
+@4
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@6822
+D=A
+@14
+M=D
+@2351
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+M=D
+@2616
+0;JMP
+@3
+D=M
+@14
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2383
+D=A
+@6
+0;JMP
+@0
+AM=M-1
+D=M
+@2390
+D;JNE
+@2507
+0;JMP
+@250
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+M=D
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@25
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+A=M-1
+D=!M
+M=D+1
+@2
+D=A
+@13
+M=D
+@6822
+D=A
+@14
+M=D
+@2432
+D=A
+@95
+0;JMP
+@1
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@7287
+D=A
+@14
+M=D
+@2453
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=M
+@4
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@6822
+D=A
+@14
+M=D
+@2494
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@2616
+0;JMP
+@0
+M=M+1
+A=M-1
+M=0
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+M=D
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@25
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@6822
+D=A
+@14
+M=D
+@2543
+D=A
+@95
+0;JMP
+@1
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@7287
+D=A
+@14
+M=D
+@2564
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=M
+@4
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@6822
+D=A
+@14
+M=D
+@2605
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@3
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@13
+M=D
+@652
+D=A
+@14
+M=D
+@2648
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@5
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@8643
+D=A
+@14
+M=D
+@2677
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@3
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+A=M
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+M=D
+@2
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+A=A+1
+M=D
+@2
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+A=A+1
+A=A+1
+M=D
+@2
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@3
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@2827
+D=A
+@14
+M=D
+@2773
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@3
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+M=D
+@3
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@9357
+D=A
+@14
+M=D
+@2816
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+A=M-1
+M=!M
+@1
+D=A
+@13
+M=D
+@20889
+D=A
+@14
+M=D
+@2858
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@3
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@2954
+D=A
+@14
+M=D
+@2881
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@1
+D=A
+@13
+M=D
+@20889
+D=A
+@14
+M=D
+@2920
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@3
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@2954
+D=A
+@14
+M=D
+@2943
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+M=D
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@4
+D=A
+@13
+M=D
+@22354
+D=A
+@14
+M=D
+@3033
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+M=D
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+M=D
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@54
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+M=D
+@3
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@2892
+D=A
+@14
+M=D
+@3163
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+A=A+1
+M=D
+@3
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@2827
+D=A
+@14
+M=D
+@3200
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+M=D
+@3
+D=M
+@4
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@3240
+D=A
+@6
+0;JMP
+@0
+AM=M-1
+D=M
+@3247
+D;JNE
+@3525
+0;JMP
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@4
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+AM=M-1
+D=M
+@3
+A=M
+M=D
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@3286
+D=A
+@38
+0;JMP
+@0
+AM=M-1
+D=M
+@3293
+D;JNE
+@3303
+0;JMP
+@0
+M=M+1
+A=M-1
+M=0
+@0
+AM=M-1
+D=M
+@3
+A=M
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@1
+D=A
+@13
+M=D
+@20889
+D=A
+@14
+M=D
+@3319
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@4
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@4
+D=A
+@13
+M=D
+@22354
+D=A
+@14
+M=D
+@3424
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+A=M-1
+M=!M
+@1
+D=A
+@13
+M=D
+@20889
+D=A
+@14
+M=D
+@3448
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@4
+D=A
+@13
+M=D
+@22354
+D=A
+@14
+M=D
+@3518
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@3831
+0;JMP
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@4
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@3
+A=M
+M=D
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@511
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3579
+D=A
+@22
+0;JMP
+@0
+AM=M-1
+D=M
+@3586
+D;JNE
+@3611
+0;JMP
+@511
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+AM=M-1
+D=M
+@3
+A=M
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@1
+D=A
+@13
+M=D
+@20889
+D=A
+@14
+M=D
+@3627
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@4
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@4
+D=A
+@13
+M=D
+@22354
+D=A
+@14
+M=D
+@3706
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+A=M-1
+M=!M
+@1
+D=A
+@13
+M=D
+@20889
+D=A
+@14
+M=D
+@3730
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@4
+D=A
+@13
+M=D
+@22354
+D=A
+@14
+M=D
+@3826
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@0
+AM=M+1
+A=A-1
+M=0
+@0
+D=A
+@13
+M=D
+@4508
+D=A
+@14
+M=D
+@3853
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+D=A
+@13
+M=D
+@4531
+D=A
+@14
+M=D
+@3870
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@4539
+D=A
+@14
+M=D
+@3895
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@4419
+D=A
+@14
+M=D
+@3919
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@7
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@8643
+D=A
+@14
+M=D
+@3948
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@3
+M=D
+@0
+D=A
+@13
+M=D
+@20598
+D=A
+@14
+M=D
+@3965
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@50
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@230
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@229
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=M
+@6
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@7
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@4
+D=A
+@13
+M=D
+@2659
+D=A
+@14
+M=D
+@4026
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@3
+A=M
+M=D
+@253
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@222
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@511
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@229
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@13
+M=D
+@145
+D=A
+@14
+M=D
+@4076
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+M=D
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@400
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@3
+D=A
+@13
+M=D
+@652
+D=A
+@14
+M=D
+@4111
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@238
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@511
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@240
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@4
+D=A
+@13
+M=D
+@22354
+D=A
+@14
+M=D
+@4150
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@22
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@2
+D=A
+@13
+M=D
+@19350
+D=A
+@14
+M=D
+@4177
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@8
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@25105
+D=A
+@14
+M=D
+@4200
+D=A
+@95
+0;JMP
+@83
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@25659
+D=A
+@14
+M=D
+@4218
+D=A
+@95
+0;JMP
+@99
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@25659
+D=A
+@14
+M=D
+@4236
+D=A
+@95
+0;JMP
+@111
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@25659
+D=A
+@14
+M=D
+@4254
+D=A
+@95
+0;JMP
+@114
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@25659
+D=A
+@14
+M=D
+@4272
+D=A
+@95
+0;JMP
+@101
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@25659
+D=A
+@14
+M=D
+@4290
+D=A
+@95
+0;JMP
+@58
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@25659
+D=A
+@14
+M=D
+@4308
+D=A
+@95
+0;JMP
+@32
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@25659
+D=A
+@14
+M=D
+@4326
+D=A
+@95
+0;JMP
+@48
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@25659
+D=A
+@14
+M=D
+@4344
+D=A
+@95
+0;JMP
+@1
+D=A
+@13
+M=D
+@19850
+D=A
+@14
+M=D
+@4356
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+A=A+1
+A=A+1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+A=A+1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@3
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+M=D
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@2786
+D=A
+@14
+M=D
+@4450
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@346
+D=A
+@14
+M=D
+@4474
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@3
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@9357
+D=A
+@14
+M=D
+@4497
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@0
+D=A
+@13
+M=D
+@3930
+D=A
+@14
+M=D
+@4520
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@16
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@16
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+@0
+AM=M+1
+A=A-1
+M=0
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+M=D
+@3
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+A=M-1
+M=!M
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@4943
+D;JNE
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@4590
+D=A
+@6
+0;JMP
+@3
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@4682
+D;JNE
+@0
+D=A
+@13
+M=D
+@5924
+D=A
+@14
+M=D
+@4627
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@3211
+D=A
+@14
+M=D
+@4652
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@3
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@5191
+D=A
+@14
+M=D
+@4675
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@4575
+0;JMP
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@130
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@4699
+D=A
+@6
+0;JMP
+@0
+AM=M-1
+D=M
+@4706
+D;JNE
+@4736
+0;JMP
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@2
+D=A
+@13
+M=D
+@3044
+D=A
+@14
+M=D
+@4729
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@4831
+0;JMP
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@132
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@4753
+D=A
+@6
+0;JMP
+@0
+AM=M-1
+D=M
+@4760
+D;JNE
+@4792
+0;JMP
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@3044
+D=A
+@14
+M=D
+@4785
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@4831
+0;JMP
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@140
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@4809
+D=A
+@6
+0;JMP
+@0
+AM=M-1
+D=M
+@4816
+D;JNE
+@4831
+0;JMP
+@0
+M=M+1
+A=M-1
+M=0
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+A=A+1
+A=A+1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@4846
+D=A
+@6
+0;JMP
+@0
+A=M-1
+M=!M
+@3
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@4941
+D;JNE
+@0
+D=A
+@13
+M=D
+@5924
+D=A
+@14
+M=D
+@4886
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@3211
+D=A
+@14
+M=D
+@4911
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@3
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@5191
+D=A
+@14
+M=D
+@4934
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@4831
+0;JMP
+@4555
+0;JMP
+@3
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4959
+D;JNE
+@5185
+0;JMP
+@10
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@19350
+D=A
+@14
+M=D
+@4983
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@9
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@25105
+D=A
+@14
+M=D
+@5006
+D=A
+@95
+0;JMP
+@71
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@25659
+D=A
+@14
+M=D
+@5024
+D=A
+@95
+0;JMP
+@97
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@25659
+D=A
+@14
+M=D
+@5042
+D=A
+@95
+0;JMP
+@109
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@25659
+D=A
+@14
+M=D
+@5060
+D=A
+@95
+0;JMP
+@101
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@25659
+D=A
+@14
+M=D
+@5078
+D=A
+@95
+0;JMP
+@32
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@25659
+D=A
+@14
+M=D
+@5096
+D=A
+@95
+0;JMP
+@79
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@25659
+D=A
+@14
+M=D
+@5114
+D=A
+@95
+0;JMP
+@118
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@25659
+D=A
+@14
+M=D
+@5132
+D=A
+@95
+0;JMP
+@101
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@25659
+D=A
+@14
+M=D
+@5150
+D=A
+@95
+0;JMP
+@114
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@25659
+D=A
+@14
+M=D
+@5168
+D=A
+@95
+0;JMP
+@1
+D=A
+@13
+M=D
+@19850
+D=A
+@14
+M=D
+@5180
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@5
+D=A
+D=D-1
+@0
+AM=M+1
+A=A-1
+M=0
+@5193
+D;JGT
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+M=D
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@1126
+D=A
+@14
+M=D
+@5231
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+A=A+1
+M=D
+@3
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@5254
+D=A
+@22
+0;JMP
+@3
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=M
+@5
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@5275
+D=A
+@6
+0;JMP
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@0
+AM=M-1
+D=M
+@5290
+D;JNE
+@5802
+0;JMP
+@3
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@3078
+D=A
+@14
+M=D
+@5337
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+M=D
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@3099
+D=A
+@14
+M=D
+@5362
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+M=D
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@599
+D=A
+@14
+M=D
+@5388
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+M=D
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@620
+D=A
+@14
+M=D
+@5415
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@3
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@4
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@5442
+D=A
+@6
+0;JMP
+@0
+AM=M-1
+D=M
+@5449
+D;JNE
+@5771
+0;JMP
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=M
+@4
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@5469
+D=A
+@22
+0;JMP
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@5490
+D=A
+@38
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+A=A+1
+A=A+1
+M=D
+@3
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@5522
+D;JNE
+@5771
+0;JMP
+@1
+D=M
+@4
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@10
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@5553
+D=A
+@38
+0;JMP
+@0
+AM=M-1
+D=M
+@5560
+D;JNE
+@5576
+0;JMP
+@0
+M=M+1
+A=M-1
+M=1
+@0
+A=M-1
+D=!M
+M=D+1
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@5625
+0;JMP
+@1
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@10
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@5608
+D=A
+@22
+0;JMP
+@0
+AM=M-1
+D=M
+@5615
+D;JNE
+@5625
+0;JMP
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@3
+D=M
+@6
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=M
+@6
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@3133
+D=A
+@14
+M=D
+@5684
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@3
+D=M
+@4
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@22
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@7
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@19350
+D=A
+@14
+M=D
+@5740
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@3
+D=M
+@4
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@19981
+D=A
+@14
+M=D
+@5766
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@1835
+D=A
+@14
+M=D
+@5797
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@5823
+D=A
+@22
+0;JMP
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@5833
+D;JNE
+@5856
+0;JMP
+@2
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@27353
+D=A
+@14
+M=D
+@5851
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@8643
+D=A
+@14
+M=D
+@5875
+D=A
+@95
+0;JMP
+@54
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+M=D
+@3
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@9357
+D=A
+@14
+M=D
+@5907
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@24576
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@8558
+D=A
+@14
+M=D
+@5942
+D=A
+@95
+0;JMP
+@54
+0;JMP
+@0
+A=M
+M=0
+AD=A+1
+M=0
+@0
+M=D+1
+@0
+M=M+1
+A=M-1
+M=0
+@1
+D=A
+@13
+M=D
+@19610
+D=A
+@14
+M=D
+@5967
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@5987
+D=A
+@6
+0;JMP
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@6002
+D=A
+@22
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@6070
+D;JNE
+@0
+D=A
+@13
+M=D
+@5924
+D=A
+@14
+M=D
+@6027
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@6048
+D=A
+@22
+0;JMP
+@0
+AM=M-1
+D=M
+@6055
+D;JNE
+@6068
+0;JMP
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+M=D
+@5972
+0;JMP
+@0
+D=A
+@13
+M=D
+@27042
+D=A
+@14
+M=D
+@6082
+D=A
+@95
+0;JMP
+@1
+D=A
+@13
+M=D
+@19610
+D=A
+@14
+M=D
+@6094
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@19610
+D=A
+@14
+M=D
+@6118
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+@5
+D=A
+D=D-1
+@0
+AM=M+1
+A=A-1
+M=0
+@6134
+D;JGT
+@80
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@25105
+D=A
+@14
+M=D
+@6159
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@19850
+D=A
+@14
+M=D
+@6186
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+D=A
+@13
+M=D
+@27034
+D=A
+@14
+M=D
+@6203
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+M=D
+@0
+D=A
+@13
+M=D
+@27042
+D=A
+@14
+M=D
+@6221
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+M=D
+@1
+D=M
+@4
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+A=M-1
+M=!M
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@6404
+D;JNE
+@0
+D=A
+@13
+M=D
+@5944
+D=A
+@14
+M=D
+@6260
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@6284
+D=A
+@6
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@1
+D=M
+@4
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@6312
+D;JNE
+@6402
+0;JMP
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@6331
+D=A
+@6
+0;JMP
+@0
+AM=M-1
+D=M
+@6338
+D;JNE
+@6366
+0;JMP
+@1
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@25801
+D=A
+@14
+M=D
+@6359
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@6402
+0;JMP
+@1
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@25659
+D=A
+@14
+M=D
+@6394
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+M=D
+@6228
+0;JMP
+@1
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+@0
+A=M
+M=0
+AD=A+1
+M=0
+@0
+M=D+1
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@6132
+D=A
+@14
+M=D
+@6441
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@25889
+D=A
+@14
+M=D
+@6466
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@25252
+D=A
+@14
+M=D
+@6491
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+@0
+AM=M+1
+A=A-1
+M=0
+@16
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@5808
+D=A
+@14
+M=D
+@6527
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@17
+M=D
+@16
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@5808
+D=A
+@14
+M=D
+@6550
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@18
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@18
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@15
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6613
+D=A
+@38
+0;JMP
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@6768
+D;JNE
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@18
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@18
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@18
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@6596
+0;JMP
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@6789
+D=A
+@38
+0;JMP
+@0
+AM=M-1
+D=M
+@6796
+D;JNE
+@6813
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+A=M-1
+D=!M
+M=D+1
+@0
+AM=M-1
+D=M
+@2
+A=M
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+@5
+D=A
+D=D-1
+@0
+AM=M+1
+A=A-1
+M=0
+@6824
+D;JGT
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@6846
+D=A
+@38
+0;JMP
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@6861
+D=A
+@22
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@6881
+D=A
+@22
+0;JMP
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@6896
+D=A
+@38
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@0
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@6774
+D=A
+@14
+M=D
+@6934
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@2
+A=M
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@6774
+D=A
+@14
+M=D
+@6959
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@2
+A=M+1
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@6983
+D=A
+@38
+0;JMP
+@0
+AM=M-1
+D=M
+@6990
+D;JNE
+@7029
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@2
+A=M
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@2
+A=M+1
+M=D
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@7048
+D=A
+@38
+0;JMP
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@7245
+D;JNE
+@1
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@18
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@0
+M=M+1
+A=M-1
+M=0
+@7108
+D=A
+@22
+0;JMP
+@0
+AM=M-1
+D=M
+@7115
+D;JNE
+@7192
+0;JMP
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@18
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@2
+A=M
+M=D
+@1
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+M=D
+@7029
+0;JMP
+@1
+D=M
+@4
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@7261
+D;JNE
+@7278
+0;JMP
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+A=M-1
+D=!M
+M=D+1
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+@4
+D=A
+D=D-1
+@0
+AM=M+1
+A=A-1
+M=0
+@7289
+D;JGT
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@7311
+D=A
+@6
+0;JMP
+@0
+AM=M-1
+D=M
+@7318
+D;JNE
+@7341
+0;JMP
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@27353
+D=A
+@14
+M=D
+@7336
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@7356
+D=A
+@38
+0;JMP
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@7371
+D=A
+@22
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@7391
+D=A
+@22
+0;JMP
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@7406
+D=A
+@38
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@0
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@17
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@6774
+D=A
+@14
+M=D
+@7457
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@6774
+D=A
+@14
+M=D
+@7498
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@2
+A=M
+M=D
+@1
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+A=M-1
+M=!M
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@7841
+D;JNE
+@32767
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@17
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@17
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@7599
+D=A
+@38
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+M=D
+@1
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@7626
+D;JNE
+@7839
+0;JMP
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@17
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@17
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@17
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@17
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@7790
+D=A
+@22
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+M=D
+@1
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@7817
+D;JNE
+@7839
+0;JMP
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@7504
+0;JMP
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+A=M-1
+D=!M
+M=D+1
+@7860
+D=A
+@22
+0;JMP
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@8039
+D;JNE
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@17
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@7909
+D=A
+@22
+0;JMP
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@7919
+D;JNE
+@8015
+0;JMP
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@18
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@17
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+AM=M-1
+D=M
+@2
+A=M
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@7841
+0;JMP
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@8054
+D;JNE
+@8071
+0;JMP
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+A=M-1
+D=!M
+M=D+1
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+@4
+D=A
+D=D-1
+@0
+AM=M+1
+A=A-1
+M=0
+@8082
+D;JGT
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@8104
+D=A
+@38
+0;JMP
+@0
+AM=M-1
+D=M
+@8111
+D;JNE
+@8134
+0;JMP
+@4
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@27353
+D=A
+@14
+M=D
+@8129
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@7
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+A=M-1
+D=!M
+M=D+1
+@8165
+D=A
+@22
+0;JMP
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@8348
+D;JNE
+@1
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@18
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@6822
+D=A
+@14
+M=D
+@8249
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+M=D
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@8275
+D=A
+@22
+0;JMP
+@0
+A=M-1
+M=!M
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@8294
+D=A
+@38
+0;JMP
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@0
+AM=M-1
+D=M
+@8309
+D;JNE
+@8324
+0;JMP
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@8146
+0;JMP
+@1
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@8377
+D=A
+@22
+0;JMP
+@0
+AM=M-1
+D=M
+@8384
+D;JNE
+@8397
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@2
+A=M+1
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@8424
+D=A
+@38
+0;JMP
+@0
+AM=M-1
+D=M
+@8431
+D;JNE
+@8444
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@2
+A=M+1
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+@0
+M=M+1
+A=M-1
+M=0
+@0
+AM=M-1
+D=M
+@19
+M=D
+@2048
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@19
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@14334
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@2049
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@19
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@2050
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@19
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@19
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@0
+AM=M+1
+A=A-1
+M=0
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@8662
+D=A
+@38
+0;JMP
+@0
+AM=M-1
+D=M
+@8669
+D;JNE
+@8692
+0;JMP
+@5
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@27353
+D=A
+@14
+M=D
+@8687
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@2048
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@8743
+D=A
+@38
+0;JMP
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@8787
+D;JNE
+@0
+M=M+1
+A=M-1
+M=1
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@8704
+0;JMP
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@16379
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@8816
+D=A
+@22
+0;JMP
+@0
+AM=M-1
+D=M
+@8823
+D;JNE
+@8846
+0;JMP
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@27353
+D=A
+@14
+M=D
+@8841
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@8896
+D=A
+@22
+0;JMP
+@0
+AM=M-1
+D=M
+@8903
+D;JNE
+@9295
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+M=M+1
+A=M-1
+M=0
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@2
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@9056
+D=A
+@6
+0;JMP
+@0
+AM=M-1
+D=M
+@9063
+D;JNE
+@9147
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@4
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@9227
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+M=M+1
+A=M-1
+M=1
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@2
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+M=M+1
+A=M-1
+M=0
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@54
+0;JMP
+@0
+A=M
+M=0
+AD=A+1
+M=0
+@0
+M=D+1
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@9458
+D=A
+@6
+0;JMP
+@0
+AM=M-1
+D=M
+@9465
+D;JNE
+@9556
+0;JMP
+@0
+M=M+1
+A=M-1
+M=0
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+M=M+1
+A=M-1
+M=1
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@2
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@9848
+0;JMP
+@0
+M=M+1
+A=M-1
+M=0
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+M=M+1
+A=M-1
+M=1
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+M=M+1
+A=M-1
+M=0
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@9717
+D=A
+@6
+0;JMP
+@0
+AM=M-1
+D=M
+@9724
+D;JNE
+@9782
+0;JMP
+@0
+M=M+1
+A=M-1
+M=1
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@9848
+0;JMP
+@0
+M=M+1
+A=M-1
+M=1
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+M=M+1
+A=M-1
+M=1
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@16384
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@20
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@21
+M=D
+@32
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@22
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+AM=M-1
+D=M
+@23
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@25105
+D=A
+@14
+M=D
+@9915
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@24
+M=D
+@0
+D=A
+@13
+M=D
+@9960
+D=A
+@14
+M=D
+@9932
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+D=A
+@13
+M=D
+@18456
+D=A
+@14
+M=D
+@9949
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@127
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@5808
+D=A
+@14
+M=D
+@9978
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@25
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@10061
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@32
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@10128
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@33
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@10211
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@34
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@20
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@10284
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@35
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@18
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@18
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@18
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@18
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@18
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@18
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@10367
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@36
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@10454
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@37
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@35
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@49
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@10535
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@38
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@10620
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@39
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@10693
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@40
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@10778
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@41
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@10863
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@42
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@10940
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@43
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@11017
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@44
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@11090
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@45
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@11159
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@46
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@11230
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@47
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@32
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@11309
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@48
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@11394
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@49
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@14
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@15
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@11479
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@50
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@11564
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@28
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@11649
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@52
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@16
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@28
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@26
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@25
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@60
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@11734
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@53
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@31
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@11819
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@54
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@28
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@31
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@11904
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@55
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@49
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@11989
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@56
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@12074
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@57
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@62
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@14
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@12159
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@58
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@12234
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@59
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@12311
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@60
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@12392
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@61
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@12463
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@62
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@12544
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@64
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@59
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@59
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@59
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@12629
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@12712
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@65
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@12797
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@66
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@31
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@31
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@31
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@12882
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@67
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@28
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@35
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@35
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@28
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@12967
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@68
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@15
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@15
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@13052
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@69
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@35
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@11
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@15
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@11
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@35
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@13137
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@70
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@35
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@11
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@15
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@11
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@13222
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@71
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@28
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@35
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@59
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@44
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@13307
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@72
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@13392
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@73
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@13477
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@74
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@60
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@14
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@13562
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@75
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@15
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@13647
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@76
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@35
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@13732
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@77
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@33
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@13817
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@78
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@55
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@55
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@59
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@59
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@13902
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@79
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@13987
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@80
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@31
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@31
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@14072
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@81
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@59
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@14159
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@82
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@31
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@31
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@14244
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@83
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@28
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@14329
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@84
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@45
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@14414
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@85
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@14499
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@86
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@14584
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@87
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@18
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@14669
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@88
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@14754
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@89
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@14839
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@90
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@49
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@35
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@14924
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@91
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@15009
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@92
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=1
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@32
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@15088
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@93
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@15173
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@94
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@8
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@28
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@15246
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@95
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@15315
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@96
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@15388
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@97
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@14
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@15467
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@98
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@15
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@15552
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@99
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@15631
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@100
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@60
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@15716
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@101
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@15795
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@102
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@28
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@38
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@15
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@15
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@15880
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@103
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@62
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@15963
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@104
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@55
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@16048
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@105
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@14
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@16131
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@106
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@56
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@16216
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@107
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@15
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@15
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@16301
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@108
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@14
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@16386
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@109
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@29
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@43
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@43
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@43
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@43
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@16465
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@110
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@29
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@16544
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@111
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@16623
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@112
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@31
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@16704
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@113
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@62
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@16785
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@114
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@29
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@55
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@7
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@16864
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@115
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@16943
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@116
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@4
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@15
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@28
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@17028
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@117
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@27
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@17107
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@118
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@17186
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@119
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@18
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@17265
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@120
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@30
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@17344
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@121
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@62
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@15
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@17425
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@122
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@27
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@51
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@17504
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@123
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@56
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@7
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@56
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@17589
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@124
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@17674
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@125
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@7
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@56
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@7
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@17759
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@126
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@38
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@45
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@25
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@0
+M=M+1
+A=M-1
+M=0
+@12
+D=A
+@13
+M=D
+@17843
+D=A
+@14
+M=D
+@17832
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@0
+AM=M+1
+A=A-1
+M=0
+@11
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@5808
+D=A
+@14
+M=D
+@17865
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@25
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@2
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@2
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@2
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@2
+D=M
+@4
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@4
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@2
+D=M
+@5
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@5
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@2
+D=M
+@6
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@2
+D=M
+@7
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@7
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@2
+D=M
+@8
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@8
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@2
+D=M
+@9
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@9
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@2
+D=M
+@10
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@10
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@2
+D=M
+@11
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@4
+D=A
+D=D-1
+@0
+AM=M+1
+A=A-1
+M=0
+@18458
+D;JGT
+@127
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@5808
+D=A
+@14
+M=D
+@18483
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@26
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+M=D
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@127
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@18517
+D=A
+@38
+0;JMP
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@18859
+D;JNE
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@25
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@11
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@5808
+D=A
+@14
+M=D
+@18580
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+M=D
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@26
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+M=D
+@1
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@11
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@18665
+D=A
+@38
+0;JMP
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@18795
+D;JNE
+@1
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@1
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@256
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@6822
+D=A
+@14
+M=D
+@18745
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@1
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+M=D
+@18646
+0;JMP
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@18811
+D=A
+@6
+0;JMP
+@0
+AM=M-1
+D=M
+@18818
+D;JNE
+@18833
+0;JMP
+@32
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+M=D
+@18857
+0;JMP
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+M=D
+@18499
+0;JMP
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@0
+AM=M+1
+A=A-1
+M=0
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@32
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@18886
+D=A
+@38
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@126
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@18903
+D=A
+@22
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@0
+AM=M-1
+D=M
+@18915
+D;JNE
+@18925
+0;JMP
+@0
+M=M+1
+A=M-1
+M=0
+@0
+AM=M-1
+D=M
+@2
+A=M
+M=D
+@21
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@18938
+D;JNE
+@18976
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@25
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@19012
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@26
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+@4
+D=A
+D=D-1
+@0
+AM=M+1
+A=A-1
+M=0
+@19023
+D;JGT
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@18865
+D=A
+@14
+M=D
+@19049
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+M=D
+@22
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@11
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@19085
+D=A
+@38
+0;JMP
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@19344
+D;JNE
+@21
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@19106
+D;JNE
+@19161
+0;JMP
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@20
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@256
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+A=M-1
+D=!M
+M=D+1
+@0
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+M=D
+@19210
+0;JMP
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@20
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@255
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@20
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@32
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+M=D
+@19068
+0;JMP
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@19365
+D=A
+@38
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@22
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@19382
+D=A
+@22
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@19402
+D=A
+@38
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@63
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@19424
+D=A
+@22
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@0
+AM=M-1
+D=M
+@19436
+D;JNE
+@19459
+0;JMP
+@20
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@27353
+D=A
+@14
+M=D
+@19454
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@7287
+D=A
+@14
+M=D
+@19484
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@23
+M=D
+@32
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@352
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@6822
+D=A
+@14
+M=D
+@19520
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@23
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@22
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@23
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@6822
+D=A
+@14
+M=D
+@19572
+D=A
+@95
+0;JMP
+@19576
+D=A
+@6
+0;JMP
+@0
+AM=M-1
+D=M
+@21
+M=D
+@32
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@19021
+D=A
+@14
+M=D
+@19599
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+D=A
+@13
+M=D
+@27034
+D=A
+@14
+M=D
+@19629
+D=A
+@95
+0;JMP
+@19633
+D=A
+@6
+0;JMP
+@0
+AM=M-1
+D=M
+@19640
+D;JNE
+@19659
+0;JMP
+@0
+D=A
+@13
+M=D
+@20040
+D=A
+@14
+M=D
+@19652
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@19844
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+D=A
+@13
+M=D
+@27042
+D=A
+@14
+M=D
+@19678
+D=A
+@95
+0;JMP
+@19682
+D=A
+@6
+0;JMP
+@0
+AM=M-1
+D=M
+@19689
+D;JNE
+@19708
+0;JMP
+@0
+D=A
+@13
+M=D
+@20134
+D=A
+@14
+M=D
+@19701
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@19844
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@19021
+D=A
+@14
+M=D
+@19727
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@21
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@19748
+D;JNE
+@19788
+0;JMP
+@23
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@23
+M=D
+@22
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@22
+M=D
+@23
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@32
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@19804
+D=A
+@6
+0;JMP
+@0
+AM=M-1
+D=M
+@19811
+D;JNE
+@19830
+0;JMP
+@0
+D=A
+@13
+M=D
+@20040
+D=A
+@14
+M=D
+@19823
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@19844
+0;JMP
+@21
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@21
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@0
+A=M
+M=0
+AD=A+1
+M=0
+@0
+M=D+1
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@25339
+D=A
+@14
+M=D
+@19876
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@19900
+D=A
+@38
+0;JMP
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@19975
+D;JNE
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@25361
+D=A
+@14
+M=D
+@19934
+D=A
+@95
+0;JMP
+@1
+D=A
+@13
+M=D
+@19610
+D=A
+@14
+M=D
+@19946
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@19882
+0;JMP
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@24
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@26291
+D=A
+@14
+M=D
+@20006
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@24
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@19850
+D=A
+@14
+M=D
+@20029
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@22
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@352
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@23
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+AM=M-1
+D=M
+@22
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+AM=M-1
+D=M
+@23
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@21
+M=D
+@22
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@8128
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@20110
+D=A
+@6
+0;JMP
+@0
+AM=M-1
+D=M
+@20117
+D;JNE
+@20128
+0;JMP
+@32
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@22
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@21
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@20147
+D;JNE
+@20288
+0;JMP
+@23
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@20161
+D=A
+@22
+0;JMP
+@0
+AM=M-1
+D=M
+@20168
+D;JNE
+@20210
+0;JMP
+@23
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+AM=M-1
+D=M
+@23
+M=D
+@22
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+AM=M-1
+D=M
+@22
+M=D
+@20277
+0;JMP
+@31
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@23
+M=D
+@22
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@32
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@20237
+D=A
+@6
+0;JMP
+@0
+AM=M-1
+D=M
+@20244
+D;JNE
+@20255
+0;JMP
+@8128
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@22
+M=D
+@22
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@321
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+AM=M-1
+D=M
+@22
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+AM=M-1
+D=M
+@21
+M=D
+@20300
+0;JMP
+@0
+M=M+1
+A=M-1
+M=0
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@21
+M=D
+@32
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@19021
+D=A
+@14
+M=D
+@20318
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@0
+AM=M+1
+A=A-1
+M=0
+@16384
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@27
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@28
+M=D
+@17
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@5808
+D=A
+@14
+M=D
+@20374
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@29
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@29
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@16
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@20437
+D=A
+@38
+0;JMP
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@20592
+D;JNE
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@29
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@29
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@29
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@20420
+0;JMP
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@0
+AM=M+1
+A=A-1
+M=0
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@8192
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@20619
+D=A
+@38
+0;JMP
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@20695
+D;JNE
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@27
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+M=M+1
+A=M-1
+M=0
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@20602
+0;JMP
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@28
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@20714
+D;JNE
+@20798
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@27
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@27
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@20883
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@27
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@27
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@28
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@3
+D=A
+D=D-1
+@0
+AM=M+1
+A=A-1
+M=0
+@20909
+D;JGT
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@20931
+D=A
+@38
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@511
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@20948
+D=A
+@22
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@20968
+D=A
+@38
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@255
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@20990
+D=A
+@22
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@0
+AM=M-1
+D=M
+@21002
+D;JNE
+@21025
+0;JMP
+@7
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@27353
+D=A
+@14
+M=D
+@21020
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@16
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@7287
+D=A
+@14
+M=D
+@21050
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@16
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@6822
+D=A
+@14
+M=D
+@21088
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@32
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@6822
+D=A
+@14
+M=D
+@21124
+D=A
+@95
+0;JMP
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+M=D
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@29
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@20701
+D=A
+@14
+M=D
+@21193
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@2
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@21219
+D;JNE
+@21252
+0;JMP
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@20907
+D=A
+@14
+M=D
+@21245
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@21283
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@20907
+D=A
+@14
+M=D
+@21278
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@11
+D=A
+D=D-1
+@0
+AM=M+1
+A=A-1
+M=0
+@21291
+D;JGT
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@21313
+D=A
+@38
+0;JMP
+@2
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@511
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@21331
+D=A
+@22
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@21351
+D=A
+@38
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@2
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@255
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@21375
+D=A
+@22
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@0
+AM=M-1
+D=M
+@21387
+D;JNE
+@21410
+0;JMP
+@8
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@27353
+D=A
+@14
+M=D
+@21405
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@2
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@1
+D=A
+@13
+M=D
+@6774
+D=A
+@14
+M=D
+@21442
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+M=D
+@2
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@1
+D=A
+@13
+M=D
+@6774
+D=A
+@14
+M=D
+@21483
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+M=D
+@1
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@21511
+D=A
+@38
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@1
+D=M
+@6
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@21551
+D=A
+@38
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@1
+D=M
+@6
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+A=M-1
+M=!M
+@2
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@21587
+D=A
+@38
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@0
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@0
+AM=M-1
+D=M
+@21604
+D;JNE
+@21698
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@2
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@2
+A=M
+M=D
+@1
+D=M
+@4
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@2
+A=M+1
+A=A+1
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@2
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@2
+A=M+1
+M=D
+@1
+D=M
+@4
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@2
+A=M+1
+A=A+1
+A=A+1
+M=D
+@1
+D=M
+@6
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@21714
+D;JNE
+@21844
+0;JMP
+@1
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+M=D
+@1
+D=M
+@4
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@2
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=M
+@8
+D=D+A
+@13
+M=D
+@0
+AM=M-1
+D=M
+@13
+A=M
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@21830
+D=A
+@22
+0;JMP
+@1
+D=M
+@7
+D=D+A
+@13
+M=D
+@0
+AM=M-1
+D=M
+@13
+A=M
+M=D
+@21922
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@2
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=M
+@8
+D=D+A
+@13
+M=D
+@0
+AM=M-1
+D=M
+@13
+A=M
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@21910
+D=A
+@22
+0;JMP
+@1
+D=M
+@7
+D=D+A
+@13
+M=D
+@0
+AM=M-1
+D=M
+@13
+A=M
+M=D
+@2
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@6822
+D=A
+@14
+M=D
+@21948
+D=A
+@95
+0;JMP
+@1
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@2
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@6822
+D=A
+@14
+M=D
+@21998
+D=A
+@95
+0;JMP
+@1
+D=M
+@9
+D=D+A
+@13
+M=D
+@0
+AM=M-1
+D=M
+@13
+A=M
+M=D
+@2
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@2
+D=A
+@13
+M=D
+@6822
+D=A
+@14
+M=D
+@22050
+D=A
+@95
+0;JMP
+@1
+D=M
+@10
+D=D+A
+@13
+M=D
+@0
+AM=M-1
+D=M
+@13
+A=M
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=M
+@6
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@13
+M=D
+@21204
+D=A
+@14
+M=D
+@22097
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=M
+@8
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@22122
+D=A
+@38
+0;JMP
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@22348
+D;JNE
+@1
+D=M
+@5
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@22147
+D=A
+@38
+0;JMP
+@0
+AM=M-1
+D=M
+@22154
+D;JNE
+@22189
+0;JMP
+@1
+D=M
+@5
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=M
+@9
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@22284
+0;JMP
+@1
+D=M
+@5
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=M
+@10
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@1
+D=M
+@7
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@22238
+D;JNE
+@22262
+0;JMP
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@22284
+0;JMP
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=M
+@6
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+D=A
+@13
+M=D
+@21204
+D=A
+@14
+M=D
+@22341
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@22102
+0;JMP
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@9
+D=A
+D=D-1
+@0
+AM=M+1
+A=A-1
+M=0
+@22356
+D;JGT
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@22382
+D=A
+@22
+0;JMP
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@22402
+D=A
+@22
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@22422
+D=A
+@38
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@2
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@511
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@22445
+D=A
+@22
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@22465
+D=A
+@38
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@2
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@255
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@22489
+D=A
+@22
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@0
+AM=M-1
+D=M
+@22501
+D;JNE
+@22524
+0;JMP
+@9
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@27353
+D=A
+@14
+M=D
+@22519
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@16
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@7287
+D=A
+@14
+M=D
+@22549
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@16
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@6822
+D=A
+@14
+M=D
+@22591
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@1
+D=M
+@7
+D=D+A
+@13
+M=D
+@0
+AM=M-1
+D=M
+@13
+A=M
+M=D
+@2
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@16
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@7287
+D=A
+@14
+M=D
+@22634
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@2
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=M
+@4
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@16
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@6822
+D=A
+@14
+M=D
+@22678
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@1
+D=M
+@8
+D=D+A
+@13
+M=D
+@0
+AM=M-1
+D=M
+@13
+A=M
+M=D
+@1
+D=M
+@7
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@29
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@1
+D=M
+@8
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@29
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@32
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@6822
+D=A
+@14
+M=D
+@22835
+D=A
+@95
+0;JMP
+@1
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@1
+D=M
+@4
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@22905
+D=A
+@22
+0;JMP
+@0
+A=M-1
+M=!M
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@23245
+D;JNE
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+M=D
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@22958
+D=A
+@6
+0;JMP
+@0
+AM=M-1
+D=M
+@22965
+D;JNE
+@23014
+0;JMP
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=M
+@5
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=M
+@6
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@2
+D=A
+@13
+M=D
+@20701
+D=A
+@14
+M=D
+@23007
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@23184
+0;JMP
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=M
+@6
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@20701
+D=A
+@14
+M=D
+@23042
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@23087
+D=A
+@38
+0;JMP
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@23151
+D;JNE
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+A=M-1
+D=!M
+M=D+1
+@2
+D=A
+@13
+M=D
+@20701
+D=A
+@14
+M=D
+@23122
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@23069
+0;JMP
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=M
+@5
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@20701
+D=A
+@14
+M=D
+@23179
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@2
+A=M+1
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@32
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@22885
+0;JMP
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@11
+D=A
+D=D-1
+@0
+AM=M+1
+A=A-1
+M=0
+@23253
+D;JGT
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@8406
+D=A
+@14
+M=D
+@23287
+D=A
+@95
+0;JMP
+@1
+D=M
+@7
+D=D+A
+@13
+M=D
+@0
+AM=M-1
+D=M
+@13
+A=M
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@8359
+D=A
+@14
+M=D
+@23326
+D=A
+@95
+0;JMP
+@1
+D=M
+@8
+D=D+A
+@13
+M=D
+@0
+AM=M-1
+D=M
+@13
+A=M
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+A=M-1
+D=!M
+M=D+1
+@23357
+D=A
+@22
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@256
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@23374
+D=A
+@38
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@1
+D=M
+@7
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@512
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@23398
+D=A
+@38
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@1
+D=M
+@8
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+A=M-1
+D=!M
+M=D+1
+@23424
+D=A
+@22
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@0
+AM=M-1
+D=M
+@23436
+D;JNE
+@24145
+0;JMP
+@1
+D=M
+@7
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@2
+D=A
+@13
+M=D
+@8359
+D=A
+@14
+M=D
+@23461
+D=A
+@95
+0;JMP
+@1
+D=M
+@7
+D=D+A
+@13
+M=D
+@0
+AM=M-1
+D=M
+@13
+A=M
+M=D
+@1
+D=M
+@8
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@511
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@8406
+D=A
+@14
+M=D
+@23500
+D=A
+@95
+0;JMP
+@1
+D=M
+@8
+D=D+A
+@13
+M=D
+@0
+AM=M-1
+D=M
+@13
+A=M
+M=D
+@1
+D=M
+@7
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@16
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@7287
+D=A
+@14
+M=D
+@23539
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+M=D
+@1
+D=M
+@7
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@16
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@6822
+D=A
+@14
+M=D
+@23579
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@1
+D=M
+@9
+D=D+A
+@13
+M=D
+@0
+AM=M-1
+D=M
+@13
+A=M
+M=D
+@1
+D=M
+@8
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@16
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@7287
+D=A
+@14
+M=D
+@23623
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+M=D
+@1
+D=M
+@8
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@16
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@6822
+D=A
+@14
+M=D
+@23665
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@1
+D=M
+@10
+D=D+A
+@13
+M=D
+@0
+AM=M-1
+D=M
+@13
+A=M
+M=D
+@1
+D=M
+@9
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@29
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@1
+D=M
+@10
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@29
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@32
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@6822
+D=A
+@14
+M=D
+@23820
+D=A
+@95
+0;JMP
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=M
+@6
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+M=D
+@1
+D=M
+@6
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@23915
+D=A
+@6
+0;JMP
+@0
+AM=M-1
+D=M
+@23922
+D;JNE
+@23971
+0;JMP
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=M
+@4
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=M
+@5
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@2
+D=A
+@13
+M=D
+@20701
+D=A
+@14
+M=D
+@23964
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@24145
+0;JMP
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=M
+@5
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@20701
+D=A
+@14
+M=D
+@23999
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@24046
+D=A
+@38
+0;JMP
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@24110
+D;JNE
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+A=M-1
+D=!M
+M=D+1
+@2
+D=A
+@13
+M=D
+@20701
+D=A
+@14
+M=D
+@24081
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@24026
+0;JMP
+@1
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=M
+@4
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@20701
+D=A
+@14
+M=D
+@24140
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@3
+D=A
+@13
+M=D
+@23251
+D=A
+@14
+M=D
+@24224
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@3
+D=A
+@13
+M=D
+@23251
+D=A
+@14
+M=D
+@24302
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@3
+D=A
+@13
+M=D
+@23251
+D=A
+@14
+M=D
+@24381
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@3
+D=A
+@13
+M=D
+@23251
+D=A
+@14
+M=D
+@24460
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@3
+D=A
+D=D-1
+@0
+AM=M+1
+A=A-1
+M=0
+@24473
+D;JGT
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@24495
+D=A
+@38
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@511
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24512
+D=A
+@22
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@24532
+D=A
+@38
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@255
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24554
+D=A
+@22
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@0
+AM=M-1
+D=M
+@24566
+D;JNE
+@24589
+0;JMP
+@12
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@27353
+D=A
+@14
+M=D
+@24584
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+M=M+1
+A=M-1
+M=0
+@24617
+D=A
+@38
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@511
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24647
+D=A
+@22
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+M=M+1
+A=M-1
+M=0
+@24680
+D=A
+@38
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@255
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@24715
+D=A
+@22
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@0
+AM=M-1
+D=M
+@24727
+D;JNE
+@24750
+0;JMP
+@13
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@27353
+D=A
+@14
+M=D
+@24745
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@2
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@2
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@4
+D=A
+@13
+M=D
+@24151
+D=A
+@14
+M=D
+@24828
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@24851
+D=A
+@22
+0;JMP
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@25099
+D;JNE
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@24875
+D=A
+@38
+0;JMP
+@0
+AM=M-1
+D=M
+@24882
+D;JNE
+@24940
+0;JMP
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@6822
+D=A
+@14
+M=D
+@24915
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+M=D
+@25030
+0;JMP
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@2
+D=A
+@13
+M=D
+@6822
+D=A
+@14
+M=D
+@24985
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@5
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@4
+D=A
+@13
+M=D
+@24151
+D=A
+@14
+M=D
+@25092
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@24833
+0;JMP
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@8643
+D=A
+@14
+M=D
+@25123
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@3
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@25143
+D=A
+@38
+0;JMP
+@0
+AM=M-1
+D=M
+@25150
+D;JNE
+@25173
+0;JMP
+@14
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@27353
+D=A
+@14
+M=D
+@25168
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@25188
+D=A
+@22
+0;JMP
+@0
+AM=M-1
+D=M
+@25195
+D;JNE
+@25220
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@5808
+D=A
+@14
+M=D
+@25214
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+A=M
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+A=A+1
+M=D
+@3
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+M=D
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@25279
+D=A
+@22
+0;JMP
+@0
+AM=M-1
+D=M
+@25286
+D;JNE
+@25310
+0;JMP
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@5877
+D=A
+@14
+M=D
+@25305
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@3
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@9357
+D=A
+@14
+M=D
+@25328
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+M=D
+@3
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@25388
+D=A
+@38
+0;JMP
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@25407
+D=A
+@22
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@25431
+D=A
+@6
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@0
+AM=M-1
+D=M
+@25443
+D;JNE
+@25466
+0;JMP
+@15
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@27353
+D=A
+@14
+M=D
+@25461
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@25526
+D=A
+@38
+0;JMP
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@25545
+D=A
+@22
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@25569
+D=A
+@6
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@0
+AM=M-1
+D=M
+@25581
+D;JNE
+@25604
+0;JMP
+@16
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@27353
+D=A
+@14
+M=D
+@25599
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@2
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+M=D
+@3
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@25690
+D=A
+@6
+0;JMP
+@0
+AM=M-1
+D=M
+@25697
+D;JNE
+@25720
+0;JMP
+@17
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@27353
+D=A
+@14
+M=D
+@25715
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@3
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@3
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+A=A+1
+M=D
+@3
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+M=D
+@3
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@25829
+D=A
+@6
+0;JMP
+@0
+AM=M-1
+D=M
+@25836
+D;JNE
+@25859
+0;JMP
+@18
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@27353
+D=A
+@14
+M=D
+@25854
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@3
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+A=A+1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@5
+D=A
+D=D-1
+@0
+AM=M+1
+A=A-1
+M=0
+@25891
+D;JGT
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+M=D
+@3
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@25926
+D=A
+@6
+0;JMP
+@0
+AM=M-1
+D=M
+@25933
+D;JNE
+@25939
+0;JMP
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@0
+M=M+1
+A=M-1
+M=0
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@45
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@25992
+D=A
+@6
+0;JMP
+@0
+AM=M-1
+D=M
+@25999
+D;JNE
+@26025
+0;JMP
+@0
+M=M+1
+A=M-1
+M=0
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+A=A+1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@26044
+D=A
+@38
+0;JMP
+@1
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D&M
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@26249
+D;JNE
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@48
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+M=D
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@26131
+D=A
+@38
+0;JMP
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@9
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@26149
+D=A
+@22
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=D|M
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+M=D
+@1
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@26181
+D;JNE
+@26247
+0;JMP
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@10
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@6822
+D=A
+@14
+M=D
+@26206
+D=A
+@95
+0;JMP
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@26025
+0;JMP
+@1
+D=M
+@4
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@26265
+D;JNE
+@26282
+0;JMP
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+A=M-1
+D=!M
+M=D+1
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+@4
+D=A
+D=D-1
+@0
+AM=M+1
+A=A-1
+M=0
+@26293
+D;JGT
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@3
+M=D
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@26327
+D=A
+@6
+0;JMP
+@0
+AM=M-1
+D=M
+@26334
+D;JNE
+@26357
+0;JMP
+@19
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@27353
+D=A
+@14
+M=D
+@26352
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@6
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@5808
+D=A
+@14
+M=D
+@26375
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@26397
+D=A
+@38
+0;JMP
+@0
+AM=M-1
+D=M
+@26404
+D;JNE
+@26436
+0;JMP
+@0
+M=M+1
+A=M-1
+M=0
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+A=A+1
+A=A+1
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+A=M-1
+D=!M
+M=D+1
+@0
+AM=M-1
+D=M
+@2
+A=M+1
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@26464
+D=A
+@22
+0;JMP
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@26630
+D;JNE
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@10
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@7287
+D=A
+@14
+M=D
+@26497
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@1
+A=M+1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@48
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@10
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@6822
+D=A
+@14
+M=D
+@26561
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@1
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@2
+A=M+1
+M=D
+@26449
+0;JMP
+@1
+D=M
+@3
+A=D+A
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@26646
+D;JNE
+@26716
+0;JMP
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@45
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@3
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@26734
+D=A
+@38
+0;JMP
+@0
+AM=M-1
+D=M
+@26741
+D;JNE
+@26764
+0;JMP
+@19
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@27353
+D=A
+@14
+M=D
+@26759
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@26779
+D=A
+@6
+0;JMP
+@0
+AM=M-1
+D=M
+@26786
+D;JNE
+@26843
+0;JMP
+@0
+M=M+1
+A=M-1
+M=0
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@48
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+A=A+1
+M=D
+@27003
+0;JMP
+@0
+M=M+1
+A=M-1
+M=0
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+A=A+1
+M=D
+@3
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@26873
+D=A
+@38
+0;JMP
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@27003
+D;JNE
+@3
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+A=M+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@3
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@4
+M=D
+@4
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+AM=M-1
+D=M
+@4
+M=D
+@5
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@4
+A=M
+M=D
+@3
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=D+M
+@0
+AM=M-1
+D=M
+@3
+A=M+1
+A=A+1
+M=D
+@26854
+0;JMP
+@1
+A=M+1
+A=A+1
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@5877
+D=A
+@14
+M=D
+@27023
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@128
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+@129
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+@34
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@54
+0;JMP
+@0
+D=A
+@13
+M=D
+@8453
+D=A
+@14
+M=D
+@27070
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+D=A
+@13
+M=D
+@6505
+D=A
+@14
+M=D
+@27087
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+D=A
+@13
+M=D
+@20329
+D=A
+@14
+M=D
+@27104
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+D=A
+@13
+M=D
+@9854
+D=A
+@14
+M=D
+@27121
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+D=A
+@13
+M=D
+@5918
+D=A
+@14
+M=D
+@27138
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+D=A
+@13
+M=D
+@3837
+D=A
+@14
+M=D
+@27155
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+D=A
+@13
+M=D
+@27177
+D=A
+@14
+M=D
+@27172
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@0
+A=M-1
+M=!M
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@27194
+D;JNE
+@27177
+0;JMP
+@0
+AM=M+1
+A=A-1
+M=0
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@27213
+D=A
+@38
+0;JMP
+@0
+AM=M-1
+D=M
+@27220
+D;JNE
+@27241
+0;JMP
+@0
+M=M+1
+A=M-1
+M=1
+@1
+D=A
+@13
+M=D
+@27353
+D=A
+@14
+M=D
+@27236
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@27256
+D=A
+@22
+0;JMP
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@27347
+D;JNE
+@50
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=0
+@27291
+D=A
+@22
+0;JMP
+@0
+A=M-1
+M=!M
+@0
+AM=M-1
+D=M
+@27323
+D;JNE
+@1
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+AM=M-1
+D=M
+@1
+A=M
+M=D
+@27276
+0;JMP
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@0
+M=M+1
+A=M-1
+M=1
+@0
+AM=M-1
+D=M
+A=A-1
+M=M-D
+@0
+AM=M-1
+D=M
+@2
+A=M
+M=D
+@27241
+0;JMP
+@0
+M=M+1
+A=M-1
+M=0
+@54
+0;JMP
+@3
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@25105
+D=A
+@14
+M=D
+@27371
+D=A
+@95
+0;JMP
+@69
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@25659
+D=A
+@14
+M=D
+@27389
+D=A
+@95
+0;JMP
+@82
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@25659
+D=A
+@14
+M=D
+@27407
+D=A
+@95
+0;JMP
+@82
+D=A
+@0
+AM=M+1
+A=A-1
+M=D
+@2
+D=A
+@13
+M=D
+@25659
+D=A
+@14
+M=D
+@27425
+D=A
+@95
+0;JMP
+@1
+D=A
+@13
+M=D
+@19850
+D=A
+@14
+M=D
+@27437
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@2
+A=M
+D=M
+@0
+AM=M+1
+A=A-1
+M=D
+@1
+D=A
+@13
+M=D
+@19981
+D=A
+@14
+M=D
+@27461
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
+@0
+D=A
+@13
+M=D
+@27177
+D=A
+@14
+M=D
+@27478
+D=A
+@95
+0;JMP
+@0
+AM=M-1
+D=M
+@5
+M=D
diff --git a/06/rect/Rect.asm b/6/rect/Rect.asm
similarity index 55%
rename from 06/rect/Rect.asm
rename to 6/rect/Rect.asm
index 6cbbaeb..b5998fb 100644
--- a/06/rect/Rect.asm
+++ b/6/rect/Rect.asm
@@ -1,35 +1,40 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/06/rect/Rect.asm
-
-// Draws a rectangle at the top-left corner of the screen.
-// The rectangle is 16 pixels wide and R0 pixels high.
-
- @0
- D=M
- @INFINITE_LOOP
- D;JLE
- @counter
- M=D
- @SCREEN
- D=A
- @address
- M=D
-(LOOP)
- @address
- A=M
- M=-1
- @address
- D=M
- @32
- D=D+A
- @address
- M=D
- @counter
- MD=M-1
- @LOOP
- D;JGT
-(INFINITE_LOOP)
- @INFINITE_LOOP
- 0;JMP
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+// Draws a rectangle at the top-left corner of the screen.
+// The rectangle is 16 pixels wide and R0 pixels high.
+// Usage: Before executing, put a value in R0.
+
+ // If (R0 <= 0) goto END else n = R0
+ @R0
+ D=M
+ @END
+ D;JLE
+ @n
+ M=D
+ // addr = base address of first screen row
+ @SCREEN
+ D=A
+ @addr
+ M=D
+(LOOP)
+ // RAM[addr] = -1
+ @addr
+ A=M
+ M=-1
+ // addr = base address of next screen row
+ @addr
+ D=M
+ @32
+ D=D+A
+ @addr
+ M=D
+ // decrements n and loops
+ @n
+ MD=M-1
+ @LOOP
+ D;JGT
+(END)
+ @END
+ 0;JMP
diff --git a/06/rect/RectL.asm b/6/rect/RectL.asm
similarity index 78%
rename from 06/rect/RectL.asm
rename to 6/rect/RectL.asm
index e97c09b..52ad2dd 100644
--- a/06/rect/RectL.asm
+++ b/6/rect/RectL.asm
@@ -1,32 +1,32 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/06/rect/RectL.asm
-
-// Symbol-less version of the Rect.asm program.
-
-@0
-D=M
-@23
-D;JLE
-@16
-M=D
-@16384
-D=A
-@17
-M=D
-@17
-A=M
-M=-1
-@17
-D=M
-@32
-D=D+A
-@17
-M=D
-@16
-MD=M-1
-@10
-D;JGT
-@23
-0;JMP
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+// Symbol-less version of the Rect.asm program.
+// Designed for testing the basic version of the assembler.
+
+@0
+D=M
+@23
+D;JLE
+@16
+M=D
+@16384
+D=A
+@17
+M=D
+@17
+A=M
+M=-1
+@17
+D=M
+@32
+D=D+A
+@17
+M=D
+@16
+MD=M-1
+@10
+D;JGT
+@23
+0;JMP
diff --git a/07/MemoryAccess/BasicTest/BasicTest.cmp b/7/MemoryAccess/BasicTest/BasicTest.cmp
similarity index 98%
rename from 07/MemoryAccess/BasicTest/BasicTest.cmp
rename to 7/MemoryAccess/BasicTest/BasicTest.cmp
index 538454b..85c19a7 100644
--- a/07/MemoryAccess/BasicTest/BasicTest.cmp
+++ b/7/MemoryAccess/BasicTest/BasicTest.cmp
@@ -1,2 +1,2 @@
-|RAM[256]|RAM[300]|RAM[401]|RAM[402]|RAM[3006|RAM[3012|RAM[3015|RAM[11] |
-| 472 | 10 | 21 | 22 | 36 | 42 | 45 | 510 |
+|RAM[256]|RAM[300]|RAM[401]|RAM[402]|RAM[3006|RAM[3012|RAM[3015|RAM[11] |
+| 472 | 10 | 21 | 22 | 36 | 42 | 45 | 510 |
diff --git a/07/MemoryAccess/BasicTest/BasicTest.tst b/7/MemoryAccess/BasicTest/BasicTest.tst
similarity index 76%
rename from 07/MemoryAccess/BasicTest/BasicTest.tst
rename to 7/MemoryAccess/BasicTest/BasicTest.tst
index fa6d9a6..25fd50d 100644
--- a/07/MemoryAccess/BasicTest/BasicTest.tst
+++ b/7/MemoryAccess/BasicTest/BasicTest.tst
@@ -1,25 +1,25 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/07/MemoryAccess/BasicTest/BasicTest.tst
-
-load BasicTest.asm,
-output-file BasicTest.out,
-compare-to BasicTest.cmp,
-output-list RAM[256]%D1.6.1 RAM[300]%D1.6.1 RAM[401]%D1.6.1
- RAM[402]%D1.6.1 RAM[3006]%D1.6.1 RAM[3012]%D1.6.1
- RAM[3015]%D1.6.1 RAM[11]%D1.6.1;
-
-set RAM[0] 256, // stack pointer
-set RAM[1] 300, // base address of the local segment
-set RAM[2] 400, // base address of the argument segment
-set RAM[3] 3000, // base address of the this segment
-set RAM[4] 3010, // base address of the that segment
-
-repeat 600 { // enough cycles to complete the execution
- ticktock;
-}
-
-// Outputs the stack base and some values
-// from the tested memory segments
-output;
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+// Tests BasicTest.asm on the CPU emulator.
+
+load BasicTest.asm,
+output-file BasicTest.out,
+compare-to BasicTest.cmp,
+
+set RAM[0] 256, // stack pointer
+set RAM[1] 300, // base address of the local segment
+set RAM[2] 400, // base address of the argument segment
+set RAM[3] 3000, // base address of the this segment
+set RAM[4] 3010, // base address of the that segment
+
+repeat 600 { // enough cycles to complete the execution
+ ticktock;
+}
+
+// Outputs the value at the stack's base and some values from the tested memory segments
+output-list RAM[256]%D1.6.1 RAM[300]%D1.6.1 RAM[401]%D1.6.1
+ RAM[402]%D1.6.1 RAM[3006]%D1.6.1 RAM[3012]%D1.6.1
+ RAM[3015]%D1.6.1 RAM[11]%D1.6.1;
+output;
diff --git a/07/MemoryAccess/BasicTest/BasicTest.vm b/7/MemoryAccess/BasicTest/BasicTest.vm
similarity index 72%
rename from 07/MemoryAccess/BasicTest/BasicTest.vm
rename to 7/MemoryAccess/BasicTest/BasicTest.vm
index b2f9343..0bf9816 100644
--- a/07/MemoryAccess/BasicTest/BasicTest.vm
+++ b/7/MemoryAccess/BasicTest/BasicTest.vm
@@ -1,31 +1,31 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/07/MemoryAccess/BasicTest/BasicTest.vm
-
-// Executes pop and push commands using the virtual memory segments.
-push constant 10
-pop local 0
-push constant 21
-push constant 22
-pop argument 2
-pop argument 1
-push constant 36
-pop this 6
-push constant 42
-push constant 45
-pop that 5
-pop that 2
-push constant 510
-pop temp 6
-push local 0
-push that 5
-add
-push argument 1
-sub
-push this 6
-push this 6
-add
-sub
-push temp 6
-add
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+// Executes pop and push commands.
+
+push constant 10
+pop local 0
+push constant 21
+push constant 22
+pop argument 2
+pop argument 1
+push constant 36
+pop this 6
+push constant 42
+push constant 45
+pop that 5
+pop that 2
+push constant 510
+pop temp 6
+push local 0
+push that 5
+add
+push argument 1
+sub
+push this 6
+push this 6
+add
+sub
+push temp 6
+add
diff --git a/07/MemoryAccess/BasicTest/BasicTestVME.tst b/7/MemoryAccess/BasicTest/BasicTestVME.tst
similarity index 66%
rename from 07/MemoryAccess/BasicTest/BasicTestVME.tst
rename to 7/MemoryAccess/BasicTest/BasicTestVME.tst
index 24e9090..e7cdf02 100644
--- a/07/MemoryAccess/BasicTest/BasicTestVME.tst
+++ b/7/MemoryAccess/BasicTest/BasicTestVME.tst
@@ -1,25 +1,27 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/07/MemoryAccess/BasicTest/BasicTestVME.tst
-
-load BasicTest.vm,
-output-file BasicTest.out,
-compare-to BasicTest.cmp,
-output-list RAM[256]%D1.6.1 RAM[300]%D1.6.1 RAM[401]%D1.6.1
- RAM[402]%D1.6.1 RAM[3006]%D1.6.1 RAM[3012]%D1.6.1
- RAM[3015]%D1.6.1 RAM[11]%D1.6.1;
-
-set sp 256, // stack pointer
-set local 300, // base address of the local segment
-set argument 400, // base address of the argument segment
-set this 3000, // base address of the this segment
-set that 3010, // base address of the that segment
-
-repeat 25 { // BasicTest.vm has 25 instructions
- vmstep;
-}
-
-// Outputs the stack base and some values
-// from the tested memory segments
-output;
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+// Tests and illustrates BasicTest.vm on the VM simulator.
+// Starts by setting the stack pointer and the base addresses
+// of relevant memory segments to selected RAM addresses.
+
+load BasicTest.vm,
+output-file BasicTest.out,
+compare-to BasicTest.cmp,
+
+set sp 256, // stack pointer
+set local 300, // base address of the local segment
+set argument 400, // base address of the argument segment
+set this 3000, // base address of the this segment
+set that 3010, // base address of the that segment
+
+repeat 25 { // BasicTest.vm has 25 VM commands
+ vmstep;
+}
+
+// Outputs the value at the stack's base and some values from the tested memory segments
+output-list RAM[256]%D1.6.1 RAM[300]%D1.6.1 RAM[401]%D1.6.1
+ RAM[402]%D1.6.1 RAM[3006]%D1.6.1 RAM[3012]%D1.6.1
+ RAM[3015]%D1.6.1 RAM[11]%D1.6.1;
+output;
diff --git a/07/MemoryAccess/PointerTest/PointerTest.cmp b/7/MemoryAccess/PointerTest/PointerTest.cmp
similarity index 97%
rename from 07/MemoryAccess/PointerTest/PointerTest.cmp
rename to 7/MemoryAccess/PointerTest/PointerTest.cmp
index b59fa97..5d62de8 100644
--- a/07/MemoryAccess/PointerTest/PointerTest.cmp
+++ b/7/MemoryAccess/PointerTest/PointerTest.cmp
@@ -1,2 +1,2 @@
-|RAM[256]| RAM[3] | RAM[4] |RAM[3032|RAM[3046|
-| 6084 | 3030 | 3040 | 32 | 46 |
+|RAM[256]| RAM[3] | RAM[4] |RAM[3032|RAM[3046|
+| 6084 | 3030 | 3040 | 32 | 46 |
diff --git a/07/MemoryAccess/PointerTest/PointerTest.tst b/7/MemoryAccess/PointerTest/PointerTest.tst
similarity index 79%
rename from 07/MemoryAccess/PointerTest/PointerTest.tst
rename to 7/MemoryAccess/PointerTest/PointerTest.tst
index cd5515d..426bc78 100644
--- a/07/MemoryAccess/PointerTest/PointerTest.tst
+++ b/7/MemoryAccess/PointerTest/PointerTest.tst
@@ -1,20 +1,21 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/07/MemoryAccess/PointerTest/PointerTest.tst
-
-load PointerTest.asm,
-output-file PointerTest.out,
-compare-to PointerTest.cmp,
-output-list RAM[256]%D1.6.1 RAM[3]%D1.6.1
- RAM[4]%D1.6.1 RAM[3032]%D1.6.1 RAM[3046]%D1.6.1;
-
-set RAM[0] 256, // initializes the stack pointer
-
-repeat 450 { // enough cycles to complete the execution
- ticktock;
-}
-
-// outputs the stack base, this, that, and
-// some values from the the this and that segments
-output;
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+// Tests PointerTest.asm on the CPU emulator.
+
+load PointerTest.asm,
+output-file PointerTest.out,
+compare-to PointerTest.cmp,
+
+set RAM[0] 256, // initializes the stack pointer
+
+repeat 450 { // enough cycles to complete the execution
+ ticktock;
+}
+
+// Outputs the value at the stack's base, THIS, THAT, and
+// some values from the the this and that segments
+output-list RAM[256]%D1.6.1 RAM[3]%D1.6.1
+ RAM[4]%D1.6.1 RAM[3032]%D1.6.1 RAM[3046]%D1.6.1;
+output;
diff --git a/07/MemoryAccess/PointerTest/PointerTest.vm b/7/MemoryAccess/PointerTest/PointerTest.vm
similarity index 82%
rename from 07/MemoryAccess/PointerTest/PointerTest.vm
rename to 7/MemoryAccess/PointerTest/PointerTest.vm
index 5b0a109..fd1a241 100644
--- a/07/MemoryAccess/PointerTest/PointerTest.vm
+++ b/7/MemoryAccess/PointerTest/PointerTest.vm
@@ -1,22 +1,22 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/07/MemoryAccess/PointerTest/PointerTest.vm
-
-// Executes pop and push commands using the
-// pointer, this, and that segments.
-push constant 3030
-pop pointer 0
-push constant 3040
-pop pointer 1
-push constant 32
-pop this 2
-push constant 46
-pop that 6
-push pointer 0
-push pointer 1
-add
-push this 2
-sub
-push that 6
-add
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+// Executes pop and push commands using the
+// pointer, this, and that segments.
+
+push constant 3030
+pop pointer 0
+push constant 3040
+pop pointer 1
+push constant 32
+pop this 2
+push constant 46
+pop that 6
+push pointer 0
+push pointer 1
+add
+push this 2
+sub
+push that 6
+add
diff --git a/07/MemoryAccess/PointerTest/PointerTestVME.tst b/7/MemoryAccess/PointerTest/PointerTestVME.tst
similarity index 69%
rename from 07/MemoryAccess/PointerTest/PointerTestVME.tst
rename to 7/MemoryAccess/PointerTest/PointerTestVME.tst
index 1b395c2..a0599c4 100644
--- a/07/MemoryAccess/PointerTest/PointerTestVME.tst
+++ b/7/MemoryAccess/PointerTest/PointerTestVME.tst
@@ -1,20 +1,21 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/07/MemoryAccess/PointerTest/PointerTestVME.tst
-
-load PointerTest.vm,
-output-file PointerTest.out,
-compare-to PointerTest.cmp,
-output-list RAM[256]%D1.6.1 RAM[3]%D1.6.1 RAM[4]%D1.6.1
- RAM[3032]%D1.6.1 RAM[3046]%D1.6.1;
-
-set RAM[0] 256, // initializes the stack pointer
-
-repeat 15 { // PointerTest.vm has 15 instructions
- vmstep;
-}
-
-// outputs the stack base, this, that, and
-// some values from the the this and that segments
-output;
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+// Tests and illustrates PointerTest.vm on the VM simulator.
+
+load PointerTest.vm,
+output-file PointerTest.out,
+compare-to PointerTest.cmp,
+
+set RAM[0] 256, // initializes the stack pointer
+
+repeat 15 { // PointerTest.vm has 15 VM commands
+ vmstep;
+}
+
+// Outputs the stack base, THIS, THAT, and
+// some values from the the this and that segments
+output-list RAM[256]%D1.6.1 RAM[3]%D1.6.1 RAM[4]%D1.6.1
+ RAM[3032]%D1.6.1 RAM[3046]%D1.6.1;
+output;
diff --git a/07/MemoryAccess/StaticTest/StaticTest.cmp b/7/MemoryAccess/StaticTest/StaticTest.cmp
similarity index 91%
rename from 07/MemoryAccess/StaticTest/StaticTest.cmp
rename to 7/MemoryAccess/StaticTest/StaticTest.cmp
index 29f4bf0..2bc908b 100644
--- a/07/MemoryAccess/StaticTest/StaticTest.cmp
+++ b/7/MemoryAccess/StaticTest/StaticTest.cmp
@@ -1,2 +1,2 @@
-|RAM[256]|
-| 1110 |
+|RAM[256]|
+| 1110 |
diff --git a/07/MemoryAccess/StaticTest/StaticTest.tst b/7/MemoryAccess/StaticTest/StaticTest.tst
similarity index 75%
rename from 07/MemoryAccess/StaticTest/StaticTest.tst
rename to 7/MemoryAccess/StaticTest/StaticTest.tst
index 1f23d66..9efd4ad 100644
--- a/07/MemoryAccess/StaticTest/StaticTest.tst
+++ b/7/MemoryAccess/StaticTest/StaticTest.tst
@@ -1,17 +1,19 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/07/MemoryAccess/StaticTest/StaticTest.tst
-
-load StaticTest.asm,
-output-file StaticTest.out,
-compare-to StaticTest.cmp,
-output-list RAM[256]%D1.6.1;
-
-set RAM[0] 256, // initializes the stack pointer
-
-repeat 200 { // enough cycles to complete the execution
- ticktock;
-}
-
-output; // the stack base
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+// Tests StaticTest.asm on the CPU emulator.
+
+load StaticTest.asm,
+output-file StaticTest.out,
+compare-to StaticTest.cmp,
+
+set RAM[0] 256, // initializes the stack pointer
+
+repeat 200 { // enough cycles to complete the execution
+ ticktock;
+}
+
+// Outputs the value at the stack's base
+output-list RAM[256]%D1.6.1;
+output;
diff --git a/07/MemoryAccess/StaticTest/StaticTest.vm b/7/MemoryAccess/StaticTest/StaticTest.vm
similarity index 80%
rename from 07/MemoryAccess/StaticTest/StaticTest.vm
rename to 7/MemoryAccess/StaticTest/StaticTest.vm
index 65b4f6f..0c28343 100644
--- a/07/MemoryAccess/StaticTest/StaticTest.vm
+++ b/7/MemoryAccess/StaticTest/StaticTest.vm
@@ -1,17 +1,17 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/07/MemoryAccess/StaticTest/StaticTest.vm
-
-// Executes pop and push commands using the static segment.
-push constant 111
-push constant 333
-push constant 888
-pop static 8
-pop static 3
-pop static 1
-push static 3
-push static 1
-sub
-push static 8
-add
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+// Executes pop and push commands using the static segment.
+
+push constant 111
+push constant 333
+push constant 888
+pop static 8
+pop static 3
+pop static 1
+push static 3
+push static 1
+sub
+push static 8
+add
diff --git a/07/MemoryAccess/StaticTest/StaticTestVME.tst b/7/MemoryAccess/StaticTest/StaticTestVME.tst
similarity index 63%
rename from 07/MemoryAccess/StaticTest/StaticTestVME.tst
rename to 7/MemoryAccess/StaticTest/StaticTestVME.tst
index 52882a4..6c948d2 100644
--- a/07/MemoryAccess/StaticTest/StaticTestVME.tst
+++ b/7/MemoryAccess/StaticTest/StaticTestVME.tst
@@ -1,17 +1,19 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/07/MemoryAccess/StaticTest/StaticTestVME.tst
-
-load StaticTest.vm,
-output-file StaticTest.out,
-compare-to StaticTest.cmp,
-output-list RAM[256]%D1.6.1;
-
-set sp 256, // initializes the stack pointer
-
-repeat 11 { // StaticTest.vm has 11 instructions
- vmstep;
-}
-
-output; // the stack base
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+// Tests and illustrates StaticTest.vm on the VM simulator.
+
+load StaticTest.vm,
+output-file StaticTest.out,
+compare-to StaticTest.cmp,
+
+set sp 256, // initializes the stack pointer
+
+repeat 11 { // StaticTest.vm has 11 VM commands
+ vmstep;
+}
+
+// Outputs the value at the stack's base
+output-list RAM[256]%D1.6.1;
+output;
diff --git a/07/StackArithmetic/SimpleAdd/SimpleAdd.cmp b/7/StackArithmetic/SimpleAdd/SimpleAdd.cmp
similarity index 96%
rename from 07/StackArithmetic/SimpleAdd/SimpleAdd.cmp
rename to 7/StackArithmetic/SimpleAdd/SimpleAdd.cmp
index 7a3585b..6b3b20e 100644
--- a/07/StackArithmetic/SimpleAdd/SimpleAdd.cmp
+++ b/7/StackArithmetic/SimpleAdd/SimpleAdd.cmp
@@ -1,2 +1,2 @@
-| RAM[0] | RAM[256] |
-| 257 | 15 |
+| RAM[0] | RAM[256] |
+| 257 | 15 |
diff --git a/07/StackArithmetic/SimpleAdd/SimpleAdd.tst b/7/StackArithmetic/SimpleAdd/SimpleAdd.tst
similarity index 72%
rename from 07/StackArithmetic/SimpleAdd/SimpleAdd.tst
rename to 7/StackArithmetic/SimpleAdd/SimpleAdd.tst
index 02dece3..272b873 100644
--- a/07/StackArithmetic/SimpleAdd/SimpleAdd.tst
+++ b/7/StackArithmetic/SimpleAdd/SimpleAdd.tst
@@ -1,17 +1,19 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/07/StackArithmetic/SimpleAdd/SimpleAdd.tst
-
-load SimpleAdd.asm,
-output-file SimpleAdd.out,
-compare-to SimpleAdd.cmp,
-output-list RAM[0]%D2.6.2 RAM[256]%D2.6.2;
-
-set RAM[0] 256, // initializes the stack pointer
-
-repeat 60 { // enough cycles to complete the execution
- ticktock;
-}
-
-output; // the stack pointer and the stack base
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+// Tests SimpleAdd.asm on the CPU emulator.
+
+load SimpleAdd.asm,
+output-file SimpleAdd.out,
+compare-to SimpleAdd.cmp,
+
+set RAM[0] 256, // initializes the stack pointer
+
+repeat 60 { // enough cycles to complete the execution
+ ticktock;
+}
+
+// Outputs the stack pointer and the value at the stack's base
+output-list RAM[0]%D2.6.2 RAM[256]%D2.6.2;
+output;
diff --git a/07/StackArithmetic/SimpleAdd/SimpleAdd.vm b/7/StackArithmetic/SimpleAdd/SimpleAdd.vm
similarity index 73%
rename from 07/StackArithmetic/SimpleAdd/SimpleAdd.vm
rename to 7/StackArithmetic/SimpleAdd/SimpleAdd.vm
index cfd4ee9..5b200e5 100644
--- a/07/StackArithmetic/SimpleAdd/SimpleAdd.vm
+++ b/7/StackArithmetic/SimpleAdd/SimpleAdd.vm
@@ -1,9 +1,9 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/07/StackArithmetic/SimpleAdd/SimpleAdd.vm
-
-// Pushes and adds two constants.
-push constant 7
-push constant 8
-add
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+// Pushes and adds two constants.
+
+push constant 7
+push constant 8
+add
diff --git a/07/StackArithmetic/SimpleAdd/SimpleAddVME.tst b/7/StackArithmetic/SimpleAdd/SimpleAddVME.tst
similarity index 61%
rename from 07/StackArithmetic/SimpleAdd/SimpleAddVME.tst
rename to 7/StackArithmetic/SimpleAdd/SimpleAddVME.tst
index 5010f4f..78b52d9 100644
--- a/07/StackArithmetic/SimpleAdd/SimpleAddVME.tst
+++ b/7/StackArithmetic/SimpleAdd/SimpleAddVME.tst
@@ -1,17 +1,19 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/07/StackArithmetic/SimpleAdd/SimpleAddVME.tst
-
-load SimpleAdd.vm,
-output-file SimpleAdd.out,
-compare-to SimpleAdd.cmp,
-output-list RAM[0]%D2.6.2 RAM[256]%D2.6.2;
-
-set RAM[0] 256, // initializes the stack pointer
-
-repeat 3 { // SimpleAdd.vm has 3 instructions
- vmstep;
-}
-
-output; // the stack pointer and the stack base
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+// Tests and illustrates SimpleAdd.vm on the VM simulator.
+
+load SimpleAdd.vm,
+output-file SimpleAdd.out,
+compare-to SimpleAdd.cmp,
+
+set RAM[0] 256, // initializes the stack pointer
+
+repeat 3 { // SimpleAdd.vm has 3 VM commands
+ vmstep;
+}
+
+// Outputs the stack pointer and the value at the stack's base
+output-list RAM[0]%D2.6.2 RAM[256]%D2.6.2;
+output;
diff --git a/07/StackArithmetic/StackTest/StackTest.cmp b/7/StackArithmetic/StackTest/StackTest.cmp
similarity index 98%
rename from 07/StackArithmetic/StackTest/StackTest.cmp
rename to 7/StackArithmetic/StackTest/StackTest.cmp
index f90fa1b..cb182ec 100644
--- a/07/StackArithmetic/StackTest/StackTest.cmp
+++ b/7/StackArithmetic/StackTest/StackTest.cmp
@@ -1,4 +1,4 @@
-| RAM[0] | RAM[256] | RAM[257] | RAM[258] | RAM[259] | RAM[260] |
-| 266 | -1 | 0 | 0 | 0 | -1 |
-| RAM[261] | RAM[262] | RAM[263] | RAM[264] | RAM[265] |
-| 0 | -1 | 0 | 0 | -91 |
+| RAM[0] | RAM[256] | RAM[257] | RAM[258] | RAM[259] | RAM[260] |
+| 266 | -1 | 0 | 0 | 0 | -1 |
+| RAM[261] | RAM[262] | RAM[263] | RAM[264] | RAM[265] |
+| 0 | -1 | 0 | 0 | -91 |
diff --git a/07/StackArithmetic/StackTest/StackTest.tst b/7/StackArithmetic/StackTest/StackTest.tst
similarity index 76%
rename from 07/StackArithmetic/StackTest/StackTest.tst
rename to 7/StackArithmetic/StackTest/StackTest.tst
index f9c5396..8eb5787 100644
--- a/07/StackArithmetic/StackTest/StackTest.tst
+++ b/7/StackArithmetic/StackTest/StackTest.tst
@@ -1,22 +1,22 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/07/StackArithmetic/StackTest/StackTest.tst
-
-load StackTest.asm,
-output-file StackTest.out,
-compare-to StackTest.cmp,
-output-list RAM[0]%D2.6.2
- RAM[256]%D2.6.2 RAM[257]%D2.6.2 RAM[258]%D2.6.2 RAM[259]%D2.6.2 RAM[260]%D2.6.2;
-
-set RAM[0] 256, // initializes the stack pointer
-
-repeat 1000 { // enough cycles to complete the execution
- ticktock;
-}
-
-// outputs the stack pointer (RAM[0]) and
-// the stack contents: RAM[256]-RAM[265]
-output;
-output-list RAM[261]%D2.6.2 RAM[262]%D2.6.2 RAM[263]%D2.6.2 RAM[264]%D2.6.2 RAM[265]%D2.6.2;
-output;
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+// Tests StackTest.asm on the CPU emulator.
+
+load StackTest.asm,
+output-file StackTest.out,
+compare-to StackTest.cmp,
+
+set RAM[0] 256, // initializes the stack pointer
+
+repeat 1000 { // enough cycles to complete the execution
+ ticktock;
+}
+
+// Outputs the stack pointer and the stack contents: RAM[256]-RAM[265]
+output-list RAM[0]%D2.6.2
+ RAM[256]%D2.6.2 RAM[257]%D2.6.2 RAM[258]%D2.6.2 RAM[259]%D2.6.2 RAM[260]%D2.6.2;
+output;
+output-list RAM[261]%D2.6.2 RAM[262]%D2.6.2 RAM[263]%D2.6.2 RAM[264]%D2.6.2 RAM[265]%D2.6.2;
+output;
diff --git a/07/StackArithmetic/StackTest/StackTest.vm b/7/StackArithmetic/StackTest/StackTest.vm
similarity index 76%
rename from 07/StackArithmetic/StackTest/StackTest.vm
rename to 7/StackArithmetic/StackTest/StackTest.vm
index bfe78e0..8dae5f5 100644
--- a/07/StackArithmetic/StackTest/StackTest.vm
+++ b/7/StackArithmetic/StackTest/StackTest.vm
@@ -1,45 +1,44 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/07/StackArithmetic/StackTest/StackTest.vm
-
-// Executes a sequence of arithmetic and logical operations
-// on the stack.
-push constant 17
-push constant 17
-eq
-push constant 17
-push constant 16
-eq
-push constant 16
-push constant 17
-eq
-push constant 892
-push constant 891
-lt
-push constant 891
-push constant 892
-lt
-push constant 891
-push constant 891
-lt
-push constant 32767
-push constant 32766
-gt
-push constant 32766
-push constant 32767
-gt
-push constant 32766
-push constant 32766
-gt
-push constant 57
-push constant 31
-push constant 53
-add
-push constant 112
-sub
-neg
-and
-push constant 82
-or
-not
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+// Executes a sequence of arithmetic and logical operations on the stack.
+
+push constant 17
+push constant 17
+eq
+push constant 17
+push constant 16
+eq
+push constant 16
+push constant 17
+eq
+push constant 892
+push constant 891
+lt
+push constant 891
+push constant 892
+lt
+push constant 891
+push constant 891
+lt
+push constant 32767
+push constant 32766
+gt
+push constant 32766
+push constant 32767
+gt
+push constant 32766
+push constant 32766
+gt
+push constant 57
+push constant 31
+push constant 53
+add
+push constant 112
+sub
+neg
+and
+push constant 82
+or
+not
diff --git a/07/StackArithmetic/StackTest/StackTestVME.tst b/7/StackArithmetic/StackTest/StackTestVME.tst
similarity index 67%
rename from 07/StackArithmetic/StackTest/StackTestVME.tst
rename to 7/StackArithmetic/StackTest/StackTestVME.tst
index b66bd05..0dceb88 100644
--- a/07/StackArithmetic/StackTest/StackTestVME.tst
+++ b/7/StackArithmetic/StackTest/StackTestVME.tst
@@ -1,22 +1,22 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/07/StackArithmetic/StackTest/StackTestVME.tst
-
-load StackTest.vm,
-output-file StackTest.out,
-compare-to StackTest.cmp,
-output-list RAM[0]%D2.6.2
- RAM[256]%D2.6.2 RAM[257]%D2.6.2 RAM[258]%D2.6.2 RAM[259]%D2.6.2 RAM[260]%D2.6.2;
-
-set RAM[0] 256, // initializes the stack pointer
-
-repeat 38 { // StackTest.vm consists of 38 instructions
- vmstep;
-}
-
-// outputs the stack pointer (RAM[0]) and
-// the stack contents: RAM[256]-RAM[265]
-output;
-output-list RAM[261]%D2.6.2 RAM[262]%D2.6.2 RAM[263]%D2.6.2 RAM[264]%D2.6.2 RAM[265]%D2.6.2;
-output;
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+// Tests and illustrates StackTest.vm on the VM simulator.
+
+load StackTest.vm,
+output-file StackTest.out,
+compare-to StackTest.cmp,
+
+set RAM[0] 256, // initializes the stack pointer
+
+repeat 38 { // StackTest.vm has 38 VM commands
+ vmstep;
+}
+
+// Outputs the stack pointer (RAM[0]) and the stack contents: RAM[256]-RAM[265]
+output-list RAM[0]%D2.6.2
+ RAM[256]%D2.6.2 RAM[257]%D2.6.2 RAM[258]%D2.6.2 RAM[259]%D2.6.2 RAM[260]%D2.6.2;
+output;
+output-list RAM[261]%D2.6.2 RAM[262]%D2.6.2 RAM[263]%D2.6.2 RAM[264]%D2.6.2 RAM[265]%D2.6.2;
+output;
diff --git a/08/FunctionCalls/FibonacciElement/FibonacciElement.cmp b/8/FunctionCalls/FibonacciElement/FibonacciElement.cmp
similarity index 95%
rename from 08/FunctionCalls/FibonacciElement/FibonacciElement.cmp
rename to 8/FunctionCalls/FibonacciElement/FibonacciElement.cmp
index d667834..fdf5e2d 100644
--- a/08/FunctionCalls/FibonacciElement/FibonacciElement.cmp
+++ b/8/FunctionCalls/FibonacciElement/FibonacciElement.cmp
@@ -1,2 +1,2 @@
-| RAM[0] |RAM[261]|
-| 262 | 3 |
+| RAM[0] |RAM[261]|
+| 262 | 3 |
diff --git a/08/FunctionCalls/FibonacciElement/FibonacciElement.tst b/8/FunctionCalls/FibonacciElement/FibonacciElement.tst
similarity index 58%
rename from 08/FunctionCalls/FibonacciElement/FibonacciElement.tst
rename to 8/FunctionCalls/FibonacciElement/FibonacciElement.tst
index 1f907b1..8c87398 100644
--- a/08/FunctionCalls/FibonacciElement/FibonacciElement.tst
+++ b/8/FunctionCalls/FibonacciElement/FibonacciElement.tst
@@ -1,18 +1,20 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/08/FunctionCalls/FibonacciElement/FibonacciElement.tst
-
-// FibonacciElement.asm results from translating both Main.vm and Sys.vm into
-// a single assembly program, stored in the file FibonacciElement.asm.
-
-load FibonacciElement.asm,
-output-file FibonacciElement.out,
-compare-to FibonacciElement.cmp,
-output-list RAM[0]%D1.6.1 RAM[261]%D1.6.1;
-
-repeat 6000 {
- ticktock;
-}
-
-output;
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+// Tests FibonacciElement.asm on the CPU emulator.
+// FibonacciElement.asm results from translating Main.vm and Sys.vm into
+// a single assembly program, stored in the file FibonacciElement.asm.
+
+load FibonacciElement.asm,
+output-file FibonacciElement.out,
+compare-to FibonacciElement.cmp,
+
+repeat 6000 {
+ ticktock;
+}
+
+// Outputs the stack pointer and the value at the stack's base.
+// That's where the implementation should put the return value.
+output-list RAM[0]%D1.6.1 RAM[261]%D1.6.1;
+output;
diff --git a/08/FunctionCalls/FibonacciElement/FibonacciElementVME.tst b/8/FunctionCalls/FibonacciElement/FibonacciElementVME.tst
similarity index 52%
rename from 08/FunctionCalls/FibonacciElement/FibonacciElementVME.tst
rename to 8/FunctionCalls/FibonacciElement/FibonacciElementVME.tst
index 87c0920..25c1c2b 100644
--- a/08/FunctionCalls/FibonacciElement/FibonacciElementVME.tst
+++ b/8/FunctionCalls/FibonacciElement/FibonacciElementVME.tst
@@ -1,17 +1,20 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/08/FunctionCalls/FibonacciElement/FibonacciElementVME.tst
-
-load, // Load all the VM files from the current directory
-output-file FibonacciElement.out,
-compare-to FibonacciElement.cmp,
-output-list RAM[0]%D1.6.1 RAM[261]%D1.6.1;
-
-set sp 261,
-
-repeat 110 {
- vmstep;
-}
-
-output;
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+// Tests and illustrates the given Fibonacci element program on the VM emulator.
+
+load, // loads all the VM files from the current folder
+output-file FibonacciElement.out,
+compare-to FibonacciElement.cmp,
+
+set sp 261,
+
+repeat 110 {
+ vmstep;
+}
+
+// Outputs the stack pointer and the value at the stack's base.
+// That's where the implementation should put the return value.
+output-list RAM[0]%D1.6.1 RAM[261]%D1.6.1;
+output;
diff --git a/8/FunctionCalls/FibonacciElement/Main.vm b/8/FunctionCalls/FibonacciElement/Main.vm
new file mode 100644
index 0000000..e6bb795
--- /dev/null
+++ b/8/FunctionCalls/FibonacciElement/Main.vm
@@ -0,0 +1,30 @@
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+// Contains one function: Main.fibonacci.
+
+// Computes the n'th element of the Fibonacci series, recursively.
+// n is given in argument[0]. Called by the Sys.init function
+// (part of the Sys.vm file), which sets argument[0] to an input
+// value and then calls Main.fibonacci.
+function Main.fibonacci 0
+ push argument 0
+ push constant 2
+ lt
+ if-goto N_LT_2
+ goto N_GE_2
+label N_LT_2 // if n < 2 returns n
+ push argument 0
+ return
+label N_GE_2 // if n >= 2 returns fib(n - 2) + fib(n - 1)
+ push argument 0
+ push constant 2
+ sub
+ call Main.fibonacci 1 // computes fib(n - 2)
+ push argument 0
+ push constant 1
+ sub
+ call Main.fibonacci 1 // computes fib(n - 1)
+ add // returns fib(n - 1) + fib(n - 2)
+ return
diff --git a/8/FunctionCalls/FibonacciElement/Sys.vm b/8/FunctionCalls/FibonacciElement/Sys.vm
new file mode 100644
index 0000000..50eb5c5
--- /dev/null
+++ b/8/FunctionCalls/FibonacciElement/Sys.vm
@@ -0,0 +1,17 @@
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+// Containts one function: Sys.init.
+
+// Pushes a constant n onto the stack, and calls the Main.fibonacii
+// function, which computes the n'th element of the Fibonacci series.
+// Note that by convention, the Sys.init function is called "automatically"
+// by the bootstrap code generated by the VM translator.
+function Sys.init 0
+ // Computes fibonacci(4)
+ push constant 4
+ // Calls the function, informing that one argument was pushed onto the stack
+ call Main.fibonacci 1
+label END
+ goto END // loops infinitely
diff --git a/08/FunctionCalls/NestedCall/NestedCall.cmp b/8/FunctionCalls/NestedCall/NestedCall.cmp
similarity index 98%
rename from 08/FunctionCalls/NestedCall/NestedCall.cmp
rename to 8/FunctionCalls/NestedCall/NestedCall.cmp
index 9200202..978405d 100644
--- a/08/FunctionCalls/NestedCall/NestedCall.cmp
+++ b/8/FunctionCalls/NestedCall/NestedCall.cmp
@@ -1,2 +1,2 @@
-| RAM[0] | RAM[1] | RAM[2] | RAM[3] | RAM[4] | RAM[5] | RAM[6] |
-| 261 | 261 | 256 | 4000 | 5000 | 135 | 246 |
+| RAM[0] | RAM[1] | RAM[2] | RAM[3] | RAM[4] | RAM[5] | RAM[6] |
+| 261 | 261 | 256 | 4000 | 5000 | 135 | 246 |
diff --git a/08/FunctionCalls/NestedCall/NestedCall.html b/8/FunctionCalls/NestedCall/NestedCall.html
similarity index 95%
rename from 08/FunctionCalls/NestedCall/NestedCall.html
rename to 8/FunctionCalls/NestedCall/NestedCall.html
index 0d8534d..1c7dc20 100644
--- a/08/FunctionCalls/NestedCall/NestedCall.html
+++ b/8/FunctionCalls/NestedCall/NestedCall.html
@@ -27,14 +27,12 @@ Startup
Sys.init(). This allows it to be used before the bootstrap code has been added to the VM Translator
since there will be no file processing order issues.
-NestedCall loads NestedCall.asm, sets up the stack to simulate the bootstrap's call to Sys.init(), then
-begins execution at the beginning of NestedCall.asm. If the bootstrap is not present, the program begins
+NestedCall loads Sys.asm, sets up the stack to simulate the bootstrap's call to Sys.init(), then
+begins execution at the beginning of Sys.asm. If the bootstrap is not present, the program begins
running with Sys.init() since it is the first function in Sys.vm.
-If NestedCall.asm includes the bootstrap, the bootstrap will (re)initialize the stack and call Sys.init(),
+If Sys.asm includes the bootstrap, the bootstrap will (re)initialize the stack and call Sys.init(),
so the test should see the same environment either way it gets to Sys.init().
-
-The test setup also initializes the LCL, ARG, THIS and THAT pointers to -1, -2, -3 and -4.
Sys.init()
@@ -44,7 +42,7 @@ Sys.init()
return from a function with no arguments.
Sys.main()
-Sys.main() allocates 5 local variables. It sets local 1, local 2 and
+Sys.init() allocates 5 local variables. It sets local 1, local 2 and
local 3. local 0 and local 4 are intentionally not set.
THIS and THAT are changed so that context save and restore can be tested.
diff --git a/08/FunctionCalls/NestedCall/NestedCall.tst b/8/FunctionCalls/NestedCall/NestedCall.tst
similarity index 68%
rename from 08/FunctionCalls/NestedCall/NestedCall.tst
rename to 8/FunctionCalls/NestedCall/NestedCall.tst
index 70e5523..56f4eed 100644
--- a/08/FunctionCalls/NestedCall/NestedCall.tst
+++ b/8/FunctionCalls/NestedCall/NestedCall.tst
@@ -1,65 +1,69 @@
-// Test file for NestedCall test.
-
-load NestedCall.asm,
-output-file NestedCall.out,
-compare-to NestedCall.cmp,
-output-list RAM[0]%D1.6.1 RAM[1]%D1.6.1 RAM[2]%D1.6.1 RAM[3]%D1.6.1 RAM[4]%D1.6.1 RAM[5]%D1.6.1 RAM[6]%D1.6.1;
-
-set RAM[0] 261,
-set RAM[1] 261,
-set RAM[2] 256,
-set RAM[3] -3,
-set RAM[4] -4,
-set RAM[5] -1, // test results
-set RAM[6] -1,
-set RAM[256] 1234, // fake stack frame from call Sys.init
-set RAM[257] -1,
-set RAM[258] -2,
-set RAM[259] -3,
-set RAM[260] -4,
-
-set RAM[261] -1, // Initialize stack to check for local segment
-set RAM[262] -1, // being cleared to zero.
-set RAM[263] -1,
-set RAM[264] -1,
-set RAM[265] -1,
-set RAM[266] -1,
-set RAM[267] -1,
-set RAM[268] -1,
-set RAM[269] -1,
-set RAM[270] -1,
-set RAM[271] -1,
-set RAM[272] -1,
-set RAM[273] -1,
-set RAM[274] -1,
-set RAM[275] -1,
-set RAM[276] -1,
-set RAM[277] -1,
-set RAM[278] -1,
-set RAM[279] -1,
-set RAM[280] -1,
-set RAM[281] -1,
-set RAM[282] -1,
-set RAM[283] -1,
-set RAM[284] -1,
-set RAM[285] -1,
-set RAM[286] -1,
-set RAM[287] -1,
-set RAM[288] -1,
-set RAM[289] -1,
-set RAM[290] -1,
-set RAM[291] -1,
-set RAM[292] -1,
-set RAM[293] -1,
-set RAM[294] -1,
-set RAM[295] -1,
-set RAM[296] -1,
-set RAM[297] -1,
-set RAM[298] -1,
-set RAM[299] -1,
-
-repeat 4000 {
- ticktock;
-}
-
-output;
+// Tests how the VM implementation handles function-call-and-return,
+// by executing the functions in Sys.vm.
+// In particular, loads and runs NestedCall.asm, which results when
+// the VM translator is applied to the NestedCall folder, which
+// includes only one VM file: Sys.vm.
+
+load NestedCall.asm,
+output-file NestedCall.out,
+compare-to NestedCall.cmp,
+
+set RAM[0] 261,
+set RAM[1] 261,
+set RAM[2] 256,
+set RAM[3] -3,
+set RAM[4] -4,
+set RAM[5] -1, // test results
+set RAM[6] -1,
+set RAM[256] 1234, // fake stack frame from call Sys.init
+set RAM[257] -1,
+set RAM[258] -2,
+set RAM[259] -3,
+set RAM[260] -4,
+
+set RAM[261] -1, // Initializes the stack, to check that the local segment
+set RAM[262] -1, // is initialized to zeros by the 'function' VM command.
+set RAM[263] -1,
+set RAM[264] -1,
+set RAM[265] -1,
+set RAM[266] -1,
+set RAM[267] -1,
+set RAM[268] -1,
+set RAM[269] -1,
+set RAM[270] -1,
+set RAM[271] -1,
+set RAM[272] -1,
+set RAM[273] -1,
+set RAM[274] -1,
+set RAM[275] -1,
+set RAM[276] -1,
+set RAM[277] -1,
+set RAM[278] -1,
+set RAM[279] -1,
+set RAM[280] -1,
+set RAM[281] -1,
+set RAM[282] -1,
+set RAM[283] -1,
+set RAM[284] -1,
+set RAM[285] -1,
+set RAM[286] -1,
+set RAM[287] -1,
+set RAM[288] -1,
+set RAM[289] -1,
+set RAM[290] -1,
+set RAM[291] -1,
+set RAM[292] -1,
+set RAM[293] -1,
+set RAM[294] -1,
+set RAM[295] -1,
+set RAM[296] -1,
+set RAM[297] -1,
+set RAM[298] -1,
+set RAM[299] -1,
+
+repeat 4000 {
+ ticktock;
+}
+
+output-list RAM[0]%D1.6.1 RAM[1]%D1.6.1 RAM[2]%D1.6.1 RAM[3]%D1.6.1 RAM[4]%D1.6.1 RAM[5]%D1.6.1 RAM[6]%D1.6.1;
+output;
diff --git a/08/FunctionCalls/NestedCall/NestedCallStack.html b/8/FunctionCalls/NestedCall/NestedCallStack.html
similarity index 98%
rename from 08/FunctionCalls/NestedCall/NestedCallStack.html
rename to 8/FunctionCalls/NestedCall/NestedCallStack.html
index 70582b6..e751054 100644
--- a/08/FunctionCalls/NestedCall/NestedCallStack.html
+++ b/8/FunctionCalls/NestedCall/NestedCallStack.html
@@ -1,306 +1,306 @@
-
-
-
-
- NestedCall.tst — Stack Frames
-
-
-
-
-
-
-
-
- | Bootstrap init |
- | Pointers |
- | 0 | 256 | SP | |
- | 1 | -1 | LCL | |
- | 2 | -2 | ARG | |
- | 3 | -3 | THIS | |
- | 4 | -4 | THAT | |
- | Stack |
- | 256 | ??? | | ←SP |
-
- This is how my bootstrap code initializes the pointers before calling Sys.init().
-
- Setting the LCL, ARG, THIS and THAT pointers to known illegal values helps identify
- when a pointer is used before it is initialized.
-
- (If you are running the NestedCall test without bootstrap code, you will not see this state.) |
-
- |
-
- | Entry to Sys.init() |
- | Pointers |
- | 0 | 261 | SP | |
- | 1 | 261 | LCL | |
- | 2 | 256 | ARG | |
- | 3 | -3 | THIS | |
- | 4 | -4 | THAT | |
- | Stack |
- | 256 | * | Return IP | ←ARG |
- | 257 | -1 | Saved LCL | |
- | 258 | -2 | Saved ARG | Sys.init |
- | 259 | -3 | Saved THIS | frame |
- | 260 | -4 | Saved THAT | |
- | 261 | ??? | | ←LCL, SP |
-
- This is how NestedCall.tst initializes the pointers and stack. This is what RAM looks
- like after my bootstrap calls Sys.init().
-
- (If your VM translation includes the bootstrap, the -1 through -4 values may be
- different if your bootstrap initializes them.) |
-
- |
-
- | Entry to Sys.main() |
- | Pointers |
- | 0 | 266 | SP | |
- | 1 | 266 | LCL | |
- | 2 | 261 | ARG | |
- | 3 | 4000 | THIS | |
- | 4 | 5000 | THAT | |
- | Stack |
- | 256 | * | Return IP | |
- | 257 | -1 | Saved LCL | |
- | 258 | -2 | Saved ARG | Sys.init |
- | 259 | -3 | Saved THIS | frame |
- | 260 | -4 | Saved THAT | |
- | 261 | * | Return IP | ←ARG |
- | 262 | 261 | Saved LCL | |
- | 263 | 256 | Saved ARG | Sys.main |
- | 264 | 4000 | Saved THIS | frame |
- | 265 | 5000 | Saved THAT | |
- | 266 | ??? | | ←LCL, SP |
-
- |
-
- | After Sys.main() prologue |
- | Pointers |
- | 0 | 271 | SP | |
- | 1 | 266 | LCL | |
- | 2 | 261 | ARG | |
- | 3 | 4000 | THIS | |
- | 4 | 5000 | THAT | |
- | Stack |
- | 256 | * | Return IP | |
- | 257 | -1 | Saved LCL | |
- | 258 | -2 | Saved ARG | Sys.init |
- | 259 | -3 | Saved THIS | frame |
- | 260 | -4 | Saved THAT | |
- | 261 | * | Return IP | ←ARG |
- | 262 | 261 | Saved LCL | |
- | 263 | 256 | Saved ARG | Sys.main |
- | 264 | 4000 | Saved THIS | frame |
- | 265 | 5000 | Saved THAT | |
- | 266 | 0 | local 0 | ←LCL |
- | 267 | 0 | local 1 | |
- | 268 | 0 | local 2 | |
- | 269 | 0 | local 3 | |
- | 270 | 0 | local 4 | |
- | 271 | ??? | | ←SP |
-
- The function prologue is the assembly language code generated for the
- "function" VM command.
- |
- |
-
- | Entry to Sys.add12(123) |
- | Pointers |
- | 0 | 277 | SP | |
- | 1 | 277 | LCL | |
- | 2 | 271 | ARG | |
- | 3 | 4001 | THIS | |
- | 4 | 5001 | THAT | |
- | Stack |
- | 256 | * | Return IP | |
- | 257 | -1 | Saved LCL | |
- | 258 | -2 | Saved ARG | Sys.init |
- | 259 | -3 | Saved THIS | frame |
- | 260 | -4 | Saved THAT | |
- | 261 | * | Return IP | |
- | 262 | 261 | Saved LCL | |
- | 263 | 256 | Saved ARG | Sys.main |
- | 264 | 4000 | Saved THIS | frame |
- | 265 | 5000 | Saved THAT | |
- | 266 | 0 | local 0 | |
- | 267 | 200 | local 1 | |
- | 268 | 40 | local 2 | |
- | 269 | 6 | local 3 | |
- | 270 | 0 | local 4 | |
- | 271 | 123 | argument 0 | ←ARG |
- | 272 | * | Return IP | |
- | 273 | 266 | Saved LCL | Sys.add12 |
- | 274 | 261 | Saved ARG | frame |
- | 275 | 4001 | Saved THIS | |
- | 276 | 5001 | Saved THAT | |
- | 277 | ??? | | ←LCL, SP |
-
- |
-
-
-
-
-
-
-
-
- | Before Sys.add12() return |
- | Pointers |
- | 0 | 278 | SP | |
- | 1 | 277 | LCL | |
- | 2 | 271 | ARG | |
- | 3 | 4002 | THIS | |
- | 4 | 5002 | THAT | |
- | Stack |
- | 256 | * | Return IP | |
- | 257 | -1 | Saved LCL | |
- | 258 | -2 | Saved ARG | Sys.init |
- | 259 | -3 | Saved THIS | frame |
- | 260 | -4 | Saved THAT | |
- | 261 | * | Return IP | |
- | 262 | 261 | Saved LCL | |
- | 263 | 256 | Saved ARG | Sys.main |
- | 264 | 4000 | Saved THIS | frame |
- | 265 | 5000 | Saved THAT | |
- | 266 | 0 | local 0 | |
- | 267 | 200 | local 1 | |
- | 268 | 40 | local 2 | |
- | 269 | 6 | local 3 | |
- | 270 | 0 | local 4 | |
- | 271 | 123 | argument 0 | ←ARG |
- | 272 | * | Return IP | |
- | 273 | 266 | Saved LCL | Sys.add12 |
- | 274 | 261 | Saved ARG | frame |
- | 275 | 4001 | Saved THIS | |
- | 276 | 5001 | Saved THAT | |
- | 277 | 135 | Return value | ←LCL |
- | 278 | ??? | | ←SP |
-
- |
-
- | After Sys.add12() return |
- | Pointers |
- | 0 | 272 | SP | |
- | 1 | 266 | LCL | |
- | 2 | 261 | ARG | |
- | 3 | 4001 | THIS | |
- | 4 | 5001 | THAT | |
- | Stack |
- | 256 | * | Return IP | |
- | 257 | -1 | Saved LCL | |
- | 258 | -2 | Saved ARG | Sys.init |
- | 259 | -3 | Saved THIS | frame |
- | 260 | -4 | Saved THAT | |
- | 261 | * | Return IP | ←ARG |
- | 262 | 261 | Saved LCL | |
- | 263 | 256 | Saved ARG | Sys.main |
- | 264 | 4000 | Saved THIS | frame |
- | 265 | 5000 | Saved THAT | |
- | 266 | 0 | local 0 | ←LCL |
- | 267 | 200 | local 1 | |
- | 268 | 40 | local 2 | |
- | 269 | 6 | local 3 | |
- | 270 | 0 | local 4 | |
- | 271 | 135 | Return value | |
- | 272 | ??? | | ←SP |
-
- |
-
- | Before Sys.main() return |
- | Pointers |
- | 0 | 272 | SP | |
- | 1 | 266 | LCL | |
- | 2 | 261 | ARG | |
- | 3 | 4001 | THIS | |
- | 4 | 5001 | THAT | |
- | Stack |
- | 256 | * | Return IP | |
- | 257 | -1 | Saved LCL | |
- | 258 | -2 | Saved ARG | Sys.init |
- | 259 | -3 | Saved THIS | frame |
- | 260 | -4 | Saved THAT | |
- | 261 | * | Return IP | ←ARG |
- | 262 | 261 | Saved LCL | |
- | 263 | 256 | Saved ARG | Sys.main |
- | 264 | 4000 | Saved THIS | frame |
- | 265 | 5000 | Saved THAT | |
- | 266 | 0 | local 0 | ←LCL |
- | 267 | 200 | local 1 | |
- | 268 | 40 | local 2 | |
- | 269 | 6 | local 3 | |
- | 270 | 0 | local 4 | |
- | 271 | 246 | Return value | |
- | 272 | ??? | | ←SP |
-
- |
-
- | After Sys.main() return |
- | Pointers |
- | 0 | 262 | SP | |
- | 1 | 261 | LCL | |
- | 2 | 256 | ARG | |
- | 3 | 4000 | THIS | |
- | 4 | 5000 | THAT | |
- | Stack |
- | 256 | * | Return IP | ←ARG |
- | 257 | -1 | Saved LCL | |
- | 258 | -2 | Saved ARG | Sys.init |
- | 259 | -3 | Saved THIS | frame |
- | 260 | -4 | Saved THAT | |
- | 261 | 246 | Return value | ←LCL |
- | 262 | ??? | | ←SP |
-
- |
-
- | In Sys.init() halt loop |
- | Pointers |
- | 0 | 261 | SP | |
- | 1 | 261 | LCL | |
- | 2 | 256 | ARG | |
- | 3 | 4000 | THIS | |
- | 4 | 5000 | THAT | |
- | Stack |
- | 256 | * | Return IP | ←ARG |
- | 257 | -1 | Saved LCL | |
- | 258 | -2 | Saved ARG | Sys.init |
- | 259 | -3 | Saved THIS | frame |
- | 260 | -4 | Saved THAT | |
- | 261 | ??? | | ←LCL, SP |
-
- |
-
-
-
+
+
+
+
+ NestedCall.tst — Stack Frames
+
+
+
+
+
+
+
+
+ | Bootstrap init |
+ | Pointers |
+ | 0 | 256 | SP | |
+ | 1 | -1 | LCL | |
+ | 2 | -2 | ARG | |
+ | 3 | -3 | THIS | |
+ | 4 | -4 | THAT | |
+ | Stack |
+ | 256 | ??? | | ←SP |
+
+ This is how my bootstrap code initializes the pointers before calling Sys.init().
+
+ Setting the LCL, ARG, THIS and THAT pointers to known illegal values helps identify
+ when a pointer is used before it is initialized.
+
+ (If you are running the NestedCall test without bootstrap code, you will not see this state.) |
+
+ |
+
+ | Entry to Sys.init() |
+ | Pointers |
+ | 0 | 261 | SP | |
+ | 1 | 261 | LCL | |
+ | 2 | 256 | ARG | |
+ | 3 | -3 | THIS | |
+ | 4 | -4 | THAT | |
+ | Stack |
+ | 256 | * | Return IP | ←ARG |
+ | 257 | -1 | Saved LCL | |
+ | 258 | -2 | Saved ARG | Sys.init |
+ | 259 | -3 | Saved THIS | frame |
+ | 260 | -4 | Saved THAT | |
+ | 261 | ??? | | ←LCL, SP |
+
+ This is how NestedCall.tst initializes the pointers and stack. This is what RAM looks
+ like after my bootstrap calls Sys.init().
+
+ (If your VM translation includes the bootstrap, the -1 through -4 values may be
+ different if your bootstrap initializes them.) |
+
+ |
+
+ | Entry to Sys.main() |
+ | Pointers |
+ | 0 | 266 | SP | |
+ | 1 | 266 | LCL | |
+ | 2 | 261 | ARG | |
+ | 3 | 4000 | THIS | |
+ | 4 | 5000 | THAT | |
+ | Stack |
+ | 256 | * | Return IP | |
+ | 257 | -1 | Saved LCL | |
+ | 258 | -2 | Saved ARG | Sys.init |
+ | 259 | -3 | Saved THIS | frame |
+ | 260 | -4 | Saved THAT | |
+ | 261 | * | Return IP | ←ARG |
+ | 262 | 261 | Saved LCL | |
+ | 263 | 256 | Saved ARG | Sys.main |
+ | 264 | 4000 | Saved THIS | frame |
+ | 265 | 5000 | Saved THAT | |
+ | 266 | ??? | | ←LCL, SP |
+
+ |
+
+ | After Sys.main() prologue |
+ | Pointers |
+ | 0 | 271 | SP | |
+ | 1 | 266 | LCL | |
+ | 2 | 261 | ARG | |
+ | 3 | 4000 | THIS | |
+ | 4 | 5000 | THAT | |
+ | Stack |
+ | 256 | * | Return IP | |
+ | 257 | -1 | Saved LCL | |
+ | 258 | -2 | Saved ARG | Sys.init |
+ | 259 | -3 | Saved THIS | frame |
+ | 260 | -4 | Saved THAT | |
+ | 261 | * | Return IP | ←ARG |
+ | 262 | 261 | Saved LCL | |
+ | 263 | 256 | Saved ARG | Sys.main |
+ | 264 | 4000 | Saved THIS | frame |
+ | 265 | 5000 | Saved THAT | |
+ | 266 | 0 | local 0 | ←LCL |
+ | 267 | 0 | local 1 | |
+ | 268 | 0 | local 2 | |
+ | 269 | 0 | local 3 | |
+ | 270 | 0 | local 4 | |
+ | 271 | ??? | | ←SP |
+
+ The function prologue is the assembly language code generated for the
+ "function" VM command.
+ |
+ |
+
+ | Entry to Sys.add12(123) |
+ | Pointers |
+ | 0 | 277 | SP | |
+ | 1 | 277 | LCL | |
+ | 2 | 271 | ARG | |
+ | 3 | 4001 | THIS | |
+ | 4 | 5001 | THAT | |
+ | Stack |
+ | 256 | * | Return IP | |
+ | 257 | -1 | Saved LCL | |
+ | 258 | -2 | Saved ARG | Sys.init |
+ | 259 | -3 | Saved THIS | frame |
+ | 260 | -4 | Saved THAT | |
+ | 261 | * | Return IP | |
+ | 262 | 261 | Saved LCL | |
+ | 263 | 256 | Saved ARG | Sys.main |
+ | 264 | 4000 | Saved THIS | frame |
+ | 265 | 5000 | Saved THAT | |
+ | 266 | 0 | local 0 | |
+ | 267 | 200 | local 1 | |
+ | 268 | 40 | local 2 | |
+ | 269 | 6 | local 3 | |
+ | 270 | 0 | local 4 | |
+ | 271 | 123 | argument 0 | ←ARG |
+ | 272 | * | Return IP | |
+ | 273 | 266 | Saved LCL | Sys.add12 |
+ | 274 | 261 | Saved ARG | frame |
+ | 275 | 4001 | Saved THIS | |
+ | 276 | 5001 | Saved THAT | |
+ | 277 | ??? | | ←LCL, SP |
+
+ |
+
+
+
+
+
+
+
+
+ | Before Sys.add12() return |
+ | Pointers |
+ | 0 | 278 | SP | |
+ | 1 | 277 | LCL | |
+ | 2 | 271 | ARG | |
+ | 3 | 4002 | THIS | |
+ | 4 | 5002 | THAT | |
+ | Stack |
+ | 256 | * | Return IP | |
+ | 257 | -1 | Saved LCL | |
+ | 258 | -2 | Saved ARG | Sys.init |
+ | 259 | -3 | Saved THIS | frame |
+ | 260 | -4 | Saved THAT | |
+ | 261 | * | Return IP | |
+ | 262 | 261 | Saved LCL | |
+ | 263 | 256 | Saved ARG | Sys.main |
+ | 264 | 4000 | Saved THIS | frame |
+ | 265 | 5000 | Saved THAT | |
+ | 266 | 0 | local 0 | |
+ | 267 | 200 | local 1 | |
+ | 268 | 40 | local 2 | |
+ | 269 | 6 | local 3 | |
+ | 270 | 0 | local 4 | |
+ | 271 | 123 | argument 0 | ←ARG |
+ | 272 | * | Return IP | |
+ | 273 | 266 | Saved LCL | Sys.add12 |
+ | 274 | 261 | Saved ARG | frame |
+ | 275 | 4001 | Saved THIS | |
+ | 276 | 5001 | Saved THAT | |
+ | 277 | 135 | Return value | ←LCL |
+ | 278 | ??? | | ←SP |
+
+ |
+
+ | After Sys.add12() return |
+ | Pointers |
+ | 0 | 272 | SP | |
+ | 1 | 266 | LCL | |
+ | 2 | 261 | ARG | |
+ | 3 | 4001 | THIS | |
+ | 4 | 5001 | THAT | |
+ | Stack |
+ | 256 | * | Return IP | |
+ | 257 | -1 | Saved LCL | |
+ | 258 | -2 | Saved ARG | Sys.init |
+ | 259 | -3 | Saved THIS | frame |
+ | 260 | -4 | Saved THAT | |
+ | 261 | * | Return IP | ←ARG |
+ | 262 | 261 | Saved LCL | |
+ | 263 | 256 | Saved ARG | Sys.main |
+ | 264 | 4000 | Saved THIS | frame |
+ | 265 | 5000 | Saved THAT | |
+ | 266 | 0 | local 0 | ←LCL |
+ | 267 | 200 | local 1 | |
+ | 268 | 40 | local 2 | |
+ | 269 | 6 | local 3 | |
+ | 270 | 0 | local 4 | |
+ | 271 | 135 | Return value | |
+ | 272 | ??? | | ←SP |
+
+ |
+
+ | Before Sys.main() return |
+ | Pointers |
+ | 0 | 272 | SP | |
+ | 1 | 266 | LCL | |
+ | 2 | 261 | ARG | |
+ | 3 | 4001 | THIS | |
+ | 4 | 5001 | THAT | |
+ | Stack |
+ | 256 | * | Return IP | |
+ | 257 | -1 | Saved LCL | |
+ | 258 | -2 | Saved ARG | Sys.init |
+ | 259 | -3 | Saved THIS | frame |
+ | 260 | -4 | Saved THAT | |
+ | 261 | * | Return IP | ←ARG |
+ | 262 | 261 | Saved LCL | |
+ | 263 | 256 | Saved ARG | Sys.main |
+ | 264 | 4000 | Saved THIS | frame |
+ | 265 | 5000 | Saved THAT | |
+ | 266 | 0 | local 0 | ←LCL |
+ | 267 | 200 | local 1 | |
+ | 268 | 40 | local 2 | |
+ | 269 | 6 | local 3 | |
+ | 270 | 0 | local 4 | |
+ | 271 | 246 | Return value | |
+ | 272 | ??? | | ←SP |
+
+ |
+
+ | After Sys.main() return |
+ | Pointers |
+ | 0 | 262 | SP | |
+ | 1 | 261 | LCL | |
+ | 2 | 256 | ARG | |
+ | 3 | 4000 | THIS | |
+ | 4 | 5000 | THAT | |
+ | Stack |
+ | 256 | * | Return IP | ←ARG |
+ | 257 | -1 | Saved LCL | |
+ | 258 | -2 | Saved ARG | Sys.init |
+ | 259 | -3 | Saved THIS | frame |
+ | 260 | -4 | Saved THAT | |
+ | 261 | 246 | Return value | ←LCL |
+ | 262 | ??? | | ←SP |
+
+ |
+
+ | In Sys.init() halt loop |
+ | Pointers |
+ | 0 | 261 | SP | |
+ | 1 | 261 | LCL | |
+ | 2 | 256 | ARG | |
+ | 3 | 4000 | THIS | |
+ | 4 | 5000 | THAT | |
+ | Stack |
+ | 256 | * | Return IP | ←ARG |
+ | 257 | -1 | Saved LCL | |
+ | 258 | -2 | Saved ARG | Sys.init |
+ | 259 | -3 | Saved THIS | frame |
+ | 260 | -4 | Saved THAT | |
+ | 261 | ??? | | ←LCL, SP |
+
+ |
+
+
+
\ No newline at end of file
diff --git a/08/FunctionCalls/NestedCall/NestedCallVME.tst b/8/FunctionCalls/NestedCall/NestedCallVME.tst
similarity index 85%
rename from 08/FunctionCalls/NestedCall/NestedCallVME.tst
rename to 8/FunctionCalls/NestedCall/NestedCallVME.tst
index 2c689b8..03ead32 100644
--- a/08/FunctionCalls/NestedCall/NestedCallVME.tst
+++ b/8/FunctionCalls/NestedCall/NestedCallVME.tst
@@ -1,70 +1,72 @@
-// Test file for NestedCall test.
-
-load Sys.vm,
-output-file NestedCall.out,
-compare-to NestedCall.cmp,
-output-list RAM[0]%D1.6.1 RAM[1]%D1.6.1 RAM[2]%D1.6.1 RAM[3]%D1.6.1 RAM[4]%D1.6.1 RAM[5]%D1.6.1 RAM[6]%D1.6.1;
-
-set RAM[0] 261,
-set RAM[1] 261,
-set RAM[2] 256,
-set RAM[3] -3,
-set RAM[4] -4,
-set RAM[5] -1, // test results
-set RAM[6] -1,
-set RAM[256] 1234, // fake stack frame from call Sys.init
-set RAM[257] -1,
-set RAM[258] -2,
-set RAM[259] -3,
-set RAM[260] -4,
-
-set RAM[261] -1, // Initialize stack to check for local segment
-set RAM[262] -1, // being cleared to zero.
-set RAM[263] -1,
-set RAM[264] -1,
-set RAM[265] -1,
-set RAM[266] -1,
-set RAM[267] -1,
-set RAM[268] -1,
-set RAM[269] -1,
-set RAM[270] -1,
-set RAM[271] -1,
-set RAM[272] -1,
-set RAM[273] -1,
-set RAM[274] -1,
-set RAM[275] -1,
-set RAM[276] -1,
-set RAM[277] -1,
-set RAM[278] -1,
-set RAM[279] -1,
-set RAM[280] -1,
-set RAM[281] -1,
-set RAM[282] -1,
-set RAM[283] -1,
-set RAM[284] -1,
-set RAM[285] -1,
-set RAM[286] -1,
-set RAM[287] -1,
-set RAM[288] -1,
-set RAM[289] -1,
-set RAM[290] -1,
-set RAM[291] -1,
-set RAM[292] -1,
-set RAM[293] -1,
-set RAM[294] -1,
-set RAM[295] -1,
-set RAM[296] -1,
-set RAM[297] -1,
-set RAM[298] -1,
-set RAM[299] -1,
-
-set sp 261,
-set local 261,
-set argument 256,
-set this 3000,
-set that 4000;
-
-repeat 50 {
- vmstep;
-}
-output;
+// Tests and illustrates how the VM implementation handles function-call-and-return,
+// by executing the functions in Sys.vm in the VM emulator.
+// In particular, loads and runs the functions in Sys.vm.
+
+load Sys.vm,
+output-file NestedCall.out,
+compare-to NestedCall.cmp,
+output-list RAM[0]%D1.6.1 RAM[1]%D1.6.1 RAM[2]%D1.6.1 RAM[3]%D1.6.1 RAM[4]%D1.6.1 RAM[5]%D1.6.1 RAM[6]%D1.6.1;
+
+set RAM[0] 261,
+set RAM[1] 261,
+set RAM[2] 256,
+set RAM[3] -3,
+set RAM[4] -4,
+set RAM[5] -1, // test results
+set RAM[6] -1,
+set RAM[256] 1234, // fake stack frame from call Sys.init
+set RAM[257] -1,
+set RAM[258] -2,
+set RAM[259] -3,
+set RAM[260] -4,
+
+set RAM[261] -1, // Initialize stack to check for local segment
+set RAM[262] -1, // being cleared to zero.
+set RAM[263] -1,
+set RAM[264] -1,
+set RAM[265] -1,
+set RAM[266] -1,
+set RAM[267] -1,
+set RAM[268] -1,
+set RAM[269] -1,
+set RAM[270] -1,
+set RAM[271] -1,
+set RAM[272] -1,
+set RAM[273] -1,
+set RAM[274] -1,
+set RAM[275] -1,
+set RAM[276] -1,
+set RAM[277] -1,
+set RAM[278] -1,
+set RAM[279] -1,
+set RAM[280] -1,
+set RAM[281] -1,
+set RAM[282] -1,
+set RAM[283] -1,
+set RAM[284] -1,
+set RAM[285] -1,
+set RAM[286] -1,
+set RAM[287] -1,
+set RAM[288] -1,
+set RAM[289] -1,
+set RAM[290] -1,
+set RAM[291] -1,
+set RAM[292] -1,
+set RAM[293] -1,
+set RAM[294] -1,
+set RAM[295] -1,
+set RAM[296] -1,
+set RAM[297] -1,
+set RAM[298] -1,
+set RAM[299] -1,
+
+set sp 261,
+set local 261,
+set argument 256,
+set this 3000,
+set that 4000;
+
+repeat 50 {
+ vmstep;
+}
+output;
diff --git a/8/FunctionCalls/NestedCall/Sys.vm b/8/FunctionCalls/NestedCall/Sys.vm
new file mode 100644
index 0000000..d6c5342
--- /dev/null
+++ b/8/FunctionCalls/NestedCall/Sys.vm
@@ -0,0 +1,57 @@
+// Sys.vm. Tested by the NestedCall test script.
+// Consists of three functions: Sys.init, Sys.main, and Sys.add12.
+
+// Calls Sys.main() and stores a return value in temp 1.
+// Does not return (enters infinite loop).
+// The VM implementation starts running the Sys.init function, by default.
+function Sys.init 0
+ push constant 4000 // tests that THIS and THAT are handled correctly
+ pop pointer 0
+ push constant 5000
+ pop pointer 1
+ call Sys.main 0
+ pop temp 1
+ label LOOP
+ goto LOOP
+
+// Sets locals 1, 2 and 3 to some values. Leaves locals 0 and 4 unchanged,
+// to test that the 'function' VM command initliazes them to 0 (the test
+// script sets them to -1 before this code starts running).
+// Calls Sys.add12(123) and stores the return value (should be 135) in temp 0.
+// Returns local 0 + local 1 + local 2 + local 3 + local 4 (should be 456), to
+// confirm that locals were not mangled by the function call.
+function Sys.main 5
+ push constant 4001
+ pop pointer 0
+ push constant 5001
+ pop pointer 1
+ push constant 200
+ pop local 1
+ push constant 40
+ pop local 2
+ push constant 6
+ pop local 3
+ push constant 123
+ call Sys.add12 1
+ pop temp 0
+ push local 0
+ push local 1
+ push local 2
+ push local 3
+ push local 4
+ add
+ add
+ add
+ add
+ return
+
+// Returns (argument 0) + 12.
+function Sys.add12 0
+ push constant 4002
+ pop pointer 0
+ push constant 5002
+ pop pointer 1
+ push argument 0
+ push constant 12
+ add
+ return
diff --git a/08/FunctionCalls/SimpleFunction/SimpleFunction.cmp b/8/FunctionCalls/SimpleFunction/SimpleFunction.cmp
similarity index 98%
rename from 08/FunctionCalls/SimpleFunction/SimpleFunction.cmp
rename to 8/FunctionCalls/SimpleFunction/SimpleFunction.cmp
index c3ea911..ef72b7a 100644
--- a/08/FunctionCalls/SimpleFunction/SimpleFunction.cmp
+++ b/8/FunctionCalls/SimpleFunction/SimpleFunction.cmp
@@ -1,2 +1,2 @@
-| RAM[0] | RAM[1] | RAM[2] | RAM[3] | RAM[4] |RAM[310]|
-| 311 | 305 | 300 | 3010 | 4010 | 1196 |
+| RAM[0] | RAM[1] | RAM[2] | RAM[3] | RAM[4] |RAM[310]|
+| 311 | 305 | 300 | 3010 | 4010 | 1196 |
diff --git a/8/FunctionCalls/SimpleFunction/SimpleFunction.tst b/8/FunctionCalls/SimpleFunction/SimpleFunction.tst
new file mode 100644
index 0000000..84a9ed5
--- /dev/null
+++ b/8/FunctionCalls/SimpleFunction/SimpleFunction.tst
@@ -0,0 +1,36 @@
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+// Tests SimpleFunction.asm in the CPU emulator.
+// In particular, tests how the assembly implementation of the 'function'
+// VM command initializes local variables, and how the assembly implementation
+// of the 'return' VM command handles the return value, SP, LCL, ARG, THIS, and THAT.
+// Before executing the code, initializes the stack pointer and the pointers of some
+// of the memory segments, and sets some values in the argument segment.
+
+load SimpleFunction.asm,
+output-file SimpleFunction.out,
+compare-to SimpleFunction.cmp,
+
+set RAM[0] 317, // SP
+set RAM[1] 317, // LCL
+set RAM[2] 310, // ARG
+set RAM[3] 3000, // THIS
+set RAM[4] 4000, // THAT
+set RAM[310] 1234,
+set RAM[311] 37,
+set RAM[312] 1000,
+set RAM[313] 305,
+set RAM[314] 300,
+set RAM[315] 3010,
+set RAM[316] 4010,
+
+repeat 300 {
+ ticktock;
+}
+
+// Outputs SP, LCL, ARG, THIS, THAT, and the return value.
+output-list RAM[0]%D1.6.1 RAM[1]%D1.6.1 RAM[2]%D1.6.1
+ RAM[3]%D1.6.1 RAM[4]%D1.6.1 RAM[310]%D1.6.1;
+output;
diff --git a/08/FunctionCalls/SimpleFunction/SimpleFunction.vm b/8/FunctionCalls/SimpleFunction/SimpleFunction.vm
similarity index 56%
rename from 08/FunctionCalls/SimpleFunction/SimpleFunction.vm
rename to 8/FunctionCalls/SimpleFunction/SimpleFunction.vm
index d64a34f..c813dc9 100644
--- a/08/FunctionCalls/SimpleFunction/SimpleFunction.vm
+++ b/8/FunctionCalls/SimpleFunction/SimpleFunction.vm
@@ -1,16 +1,17 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/08/FunctionCalls/SimpleFunction/SimpleFunction.vm
-
-// Performs a simple calculation and returns the result.
-function SimpleFunction.test 2
-push local 0
-push local 1
-add
-not
-push argument 0
-add
-push argument 1
-sub
-return
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+// Performs a simple calculation and returns the result.
+// argument[0] and argument[1] must be set by the caller.
+
+function SimpleFunction.test 2
+ push local 0
+ push local 1
+ add
+ not
+ push argument 0
+ add
+ push argument 1
+ sub
+ return
\ No newline at end of file
diff --git a/08/FunctionCalls/SimpleFunction/SimpleFunctionVME.tst b/8/FunctionCalls/SimpleFunction/SimpleFunctionVME.tst
similarity index 65%
rename from 08/FunctionCalls/SimpleFunction/SimpleFunctionVME.tst
rename to 8/FunctionCalls/SimpleFunction/SimpleFunctionVME.tst
index c9267ee..1ca5d74 100644
--- a/08/FunctionCalls/SimpleFunction/SimpleFunctionVME.tst
+++ b/8/FunctionCalls/SimpleFunction/SimpleFunctionVME.tst
@@ -1,29 +1,34 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/08/FunctionCalls/SimpleFunction/SimpleFunctionVME.tst
-
-load SimpleFunction.vm,
-output-file SimpleFunction.out,
-compare-to SimpleFunction.cmp,
-output-list RAM[0]%D1.6.1 RAM[1]%D1.6.1 RAM[2]%D1.6.1
- RAM[3]%D1.6.1 RAM[4]%D1.6.1 RAM[310]%D1.6.1;
-
-set sp 317,
-set local 317,
-set argument 310,
-set this 3000,
-set that 4000,
-set argument[0] 1234,
-set argument[1] 37,
-set argument[2] 9,
-set argument[3] 305,
-set argument[4] 300,
-set argument[5] 3010,
-set argument[6] 4010,
-
-repeat 10 {
- vmstep;
-}
-
-output;
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+// Tests and illustrates SimpleFunction.vm in the VM emulator.
+// Before executing the code, initializes the stack pointer
+// and the base addresses of some of the memory segments,
+// and sets some values in the argument segment.
+
+load SimpleFunction.vm,
+output-file SimpleFunction.out,
+compare-to SimpleFunction.cmp,
+
+set sp 317,
+set local 317,
+set argument 310,
+set this 3000,
+set that 4000,
+set argument[0] 1234,
+set argument[1] 37,
+set argument[2] 9,
+set argument[3] 305,
+set argument[4] 300,
+set argument[5] 3010,
+set argument[6] 4010,
+
+repeat 10 {
+ vmstep;
+}
+
+// Outputs SP, LCL, ARG, THIS, THAT, and the return value.
+output-list RAM[0]%D1.6.1 RAM[1]%D1.6.1 RAM[2]%D1.6.1
+ RAM[3]%D1.6.1 RAM[4]%D1.6.1 RAM[310]%D1.6.1;
+output;
diff --git a/08/FunctionCalls/StaticsTest/Class1.vm b/8/FunctionCalls/StaticsTest/Class1.vm
similarity index 57%
rename from 08/FunctionCalls/StaticsTest/Class1.vm
rename to 8/FunctionCalls/StaticsTest/Class1.vm
index c463537..0d96394 100644
--- a/08/FunctionCalls/StaticsTest/Class1.vm
+++ b/8/FunctionCalls/StaticsTest/Class1.vm
@@ -1,20 +1,19 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/08/FunctionCalls/StaticsTest/Class1.vm
-
-// Stores two supplied arguments in static[0] and static[1].
-function Class1.set 0
-push argument 0
-pop static 0
-push argument 1
-pop static 1
-push constant 0
-return
-
-// Returns static[0] - static[1].
-function Class1.get 0
-push static 0
-push static 1
-sub
-return
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+// Stores two supplied arguments in static[0] and static[1].
+function Class1.set 0
+ push argument 0
+ pop static 0
+ push argument 1
+ pop static 1
+ push constant 0
+ return
+
+// Returns static[0] - static[1].
+function Class1.get 0
+ push static 0
+ push static 1
+ sub
+ return
diff --git a/08/FunctionCalls/StaticsTest/Class2.vm b/8/FunctionCalls/StaticsTest/Class2.vm
similarity index 57%
rename from 08/FunctionCalls/StaticsTest/Class2.vm
rename to 8/FunctionCalls/StaticsTest/Class2.vm
index 94f2946..127f734 100644
--- a/08/FunctionCalls/StaticsTest/Class2.vm
+++ b/8/FunctionCalls/StaticsTest/Class2.vm
@@ -1,20 +1,19 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/08/FunctionCalls/StaticsTest/Class2.vm
-
-// Stores two supplied arguments in static[0] and static[1].
-function Class2.set 0
-push argument 0
-pop static 0
-push argument 1
-pop static 1
-push constant 0
-return
-
-// Returns static[0] - static[1].
-function Class2.get 0
-push static 0
-push static 1
-sub
-return
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+// Stores two supplied arguments in static[0] and static[1].
+function Class2.set 0
+ push argument 0
+ pop static 0
+ push argument 1
+ pop static 1
+ push constant 0
+ return
+
+// Returns static[0] - static[1].
+function Class2.get 0
+ push static 0
+ push static 1
+ sub
+ return
diff --git a/08/FunctionCalls/StaticsTest/StaticsTest.cmp b/8/FunctionCalls/StaticsTest/StaticsTest.cmp
similarity index 96%
rename from 08/FunctionCalls/StaticsTest/StaticsTest.cmp
rename to 8/FunctionCalls/StaticsTest/StaticsTest.cmp
index 5589f1e..309f058 100644
--- a/08/FunctionCalls/StaticsTest/StaticsTest.cmp
+++ b/8/FunctionCalls/StaticsTest/StaticsTest.cmp
@@ -1,2 +1,2 @@
-| RAM[0] |RAM[261]|RAM[262]|
-| 263 | -2 | 8 |
+| RAM[0] |RAM[261]|RAM[262]|
+| 263 | -2 | 8 |
diff --git a/08/FunctionCalls/StaticsTest/StaticsTest.tst b/8/FunctionCalls/StaticsTest/StaticsTest.tst
similarity index 71%
rename from 08/FunctionCalls/StaticsTest/StaticsTest.tst
rename to 8/FunctionCalls/StaticsTest/StaticsTest.tst
index 1b9194e..bafb18f 100644
--- a/08/FunctionCalls/StaticsTest/StaticsTest.tst
+++ b/8/FunctionCalls/StaticsTest/StaticsTest.tst
@@ -1,17 +1,19 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/08/FunctionCalls/StaticsTest/StaticsTest.tst
-
-load StaticsTest.asm,
-output-file StaticsTest.out,
-compare-to StaticsTest.cmp,
-output-list RAM[0]%D1.6.1 RAM[261]%D1.6.1 RAM[262]%D1.6.1;
-
-set RAM[0] 256,
-
-repeat 2500 {
- ticktock;
-}
-
-output;
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+// Tests StaticTest.asm in the CPU emulator.
+// This assembly file results from translating the staticsTest folder.
+
+load StaticsTest.asm,
+output-file StaticsTest.out,
+compare-to StaticsTest.cmp,
+
+set RAM[0] 256,
+
+repeat 2500 {
+ ticktock;
+}
+
+output-list RAM[0]%D1.6.1 RAM[261]%D1.6.1 RAM[262]%D1.6.1;
+output;
diff --git a/08/FunctionCalls/StaticsTest/StaticsTestVME.tst b/8/FunctionCalls/StaticsTest/StaticsTestVME.tst
similarity index 64%
rename from 08/FunctionCalls/StaticsTest/StaticsTestVME.tst
rename to 8/FunctionCalls/StaticsTest/StaticsTestVME.tst
index 130ba66..0a7504e 100644
--- a/08/FunctionCalls/StaticsTest/StaticsTestVME.tst
+++ b/8/FunctionCalls/StaticsTest/StaticsTestVME.tst
@@ -1,17 +1,18 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/08/FunctionCalls/StaticsTest/StaticsTestVME.tst
-
-load, // loads all the VM files from the current directory.
-output-file StaticsTest.out,
-compare-to StaticsTest.cmp,
-output-list RAM[0]%D1.6.1 RAM[261]%D1.6.1 RAM[262]%D1.6.1;
-
-set sp 261,
-
-repeat 36 {
- vmstep;
-}
-
-output;
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+// Tests and illustrates the statics test on the VM emulator.
+
+load, // loads all the VM files from the current folder
+output-file StaticsTest.out,
+compare-to StaticsTest.cmp,
+
+set sp 261,
+
+repeat 36 {
+ vmstep;
+}
+
+output-list RAM[0]%D1.6.1 RAM[261]%D1.6.1 RAM[262]%D1.6.1;
+output;
diff --git a/8/FunctionCalls/StaticsTest/Sys.vm b/8/FunctionCalls/StaticsTest/Sys.vm
new file mode 100644
index 0000000..fe34e2b
--- /dev/null
+++ b/8/FunctionCalls/StaticsTest/Sys.vm
@@ -0,0 +1,20 @@
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+// Tests that different functions, stored in two different
+// class files, manipulate the static segment correctly.
+
+function Sys.init 0
+ push constant 6
+ push constant 8
+ call Class1.set 2
+ pop temp 0 // dumps the return value
+ push constant 23
+ push constant 15
+ call Class2.set 2
+ pop temp 0 // dumps the return value
+ call Class1.get 0
+ call Class2.get 0
+label END
+ goto END
diff --git a/08/ProgramFlow/BasicLoop/BasicLoop.cmp b/8/ProgramFlow/BasicLoop/BasicLoop.cmp
similarity index 95%
rename from 08/ProgramFlow/BasicLoop/BasicLoop.cmp
rename to 8/ProgramFlow/BasicLoop/BasicLoop.cmp
index 00d35d2..1786c7c 100644
--- a/08/ProgramFlow/BasicLoop/BasicLoop.cmp
+++ b/8/ProgramFlow/BasicLoop/BasicLoop.cmp
@@ -1,2 +1,2 @@
-| RAM[0] |RAM[256]|
-| 257 | 6 |
+| RAM[0] |RAM[256]|
+| 257 | 6 |
diff --git a/8/ProgramFlow/BasicLoop/BasicLoop.tst b/8/ProgramFlow/BasicLoop/BasicLoop.tst
new file mode 100644
index 0000000..7b4721d
--- /dev/null
+++ b/8/ProgramFlow/BasicLoop/BasicLoop.tst
@@ -0,0 +1,25 @@
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+// Tests BasicLoop.asm on the CPU emulator.
+// Before executing the code, initializes the stack pointer
+// and the base addresses of the local and argument segments,
+// and sets argument[0].
+
+load BasicLoop.asm,
+output-file BasicLoop.out,
+compare-to BasicLoop.cmp,
+
+set RAM[0] 256, // SP
+set RAM[1] 300, // LCL
+set RAM[2] 400, // ARG
+set RAM[400] 3, // argument 0
+
+repeat 600 {
+ ticktock;
+}
+
+// Outputs the stack pointer and the value at the stack's base
+output-list RAM[0]%D1.6.1 RAM[256]%D1.6.1;
+output;
diff --git a/8/ProgramFlow/BasicLoop/BasicLoop.vm b/8/ProgramFlow/BasicLoop/BasicLoop.vm
new file mode 100644
index 0000000..0a140eb
--- /dev/null
+++ b/8/ProgramFlow/BasicLoop/BasicLoop.vm
@@ -0,0 +1,22 @@
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+// Computes the sum 1 + 2 + ... + n and pushes the result onto
+// the stack. The value n is given in argument[0], which must be
+// initialized by the caller of this code.
+
+ push constant 0
+ pop local 0 // sum = 0
+label LOOP
+ push argument 0
+ push local 0
+ add
+ pop local 0 // sum = sum + n
+ push argument 0
+ push constant 1
+ sub
+ pop argument 0 // n--
+ push argument 0
+ if-goto LOOP // if n > 0, goto LOOP
+ push local 0 // else, pushes sum to the stack's top
diff --git a/08/ProgramFlow/BasicLoop/BasicLoopVME.tst b/8/ProgramFlow/BasicLoop/BasicLoopVME.tst
similarity index 54%
rename from 08/ProgramFlow/BasicLoop/BasicLoopVME.tst
rename to 8/ProgramFlow/BasicLoop/BasicLoopVME.tst
index 237fdff..7d476d0 100644
--- a/08/ProgramFlow/BasicLoop/BasicLoopVME.tst
+++ b/8/ProgramFlow/BasicLoop/BasicLoopVME.tst
@@ -1,20 +1,25 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/08/ProgramFlow/BasicLoop/BasicLoopVME.tst
-
-load BasicLoop.vm,
-output-file BasicLoop.out,
-compare-to BasicLoop.cmp,
-output-list RAM[0]%D1.6.1 RAM[256]%D1.6.1;
-
-set sp 256,
-set local 300,
-set argument 400,
-set argument[0] 3,
-
-repeat 33 {
- vmstep;
-}
-
-output;
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+// Tests and illustrates BasicLoop.vm on the VM emulator.
+// Before executing the code, initializes the stack pointer
+// and the base addresses of the local and argument segments,
+// and sets argument[0].
+
+load BasicLoop.vm,
+output-file BasicLoop.out,
+compare-to BasicLoop.cmp,
+
+set sp 256,
+set local 300,
+set argument 400,
+set argument[0] 3,
+
+repeat 33 {
+ vmstep;
+}
+
+// Outputs the stack pointer and the value at the stack's base
+output-list RAM[0]%D1.6.1 RAM[256]%D1.6.1;
+output;
diff --git a/08/ProgramFlow/FibonacciSeries/FibonacciSeries.cmp b/8/ProgramFlow/FibonacciSeries/FibonacciSeries.cmp
similarity index 98%
rename from 08/ProgramFlow/FibonacciSeries/FibonacciSeries.cmp
rename to 8/ProgramFlow/FibonacciSeries/FibonacciSeries.cmp
index c262a4b..304e7c1 100644
--- a/08/ProgramFlow/FibonacciSeries/FibonacciSeries.cmp
+++ b/8/ProgramFlow/FibonacciSeries/FibonacciSeries.cmp
@@ -1,2 +1,2 @@
-|RAM[3000]|RAM[3001]|RAM[3002]|RAM[3003]|RAM[3004]|RAM[3005]|
-| 0 | 1 | 1 | 2 | 3 | 5 |
+|RAM[3000]|RAM[3001]|RAM[3002]|RAM[3003]|RAM[3004]|RAM[3005]|
+| 0 | 1 | 1 | 2 | 3 | 5 |
diff --git a/8/ProgramFlow/FibonacciSeries/FibonacciSeries.tst b/8/ProgramFlow/FibonacciSeries/FibonacciSeries.tst
new file mode 100644
index 0000000..a5b42e8
--- /dev/null
+++ b/8/ProgramFlow/FibonacciSeries/FibonacciSeries.tst
@@ -0,0 +1,28 @@
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+// File name: projects/8/ProgramFlow/FibonacciSeries/FibonacciSeries.tst
+
+// Tests FibonacciSeries.asm on the CPU emulator.
+// Before executing the code, initializes the stack pointer
+// and the base addresses of the local and argument segments,
+// and sets argument[0] and argument [1].
+
+load FibonacciSeries.asm,
+output-file FibonacciSeries.out,
+compare-to FibonacciSeries.cmp,
+
+set RAM[0] 256, // SP
+set RAM[1] 300, // LCL
+set RAM[2] 400, // ARG
+set RAM[400] 6, // argument[0], n
+set RAM[401] 3000, // argument[1], base address of the generated series
+
+repeat 1100 {
+ ticktock;
+}
+
+// Outputs the series of values generated and written by the code.
+output-list RAM[3000]%D1.6.2 RAM[3001]%D1.6.2 RAM[3002]%D1.6.2
+ RAM[3003]%D1.6.2 RAM[3004]%D1.6.2 RAM[3005]%D1.6.2;
+output;
diff --git a/8/ProgramFlow/FibonacciSeries/FibonacciSeries.vm b/8/ProgramFlow/FibonacciSeries/FibonacciSeries.vm
new file mode 100644
index 0000000..4f27c61
--- /dev/null
+++ b/8/ProgramFlow/FibonacciSeries/FibonacciSeries.vm
@@ -0,0 +1,44 @@
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+// File name: projects/8/ProgramFlow/FibonacciSeries/FibonacciSeries.vm
+
+// Puts the first n elements of the Fibonacci series in the memory,
+// starting at address addr. n and addr are given in argument[0] and
+// argument[1], which must be initialized by the caller of this code.
+
+ push argument 1 // sets THAT, the base address of the
+ pop pointer 1 // that segment, to argument[1]
+ push constant 0 // sets the series' first and second
+ pop that 0 // elements to 0 and 1, respectively
+ push constant 1
+ pop that 1
+ push argument 0 // sets n, the number of remaining elements
+ push constant 2 // to be computed, to argument[0] minus 2,
+ sub // since 2 elements were already computed.
+ pop argument 0
+
+label LOOP
+ push argument 0
+ if-goto COMPUTE_ELEMENT // if n > 0, goto COMPUTE_ELEMENT
+ goto END // otherwise, goto END
+
+label COMPUTE_ELEMENT
+ // that[2] = that[0] + that[1]
+ push that 0
+ push that 1
+ add
+ pop that 2
+ // THAT += 1 (updates the base address of that)
+ push pointer 1
+ push constant 1
+ add
+ pop pointer 1
+ // updates n-- and loops
+ push argument 0
+ push constant 1
+ sub
+ pop argument 0
+ goto LOOP
+
+label END
diff --git a/08/ProgramFlow/FibonacciSeries/FibonacciSeriesVME.tst b/8/ProgramFlow/FibonacciSeries/FibonacciSeriesVME.tst
similarity index 51%
rename from 08/ProgramFlow/FibonacciSeries/FibonacciSeriesVME.tst
rename to 8/ProgramFlow/FibonacciSeries/FibonacciSeriesVME.tst
index 243f31b..8e28b73 100644
--- a/08/ProgramFlow/FibonacciSeries/FibonacciSeriesVME.tst
+++ b/8/ProgramFlow/FibonacciSeries/FibonacciSeriesVME.tst
@@ -1,22 +1,29 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/08/ProgramFlow/FibonacciSeries/FibonacciSeriesVME.tst
-
-load FibonacciSeries.vm,
-output-file FibonacciSeries.out,
-compare-to FibonacciSeries.cmp,
-output-list RAM[3000]%D1.6.2 RAM[3001]%D1.6.2 RAM[3002]%D1.6.2
- RAM[3003]%D1.6.2 RAM[3004]%D1.6.2 RAM[3005]%D1.6.2;
-
-set sp 256,
-set local 300,
-set argument 400,
-set argument[0] 6,
-set argument[1] 3000,
-
-repeat 73 {
- vmstep;
-}
-
-output;
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+// File name: projects/8/ProgramFlow/FibonacciSeries/FibonacciSeriesVME.tst
+
+// Tests and illustrates FibonacciSeries.vm on the VM emulator.
+// Before executing the code, initializes the stack pointer
+// and the base addresses of the local and argument segments,
+// and sets argument[0] to n and argument [1] to the base address
+// of the generated series.
+
+load FibonacciSeries.vm,
+output-file FibonacciSeries.out,
+compare-to FibonacciSeries.cmp,
+
+set sp 256,
+set local 300,
+set argument 400,
+set argument[0] 6,
+set argument[1] 3000,
+
+repeat 73 {
+ vmstep;
+}
+
+// Outputs the series of values generated and written by the code.
+output-list RAM[3000]%D1.6.2 RAM[3001]%D1.6.2 RAM[3002]%D1.6.2
+ RAM[3003]%D1.6.2 RAM[3004]%D1.6.2 RAM[3005]%D1.6.2;
+output;
diff --git a/09/Average/Main.jack b/9/Average/Main.jack
similarity index 93%
rename from 09/Average/Main.jack
rename to 9/Average/Main.jack
index a359602..01f6e08 100644
--- a/09/Average/Main.jack
+++ b/9/Average/Main.jack
@@ -1,7 +1,6 @@
// This file is part of www.nand2tetris.org
// and the book "The Elements of Computing Systems"
// by Nisan and Schocken, MIT Press.
-// File name: projects/09/Average/Main.jack
// Inputs some numbers and computes their average
class Main {
diff --git a/9/ComplexArrays/Main.jack b/9/ComplexArrays/Main.jack
new file mode 100644
index 0000000..a97864b
--- /dev/null
+++ b/9/ComplexArrays/Main.jack
@@ -0,0 +1,68 @@
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+/**
+ * Performs several complex array processing tests.
+ * For each test, the expected result is printed, along with the
+ * actual result. In each test, the two results should be equal.
+ */
+class Main {
+
+ function void main() {
+ var Array a, b, c;
+
+ let a = Array.new(10);
+ let b = Array.new(5);
+ let c = Array.new(1);
+
+ let a[3] = 2;
+ let a[4] = 8;
+ let a[5] = 4;
+ let b[a[3]] = a[3] + 3; // b[2] = 5
+ let a[b[a[3]]] = a[a[5]] * b[((7 - a[3]) - Main.double(2)) + 1]; // a[5] = 8 * 5 = 40
+ let c[0] = null;
+ let c = c[0];
+
+ do Output.printString("Test 1: expected result: 5; actual result: ");
+ do Output.printInt(b[2]);
+ do Output.println();
+ do Output.printString("Test 2: expected result: 40; actual result: ");
+ do Output.printInt(a[5]);
+ do Output.println();
+ do Output.printString("Test 3: expected result: 0; actual result: ");
+ do Output.printInt(c);
+ do Output.println();
+
+ let c = null;
+
+ if (c = null) {
+ do Main.fill(a, 10);
+ let c = a[3];
+ let c[1] = 33;
+ let c = a[7];
+ let c[1] = 77;
+ let b = a[3];
+ let b[1] = b[1] + c[1]; // b[1] = 33 + 77 = 110;
+ }
+
+ do Output.printString("Test 4: expected result: 77; actual result: ");
+ do Output.printInt(c[1]);
+ do Output.println();
+ do Output.printString("Test 5: expected result: 110; actual result: ");
+ do Output.printInt(b[1]);
+ do Output.println();
+ return;
+ }
+
+ function int double(int a) {
+ return a * 2;
+ }
+
+ function void fill(Array a, int size) {
+ while (size > 0) {
+ let size = size - 1;
+ let a[size] = Array.new(3);
+ }
+ return;
+ }
+}
diff --git a/9/ConvertToBin/Main.jack b/9/ConvertToBin/Main.jack
new file mode 100644
index 0000000..6bc99f9
--- /dev/null
+++ b/9/ConvertToBin/Main.jack
@@ -0,0 +1,80 @@
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+/**
+ * Unpacks a 16-bit number into its binary representation:
+ * Takes the 16-bit number stored in RAM[8000] and stores its individual
+ * bits in RAM[8001]..RAM[8016] (each location will contain 0 or 1).
+ * Before the conversion, RAM[8001]..RAM[8016] are initialized to -1.
+ *
+ * The program should be tested as follows:
+ * 1) Load the program into the supplied VM emulator
+ * 2) Put some value in RAM[8000]
+ * 3) Switch to "no animation"
+ * 4) Run the program (give it enough time to run)
+ * 5) Stop the program
+ * 6) Check that RAM[8001]..RAM[8016] contain the correct bits, and
+ * that none of these memory locations contains -1.
+ */
+class Main {
+
+ /**
+ * Initializes RAM[8001]..RAM[8016] to -1,
+ * and converts the value in RAM[8000] to binary.
+ */
+ function void main() {
+ var int value;
+ do Main.fillMemory(8001, 16, -1); // sets RAM[8001]..RAM[8016] to -1
+ let value = Memory.peek(8000); // Uses an OS routine to read the input
+ do Main.convert(value); // performs the conversion
+ return;
+ }
+
+ /** Converts the given decimal value to binary, and puts
+ * the resulting bits in RAM[8001]..RAM[8016]. */
+ function void convert(int value) {
+ var int mask, position;
+ var boolean loop;
+
+ let loop = true;
+ while (loop) {
+ let position = position + 1;
+ let mask = Main.nextMask(mask);
+
+ if (~(position > 16)) {
+
+ if (~((value & mask) = 0)) {
+ do Memory.poke(8000 + position, 1);
+ }
+ else {
+ do Memory.poke(8000 + position, 0);
+ }
+ }
+ else {
+ let loop = false;
+ }
+ }
+ return;
+ }
+
+ /** Returns the next mask (the mask that should follow the given mask). */
+ function int nextMask(int mask) {
+ if (mask = 0) {
+ return 1;
+ }
+ else {
+ return mask * 2;
+ }
+ }
+
+ /** Fills 'length' consecutive memory locations with 'value',
+ * starting at 'address'. */
+ function void fillMemory(int address, int length, int value) {
+ while (length > 0) {
+ do Memory.poke(address, value);
+ let length = length - 1;
+ let address = address + 1;
+ }
+ return;
+ }
+}
diff --git a/09/Fraction/Fraction.jack b/9/Fraction/Fraction.jack
similarity index 93%
rename from 09/Fraction/Fraction.jack
rename to 9/Fraction/Fraction.jack
index c86f0a5..9a70242 100644
--- a/09/Fraction/Fraction.jack
+++ b/9/Fraction/Fraction.jack
@@ -1,7 +1,6 @@
// This file is part of www.nand2tetris.org
// and the book "The Elements of Computing Systems"
// by Nisan and Schocken, MIT Press.
-// File name: projects/09/Fraction/Fraction.jack
/** Represents the Fraction type and related operations. */
class Fraction {
@@ -37,7 +36,7 @@ class Fraction {
return Fraction.new(sum, denominator * other.getDenominator());
}
- // More fraction-related methods (minus, times, div, etc.) can be added here.
+ // More fraction-related methods (minus, times, div, invert, etc.) can be added here.
/** Disposes this fraction. */
method void dispose() {
diff --git a/09/Fraction/Main.jack b/9/Fraction/Main.jack
similarity index 82%
rename from 09/Fraction/Main.jack
rename to 9/Fraction/Main.jack
index 43ddece..3d13fd5 100644
--- a/09/Fraction/Main.jack
+++ b/9/Fraction/Main.jack
@@ -1,9 +1,8 @@
// This file is part of www.nand2tetris.org
// and the book "The Elements of Computing Systems"
// by Nisan and Schocken, MIT Press.
-// File name: projects/09/Fraction/Main.jack
-// Computes the sum of 2/3 and 1/5.
+// Computes and prints the sum of 2/3 and 1/5.
class Main {
function void main() {
var Fraction a, b, c;
diff --git a/09/HelloWorld/Main.jack b/9/HelloWorld/Main.jack
similarity index 88%
rename from 09/HelloWorld/Main.jack
rename to 9/HelloWorld/Main.jack
index 446b21b..8588c4d 100644
--- a/09/HelloWorld/Main.jack
+++ b/9/HelloWorld/Main.jack
@@ -1,7 +1,6 @@
// This file is part of www.nand2tetris.org
// and the book "The Elements of Computing Systems"
// by Nisan and Schocken, MIT Press.
-// File name: projects/09/HelloWorld/Main.jack
/** Hello World program. */
class Main {
diff --git a/09/List/List.jack b/9/List/List.jack
similarity index 62%
rename from 09/List/List.jack
rename to 9/List/List.jack
index c62fe28..f4ff2e6 100644
--- a/09/List/List.jack
+++ b/9/List/List.jack
@@ -1,17 +1,16 @@
// This file is part of www.nand2tetris.org
// and the book "The Elements of Computing Systems"
// by Nisan and Schocken, MIT Press.
-// File name: projects/09/List/List.jack
/** Represents a linked list of integers. */
class List {
- field int data; // a list consists of a data field,
- field List next; // followed by a list
+ field int data; // an int value,
+ field List next; // followed by a list of int values
/* Creates a List. */
constructor List new(int car, List cdr) {
- let data = car; // the identifiers car and cdr are used in
- let next = cdr; // memory of the Lisp programming language
+ let data = car; // the identifiers car and cdr are used in
+ let next = cdr; // memory of the Lisp programming language
return this;
}
@@ -21,8 +20,9 @@ class List {
/** Prints this list. */
method void print() {
- var List current; // initializes current to the first item
- let current = this; // of this list
+ // Sets current to the first element of this list
+ var List current;
+ let current = this;
while (~(current = null)) {
do Output.printInt(current.getData());
do Output.printChar(32); // prints a space
@@ -31,12 +31,13 @@ class List {
return;
}
- /** Disposes this List by recursively disposing its tail. */
+ /** Disposes this List. */
+ // By recursively disposing its tail.
method void dispose() {
if (~(next = null)) {
do next.dispose();
}
- // Uses an OS routine to recycle this object.
+ // Calls an OS routine to free the memory of this object.
do Memory.deAlloc(this);
return;
}
diff --git a/09/List/Main.jack b/9/List/Main.jack
similarity index 81%
rename from 09/List/Main.jack
rename to 9/List/Main.jack
index 824eb6f..dbb3403 100644
--- a/09/List/Main.jack
+++ b/9/List/Main.jack
@@ -1,9 +1,8 @@
// This file is part of www.nand2tetris.org
// and the book "The Elements of Computing Systems"
// by Nisan and Schocken, MIT Press.
-// File name: projects/09/List/Main.jack
-/** Demonstrates the use of the List abstraction. */
+/** An example of creating and using List objects. */
class Main {
function void main() {
// Creates and uses the list (2,3,5).
diff --git a/9/Pong/Ball.jack b/9/Pong/Ball.jack
new file mode 100644
index 0000000..fd9f75a
--- /dev/null
+++ b/9/Pong/Ball.jack
@@ -0,0 +1,201 @@
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+/**
+ * A graphical ball in a Pong game. Characterized by a screen location and
+ * distance of last destination. Has methods for drawing, erasing and moving
+ * on the screen. The ball is displayed as a filled, 6-by-6 pixles rectangle.
+ */
+class Ball {
+
+ field int x, y; // the ball's screen location (in pixels)
+ field int lengthx, lengthy; // distance of last destination (in pixels)
+
+ field int d, straightD, diagonalD; // used for straight line movement computation
+ field boolean invert, positivex, positivey; // (same)
+
+ field int leftWall, rightWall, topWall, bottomWall; // wall locations
+
+ field int wall; // last wall that the ball was bounced off of
+
+ /** Constructs a new ball with the given initial location and wall locations. */
+ constructor Ball new(int Ax, int Ay,
+ int AleftWall, int ArightWall, int AtopWall, int AbottomWall) {
+ let x = Ax;
+ let y = Ay;
+ let leftWall = AleftWall;
+ let rightWall = ArightWall - 6; // -6 for ball size
+ let topWall = AtopWall;
+ let bottomWall = AbottomWall - 6; // -6 for ball size
+ let wall = 0;
+ do show();
+ return this;
+ }
+
+ /** Deallocates the Ball's memory. */
+ method void dispose() {
+ do Memory.deAlloc(this);
+ return;
+ }
+
+ /** Shows the ball. */
+ method void show() {
+ do Screen.setColor(true);
+ do draw();
+ return;
+ }
+
+ /** Hides the ball. */
+ method void hide() {
+ do Screen.setColor(false);
+ do draw();
+ return;
+ }
+
+ /** Draws the ball. */
+ method void draw() {
+ do Screen.drawRectangle(x, y, x + 5, y + 5);
+ return;
+ }
+
+ /** Returns the ball's left edge. */
+ method int getLeft() {
+ return x;
+ }
+
+ /** Returns the ball's right edge. */
+ method int getRight() {
+ return x + 5;
+ }
+
+ /** Computes and sets the ball's destination. */
+ method void setDestination(int destx, int desty) {
+ var int dx, dy, temp;
+ let lengthx = destx - x;
+ let lengthy = desty - y;
+ let dx = Math.abs(lengthx);
+ let dy = Math.abs(lengthy);
+ let invert = (dx < dy);
+
+ if (invert) {
+ let temp = dx; // swap dx, dy
+ let dx = dy;
+ let dy = temp;
+ let positivex = (y < desty);
+ let positivey = (x < destx);
+ }
+ else {
+ let positivex = (x < destx);
+ let positivey = (y < desty);
+ }
+
+ let d = (2 * dy) - dx;
+ let straightD = 2 * dy;
+ let diagonalD = 2 * (dy - dx);
+
+ return;
+ }
+
+ /**
+ * Moves the ball one step towards its destination.
+ * If the ball has reached a wall, returns 0.
+ * Else, returns a value according to the wall:
+ * 1 (left wall), 2 (right wall), 3 (top wall), 4 (bottom wall).
+ */
+ method int move() {
+
+ do hide();
+
+ if (d < 0) { let d = d + straightD; }
+ else {
+ let d = d + diagonalD;
+
+ if (positivey) {
+ if (invert) { let x = x + 4; }
+ else { let y = y + 4; }
+ }
+ else {
+ if (invert) { let x = x - 4; }
+ else { let y = y - 4; }
+ }
+ }
+
+ if (positivex) {
+ if (invert) { let y = y + 4; }
+ else { let x = x + 4; }
+ }
+ else {
+ if (invert) { let y = y - 4; }
+ else { let x = x - 4; }
+ }
+
+ if (~(x > leftWall)) {
+ let wall = 1;
+ let x = leftWall;
+ }
+ if (~(x < rightWall)) {
+ let wall = 2;
+ let x = rightWall;
+ }
+ if (~(y > topWall)) {
+ let wall = 3;
+ let y = topWall;
+ }
+ if (~(y < bottomWall)) {
+ let wall = 4;
+ let y = bottomWall;
+ }
+
+ do show();
+
+ return wall;
+ }
+
+ /**
+ * Bounces off the current wall: sets the new destination
+ * of the ball according to the ball's angle and the given
+ * bouncing direction (-1/0/1=left/center/right or up/center/down).
+ */
+ method void bounce(int bouncingDirection) {
+ var int newx, newy, divLengthx, divLengthy, factor;
+
+ // Since results are too big, divides by 10
+ let divLengthx = lengthx / 10;
+ let divLengthy = lengthy / 10;
+ if (bouncingDirection = 0) { let factor = 10; }
+ else {
+ if (((~(lengthx < 0)) & (bouncingDirection = 1)) | ((lengthx < 0) & (bouncingDirection = (-1)))) {
+ let factor = 20; // bounce direction is in ball direction
+ }
+ else { let factor = 5; } // bounce direction is against ball direction
+ }
+
+ if (wall = 1) {
+ let newx = 506;
+ let newy = (divLengthy * (-50)) / divLengthx;
+ let newy = y + (newy * factor);
+ }
+ else {
+ if (wall = 2) {
+ let newx = 0;
+ let newy = (divLengthy * 50) / divLengthx;
+ let newy = y + (newy * factor);
+ }
+ else {
+ if (wall = 3) {
+ let newy = 250;
+ let newx = (divLengthx * (-25)) / divLengthy;
+ let newx = x + (newx * factor);
+ }
+ else { // assumes wall = 4
+ let newy = 0;
+ let newx = (divLengthx * 25) / divLengthy;
+ let newx = x + (newx * factor);
+ }
+ }
+ }
+
+ do setDestination(newx, newy);
+ return;
+ }
+}
diff --git a/9/Pong/Bat.jack b/9/Pong/Bat.jack
new file mode 100644
index 0000000..db8e21a
--- /dev/null
+++ b/9/Pong/Bat.jack
@@ -0,0 +1,102 @@
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+/**
+ * A graphical bat in a Pong game.
+ * Displayed as a filled horizontal rectangle that has a screen location,
+ * a width and a height.
+ * Has methods for drawing, erasing, moving left and right, and changing
+ * its width (to make the hitting action more challenging).
+ * This class should have been called "Paddle", following the
+ * standard Pong terminology. Unaware of this terminology,
+ * we called it "bat", and the name stuck.
+ */
+class Bat {
+
+ field int x, y; // the bat's screen location
+ field int width, height; // the bat's width and height
+ field int direction; // direction of the bat's movement
+ // (1 = left, 2 = right)
+
+ /** Constructs a new bat with the given location and width. */
+ constructor Bat new(int Ax, int Ay, int Awidth, int Aheight) {
+ let x = Ax;
+ let y = Ay;
+ let width = Awidth;
+ let height = Aheight;
+ let direction = 2;
+ do show();
+ return this;
+ }
+
+ /** Deallocates the object's memory. */
+ method void dispose() {
+ do Memory.deAlloc(this);
+ return;
+ }
+
+ /** Shows the bat. */
+ method void show() {
+ do Screen.setColor(true);
+ do draw();
+ return;
+ }
+
+ /** Hides the bat. */
+ method void hide() {
+ do Screen.setColor(false);
+ do draw();
+ return;
+ }
+
+ /** Draws the bat. */
+ method void draw() {
+ do Screen.drawRectangle(x, y, x + width, y + height);
+ return;
+ }
+
+ /** Sets the bat's direction (0=stop, 1=left, 2=right). */
+ method void setDirection(int Adirection) {
+ let direction = Adirection;
+ return;
+ }
+
+ /** Returns the bat's left edge. */
+ method int getLeft() {
+ return x;
+ }
+
+ /** Returns the bat's right edge. */
+ method int getRight() {
+ return x + width;
+ }
+
+ /** Sets the bat's width. */
+ method void setWidth(int Awidth) {
+ do hide();
+ let width = Awidth;
+ do show();
+ return;
+ }
+
+ /** Moves the bat one step in the bat's direction. */
+ method void move() {
+ if (direction = 1) {
+ let x = x - 4;
+ if (x < 0) { let x = 0; }
+ do Screen.setColor(false);
+ do Screen.drawRectangle((x + width) + 1, y, (x + width) + 4, y + height);
+ do Screen.setColor(true);
+ do Screen.drawRectangle(x, y, x + 3, y + height);
+ }
+ else {
+ let x = x + 4;
+ if ((x + width) > 511) { let x = 511 - width; }
+ do Screen.setColor(false);
+ do Screen.drawRectangle(x - 4, y, x - 1, y + height);
+ do Screen.setColor(true);
+ do Screen.drawRectangle((x + width) - 3, y, x + width, y + height);
+ }
+ return;
+ }
+}
diff --git a/9/Pong/Main.jack b/9/Pong/Main.jack
new file mode 100644
index 0000000..905e43d
--- /dev/null
+++ b/9/Pong/Main.jack
@@ -0,0 +1,17 @@
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+/**
+ * Main class of the Pong game.
+ */
+class Main {
+ /** Initializes a Pong game and starts running it. */
+ function void main() {
+ var PongGame game;
+ do PongGame.newInstance();
+ let game = PongGame.getInstance();
+ do game.run();
+ do game.dispose();
+ return;
+ }
+}
diff --git a/9/Pong/PongGame.jack b/9/Pong/PongGame.jack
new file mode 100644
index 0000000..3fb00c2
--- /dev/null
+++ b/9/Pong/PongGame.jack
@@ -0,0 +1,135 @@
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+/**
+ * Represents a Pong game.
+ */
+class PongGame {
+
+ static PongGame instance; // A Pong game
+ field Bat bat; // bat
+ field Ball ball; // ball
+ field int wall; // current wall that the ball is bouncing off of
+ field boolean exit; // true when the game is over
+ field int score; // current score
+ field int lastWall; // last wall that the ball bounced off of
+
+ // The current width of the bat
+ field int batWidth;
+
+ /** Constructs a new Pong game. */
+ constructor PongGame new() {
+ do Screen.clearScreen();
+ let batWidth = 50; // initial bat size
+ let bat = Bat.new(230, 229, batWidth, 7);
+ let ball = Ball.new(253, 222, 0, 511, 0, 229);
+ do ball.setDestination(400,0);
+ do Screen.drawRectangle(0, 238, 511, 240);
+ do Output.moveCursor(22,0);
+ do Output.printString("Score: 0");
+
+ let exit = false;
+ let score = 0;
+ let wall = 0;
+ let lastWall = 0;
+
+ return this;
+ }
+
+ /** Deallocates the object's memory. */
+ method void dispose() {
+ do bat.dispose();
+ do ball.dispose();
+ do Memory.deAlloc(this);
+ return;
+ }
+
+ /** Creates an instance of a Pong game. */
+ function void newInstance() {
+ let instance = PongGame.new();
+ return;
+ }
+
+ /** Returns this Pong game. */
+ function PongGame getInstance() {
+ return instance;
+ }
+
+ /** Starts the game, and handles inputs from the user that control
+ * the bat's movement direction. */
+ method void run() {
+ var char key;
+
+ while (~exit) {
+ // waits for a key to be pressed.
+ while ((key = 0) & (~exit)) {
+ let key = Keyboard.keyPressed();
+ do bat.move();
+ do moveBall();
+ do Sys.wait(50);
+ }
+
+ if (key = 130) { do bat.setDirection(1); }
+ else {
+ if (key = 132) { do bat.setDirection(2); }
+ else {
+ if (key = 140) { let exit = true; }
+ }
+ }
+
+ // Waits for the key to be released.
+ while ((~(key = 0)) & (~exit)) {
+ let key = Keyboard.keyPressed();
+ do bat.move();
+ do moveBall();
+ do Sys.wait(50);
+ }
+ }
+
+ if (exit) {
+ do Output.moveCursor(10,27);
+ do Output.printString("Game Over");
+ }
+
+ return;
+ }
+
+ /**
+ * Handles ball movement, including bouncing.
+ * If the ball bounces off a wall, finds its new direction.
+ * If the ball bounces off the bat, increases the score by one
+ * and shrinks the bat's size, to make the game more challenging.
+ */
+ method void moveBall() {
+ var int bouncingDirection, batLeft, batRight, ballLeft, ballRight;
+
+ let wall = ball.move();
+
+ if ((wall > 0) & (~(wall = lastWall))) {
+ let lastWall = wall;
+ let bouncingDirection = 0;
+ let batLeft = bat.getLeft();
+ let batRight = bat.getRight();
+ let ballLeft = ball.getLeft();
+ let ballRight = ball.getRight();
+
+ if (wall = 4) {
+ let exit = (batLeft > ballRight) | (batRight < ballLeft);
+ if (~exit) {
+ if (ballRight < (batLeft + 10)) { let bouncingDirection = -1; }
+ else {
+ if (ballLeft > (batRight - 10)) { let bouncingDirection = 1; }
+ }
+
+ let batWidth = batWidth - 2;
+ do bat.setWidth(batWidth);
+ let score = score + 1;
+ do Output.moveCursor(22,7);
+ do Output.printInt(score);
+ }
+ }
+ do ball.bounce(bouncingDirection);
+ }
+ return;
+ }
+}
\ No newline at end of file
diff --git a/09/Square/Main.jack b/9/Square/Main.jack
similarity index 71%
rename from 09/Square/Main.jack
rename to 9/Square/Main.jack
index 8311cc2..8e6395c 100644
--- a/09/Square/Main.jack
+++ b/9/Square/Main.jack
@@ -1,15 +1,14 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/09/Square/Main.jack
-
-/** Initializes a new Square Dance game and starts running it. */
-class Main {
- function void main() {
- var SquareGame game;
- let game = SquareGame.new();
- do game.run();
- do game.dispose();
- return;
- }
-}
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+
+/** Initializes a new Square game and starts running it. */
+class Main {
+ function void main() {
+ var SquareGame game;
+ let game = SquareGame.new();
+ do game.run();
+ do game.dispose();
+ return;
+ }
+}
diff --git a/09/Square/Square.jack b/9/Square/Square.jack
similarity index 66%
rename from 09/Square/Square.jack
rename to 9/Square/Square.jack
index 38066e5..b71eac3 100644
--- a/09/Square/Square.jack
+++ b/9/Square/Square.jack
@@ -1,19 +1,19 @@
// This file is part of www.nand2tetris.org
// and the book "The Elements of Computing Systems"
// by Nisan and Schocken, MIT Press.
-// File name: projects/09/Square/Square.jack
-/** Implements a graphical square. */
+/** Implements a graphical square.
+ The square has top-left x and y coordinates, and a size. */
class Square {
- field int x, y; // screen location of the square's top-left corner
+ field int x, y; // screen location of the top-left corner of this square
field int size; // length of this square, in pixels
- /** Constructs a new square with a given location and size. */
- constructor Square new(int Ax, int Ay, int Asize) {
- let x = Ax;
- let y = Ay;
- let size = Asize;
+ /** Constructs and draws a new square with a given location and size. */
+ constructor Square new(int ax, int ay, int asize) {
+ let x = ax;
+ let y = ay;
+ let size = asize;
do draw();
return this;
}
@@ -24,21 +24,23 @@ class Square {
return;
}
- /** Draws the square on the screen. */
+ /** Draws this square in its current (x,y) location */
method void draw() {
+ // Draws the square using the color black
do Screen.setColor(true);
do Screen.drawRectangle(x, y, x + size, y + size);
return;
}
- /** Erases the square from the screen. */
+ /** Erases this square. */
method void erase() {
+ // Draws the square using the color white (background color)
do Screen.setColor(false);
do Screen.drawRectangle(x, y, x + size, y + size);
return;
}
- /** Increments the square size by 2 pixels. */
+ /** Increments the square size by 2 pixels (if possible). */
method void incSize() {
if (((y + size) < 254) & ((x + size) < 510)) {
do erase();
@@ -48,7 +50,7 @@ class Square {
return;
}
- /** Decrements the square size by 2 pixels. */
+ /** Decrements the square size by 2 pixels (if possible). */
method void decSize() {
if (size > 2) {
do erase();
@@ -58,19 +60,21 @@ class Square {
return;
}
- /** Moves the square up by 2 pixels. */
+ /** Moves this square up by 2 pixels (if possible). */
method void moveUp() {
if (y > 1) {
+ // Erases the bottom two rows of this square in its current location
do Screen.setColor(false);
do Screen.drawRectangle(x, (y + size) - 1, x + size, y + size);
let y = y - 2;
+ // Draws the top two rows of this square in its new location
do Screen.setColor(true);
do Screen.drawRectangle(x, y, x + size, y + 1);
}
return;
}
- /** Moves the square down by 2 pixels. */
+ /** Moves the square down by 2 pixels (if possible). */
method void moveDown() {
if ((y + size) < 254) {
do Screen.setColor(false);
@@ -82,7 +86,7 @@ class Square {
return;
}
- /** Moves the square left by 2 pixels. */
+ /** Moves the square left by 2 pixels (if possible). */
method void moveLeft() {
if (x > 1) {
do Screen.setColor(false);
@@ -94,7 +98,7 @@ class Square {
return;
}
- /** Moves the square right by 2 pixels. */
+ /** Moves the square right by 2 pixels (if possible). */
method void moveRight() {
if ((x + size) < 510) {
do Screen.setColor(false);
diff --git a/09/Square/SquareGame.jack b/9/Square/SquareGame.jack
similarity index 87%
rename from 09/Square/SquareGame.jack
rename to 9/Square/SquareGame.jack
index 02393e2..20491ca 100644
--- a/09/Square/SquareGame.jack
+++ b/9/Square/SquareGame.jack
@@ -1,79 +1,75 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: projects/09/Square/SquareGame.jack
-
-/**
- * Implements the Square Dance game.
- * This simple game allows the user to move a black square around
- * the screen, and change the square's size during the movement.
- * When the game starts, a square of 30 by 30 pixels is shown at the
- * top-left corner of the screen. The user controls the square as follows.
- * The 4 arrow keys are used to move the square up, down, left, and right.
- * The 'z' and 'x' keys are used, respectively, to decrement and increment
- * the square's size. The 'q' key is used to quit the game.
- */
-
-class SquareGame {
- field Square square; // the square of this game
- field int direction; // the square's current direction:
- // 0=none, 1=up, 2=down, 3=left, 4=right
-
- /** Constructs a new Square Game. */
- constructor SquareGame new() {
- // Creates a 30 by 30 pixels square and positions it at the top-left
- // of the screen.
- let square = Square.new(0, 0, 30);
- let direction = 0; // initial state is no movement
- return this;
- }
-
- /** Disposes this game. */
- method void dispose() {
- do square.dispose();
- do Memory.deAlloc(this);
- return;
- }
-
- /** Moves the square in the current direction. */
- method void moveSquare() {
- if (direction = 1) { do square.moveUp(); }
- if (direction = 2) { do square.moveDown(); }
- if (direction = 3) { do square.moveLeft(); }
- if (direction = 4) { do square.moveRight(); }
- do Sys.wait(5); // delays the next movement
- return;
- }
-
- /** Runs the game: handles the user's inputs and moves the square accordingly */
- method void run() {
- var char key; // the key currently pressed by the user
- var boolean exit;
- let exit = false;
-
- while (~exit) {
- // waits for a key to be pressed
- while (key = 0) {
- let key = Keyboard.keyPressed();
- do moveSquare();
- }
- if (key = 81) { let exit = true; } // q key
- if (key = 90) { do square.decSize(); } // z key
- if (key = 88) { do square.incSize(); } // x key
- if (key = 131) { let direction = 1; } // up arrow
- if (key = 133) { let direction = 2; } // down arrow
- if (key = 130) { let direction = 3; } // left arrow
- if (key = 132) { let direction = 4; } // right arrow
-
- // waits for the key to be released
- while (~(key = 0)) {
- let key = Keyboard.keyPressed();
- do moveSquare();
- }
- } // while
- return;
- }
-}
-
-
-
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+/**
+ * Implements the Square game.
+ * This simple game allows the user to move a black square around
+ * the screen, and change the square's size during the movement.
+ * When the game starts, a square of 30 by 30 pixels is shown at the
+ * top-left corner of the screen. The user controls the square as follows.
+ * The 4 arrow keys are used to move the square up, down, left, and right.
+ * The 'z' and 'x' keys are used, respectively, to decrement and increment
+ * the square's size. The 'q' key is used to quit the game.
+ */
+class SquareGame {
+ field Square square; // the square of this game
+ field int direction; // the square's current direction:
+ // 0=none, 1=up, 2=down, 3=left, 4=right
+
+ /** Constructs a new square game. */
+ constructor SquareGame new() {
+ // The initial square is located in (0,0), has size 30, and is not moving.
+ let square = Square.new(0, 0, 30);
+ let direction = 0;
+ return this;
+ }
+
+ /** Disposes this game. */
+ method void dispose() {
+ do square.dispose();
+ do Memory.deAlloc(this);
+ return;
+ }
+
+ /** Moves the square in the current direction. */
+ method void moveSquare() {
+ if (direction = 1) { do square.moveUp(); }
+ if (direction = 2) { do square.moveDown(); }
+ if (direction = 3) { do square.moveLeft(); }
+ if (direction = 4) { do square.moveRight(); }
+ do Sys.wait(5); // delays the next movement
+ return;
+ }
+
+ /** Runs the game: handles the user's inputs and moves the square accordingly */
+ method void run() {
+ var char key; // the key currently pressed by the user
+ var boolean exit;
+ let exit = false;
+
+ while (~exit) {
+ // waits for a key to be pressed
+ while (key = 0) {
+ let key = Keyboard.keyPressed();
+ do moveSquare();
+ }
+ if (key = 81) { let exit = true; } // q key
+ if (key = 90) { do square.decSize(); } // z key
+ if (key = 88) { do square.incSize(); } // x key
+ if (key = 131) { let direction = 1; } // up arrow
+ if (key = 133) { let direction = 2; } // down arrow
+ if (key = 130) { let direction = 3; } // left arrow
+ if (key = 132) { let direction = 4; } // right arrow
+
+ // waits for the key to be released
+ while (~(key = 0)) {
+ let key = Keyboard.keyPressed();
+ do moveSquare();
+ }
+ } // while
+ return;
+ }
+}
+
+
+
diff --git a/projects.zip b/projects.zip
new file mode 100644
index 0000000..1614730
Binary files /dev/null and b/projects.zip differ