From b333a7fc045bd2918d9d92705d86f003900f8e3f Mon Sep 17 00:00:00 2001 From: renan Date: Thu, 27 Nov 2025 10:24:58 +0200 Subject: [PATCH] updateFiles --- {00 => 0}/file.txt | 8 +- 01/And.cmp | 5 - 01/DMux.cmp | 5 - 01/DMux4Way.cmp | 9 - 01/DMux4Way.hdl | 20 - 01/DMux8Way.cmp | 17 - 01/DMux8Way.hdl | 20 - 01/Mux.cmp | 9 - 01/Mux16.cmp | 9 - 01/Not.cmp | 3 - 01/Or.cmp | 5 - 01/Or8Way.cmp | 6 - 01/Xor.cmp | 5 - 02/ALU.hdl | 46 - 02/FullAdder.cmp | 9 - 02/HalfAdder.cmp | 5 - 03/a/Bit.cmp | 215 - 03/a/Bit.hdl | 18 - 03/a/PC.cmp | 31 - 03/a/PC.hdl | 20 - 03/a/RAM64.cmp | 320 - 03/a/RAM64.hdl | 19 - 03/a/RAM8.cmp | 173 - 03/a/RAM8.hdl | 19 - 03/a/Register.cmp | 149 - 03/b/RAM16K.cmp | 320 - 03/b/RAM16K.hdl | 19 - 03/b/RAM4K.cmp | 320 - 03/b/RAM4K.hdl | 19 - 03/b/RAM512.cmp | 320 - 03/b/RAM512.hdl | 19 - 04/fill/Fill.asm | 14 - 04/mult/Mult.tst | 74 - 05/CPU.cmp | 97 - 05/CPU.hdl | 43 - 05/Computer.hdl | 23 - 05/ComputerAdd-external.cmp | 15 - 05/ComputerAdd-external.tst | 32 - 05/ComputerAdd.cmp | 15 - 05/ComputerMax-external.cmp | 28 - 05/ComputerMax-external.tst | 38 - 05/ComputerMax.cmp | 28 - 05/ComputerMax.tst | 39 - 05/ComputerRect-external.cmp | 65 - 05/ComputerRect-external.tst | 26 - 05/ComputerRect.cmp | 65 - 06/max/Max.asm | 26 - 08/FunctionCalls/FibonacciElement/Main.vm | 30 - 08/FunctionCalls/FibonacciElement/Sys.vm | 15 - 08/FunctionCalls/NestedCall/Sys.vm | 63 - .../SimpleFunction/SimpleFunction.tst | 29 - 08/FunctionCalls/StaticsTest/Sys.vm | 20 - 08/ProgramFlow/BasicLoop/BasicLoop.tst | 20 - 08/ProgramFlow/BasicLoop/BasicLoop.vm | 22 - .../FibonacciSeries/FibonacciSeries.tst | 22 - .../FibonacciSeries/FibonacciSeries.vm | 49 - 09/BitmapEditor/BitmapEditor.html | 200 - 09/BitmapEditor/BitmapEditor.iml | 10 - 09/Jack OS API.pdf | Bin 108857 -> 0 bytes 1/And.cmp | 5 + {01 => 1}/And.hdl | 32 +- {01 => 1}/And.tst | 57 +- {01 => 1}/And16.cmp | 14 +- {01 => 1}/And16.hdl | 30 +- {01 => 1}/And16.tst | 75 +- 1/DMux.cmp | 5 + {01 => 1}/DMux.hdl | 33 +- {01 => 1}/DMux.tst | 53 +- 1/DMux4Way.cmp | 9 + 1/DMux4Way.hdl | 17 + {01 => 1}/DMux4Way.tst | 85 +- 1/DMux8Way.cmp | 17 + 1/DMux8Way.hdl | 21 + {01 => 1}/DMux8Way.tst | 149 +- 1/Mux.cmp | 9 + {01 => 1}/Mux.hdl | 30 +- {01 => 1}/Mux.tst | 97 +- 1/Mux16.cmp | 9 + {01 => 1}/Mux16.hdl | 33 +- {01 => 1}/Mux16.tst | 95 +- {01 => 1}/Mux4Way16.cmp | 18 +- {01 => 1}/Mux4Way16.hdl | 35 +- {01 => 1}/Mux4Way16.tst | 97 +- {01 => 1}/Mux8Way16.cmp | 34 +- {01 => 1}/Mux8Way16.hdl | 45 +- {01 => 1}/Mux8Way16.tst | 177 +- 1/Not.cmp | 3 + {01 => 1}/Not.hdl | 31 +- {01 => 1}/Not.tst | 33 +- {01 => 1}/Not16.cmp | 12 +- {01 => 1}/Not16.hdl | 30 +- {01 => 1}/Not16.tst | 55 +- 1/Or.cmp | 5 + {01 => 1}/Or.hdl | 32 +- {01 => 1}/Or.tst | 57 +- {01 => 1}/Or16.cmp | 14 +- {01 => 1}/Or16.hdl | 30 +- {01 => 1}/Or16.tst | 75 +- 1/Or8Way.cmp | 6 + {01 => 1}/Or8Way.hdl | 29 +- {01 => 1}/Or8Way.tst | 55 +- 1/Xor.cmp | 5 + {01 => 1}/Xor.hdl | 29 +- {01 => 1}/Xor.tst | 57 +- 10/ArrayTest/Main.jack | 3 - 10/ExpressionLessSquare/Main.jack | 1 - 10/ExpressionLessSquare/Square.jack | 1 - 10/ExpressionLessSquare/SquareGame.jack | 1 - 10/Square/Main.jack | 5 +- 10/Square/Square.jack | 3 - 10/Square/SquareGame.jack | 7 +- 11/Average/Main.jack | 33 +- 11/ComplexArrays/Main.jack | 2 - 11/ConvertToBin/Main.jack | 16 +- 11/Pong/Ball.jack | 14 +- 11/Pong/Bat.jack | 21 +- 11/Pong/Main.jack | 4 +- 11/Pong/PongGame.jack | 20 +- 11/Seven/Main.jack | 2 - 11/Square/Main.jack | 5 +- 11/Square/Square.jack | 38 +- 11/Square/SquareGame.jack | 14 +- 12/Array.jack | 2 - 12/ArrayTest/ArrayTest.tst | 1 - 12/ArrayTest/Main.jack | 1 - 12/Keyboard.jack | 28 +- 12/KeyboardTest/KeyboardTestOutput.gif | Bin 12048 -> 0 bytes 12/KeyboardTest/KeyboardTestOutput.png | Bin 0 -> 14085 bytes 12/KeyboardTest/Main.jack | 5 +- 12/Math.jack | 41 +- 12/MathTest/Main.jack | 12 +- 12/MathTest/MathTest.tst | 1 - 12/Memory.jack | 2 - 12/MemoryTest/Main.jack | 1 - 12/MemoryTest/MemoryDiag/Main.jack | 2 - 12/MemoryTest/MemoryDiag/MemoryDiag.tst | 1 - 12/MemoryTest/MemoryTest.tst | 1 - 12/Output.jack | 2 - 12/OutputTest/Main.jack | 1 - 12/Screen.jack | 8 +- 12/ScreenTest/Main.jack | 1 - 12/String.jack | 2 - 12/StringTest/Main.jack | 1 - 12/Sys.jack | 2 - 12/SysTest/Main.jack | 1 - 02/ALU-nostat.cmp => 2/ALU-basic.cmp | 74 +- 02/ALU-nostat.tst => 2/ALU-basic.tst | 696 +- {02 => 2}/ALU.cmp | 74 +- 2/ALU.hdl | 44 + {02 => 2}/ALU.tst | 751 +- {02 => 2}/Add16.cmp | 14 +- {02 => 2}/Add16.hdl | 29 +- {02 => 2}/Add16.tst | 78 +- 2/FullAdder.cmp | 9 + {02 => 2}/FullAdder.hdl | 29 +- {02 => 2}/FullAdder.tst | 93 +- 2/HalfAdder.cmp | 5 + {02 => 2}/HalfAdder.hdl | 31 +- {02 => 2}/HalfAdder.tst | 57 +- {02 => 2}/Inc16.cmp | 10 +- {02 => 2}/Inc16.hdl | 29 +- {02 => 2}/Inc16.tst | 49 +- 3/Bit.cmp | 215 + 3/Bit.hdl | 16 + {03/a => 3}/Bit.tst | 1729 +- 3/PC.cmp | 31 + 3/PC.hdl | 17 + {03/a => 3}/PC.tst | 249 +- 3/RAM16K.cmp | 320 + 3/RAM16K.hdl | 16 + {03/b => 3}/RAM16K.tst | 2051 +- 3/RAM4K.cmp | 320 + 3/RAM4K.hdl | 16 + {03/b => 3}/RAM4K.tst | 2051 +- 3/RAM512.cmp | 320 + 3/RAM512.hdl | 16 + {03/b => 3}/RAM512.tst | 2053 +- 3/RAM64.cmp | 320 + 3/RAM64.hdl | 16 + {03/a => 3}/RAM64.tst | 2051 +- 3/RAM8.cmp | 173 + 3/RAM8.hdl | 16 + {03/a => 3}/RAM8.tst | 1119 +- 3/Register.cmp | 149 + {03/a => 3}/Register.hdl | 34 +- {03/a => 3}/Register.tst | 1137 +- 4/fill/Fill.asm | 10 + {04 => 4}/fill/Fill.tst | 23 +- {04 => 4}/fill/FillAutomatic.cmp | 0 {04 => 4}/fill/FillAutomatic.tst | 12 +- {04 => 4}/mult/Mult.asm | 21 +- {04 => 4}/mult/Mult.cmp | 14 +- 4/mult/Mult.tst | 77 + {05 => 5}/Add.hack | 12 +- {05 => 5}/CPU-external.cmp | 187 +- {05 => 5}/CPU-external.tst | 299 +- 5/CPU.cmp | 93 + 5/CPU.hdl | 35 + {05 => 5}/CPU.tst | 305 +- 5/Computer.hdl | 21 + 5/ComputerAdd.cmp | 15 + {05 => 5}/ComputerAdd.tst | 66 +- 5/ComputerMax.cmp | 28 + 5/ComputerMax.tst | 40 + 5/ComputerRect.cmp | 65 + {05 => 5}/ComputerRect.tst | 54 +- {05 => 5}/Max.hack | 32 +- {05 => 5}/Memory.cmp | 136 +- {05 => 5}/Memory.hdl | 57 +- {05 => 5}/Memory.tst | 381 +- {05 => 5}/Rect.hack | 50 +- {06 => 6}/add/Add.asm | 25 +- 6/max/Max.asm | 29 + {06 => 6}/max/MaxL.asm | 46 +- {06 => 6}/pong/Pong.asm | 56752 ++++++++-------- {06 => 6}/pong/PongL.asm | 54980 +++++++-------- {06 => 6}/rect/Rect.asm | 75 +- {06 => 6}/rect/RectL.asm | 64 +- .../MemoryAccess/BasicTest/BasicTest.cmp | 4 +- .../MemoryAccess/BasicTest/BasicTest.tst | 50 +- {07 => 7}/MemoryAccess/BasicTest/BasicTest.vm | 62 +- .../MemoryAccess/BasicTest/BasicTestVME.tst | 52 +- .../MemoryAccess/PointerTest/PointerTest.cmp | 4 +- .../MemoryAccess/PointerTest/PointerTest.tst | 41 +- .../MemoryAccess/PointerTest/PointerTest.vm | 44 +- .../PointerTest/PointerTestVME.tst | 41 +- .../MemoryAccess/StaticTest/StaticTest.cmp | 4 +- .../MemoryAccess/StaticTest/StaticTest.tst | 36 +- .../MemoryAccess/StaticTest/StaticTest.vm | 34 +- .../MemoryAccess/StaticTest/StaticTestVME.tst | 36 +- .../StackArithmetic/SimpleAdd/SimpleAdd.cmp | 4 +- .../StackArithmetic/SimpleAdd/SimpleAdd.tst | 36 +- .../StackArithmetic/SimpleAdd/SimpleAdd.vm | 18 +- .../SimpleAdd/SimpleAddVME.tst | 36 +- .../StackArithmetic/StackTest/StackTest.cmp | 8 +- .../StackArithmetic/StackTest/StackTest.tst | 44 +- .../StackArithmetic/StackTest/StackTest.vm | 89 +- .../StackTest/StackTestVME.tst | 44 +- .../FibonacciElement/FibonacciElement.cmp | 4 +- .../FibonacciElement/FibonacciElement.tst | 38 +- .../FibonacciElement/FibonacciElementVME.tst | 37 +- 8/FunctionCalls/FibonacciElement/Main.vm | 30 + 8/FunctionCalls/FibonacciElement/Sys.vm | 17 + .../FunctionCalls/NestedCall/NestedCall.cmp | 4 +- .../FunctionCalls/NestedCall/NestedCall.html | 10 +- .../FunctionCalls/NestedCall/NestedCall.tst | 134 +- .../NestedCall/NestedCallStack.html | 610 +- .../NestedCall/NestedCallVME.tst | 142 +- 8/FunctionCalls/NestedCall/Sys.vm | 57 + .../SimpleFunction/SimpleFunction.cmp | 4 +- .../SimpleFunction/SimpleFunction.tst | 36 + .../SimpleFunction/SimpleFunction.vm | 33 +- .../SimpleFunction/SimpleFunctionVME.tst | 63 +- {08 => 8}/FunctionCalls/StaticsTest/Class1.vm | 39 +- {08 => 8}/FunctionCalls/StaticsTest/Class2.vm | 39 +- .../FunctionCalls/StaticsTest/StaticsTest.cmp | 4 +- .../FunctionCalls/StaticsTest/StaticsTest.tst | 36 +- .../StaticsTest/StaticsTestVME.tst | 35 +- 8/FunctionCalls/StaticsTest/Sys.vm | 20 + {08 => 8}/ProgramFlow/BasicLoop/BasicLoop.cmp | 4 +- 8/ProgramFlow/BasicLoop/BasicLoop.tst | 25 + 8/ProgramFlow/BasicLoop/BasicLoop.vm | 22 + .../ProgramFlow/BasicLoop/BasicLoopVME.tst | 45 +- .../FibonacciSeries/FibonacciSeries.cmp | 4 +- .../FibonacciSeries/FibonacciSeries.tst | 28 + .../FibonacciSeries/FibonacciSeries.vm | 44 + .../FibonacciSeries/FibonacciSeriesVME.tst | 51 +- {09 => 9}/Average/Main.jack | 1 - 9/ComplexArrays/Main.jack | 68 + 9/ConvertToBin/Main.jack | 80 + {09 => 9}/Fraction/Fraction.jack | 3 +- {09 => 9}/Fraction/Main.jack | 3 +- {09 => 9}/HelloWorld/Main.jack | 1 - {09 => 9}/List/List.jack | 19 +- {09 => 9}/List/Main.jack | 3 +- 9/Pong/Ball.jack | 201 + 9/Pong/Bat.jack | 102 + 9/Pong/Main.jack | 17 + 9/Pong/PongGame.jack | 135 + {09 => 9}/Square/Main.jack | 29 +- {09 => 9}/Square/Square.jack | 36 +- {09 => 9}/Square/SquareGame.jack | 154 +- projects.zip | Bin 0 -> 218157 bytes 283 files changed, 69556 insertions(+), 69524 deletions(-) rename {00 => 0}/file.txt (98%) delete mode 100644 01/And.cmp delete mode 100644 01/DMux.cmp delete mode 100644 01/DMux4Way.cmp delete mode 100644 01/DMux4Way.hdl delete mode 100644 01/DMux8Way.cmp delete mode 100644 01/DMux8Way.hdl delete mode 100644 01/Mux.cmp delete mode 100644 01/Mux16.cmp delete mode 100644 01/Not.cmp delete mode 100644 01/Or.cmp delete mode 100644 01/Or8Way.cmp delete mode 100644 01/Xor.cmp delete mode 100644 02/ALU.hdl delete mode 100644 02/FullAdder.cmp delete mode 100644 02/HalfAdder.cmp delete mode 100644 03/a/Bit.cmp delete mode 100644 03/a/Bit.hdl delete mode 100644 03/a/PC.cmp delete mode 100644 03/a/PC.hdl delete mode 100644 03/a/RAM64.cmp delete mode 100644 03/a/RAM64.hdl delete mode 100644 03/a/RAM8.cmp delete mode 100644 03/a/RAM8.hdl delete mode 100644 03/a/Register.cmp delete mode 100644 03/b/RAM16K.cmp delete mode 100644 03/b/RAM16K.hdl delete mode 100644 03/b/RAM4K.cmp delete mode 100644 03/b/RAM4K.hdl delete mode 100644 03/b/RAM512.cmp delete mode 100644 03/b/RAM512.hdl delete mode 100644 04/fill/Fill.asm delete mode 100644 04/mult/Mult.tst delete mode 100644 05/CPU.cmp delete mode 100644 05/CPU.hdl delete mode 100644 05/Computer.hdl delete mode 100644 05/ComputerAdd-external.cmp delete mode 100644 05/ComputerAdd-external.tst delete mode 100644 05/ComputerAdd.cmp delete mode 100644 05/ComputerMax-external.cmp delete mode 100644 05/ComputerMax-external.tst delete mode 100644 05/ComputerMax.cmp delete mode 100644 05/ComputerMax.tst delete mode 100644 05/ComputerRect-external.cmp delete mode 100644 05/ComputerRect-external.tst delete mode 100644 05/ComputerRect.cmp delete mode 100644 06/max/Max.asm delete mode 100644 08/FunctionCalls/FibonacciElement/Main.vm delete mode 100644 08/FunctionCalls/FibonacciElement/Sys.vm delete mode 100644 08/FunctionCalls/NestedCall/Sys.vm delete mode 100644 08/FunctionCalls/SimpleFunction/SimpleFunction.tst delete mode 100644 08/FunctionCalls/StaticsTest/Sys.vm delete mode 100644 08/ProgramFlow/BasicLoop/BasicLoop.tst delete mode 100644 08/ProgramFlow/BasicLoop/BasicLoop.vm delete mode 100644 08/ProgramFlow/FibonacciSeries/FibonacciSeries.tst delete mode 100644 08/ProgramFlow/FibonacciSeries/FibonacciSeries.vm delete mode 100644 09/BitmapEditor/BitmapEditor.html delete mode 100644 09/BitmapEditor/BitmapEditor.iml delete mode 100644 09/Jack OS API.pdf create mode 100644 1/And.cmp rename {01 => 1}/And.hdl (55%) rename {01 => 1}/And.tst (75%) rename {01 => 1}/And16.cmp (98%) rename {01 => 1}/And16.hdl (58%) rename {01 => 1}/And16.tst (89%) create mode 100644 1/DMux.cmp rename {01 => 1}/DMux.hdl (59%) rename {01 => 1}/DMux.tst (73%) create mode 100644 1/DMux4Way.cmp create mode 100644 1/DMux4Way.hdl rename {01 => 1}/DMux4Way.tst (75%) create mode 100644 1/DMux8Way.cmp create mode 100644 1/DMux8Way.hdl rename {01 => 1}/DMux8Way.tst (76%) create mode 100644 1/Mux.cmp rename {01 => 1}/Mux.hdl (63%) rename {01 => 1}/Mux.tst (77%) create mode 100644 1/Mux16.cmp rename {01 => 1}/Mux16.hdl (58%) rename {01 => 1}/Mux16.tst (80%) rename {01 => 1}/Mux4Way16.cmp (99%) rename {01 => 1}/Mux4Way16.hdl (58%) rename {01 => 1}/Mux4Way16.tst (87%) rename {01 => 1}/Mux8Way16.cmp (99%) rename {01 => 1}/Mux8Way16.hdl (55%) rename {01 => 1}/Mux8Way16.tst (88%) create mode 100644 1/Not.cmp rename {01 => 1}/Not.hdl (67%) rename {01 => 1}/Not.tst (73%) rename {01 => 1}/Not16.cmp (97%) rename {01 => 1}/Not16.hdl (60%) rename {01 => 1}/Not16.tst (87%) create mode 100644 1/Or.cmp rename {01 => 1}/Or.hdl (58%) rename {01 => 1}/Or.tst (75%) rename {01 => 1}/Or16.cmp (98%) rename {01 => 1}/Or16.hdl (58%) rename {01 => 1}/Or16.tst (89%) create mode 100644 1/Or8Way.cmp rename {01 => 1}/Or8Way.hdl (58%) rename {01 => 1}/Or8Way.tst (78%) create mode 100644 1/Xor.cmp rename {01 => 1}/Xor.hdl (66%) rename {01 => 1}/Xor.tst (75%) delete mode 100644 12/KeyboardTest/KeyboardTestOutput.gif create mode 100644 12/KeyboardTest/KeyboardTestOutput.png rename 02/ALU-nostat.cmp => 2/ALU-basic.cmp (98%) rename 02/ALU-nostat.tst => 2/ALU-basic.tst (68%) rename {02 => 2}/ALU.cmp (98%) create mode 100644 2/ALU.hdl rename {02 => 2}/ALU.tst (86%) rename {02 => 2}/Add16.cmp (98%) rename {02 => 2}/Add16.hdl (69%) rename {02 => 2}/Add16.tst (89%) create mode 100644 2/FullAdder.cmp rename {02 => 2}/FullAdder.hdl (79%) rename {02 => 2}/FullAdder.tst (75%) create mode 100644 2/HalfAdder.cmp rename {02 => 2}/HalfAdder.hdl (78%) rename {02 => 2}/HalfAdder.tst (73%) rename {02 => 2}/Inc16.cmp (97%) rename {02 => 2}/Inc16.hdl (65%) rename {02 => 2}/Inc16.tst (87%) create mode 100644 3/Bit.cmp create mode 100644 3/Bit.hdl rename {03/a => 3}/Bit.tst (85%) create mode 100644 3/PC.cmp create mode 100644 3/PC.hdl rename {03/a => 3}/PC.tst (81%) create mode 100644 3/RAM16K.cmp create mode 100644 3/RAM16K.hdl rename {03/b => 3}/RAM16K.tst (92%) create mode 100644 3/RAM4K.cmp create mode 100644 3/RAM4K.hdl rename {03/b => 3}/RAM4K.tst (91%) create mode 100644 3/RAM512.cmp create mode 100644 3/RAM512.hdl rename {03/b => 3}/RAM512.tst (91%) create mode 100644 3/RAM64.cmp create mode 100644 3/RAM64.hdl rename {03/a => 3}/RAM64.tst (90%) create mode 100644 3/RAM8.cmp create mode 100644 3/RAM8.hdl rename {03/a => 3}/RAM8.tst (88%) create mode 100644 3/Register.cmp rename {03/a => 3}/Register.hdl (51%) rename {03/a => 3}/Register.tst (86%) create mode 100644 4/fill/Fill.asm rename {04 => 4}/fill/Fill.tst (80%) rename {04 => 4}/fill/FillAutomatic.cmp (100%) rename {04 => 4}/fill/FillAutomatic.tst (76%) rename {04 => 4}/mult/Mult.asm (59%) rename {04 => 4}/mult/Mult.cmp (84%) create mode 100644 4/mult/Mult.tst rename {05 => 5}/Add.hack (94%) rename {05 => 5}/CPU-external.cmp (98%) rename {05 => 5}/CPU-external.tst (95%) create mode 100644 5/CPU.cmp create mode 100644 5/CPU.hdl rename {05 => 5}/CPU.tst (83%) create mode 100644 5/Computer.hdl create mode 100644 5/ComputerAdd.cmp rename {05 => 5}/ComputerAdd.tst (57%) create mode 100644 5/ComputerMax.cmp create mode 100644 5/ComputerMax.tst create mode 100644 5/ComputerRect.cmp rename {05 => 5}/ComputerRect.tst (54%) rename {05 => 5}/Max.hack (94%) rename {05 => 5}/Memory.cmp (97%) rename {05 => 5}/Memory.hdl (81%) rename {05 => 5}/Memory.tst (72%) rename {05 => 5}/Rect.hack (94%) rename {06 => 6}/add/Add.asm (80%) create mode 100644 6/max/Max.asm rename {06 => 6}/max/MaxL.asm (80%) rename {06 => 6}/pong/Pong.asm (85%) rename {06 => 6}/pong/PongL.asm (82%) rename {06 => 6}/rect/Rect.asm (55%) rename {06 => 6}/rect/RectL.asm (78%) rename {07 => 7}/MemoryAccess/BasicTest/BasicTest.cmp (98%) rename {07 => 7}/MemoryAccess/BasicTest/BasicTest.tst (76%) rename {07 => 7}/MemoryAccess/BasicTest/BasicTest.vm (72%) rename {07 => 7}/MemoryAccess/BasicTest/BasicTestVME.tst (66%) rename {07 => 7}/MemoryAccess/PointerTest/PointerTest.cmp (97%) rename {07 => 7}/MemoryAccess/PointerTest/PointerTest.tst (79%) rename {07 => 7}/MemoryAccess/PointerTest/PointerTest.vm (82%) rename {07 => 7}/MemoryAccess/PointerTest/PointerTestVME.tst (69%) rename {07 => 7}/MemoryAccess/StaticTest/StaticTest.cmp (91%) rename {07 => 7}/MemoryAccess/StaticTest/StaticTest.tst (75%) rename {07 => 7}/MemoryAccess/StaticTest/StaticTest.vm (80%) rename {07 => 7}/MemoryAccess/StaticTest/StaticTestVME.tst (63%) rename {07 => 7}/StackArithmetic/SimpleAdd/SimpleAdd.cmp (96%) rename {07 => 7}/StackArithmetic/SimpleAdd/SimpleAdd.tst (72%) rename {07 => 7}/StackArithmetic/SimpleAdd/SimpleAdd.vm (73%) rename {07 => 7}/StackArithmetic/SimpleAdd/SimpleAddVME.tst (61%) rename {07 => 7}/StackArithmetic/StackTest/StackTest.cmp (98%) rename {07 => 7}/StackArithmetic/StackTest/StackTest.tst (76%) rename {07 => 7}/StackArithmetic/StackTest/StackTest.vm (76%) rename {07 => 7}/StackArithmetic/StackTest/StackTestVME.tst (67%) rename {08 => 8}/FunctionCalls/FibonacciElement/FibonacciElement.cmp (95%) rename {08 => 8}/FunctionCalls/FibonacciElement/FibonacciElement.tst (58%) rename {08 => 8}/FunctionCalls/FibonacciElement/FibonacciElementVME.tst (52%) create mode 100644 8/FunctionCalls/FibonacciElement/Main.vm create mode 100644 8/FunctionCalls/FibonacciElement/Sys.vm rename {08 => 8}/FunctionCalls/NestedCall/NestedCall.cmp (98%) rename {08 => 8}/FunctionCalls/NestedCall/NestedCall.html (95%) rename {08 => 8}/FunctionCalls/NestedCall/NestedCall.tst (68%) rename {08 => 8}/FunctionCalls/NestedCall/NestedCallStack.html (98%) rename {08 => 8}/FunctionCalls/NestedCall/NestedCallVME.tst (85%) create mode 100644 8/FunctionCalls/NestedCall/Sys.vm rename {08 => 8}/FunctionCalls/SimpleFunction/SimpleFunction.cmp (98%) create mode 100644 8/FunctionCalls/SimpleFunction/SimpleFunction.tst rename {08 => 8}/FunctionCalls/SimpleFunction/SimpleFunction.vm (56%) rename {08 => 8}/FunctionCalls/SimpleFunction/SimpleFunctionVME.tst (65%) rename {08 => 8}/FunctionCalls/StaticsTest/Class1.vm (57%) rename {08 => 8}/FunctionCalls/StaticsTest/Class2.vm (57%) rename {08 => 8}/FunctionCalls/StaticsTest/StaticsTest.cmp (96%) rename {08 => 8}/FunctionCalls/StaticsTest/StaticsTest.tst (71%) rename {08 => 8}/FunctionCalls/StaticsTest/StaticsTestVME.tst (64%) create mode 100644 8/FunctionCalls/StaticsTest/Sys.vm rename {08 => 8}/ProgramFlow/BasicLoop/BasicLoop.cmp (95%) create mode 100644 8/ProgramFlow/BasicLoop/BasicLoop.tst create mode 100644 8/ProgramFlow/BasicLoop/BasicLoop.vm rename {08 => 8}/ProgramFlow/BasicLoop/BasicLoopVME.tst (54%) rename {08 => 8}/ProgramFlow/FibonacciSeries/FibonacciSeries.cmp (98%) create mode 100644 8/ProgramFlow/FibonacciSeries/FibonacciSeries.tst create mode 100644 8/ProgramFlow/FibonacciSeries/FibonacciSeries.vm rename {08 => 8}/ProgramFlow/FibonacciSeries/FibonacciSeriesVME.tst (51%) rename {09 => 9}/Average/Main.jack (93%) create mode 100644 9/ComplexArrays/Main.jack create mode 100644 9/ConvertToBin/Main.jack rename {09 => 9}/Fraction/Fraction.jack (93%) rename {09 => 9}/Fraction/Main.jack (82%) rename {09 => 9}/HelloWorld/Main.jack (88%) rename {09 => 9}/List/List.jack (62%) rename {09 => 9}/List/Main.jack (81%) create mode 100644 9/Pong/Ball.jack create mode 100644 9/Pong/Bat.jack create mode 100644 9/Pong/Main.jack create mode 100644 9/Pong/PongGame.jack rename {09 => 9}/Square/Main.jack (71%) rename {09 => 9}/Square/Square.jack (66%) rename {09 => 9}/Square/SquareGame.jack (87%) create mode 100644 projects.zip 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.

