@0
MOV RIGHT, DOWN

@1
S: MOV -1, RIGHT
RD: MOV UP, ACC
JLZ END
MOV ACC, RIGHT
MOV ACC, LEFT
JMP RD
END: MOV ACC, LEFT
MOV DOWN, NIL

@3
RD: MOV UP, ACC
JLZ END
SAV
SUB DOWN
JLZ U
MOV -1, DOWN
JMP RD
U: SWP
MOV ACC, DOWN
JMP RD
END: MOV DOWN, ACC
MOV ACC, RIGHT
MOV 999, DOWN

@4
MOV LEFT, RIGHT
MOV RIGHT, UP

@5
S: MOV LEFT, ACC
MOV ACC, DOWN
MOV -1, RIGHT
T: MOV UP, ACC
JLZ F
MOV ACC, RIGHT
JMP T
F: MOV RIGHT, ACC
JLZ E
MOV ACC, DOWN
JMP F
E: MOV ACC, DOWN
MOV 0, LEFT

@6
MOV 999, ACC
L: SAV
MOV ACC, UP
MOV UP, ACC
JLZ K
JMP L
K: SWP
JMP L

@7
M: MOV UP, ACC
MOV ACC, RIGHT
R: MOV UP, ACC
JLZ E
SUB RIGHT
MOV ACC, DOWN
MOV -1, RIGHT
JMP R
E: MOV ACC, DOWN
MOV RIGHT, NIL

@8
R: MOV LEFT, ACC
L: SAV
MOV ACC, LEFT
MOV LEFT, ACC
JLZ K
JMP L
K: SWP
JMP L
