function Board.new 1 push constant 4 call Memory.alloc 1 pop pointer 0 push constant 4 call Array.new 1 pop this 0 push constant 0 pop local 0 label WHILE_EXP0 push local 0 push constant 4 lt not if-goto WHILE_END0 push local 0 push this 0 add push constant 4 call Array.new 1 pop temp 0 pop pointer 1 push temp 0 pop that 0 push local 0 push constant 1 add pop local 0 goto WHILE_EXP0 label WHILE_END0 push pointer 0 call Board.initBoard 1 pop temp 0 push constant 0 pop this 2 push pointer 0 return function Board.init 0 push constant 6 call String.new 1 push constant 43 call String.appendChar 2 push constant 45 call String.appendChar 2 push constant 45 call String.appendChar 2 push constant 45 call String.appendChar 2 push constant 45 call String.appendChar 2 push constant 43 call String.appendChar 2 pop static 0 push constant 9 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 32 call String.appendChar 2 push constant 108 call String.appendChar 2 push constant 111 call String.appendChar 2 push constant 115 call String.appendChar 2 push constant 116 call String.appendChar 2 push constant 33 call String.appendChar 2 pop static 1 push constant 8 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 32 call String.appendChar 2 push constant 119 call String.appendChar 2 push constant 111 call String.appendChar 2 push constant 110 call String.appendChar 2 push constant 33 call String.appendChar 2 pop static 4 push constant 25 call String.new 1 push constant 80 call String.appendChar 2 push constant 114 call String.appendChar 2 push constant 101 call String.appendChar 2 push constant 115 call String.appendChar 2 push constant 115 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 121 call String.appendChar 2 push constant 32 call String.appendChar 2 push constant 107 call String.appendChar 2 push constant 101 call String.appendChar 2 push constant 121 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 99 call String.appendChar 2 push constant 111 call String.appendChar 2 push constant 110 call String.appendChar 2 push constant 116 call String.appendChar 2 push constant 105 call String.appendChar 2 push constant 110 call String.appendChar 2 push constant 117 call String.appendChar 2 push constant 101 call String.appendChar 2 pop static 2 push constant 10 call String.new 1 push constant 71 call String.appendChar 2 push constant 97 call String.appendChar 2 push constant 109 call String.appendChar 2 push constant 101 call String.appendChar 2 push constant 32 call String.appendChar 2 push constant 111 call String.appendChar 2 push constant 118 call String.appendChar 2 push constant 101 call String.appendChar 2 push constant 114 call String.appendChar 2 push constant 33 call String.appendChar 2 pop static 3 push constant 6 call String.new 1 push constant 84 call String.appendChar 2 push constant 117 call String.appendChar 2 push constant 114 call String.appendChar 2 push constant 110 call String.appendChar 2 push constant 58 call String.appendChar 2 push constant 32 call String.appendChar 2 pop static 5 push constant 0 return function Board.initBoard 3 push argument 0 pop pointer 0 push constant 0 pop local 0 label WHILE_EXP0 push local 0 push constant 4 lt not if-goto WHILE_END0 push constant 0 pop local 1 push local 0 push this 0 add pop pointer 1 push that 0 pop local 2 label WHILE_EXP1 push local 1 push constant 4 lt not if-goto WHILE_END1 push local 1 push local 2 add push constant 32 pop temp 0 pop pointer 1 push temp 0 pop that 0 push local 1 push constant 1 add pop local 1 goto WHILE_EXP1 label WHILE_END1 push local 0 push constant 1 add pop local 0 goto WHILE_EXP0 label WHILE_END0 push constant 0 push this 0 add pop pointer 1 push that 0 pop local 2 push constant 0 push local 2 add push constant 65 pop temp 0 pop pointer 1 push temp 0 pop that 0 push constant 0 pop this 1 push constant 0 pop this 3 push constant 0 return function Board.transpose 0 push argument 0 pop pointer 0 push pointer 0 push constant 0 push constant 1 call Board.exch 3 pop temp 0 push pointer 0 push constant 0 push constant 2 call Board.exch 3 pop temp 0 push pointer 0 push constant 0 push constant 3 call Board.exch 3 pop temp 0 push pointer 0 push constant 1 push constant 2 call Board.exch 3 pop temp 0 push pointer 0 push constant 1 push constant 3 call Board.exch 3 pop temp 0 push pointer 0 push constant 2 push constant 3 call Board.exch 3 pop temp 0 push constant 0 return function Board.exch 3 push argument 0 pop pointer 0 push argument 1 push this 0 add pop pointer 1 push that 0 pop local 1 push argument 2 push this 0 add pop pointer 1 push that 0 pop local 2 push argument 2 push local 1 add pop pointer 1 push that 0 pop local 0 push argument 2 push local 1 add push argument 1 push local 2 add pop pointer 1 push that 0 pop temp 0 pop pointer 1 push temp 0 pop that 0 push argument 1 push local 2 add push local 0 pop temp 0 pop pointer 1 push temp 0 pop that 0 push constant 0 return function Board.align 2 push argument 0 pop pointer 0 push constant 0 pop local 0 push constant 0 pop local 1 push argument 2 if-goto IF_TRUE0 goto IF_FALSE0 label IF_TRUE0 label WHILE_EXP0 push local 0 push constant 4 lt not if-goto WHILE_END0 push local 0 push argument 1 add pop pointer 1 push that 0 push constant 64 gt if-goto IF_TRUE1 goto IF_FALSE1 label IF_TRUE1 push local 1 push argument 1 add push local 0 push argument 1 add pop pointer 1 push that 0 pop temp 0 pop pointer 1 push temp 0 pop that 0 push local 1 push constant 1 add pop local 1 label IF_FALSE1 push local 0 push constant 1 add pop local 0 goto WHILE_EXP0 label WHILE_END0 label WHILE_EXP1 push local 1 push constant 4 lt not if-goto WHILE_END1 push local 1 push argument 1 add push constant 32 pop temp 0 pop pointer 1 push temp 0 pop that 0 push local 1 push constant 1 add pop local 1 goto WHILE_EXP1 label WHILE_END1 goto IF_END0 label IF_FALSE0 label WHILE_EXP2 push local 0 push constant 4 lt not if-goto WHILE_END2 push constant 3 push local 0 sub push argument 1 add pop pointer 1 push that 0 push constant 64 gt if-goto IF_TRUE2 goto IF_FALSE2 label IF_TRUE2 push constant 3 push local 1 sub push argument 1 add push constant 3 push local 0 sub push argument 1 add pop pointer 1 push that 0 pop temp 0 pop pointer 1 push temp 0 pop that 0 push local 1 push constant 1 add pop local 1 label IF_FALSE2 push local 0 push constant 1 add pop local 0 goto WHILE_EXP2 label WHILE_END2 label WHILE_EXP3 push local 1 push constant 4 lt not if-goto WHILE_END3 push constant 3 push local 1 sub push argument 1 add push constant 32 pop temp 0 pop pointer 1 push temp 0 pop that 0 push local 1 push constant 1 add pop local 1 goto WHILE_EXP3 label WHILE_END3 label IF_END0 push constant 0 return function Board.reduce 0 push argument 0 pop pointer 0 push constant 0 push argument 1 add pop pointer 1 push that 0 push constant 1 push argument 1 add pop pointer 1 push that 0 eq push constant 2 push argument 1 add pop pointer 1 push that 0 push constant 3 push argument 1 add pop pointer 1 push that 0 eq and push constant 0 push argument 1 add pop pointer 1 push that 0 push constant 64 gt and push constant 2 push argument 1 add pop pointer 1 push that 0 push constant 64 gt and if-goto IF_TRUE0 goto IF_FALSE0 label IF_TRUE0 push argument 2 if-goto IF_TRUE1 goto IF_FALSE1 label IF_TRUE1 push constant 0 push argument 1 add push constant 0 push argument 1 add pop pointer 1 push that 0 push constant 1 add pop temp 0 pop pointer 1 push temp 0 pop that 0 push constant 1 push argument 1 add push constant 2 push argument 1 add pop pointer 1 push that 0 push constant 1 add pop temp 0 pop pointer 1 push temp 0 pop that 0 push constant 2 push argument 1 add push constant 32 pop temp 0 pop pointer 1 push temp 0 pop that 0 push constant 3 push argument 1 add push constant 32 pop temp 0 pop pointer 1 push temp 0 pop that 0 goto IF_END1 label IF_FALSE1 push constant 3 push argument 1 add push constant 3 push argument 1 add pop pointer 1 push that 0 push constant 1 add pop temp 0 pop pointer 1 push temp 0 pop that 0 push constant 2 push argument 1 add push constant 1 push argument 1 add pop pointer 1 push that 0 push constant 1 add pop temp 0 pop pointer 1 push temp 0 pop that 0 push constant 1 push argument 1 add push constant 32 pop temp 0 pop pointer 1 push temp 0 pop that 0 push constant 0 push argument 1 add push constant 32 pop temp 0 pop pointer 1 push temp 0 pop that 0 label IF_END1 push constant 0 return label IF_FALSE0 push constant 0 push argument 1 add pop pointer 1 push that 0 push constant 1 push argument 1 add pop pointer 1 push that 0 eq push constant 0 push argument 1 add pop pointer 1 push that 0 push constant 64 gt and if-goto IF_TRUE2 goto IF_FALSE2 label IF_TRUE2 push argument 2 if-goto IF_TRUE3 goto IF_FALSE3 label IF_TRUE3 push constant 0 push argument 1 add push constant 0 push argument 1 add pop pointer 1 push that 0 push constant 1 add pop temp 0 pop pointer 1 push temp 0 pop that 0 push constant 1 push argument 1 add push constant 2 push argument 1 add pop pointer 1 push that 0 pop temp 0 pop pointer 1 push temp 0 pop that 0 push constant 2 push argument 1 add push constant 3 push argument 1 add pop pointer 1 push that 0 pop temp 0 pop pointer 1 push temp 0 pop that 0 push constant 3 push argument 1 add push constant 32 pop temp 0 pop pointer 1 push temp 0 pop that 0 goto IF_END3 label IF_FALSE3 push constant 1 push argument 1 add push constant 1 push argument 1 add pop pointer 1 push that 0 push constant 1 add pop temp 0 pop pointer 1 push temp 0 pop that 0 push constant 0 push argument 1 add push constant 32 pop temp 0 pop pointer 1 push temp 0 pop that 0 label IF_END3 push constant 0 return label IF_FALSE2 push constant 2 push argument 1 add pop pointer 1 push that 0 push constant 3 push argument 1 add pop pointer 1 push that 0 eq push constant 2 push argument 1 add pop pointer 1 push that 0 push constant 64 gt and if-goto IF_TRUE4 goto IF_FALSE4 label IF_TRUE4 push argument 2 if-goto IF_TRUE5 goto IF_FALSE5 label IF_TRUE5 push constant 2 push argument 1 add push constant 2 push argument 1 add pop pointer 1 push that 0 push constant 1 add pop temp 0 pop pointer 1 push temp 0 pop that 0 push constant 3 push argument 1 add push constant 32 pop temp 0 pop pointer 1 push temp 0 pop that 0 goto IF_END5 label IF_FALSE5 push constant 3 push argument 1 add push constant 3 push argument 1 add pop pointer 1 push that 0 push constant 1 add pop temp 0 pop pointer 1 push temp 0 pop that 0 push constant 2 push argument 1 add push constant 1 push argument 1 add pop pointer 1 push that 0 pop temp 0 pop pointer 1 push temp 0 pop that 0 push constant 1 push argument 1 add push constant 0 push argument 1 add pop pointer 1 push that 0 pop temp 0 pop pointer 1 push temp 0 pop that 0 push constant 0 push argument 1 add push constant 32 pop temp 0 pop pointer 1 push temp 0 pop that 0 label IF_END5 push constant 0 return label IF_FALSE4 push constant 1 push argument 1 add pop pointer 1 push that 0 push constant 2 push argument 1 add pop pointer 1 push that 0 eq push constant 1 push argument 1 add pop pointer 1 push that 0 push constant 64 gt and if-goto IF_TRUE6 goto IF_FALSE6 label IF_TRUE6 push argument 2 if-goto IF_TRUE7 goto IF_FALSE7 label IF_TRUE7 push constant 1 push argument 1 add push constant 1 push argument 1 add pop pointer 1 push that 0 push constant 1 add pop temp 0 pop pointer 1 push temp 0 pop that 0 push constant 2 push argument 1 add push constant 3 push argument 1 add pop pointer 1 push that 0 pop temp 0 pop pointer 1 push temp 0 pop that 0 push constant 3 push argument 1 add push constant 32 pop temp 0 pop pointer 1 push temp 0 pop that 0 goto IF_END7 label IF_FALSE7 push constant 2 push argument 1 add push constant 2 push argument 1 add pop pointer 1 push that 0 push constant 1 add pop temp 0 pop pointer 1 push temp 0 pop that 0 push constant 1 push argument 1 add push constant 0 push argument 1 add pop pointer 1 push that 0 pop temp 0 pop pointer 1 push temp 0 pop that 0 push constant 0 push argument 1 add push constant 32 pop temp 0 pop pointer 1 push temp 0 pop that 0 label IF_END7 push constant 0 return label IF_FALSE6 push constant 0 return function Board.addTile 5 push argument 0 pop pointer 0 push this 3 push constant 1 eq not if-goto IF_TRUE0 goto IF_FALSE0 label IF_TRUE0 push constant 0 return label IF_FALSE0 push this 2 push constant 25173 call Math.multiply 2 push constant 13849 add pop this 2 push this 2 push constant 0 lt if-goto IF_TRUE1 goto IF_FALSE1 label IF_TRUE1 push this 2 neg pop this 2 label IF_FALSE1 push this 2 push this 2 push constant 2 call Math.divide 2 push constant 2 call Math.multiply 2 sub push constant 0 eq if-goto IF_TRUE2 goto IF_FALSE2 label IF_TRUE2 push constant 1 pop local 3 goto IF_END2 label IF_FALSE2 push constant 1 neg pop local 3 label IF_END2 push this 2 push this 2 push constant 16 call Math.divide 2 push constant 16 call Math.multiply 2 sub pop this 2 push this 2 push constant 4 call Math.divide 2 pop local 1 push this 2 push constant 4 push local 1 call Math.multiply 2 sub pop local 2 push local 1 push this 0 add pop pointer 1 push that 0 pop local 0 push constant 65 pop local 4 label WHILE_EXP0 push local 2 push local 0 add pop pointer 1 push that 0 push constant 64 gt not if-goto WHILE_END0 push this 2 push local 3 add pop this 2 push this 2 push constant 0 lt if-goto IF_TRUE3 goto IF_FALSE3 label IF_TRUE3 push constant 15 pop this 2 label IF_FALSE3 push this 2 push this 2 push constant 16 call Math.divide 2 push constant 16 call Math.multiply 2 sub pop this 2 push this 2 push constant 4 call Math.divide 2 pop local 1 push this 2 push constant 4 push local 1 call Math.multiply 2 sub pop local 2 push local 1 push this 0 add pop pointer 1 push that 0 pop local 0 push constant 131 push local 4 sub pop local 4 goto WHILE_EXP0 label WHILE_END0 push local 2 push local 0 add push local 4 pop temp 0 pop pointer 1 push temp 0 pop that 0 push constant 0 return function Board.transform 3 push argument 0 pop pointer 0 push argument 1 push constant 0 eq push argument 1 push constant 1 eq or if-goto IF_TRUE0 goto IF_FALSE0 label IF_TRUE0 push constant 0 not pop local 1 goto IF_END0 label IF_FALSE0 push constant 0 pop local 1 label IF_END0 push argument 1 push constant 0 eq push argument 1 push constant 2 eq or if-goto IF_TRUE1 goto IF_FALSE1 label IF_TRUE1 push constant 0 pop local 0 goto IF_END1 label IF_FALSE1 push constant 0 not pop local 0 label IF_END1 push local 0 if-goto IF_TRUE2 goto IF_FALSE2 label IF_TRUE2 push pointer 0 call Board.transpose 1 pop temp 0 label IF_FALSE2 push constant 0 pop local 2 label WHILE_EXP0 push local 2 push constant 4 lt not if-goto WHILE_END0 push pointer 0 push local 2 push this 0 add pop pointer 1 push that 0 push local 1 call Board.align 3 pop temp 0 push pointer 0 push local 2 push this 0 add pop pointer 1 push that 0 push local 1 call Board.reduce 3 pop temp 0 push local 2 push constant 1 add pop local 2 goto WHILE_EXP0 label WHILE_END0 push local 0 if-goto IF_TRUE3 goto IF_FALSE3 label IF_TRUE3 push pointer 0 call Board.transpose 1 pop temp 0 label IF_FALSE3 push constant 0 return function Board.next 0 push argument 0 pop pointer 0 push this 1 push constant 1 add pop this 1 push pointer 0 push argument 1 call Board.transform 2 pop temp 0 push pointer 0 call Board.updateStatus 1 pop temp 0 push constant 0 return function Board.getStatus 0 push argument 0 pop pointer 0 push this 3 return function Board.setStatus 0 push argument 0 pop pointer 0 push argument 1 pop this 3 push constant 0 return function Board.updateStatus 3 push argument 0 pop pointer 0 push constant 0 pop local 0 label WHILE_EXP0 push local 0 push constant 4 lt not if-goto WHILE_END0 push local 0 push this 0 add pop pointer 1 push that 0 pop local 2 push constant 0 pop local 1 label WHILE_EXP1 push local 1 push constant 4 lt not if-goto WHILE_END1 push local 1 push local 2 add pop pointer 1 push that 0 push constant 75 eq if-goto IF_TRUE0 goto IF_FALSE0 label IF_TRUE0 push constant 3 pop this 3 push constant 0 return label IF_FALSE0 push local 1 push local 2 add pop pointer 1 push that 0 push constant 32 eq if-goto IF_TRUE1 goto IF_FALSE1 label IF_TRUE1 push constant 1 pop this 3 push constant 0 return label IF_FALSE1 push local 1 push constant 1 add pop local 1 goto WHILE_EXP1 label WHILE_END1 push local 0 push constant 1 add pop local 0 goto WHILE_EXP0 label WHILE_END0 push constant 2 pop this 3 push constant 0 return function Board.draw 5 push argument 0 pop pointer 0 push constant 9 pop local 0 push constant 30 pop local 1 push this 3 push constant 0 eq if-goto IF_TRUE0 goto IF_FALSE0 label IF_TRUE0 push local 0 push constant 1 sub push local 1 push constant 1 sub call Output.moveCursor 2 pop temp 0 push constant 75 call Output.printChar 1 pop temp 0 push local 0 push constant 1 add push local 1 push constant 1 sub call Output.moveCursor 2 pop temp 0 push static 2 call Output.printString 1 pop temp 0 goto IF_END0 label IF_FALSE0 push this 3 push constant 2 eq if-goto IF_TRUE1 goto IF_FALSE1 label IF_TRUE1 push local 0 push constant 1 sub push local 1 push constant 1 sub call Output.moveCursor 2 pop temp 0 push static 3 call Output.printString 1 pop temp 0 push local 0 push constant 1 add push local 1 push constant 1 sub call Output.moveCursor 2 pop temp 0 push static 1 call Output.printString 1 pop temp 0 push local 0 push constant 3 add push local 1 push constant 1 sub call Output.moveCursor 2 pop temp 0 push static 2 call Output.printString 1 pop temp 0 goto IF_END1 label IF_FALSE1 push this 3 push constant 3 eq if-goto IF_TRUE2 goto IF_FALSE2 label IF_TRUE2 push local 0 push constant 1 sub push local 1 push constant 1 sub call Output.moveCursor 2 pop temp 0 push static 3 call Output.printString 1 pop temp 0 push local 0 push constant 1 add push local 1 push constant 1 sub call Output.moveCursor 2 pop temp 0 push static 4 call Output.printString 1 pop temp 0 push local 0 push constant 3 add push local 1 push constant 1 sub call Output.moveCursor 2 pop temp 0 push static 2 call Output.printString 1 pop temp 0 goto IF_END2 label IF_FALSE2 push local 0 push constant 1 sub push local 1 push constant 1 sub call Output.moveCursor 2 pop temp 0 push static 0 call Output.printString 1 pop temp 0 push local 0 push constant 4 add push local 1 push constant 1 sub call Output.moveCursor 2 pop temp 0 push static 0 call Output.printString 1 pop temp 0 push constant 0 pop local 2 label WHILE_EXP0 push local 2 push constant 4 lt not if-goto WHILE_END0 push constant 0 pop local 3 push local 0 push local 2 add push local 1 push constant 1 sub call Output.moveCursor 2 pop temp 0 push constant 124 call Output.printChar 1 pop temp 0 push local 2 push this 0 add pop pointer 1 push that 0 pop local 4 label WHILE_EXP1 push local 3 push constant 4 lt not if-goto WHILE_END1 push local 3 push local 4 add pop pointer 1 push that 0 call Output.printChar 1 pop temp 0 push local 3 push constant 1 add pop local 3 goto WHILE_EXP1 label WHILE_END1 push constant 124 call Output.printChar 1 pop temp 0 push local 2 push constant 1 add pop local 2 goto WHILE_EXP0 label WHILE_END0 push local 0 push constant 6 add push local 1 push constant 2 sub call Output.moveCursor 2 pop temp 0 push static 5 call Output.printString 1 pop temp 0 push this 1 call Output.printInt 1 pop temp 0 label IF_END2 label IF_END1 label IF_END0 push constant 0 return function Board.dispose 0 push argument 0 pop pointer 0 push pointer 0 call Memory.deAlloc 1 pop temp 0 push constant 0 return