function Tetris.tetris 25 call Piece.init 0 pop temp 0 call Tetris.border 0 pop temp 0 push constant 0 pop static 0 push constant 25 call Array.new 1 pop local 23 push constant 0 push local 23 add push constant 16 push constant 0 push constant 31 push constant 15 push constant 0 push constant 16 push constant 47 push constant 31 push constant 0 call Tetris.newPiece 9 pop temp 0 pop pointer 1 push temp 0 pop that 0 push constant 1 push local 23 add push constant 0 push constant 0 push constant 15 push constant 15 push constant 0 push constant 16 push constant 47 push constant 31 push constant 1 call Tetris.newPiece 9 pop temp 0 pop pointer 1 push temp 0 pop that 0 push constant 2 push local 23 add push constant 32 push constant 16 push constant 47 push constant 31 push constant 0 push constant 32 push constant 47 push constant 47 push constant 2 call Tetris.newPiece 9 pop temp 0 pop pointer 1 push temp 0 pop that 0 push constant 3 push local 23 add push constant 0 push constant 0 push constant 31 push constant 15 push constant 16 push constant 16 push constant 47 push constant 31 push constant 3 call Tetris.newPiece 9 pop temp 0 pop pointer 1 push temp 0 pop that 0 push constant 4 push local 23 add push constant 16 push constant 0 push constant 47 push constant 15 push constant 0 push constant 16 push constant 31 push constant 31 push constant 4 call Tetris.newPiece 9 pop temp 0 pop pointer 1 push temp 0 pop that 0 push constant 5 push local 23 add push constant 0 push constant 0 push constant 31 push constant 15 push constant 32 push constant 0 push constant 63 push constant 15 push constant 5 call Tetris.newPiece 9 pop temp 0 pop pointer 1 push temp 0 pop that 0 push constant 6 push local 23 add push constant 0 push constant 0 push constant 15 push constant 31 push constant 16 push constant 0 push constant 31 push constant 31 push constant 6 call Tetris.newPiece 9 pop temp 0 pop pointer 1 push temp 0 pop that 0 push argument 0 push constant 3 call Math.multiply 2 pop static 1 call Tetris.randomNumber 0 pop static 2 push constant 0 push constant 0 call Output.moveCursor 2 pop temp 0 push constant 7 call String.new 1 push constant 80 call String.appendChar 2 push constant 111 call String.appendChar 2 push constant 105 call String.appendChar 2 push constant 110 call String.appendChar 2 push constant 116 call String.appendChar 2 push constant 58 call String.appendChar 2 push constant 32 call String.appendChar 2 call Output.printString 1 pop temp 0 push static 0 call Output.printInt 1 pop temp 0 call Output.println 0 pop temp 0 push constant 12 call String.new 1 push constant 78 call String.appendChar 2 push constant 101 call String.appendChar 2 push constant 120 call String.appendChar 2 push constant 116 call String.appendChar 2 push constant 32 call String.appendChar 2 push constant 80 call String.appendChar 2 push constant 105 call String.appendChar 2 push constant 101 call String.appendChar 2 push constant 99 call String.appendChar 2 push constant 101 call String.appendChar 2 push constant 58 call String.appendChar 2 push constant 32 call String.appendChar 2 call Output.printString 1 pop temp 0 label WHILE_EXP0 push constant 0 not not if-goto WHILE_END0 push static 2 pop local 12 call Tetris.randomNumber 0 pop static 2 push local 12 push local 23 add pop pointer 1 push that 0 pop local 24 push constant 0 push local 24 add pop pointer 1 push that 0 pop local 3 push constant 1 push local 24 add pop pointer 1 push that 0 pop local 4 push constant 2 push local 24 add pop pointer 1 push that 0 pop local 5 push constant 3 push local 24 add pop pointer 1 push that 0 pop local 6 push constant 4 push local 24 add pop pointer 1 push that 0 pop local 7 push constant 5 push local 24 add pop pointer 1 push that 0 pop local 8 push constant 6 push local 24 add pop pointer 1 push that 0 pop local 9 push constant 7 push local 24 add pop pointer 1 push that 0 pop local 10 push constant 8 push local 24 add pop pointer 1 push that 0 pop local 14 push local 3 push constant 240 add push local 4 push local 5 push constant 240 add push local 6 push local 7 push constant 240 add push local 8 push local 9 push constant 240 add push local 10 push local 14 call Piece.new 9 pop local 0 push local 0 call Piece.draw 1 not if-goto IF_TRUE0 goto IF_FALSE0 label IF_TRUE0 call Tetris.finish 0 not if-goto IF_TRUE1 goto IF_FALSE1 label IF_TRUE1 push constant 0 return label IF_FALSE1 label IF_FALSE0 push static 2 push local 23 add pop pointer 1 push that 0 pop local 24 push constant 0 push local 24 add pop pointer 1 push that 0 pop local 3 push constant 1 push local 24 add pop pointer 1 push that 0 pop local 4 push constant 2 push local 24 add pop pointer 1 push that 0 pop local 5 push constant 3 push local 24 add pop pointer 1 push that 0 pop local 6 push constant 4 push local 24 add pop pointer 1 push that 0 pop local 7 push constant 5 push local 24 add pop pointer 1 push that 0 pop local 8 push constant 6 push local 24 add pop pointer 1 push that 0 pop local 9 push constant 7 push local 24 add pop pointer 1 push that 0 pop local 10 push constant 8 push local 24 add pop pointer 1 push that 0 pop local 14 push local 3 push constant 16 add push local 4 push constant 32 add push local 5 push constant 16 add push local 6 push constant 32 add push local 7 push constant 16 add push local 8 push constant 32 add push local 9 push constant 16 add push local 10 push constant 32 add push local 14 call Piece.new 9 pop local 1 push local 1 call Piece.draw 1 pop temp 0 label WHILE_EXP1 push local 0 call Piece.getMove 1 not if-goto WHILE_END1 push constant 0 pop local 15 label WHILE_EXP2 push local 15 push constant 3 lt not if-goto WHILE_END2 call Keyboard.keyPressed 0 pop local 11 push local 11 push constant 130 eq if-goto IF_TRUE2 goto IF_FALSE2 label IF_TRUE2 push local 0 call Piece.moveLeft 1 pop temp 0 push constant 80 call Sys.wait 1 pop temp 0 label IF_FALSE2 push local 11 push constant 132 eq if-goto IF_TRUE3 goto IF_FALSE3 label IF_TRUE3 push local 0 call Piece.moveRight 1 pop temp 0 push constant 80 call Sys.wait 1 pop temp 0 label IF_FALSE3 push local 11 push constant 131 eq if-goto IF_TRUE4 goto IF_FALSE4 label IF_TRUE4 push local 0 call Piece.rotate 1 pop temp 0 label IF_FALSE4 push local 11 push constant 133 eq if-goto IF_TRUE5 goto IF_FALSE5 label IF_TRUE5 push local 0 call Piece.moveDown 1 pop temp 0 push local 0 call Piece.moveDown 1 pop temp 0 label IF_FALSE5 push local 15 push constant 1 add pop local 15 goto WHILE_EXP2 label WHILE_END2 push local 0 call Piece.moveDown 1 pop temp 0 push local 2 push constant 1 add pop local 2 push constant 80 call Sys.wait 1 pop temp 0 goto WHILE_EXP1 label WHILE_END1 push constant 0 pop local 2 push local 0 call Piece.dispose 1 pop temp 0 call Tetris.completeRow 0 pop temp 0 push constant 0 push constant 7 call Output.moveCursor 2 pop temp 0 push static 0 call Output.printInt 1 pop temp 0 push constant 0 call Screen.setColor 1 pop temp 0 push constant 16 push constant 32 push constant 80 push constant 96 call Screen.drawRectangle 4 pop temp 0 push constant 0 not call Screen.setColor 1 pop temp 0 push local 1 call Piece.dispose 1 pop temp 0 goto WHILE_EXP0 label WHILE_END0 push constant 0 return function Tetris.completeRow 4 push constant 16384 push constant 11 add pop local 0 push constant 15 pop local 1 label WHILE_EXP0 push local 1 push constant 0 gt not if-goto WHILE_END0 push constant 0 not pop local 3 push constant 0 pop local 2 label WHILE_EXP1 push local 2 push constant 10 lt push local 3 and not if-goto WHILE_END1 push local 0 push local 2 add push local 1 push constant 512 call Math.multiply 2 add call Memory.peek 1 push local 3 and pop local 3 push local 2 push constant 1 add pop local 2 goto WHILE_EXP1 label WHILE_END1 push local 3 if-goto IF_TRUE0 goto IF_FALSE0 label IF_TRUE0 push constant 0 call Screen.setColor 1 pop temp 0 push constant 176 push local 1 push constant 16 call Math.multiply 2 push constant 335 push local 1 push constant 16 call Math.multiply 2 push constant 15 add call Screen.drawRectangle 4 pop temp 0 push static 0 push constant 1 add pop static 0 push local 1 call Tetris.shift 1 pop temp 0 label IF_FALSE0 push local 1 push constant 1 sub pop local 1 goto WHILE_EXP0 label WHILE_END0 push constant 0 return function Tetris.shift 5 push constant 16384 push constant 11 add pop local 2 label WHILE_EXP0 push argument 0 push constant 1 gt not if-goto WHILE_END0 push constant 0 pop local 0 label WHILE_EXP1 push local 0 push constant 10 lt not if-goto WHILE_END1 push constant 0 pop local 4 label WHILE_EXP2 push local 4 push constant 16 lt not if-goto WHILE_END2 push local 2 push local 0 add push argument 0 push constant 1 sub push constant 512 call Math.multiply 2 push local 4 push constant 32 call Math.multiply 2 add add pop local 3 push local 3 call Memory.peek 1 pop local 1 push local 2 push local 0 add push argument 0 push constant 512 call Math.multiply 2 push local 4 push constant 32 call Math.multiply 2 add add push local 1 call Memory.poke 2 pop temp 0 push local 3 push constant 0 call Memory.poke 2 pop temp 0 push local 4 push constant 1 add pop local 4 goto WHILE_EXP2 label WHILE_END2 push local 0 push constant 1 add pop local 0 goto WHILE_EXP1 label WHILE_END1 push argument 0 push constant 1 sub pop argument 0 goto WHILE_EXP0 label WHILE_END0 push constant 0 return function Tetris.border 0 push constant 175 push constant 0 push constant 175 push constant 255 call Screen.drawLine 4 pop temp 0 push constant 336 push constant 0 push constant 336 push constant 255 call Screen.drawLine 4 pop temp 0 push constant 0 return function Tetris.newPiece 1 push constant 9 call Array.new 1 pop local 0 push constant 0 push local 0 add push argument 0 pop temp 0 pop pointer 1 push temp 0 pop that 0 push constant 1 push local 0 add push argument 1 pop temp 0 pop pointer 1 push temp 0 pop that 0 push constant 2 push local 0 add push argument 2 pop temp 0 pop pointer 1 push temp 0 pop that 0 push constant 3 push local 0 add push argument 3 pop temp 0 pop pointer 1 push temp 0 pop that 0 push constant 4 push local 0 add push argument 4 pop temp 0 pop pointer 1 push temp 0 pop that 0 push constant 5 push local 0 add push argument 5 pop temp 0 pop pointer 1 push temp 0 pop that 0 push constant 6 push local 0 add push argument 6 pop temp 0 pop pointer 1 push temp 0 pop that 0 push constant 7 push local 0 add push argument 7 pop temp 0 pop pointer 1 push temp 0 pop that 0 push constant 8 push local 0 add push argument 8 pop temp 0 pop pointer 1 push temp 0 pop that 0 push local 0 return function Tetris.randomNumber 4 push constant 7 pop local 0 push constant 13 pop local 1 push constant 1133 pop local 2 push local 0 push static 1 call Math.multiply 2 push local 1 add pop local 3 push local 3 push local 2 call Tetris.mod 2 pop static 1 push static 1 push constant 7 call Tetris.mod 2 return function Tetris.finish 1 call Screen.clearScreen 0 pop temp 0 push constant 10 push constant 24 call Output.moveCursor 2 pop temp 0 push constant 12 call String.new 1 push constant 89 call String.appendChar 2 push constant 111 call String.appendChar 2 push constant 117 call String.appendChar 2 push constant 114 call String.appendChar 2 push constant 32 call String.appendChar 2 push constant 115 call String.appendChar 2 push constant 99 call String.appendChar 2 push constant 111 call String.appendChar 2 push constant 114 call String.appendChar 2 push constant 101 call String.appendChar 2 push constant 58 call String.appendChar 2 push constant 32 call String.appendChar 2 call Output.printString 1 pop temp 0 push static 0 call Output.printInt 1 pop temp 0 push constant 10000 call Sys.wait 1 pop temp 0 call Screen.clearScreen 0 pop temp 0 push constant 10 push constant 0 call Output.moveCursor 2 pop temp 0 push constant 63 call String.new 1 push constant 87 call String.appendChar 2 push constant 111 call String.appendChar 2 push constant 117 call String.appendChar 2 push constant 108 call String.appendChar 2 push constant 100 call String.appendChar 2 push constant 32 call String.appendChar 2 push constant 121 call String.appendChar 2 push constant 111 call String.appendChar 2 push constant 117 call String.appendChar 2 push constant 32 call String.appendChar 2 push constant 108 call String.appendChar 2 push constant 105 call String.appendChar 2 push constant 107 call String.appendChar 2 push constant 101 call String.appendChar 2 push constant 32 call String.appendChar 2 push constant 116 call String.appendChar 2 push constant 111 call String.appendChar 2 push constant 32 call String.appendChar 2 push constant 112 call String.appendChar 2 push constant 108 call String.appendChar 2 push constant 97 call String.appendChar 2 push constant 121 call String.appendChar 2 push constant 32 call String.appendChar 2 push constant 97 call String.appendChar 2 push constant 103 call String.appendChar 2 push constant 97 call String.appendChar 2 push constant 105 call String.appendChar 2 push constant 110 call String.appendChar 2 push constant 44 call String.appendChar 2 push constant 32 call String.appendChar 2 push constant 102 call String.appendChar 2 push constant 111 call String.appendChar 2 push constant 114 call String.appendChar 2 push constant 32 call String.appendChar 2 push constant 121 call String.appendChar 2 push constant 101 call String.appendChar 2 push constant 115 call String.appendChar 2 push constant 32 call String.appendChar 2 push constant 99 call String.appendChar 2 push constant 108 call String.appendChar 2 push constant 105 call String.appendChar 2 push constant 99 call String.appendChar 2 push constant 107 call String.appendChar 2 push constant 32 call String.appendChar 2 push constant 39 call String.appendChar 2 push constant 89 call String.appendChar 2 push constant 39 call String.appendChar 2 push constant 32 call String.appendChar 2 push constant 97 call String.appendChar 2 push constant 110 call String.appendChar 2 push constant 100 call String.appendChar 2 push constant 32 call String.appendChar 2 push constant 102 call String.appendChar 2 push constant 111 call String.appendChar 2 push constant 114 call String.appendChar 2 push constant 32 call String.appendChar 2 push constant 110 call String.appendChar 2 push constant 111 call String.appendChar 2 push constant 32 call String.appendChar 2 push constant 39 call String.appendChar 2 push constant 78 call String.appendChar 2 push constant 39 call String.appendChar 2 push constant 58 call String.appendChar 2 call Output.printString 1 pop temp 0 call Keyboard.readChar 0 pop local 0 push local 0 push constant 89 eq if-goto IF_TRUE0 goto IF_FALSE0 label IF_TRUE0 call Screen.clearScreen 0 pop temp 0 push constant 0 return label IF_FALSE0 push local 0 push constant 78 eq if-goto IF_TRUE1 goto IF_FALSE1 label IF_TRUE1 call Screen.clearScreen 0 pop temp 0 call Sys.halt 0 pop temp 0 label IF_FALSE1 push constant 0 not return function Tetris.mod 2 push argument 0 push argument 1 lt if-goto IF_TRUE0 goto IF_FALSE0 label IF_TRUE0 push argument 0 return label IF_FALSE0 push argument 0 push argument 1 call Math.divide 2 push argument 1 call Math.multiply 2 pop local 1 push argument 0 push local 1 sub pop local 0 push local 0 return