@0
L: MOV RIGHT, ACC
MOV ACC, DOWN
MOV ACC, DOWN
JLZ E
JMP L
E: MOV DOWN, ACC
MOV ACC, RIGHT

@1
S: MOV -1, RIGHT
L: MOV UP, ACC
JLZ E
MOV ACC, LEFT
MOV ACC, RIGHT
JMP L
E: MOV ACC, LEFT
MOV LEFT, ACC
MOV ACC, DOWN
MOV DOWN, NIL
JMP S

@3
MOV 999, ACC
SAV
L: SUB UP
JGZ N
ADD UP
JMP L
N: MOV UP, ACC
JLZ E
SAV
JMP L
E: SWP
MOV ACC, UP

@4
MOV UP, RIGHT
MOV RIGHT, UP

@5
L: MOV LEFT, ACC
SAV
MOV -1, RIGHT
M: MOV UP, ACC
JLZ P
MOV ACC, RIGHT
MOV UP, ACC
JLZ P
MOV ACC, RIGHT
JMP M
P: MOV NIL, LEFT
SWP
MOV ACC, DOWN
MOV DOWN, NIL
JMP L

@7
L: MOV UP, ACC
MOV ACC, RIGHT
M: MOV RIGHT, ACC
ADD RIGHT
MOV ACC, DOWN
JGZ M
JLZ Z
JMP M
Z: MOV NIL, UP
JMP L

@8
L: MOV LEFT, ACC
NEG
SAV
M: MOV UP, ACC
JLZ T
SWP
MOV ACC, LEFT
SWP
MOV ACC, LEFT
JMP M
T: MOV ACC, LEFT
MOV 0, LEFT
JMP L
