@0
MOV 15, ACC
I: MOV 0, RIGHT
SUB 1
JGZ I
M: MOV UP, ACC
SUB 14
JGZ E
ADD 14
MOV ACC, DOWN
MOV ACC, DOWN
JMP M
E: ADD 14
NEG
MOV ACC, DOWN
JMP M

@1
MOV DOWN, NIL
SUB 4
JEZ Z
ADD 5
Z: MOV ACC, DOWN

@2
M: MOV UP, ACC
MOV ACC, RIGHT
JLZ M
SWP
SUB UP
MOV ACC, RIGHT
MOV RIGHT, ACC
SUB 4
JEZ Z
ADD 5
Z: MOV ACC, RIGHT
MOV ACC, RIGHT

@3
M: MOV LEFT, ACC
MOV ACC, RIGHT
JLZ M
MOV LEFT, ACC
JLZ F
B: JEZ D
MOV DOWN, UP
SUB 1
JMP B
F: MOV UP, DOWN
ADD 1
JLZ F
D: MOV UP, LEFT
MOV LEFT, UP
MOV LEFT, RIGHT

@4
M: MOV LEFT, ACC
JLZ X
MOV ACC, DOWN
MOV LEFT, DOWN
JMP M
X: NEG
MOV ACC, DOWN
SUB 15
JEZ R
MOV ACC, RIGHT
MOV RIGHT, DOWN
MOV ACC, RIGHT
JMP M
R: MOV 0, UP
MOV UP, DOWN

@5
JRO LEFT
SWP
SUB 4
JEZ Z
ADD 5
Z: MOV ACC, LEFT
JRO LEFT
SWP
NOP

@6
MOV 0, DOWN
MOV UP, DOWN
MOV UP, ACC
SAV
MOV 15, ACC
L: SWP
MOV ACC, DOWN
MOV ACC, DOWN
SWP
SUB 1
JGZ L
MOV -1, DOWN
