@1
L:MOV ANY ACC
SAV
JGZ P
NEG
P:MOV ACC RIGHT
MOV RIGHT ACC
JNZ K
SWP
MOV ACC DOWN
NEG
JMP O
K:SWP
MOV 0 DOWN
O:MOV ACC DOWN

@2
A:MOV RIGHT ACC
MOV ACC LEFT
MOV LEFT NIL
MOV 1 LEFT
JNZ A
L:MOV LEFT ACC
JEZ E
SUB RIGHT
MOV -1 RIGHT
MOV ACC LEFT
JMP L
E:MOV 1 LEFT
MOV RIGHT NIL
MOV -3 RIGHT
JMP L

@3
A:MOV UP ACC
MOV ACC LEFT
JNZ A
L:MOV UP ACC
JEZ L
R:MOV ACC LEFT
JRO LEFT

@4
A:MOV UP NIL
MOV UP ACC
MOV ACC DOWN
JNZ A
E:MOV 0 LEFT
L:MOV DOWN UP
MOV UP DOWN
MOV UP ACC
JEZ R
MOV ACC LEFT
JMP L
R:MOV LEFT ACC
MOV ACC DOWN
JNZ R
JMP E

@7
E:MOV 0 RIGHT
R:MOV UP ACC
JEZ L
MOV ACC RIGHT
JMP R
L:MOV RIGHT ACC
MOV ACC UP
JEZ F
MOV UP ACC
JLZ O
JMP L
O:NEG
MOV ACC DOWN
JMP L
F:MOV UP NIL
