@0
S: MOV 0, RIGHT
R: MOV UP, ACC
JEZ W
MOV ACC, RIGHT
JMP R
W: MOV 0, DOWN
MOV DOWN, NIL

@2
S: MOV RIGHT, ACC
L: SAV
SUB RIGHT
JGZ M
MOV RIGHT, DOWN
SWP
JMP L
M: SWP
MOV ACC, DOWN
MOV RIGHT, ACC
JNZ L

@3
T: MOV UP, RIGHT
S: MOV RIGHT, ACC
JLZ D
MOV ACC, LEFT
L: MOV RIGHT, ACC
MOV ACC, LEFT
MOV ACC, LEFT
JNZ L
MOV 1, RIGHT
JMP S
D: MOV ACC, UP

@4
T: MOV LEFT, NIL
L: MOV UP, ACC
JEZ Q
MOV ACC, LEFT
L2: MOV UP, ACC
MOV ACC, LEFT
JNZ L2
MOV LEFT, DOWN
MOV 0, UP
R: MOV DOWN, ACC
JLZ L
MOV ACC, UP
JMP R
Q: MOV 0, DOWN
MOV -1, LEFT

@6
MOV UP, RIGHT

@7
P: MOV -1, LEFT
MOV UP, ACC
JEZ Q
MOV LEFT, DOWN
R: MOV LEFT, ACC
MOV ACC, UP
JLZ P
JMP R
Q: MOV LEFT, NIL
MOV 0, DOWN