-

- - - - - - - - - - - - - - -
BitmapGenerated Jack Code
-
- - - - - - - -
Function Type:
- -
Function Name:
-
-
- - - - -
- - - - \ 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 e653e8609ec1daace1dfde510364cb49669efb9e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 108857 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 z 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%0AAFfX8jJ^phAKRdKso0g+Yq)dQ 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 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 944983aaf1c0559b1b10f02987fe7574dc0a5bdd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12048 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 F`X7nb_ul{j diff --git a/12/KeyboardTest/KeyboardTestOutput.png b/12/KeyboardTest/KeyboardTestOutput.png new file mode 100644 index 0000000000000000000000000000000000000000..ad7f7985d05c739d382a3a2807e8185170da9d79 GIT binary patch literal 14085 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 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
0256SP
1-1LCL
2-2ARG
3-3THIS
4-4THAT
Stack
256???←SP

- This is how my boot­strap code initial­izes the pointers before calling Sys.init(). -

- Setting the LCL, ARG, THIS and THAT point­ers to known illegal values helps identify - when a pointer is used before it is initial­ized. -

- (If you are running the NestedCall test with­out boot­strap code, you will not see this state.)

-
- - - - - - - - - - - - - - - - -
Entry to Sys.init()
Pointers
0261SP
1261LCL
2256ARG
3-3THIS
4-4THAT
Stack
256*Return IP←ARG
257-1Saved LCL
258-2Saved ARGSys.init
259-3Saved THIS frame
260-4Saved THAT
261???←LCL, SP

- This is how NestedCall.tst initial­izes the pointers and stack. This is what RAM looks - like after my boot­strap calls Sys.init(). -

- (If your VM trans­lation includes the boot­strap, the -1 through -4 values may be - different if your boot­strap initial­izes them.)

-
- - - - - - - - - - - - - - - - - - - - -
Entry to Sys.main()
Pointers
0266SP
1266LCL
2261ARG
34000THIS
45000THAT
Stack
256*Return IP
257-1Saved LCL
258-2Saved ARGSys.init
259-3Saved THIS frame
260-4Saved THAT
261*Return IP←ARG
262261Saved LCL
263256Saved ARGSys.main
2644000Saved THIS frame
2655000Saved THAT
266???←LCL, SP
-
- - - - - - - - - - - - - - - - - - - - - - - - - -
After Sys.main() prologue
Pointers
0271SP
1266LCL
2261ARG
34000THIS
45000THAT
Stack
256*Return IP
257-1Saved LCL
258-2Saved ARGSys.init
259-3Saved THIS frame
260-4Saved THAT
261*Return IP←ARG
262261Saved LCL
263256Saved ARGSys.main
2644000Saved THIS frame
2655000Saved THAT
2660local 0←LCL
2670local 1
2680local 2
2690local 3
2700local 4
271???←SP

- The function prologue is the assembly language code generated for the - "function" VM command. -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Entry to Sys.add12(123)
Pointers
0277SP
1277LCL
2271ARG
34001THIS
45001THAT
Stack
256*Return IP
257-1Saved LCL
258-2Saved ARGSys.init
259-3Saved THIS frame
260-4Saved THAT
261*Return IP
262261Saved LCL
263256Saved ARGSys.main
2644000Saved THIS frame
2655000Saved THAT
2660local 0
267200local 1
26840local 2
2696local 3
2700local 4
271123argument 0←ARG
272*Return IP
273266Saved LCLSys.add12
274261Saved ARG frame
2754001Saved THIS
2765001Saved THAT
277???←LCL, SP
-
- -

- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Before Sys.add12() return
Pointers
0278SP
1277LCL
2271ARG
34002THIS
45002THAT
Stack
256*Return IP
257-1Saved LCL
258-2Saved ARGSys.init
259-3Saved THIS frame
260-4Saved THAT
261*Return IP
262261Saved LCL
263256Saved ARGSys.main
2644000Saved THIS frame
2655000Saved THAT
2660local 0
267200local 1
26840local 2
2696local 3
2700local 4
271123argument 0←ARG
272*Return IP
273266Saved LCLSys.add12
274261Saved ARG frame
2754001Saved THIS
2765001Saved THAT
277135Return value←LCL
278???←SP
-
- - - - - - - - - - - - - - - - - - - - - - - - - - -
After Sys.add12() return
Pointers
0272SP
1266LCL
2261ARG
34001THIS
45001THAT
Stack
256*Return IP
257-1Saved LCL
258-2Saved ARGSys.init
259-3Saved THIS frame
260-4Saved THAT
261*Return IP←ARG
262261Saved LCL
263256Saved ARGSys.main
2644000Saved THIS frame
2655000Saved THAT
2660local 0←LCL
267200local 1
26840local 2
2696local 3
2700local 4
271135Return value
272???←SP
-
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Before Sys.main() return
Pointers
0272SP
1266LCL
2261ARG
34001THIS
45001THAT
Stack
256*Return IP
257-1Saved LCL
258-2Saved ARGSys.init
259-3Saved THIS frame
260-4Saved THAT
261*Return IP←ARG
262261Saved LCL
263256Saved ARGSys.main
2644000Saved THIS frame
2655000Saved THAT
2660local 0←LCL
267200local 1
26840local 2
2696local 3
2700local 4
271246Return value
272???←SP
-
- - - - - - - - - - - - - - - - -
After Sys.main() return
Pointers
0262SP
1261LCL
2256ARG
34000THIS
45000THAT
Stack
256*Return IP←ARG
257-1Saved LCL
258-2Saved ARGSys.init
259-3Saved THIS frame
260-4Saved THAT
261246Return value←LCL
262???←SP
-
- - - - - - - - - - - - - - - -
In Sys.init() halt loop
Pointers
0261SP
1261LCL
2256ARG
34000THIS
45000THAT
Stack
256*Return IP←ARG
257-1Saved LCL
258-2Saved ARGSys.init
259-3Saved THIS frame
260-4Saved THAT
261???←LCL, SP
-
- - + + + + + NestedCall.tst — Stack Frames + + + + + + + +
+ + + + + + + + + + + +
Bootstrap init
Pointers
0256SP
1-1LCL
2-2ARG
3-3THIS
4-4THAT
Stack
256???←SP

+ This is how my boot­strap code initial­izes the pointers before calling Sys.init(). +

+ Setting the LCL, ARG, THIS and THAT point­ers to known illegal values helps identify + when a pointer is used before it is initial­ized. +

+ (If you are running the NestedCall test with­out boot­strap code, you will not see this state.)

+
+ + + + + + + + + + + + + + + + +
Entry to Sys.init()
Pointers
0261SP
1261LCL
2256ARG
3-3THIS
4-4THAT
Stack
256*Return IP←ARG
257-1Saved LCL
258-2Saved ARGSys.init
259-3Saved THIS frame
260-4Saved THAT
261???←LCL, SP

+ This is how NestedCall.tst initial­izes the pointers and stack. This is what RAM looks + like after my boot­strap calls Sys.init(). +

+ (If your VM trans­lation includes the boot­strap, the -1 through -4 values may be + different if your boot­strap initial­izes them.)

+
+ + + + + + + + + + + + + + + + + + + + +
Entry to Sys.main()
Pointers
0266SP
1266LCL
2261ARG
34000THIS
45000THAT
Stack
256*Return IP
257-1Saved LCL
258-2Saved ARGSys.init
259-3Saved THIS frame
260-4Saved THAT
261*Return IP←ARG
262261Saved LCL
263256Saved ARGSys.main
2644000Saved THIS frame
2655000Saved THAT
266???←LCL, SP
+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
After Sys.main() prologue
Pointers
0271SP
1266LCL
2261ARG
34000THIS
45000THAT
Stack
256*Return IP
257-1Saved LCL
258-2Saved ARGSys.init
259-3Saved THIS frame
260-4Saved THAT
261*Return IP←ARG
262261Saved LCL
263256Saved ARGSys.main
2644000Saved THIS frame
2655000Saved THAT
2660local 0←LCL
2670local 1
2680local 2
2690local 3
2700local 4
271???←SP

+ The function prologue is the assembly language code generated for the + "function" VM command. +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Entry to Sys.add12(123)
Pointers
0277SP
1277LCL
2271ARG
34001THIS
45001THAT
Stack
256*Return IP
257-1Saved LCL
258-2Saved ARGSys.init
259-3Saved THIS frame
260-4Saved THAT
261*Return IP
262261Saved LCL
263256Saved ARGSys.main
2644000Saved THIS frame
2655000Saved THAT
2660local 0
267200local 1
26840local 2
2696local 3
2700local 4
271123argument 0←ARG
272*Return IP
273266Saved LCLSys.add12
274261Saved ARG frame
2754001Saved THIS
2765001Saved THAT
277???←LCL, SP
+
+ +

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Before Sys.add12() return
Pointers
0278SP
1277LCL
2271ARG
34002THIS
45002THAT
Stack
256*Return IP
257-1Saved LCL
258-2Saved ARGSys.init
259-3Saved THIS frame
260-4Saved THAT
261*Return IP
262261Saved LCL
263256Saved ARGSys.main
2644000Saved THIS frame
2655000Saved THAT
2660local 0
267200local 1
26840local 2
2696local 3
2700local 4
271123argument 0←ARG
272*Return IP
273266Saved LCLSys.add12
274261Saved ARG frame
2754001Saved THIS
2765001Saved THAT
277135Return value←LCL
278???←SP
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
After Sys.add12() return
Pointers
0272SP
1266LCL
2261ARG
34001THIS
45001THAT
Stack
256*Return IP
257-1Saved LCL
258-2Saved ARGSys.init
259-3Saved THIS frame
260-4Saved THAT
261*Return IP←ARG
262261Saved LCL
263256Saved ARGSys.main
2644000Saved THIS frame
2655000Saved THAT
2660local 0←LCL
267200local 1
26840local 2
2696local 3
2700local 4
271135Return value
272???←SP
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Before Sys.main() return
Pointers
0272SP
1266LCL
2261ARG
34001THIS
45001THAT
Stack
256*Return IP
257-1Saved LCL
258-2Saved ARGSys.init
259-3Saved THIS frame
260-4Saved THAT
261*Return IP←ARG
262261Saved LCL
263256Saved ARGSys.main
2644000Saved THIS frame
2655000Saved THAT
2660local 0←LCL
267200local 1
26840local 2
2696local 3
2700local 4
271246Return value
272???←SP
+
+ + + + + + + + + + + + + + + + +
After Sys.main() return
Pointers
0262SP
1261LCL
2256ARG
34000THIS
45000THAT
Stack
256*Return IP←ARG
257-1Saved LCL
258-2Saved ARGSys.init
259-3Saved THIS frame
260-4Saved THAT
261246Return value←LCL
262???←SP
+
+ + + + + + + + + + + + + + + +
In Sys.init() halt loop
Pointers
0261SP
1261LCL
2256ARG
34000THIS
45000THAT
Stack
256*Return IP←ARG
257-1Saved LCL
258-2Saved ARGSys.init
259-3Saved THIS frame
260-4Saved 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 0000000000000000000000000000000000000000..161473043c7832d179b01be8dacdac76072ebf16 GIT binary patch literal 218157 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%0AD_38d4a>1c003S7QZt?mUz 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�NThg48l8gJBFxIERYqj6TB)AS(CUL}U4 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

88No4(1qE#LcFmxeDi5 z=p>)9l6E5ZLq__GO`3|f_#;XHaM7mLMPNG3FE|B9!QY9Z;KYx+OnBX#8aQRIV;O|# z^_3DRI2?RU+u`3X?6I`DcSYeKn5_Y3qu;ypp@NM1dbb1aerPu+v*q>qTfsna6ygd? zQp6cy1V5@mT5>`5@d-B}j5sx6h;eilu-$o${q_JZBg{5bb#`eK+bqD(9p2F=xzv*y zIAzr_aH8s6@SY{P;Y62CTX>T!`0&!G@v07pc(@Xx!LHJYs>rUP3O>O@O0Y#%xDF5k zDj9xy3qcS`9@b56IHw@|L!=6krA`G6$rEaA$7j(876&dK323PtZ~j0B^aFmsiHcfe z1Hy9bHEL9p9fM^lqGJ*i{)0-x-F|wXUsr%3&508^paerIf(O0c`8+Ki;^+vJqLXBO1) zXa_*P@^mQCoDhajs0xG}hhD7bff$?#VTmeR4+sCa!7}baGG(!nG!>uK3Rp7&JqI3v zFKvMtJ%zQ_rpo$P&VZ1B@pa}gH5$s{iRO)cIw%csotbvtsDy+)62oBn6YOt=2tgM)gerb=I{FH>h3bG*4fQv0D&nrqCvhYNq5s6&%&f@V_-{AHA751WnR+S4`H- z$eAk3#AyD1YIg3xB*O7c%d|Cn3Ywi@6n1QfIFpC8fNC~E9URqc?SE^=v00&xpQ7|s7pGi(n@Tsn@!&xDZ28DS4OZN)mE7BOy+=7Y})&=9IXG`sXr zgT^>Wt9c)_s)V>aut5^*m2s&cq|E_H0BFy@{BbHHK;5E4ErSs`Ucpc<{uJJC4@2Ra zGL)nfR5^%pkyg4EYC|DT`U|)h9L6WfX#SoMEW^Lx_yVtETI*FWO`#;^l`3{gp z;CFRU+i6cB=&Je~#T^JA^CLyg0etk=fL>6jDNJa!-U2lsddedU@BNeF9%^v?jU-JH z@Nqi<_ssz|8#ueBxdSg8p}6dsQ*bdg((rLNhlyGY%l0gQI|G_(c(5H0(7*z;I2*y$ z^>QS8uf2QtG~O;y9*}P>O_qdDNmKa7#t9S|;)4u12OpUZkPn^TC946*&G4WeREJmH z$u!mq^za}?A6E2g;iLC~(ri8HV}!DOFFYvvOKRv?Y@f&1`!k@=d(Ru$26hvAKv8tj z3sh{!ym<{DJ;qtbV!<;V_4Jf+IWdwa4-*s@ z1_m_3Pvjuz#0bZH`50gAIzTR#{ieMDP;0=KC~_tIa12=-5+fY*V-P;_BS3D+(e$ zHTr*?jJ{=BqN{TIm_{7fdJ7(O1@51O=;`g}3_oP!#U0?y?dnbXb(^f(JDYLp;oG=N zV-p-BlYF>_czCXazceO*z?PTZ6cWA;r3PgK_9FqHH6+w!HxNL=uaN}8HShQ*H8Gt# z@$V510YUiukQsyqxn4L);)MA^_=iZ4T|kilqK~wKJ;ldgqhVvY^YJy?9>6~ZdsK7) zziy)V#v8?*Ltq46_8z2UqA9ro@7`V)y0PMuj@}dmqdnk3@0{d|5dwnYZrD%tiBM~_ zBGwJJ2sbPR`+8fUjCO^;!fH;UGC3$PaaT(cMU>iS8Hv#RAd1UsJ2S#JBHm58ylE;$ zY*sg(NUQ?*T3iQ{EC0lOgi4R*Ekp}yveW|v_piy=OkaU-@&SNOpmp=Q3&URtW@Ec! zq8gml2s9Rmq;jMZKS(6tM{)}|4b)ZuS`3^AqCqJ9h$1-QJE>UGu6D-l<1&C4vCLZF zPI!ZW8#vGyNrPi^vS~@cCB=voevBLeRpMW1n~Q_swjelaI6tIuGGI&<0s%HVTk(Z4 z2E(mHjkZ{U;bmYrx+a{fMexU`J;`!8e9JSya*IW$4H?0gy;CYn!#V_+5Q12o{K2R$nv(Ga3-wzafZu(WyBTuLPX>oATtTO7A%WO)wb~neYqq6q7b_ zHctJWaB|$b7n5-(QWQo&_|