@0
L: MOV UP, ACC
SUB 7
JLZ D
SUB 2
MOV ACC, RIGHT
JMP L
D: ADD 7
MOV ACC, DOWN
JGZ L
JEZ L
MOV 1, RIGHT

@1
L: MOV LEFT, ACC
JEZ C
MOV ACC, DOWN
JLZ L
SWP
O: JEZ D
MOV 9, DOWN
SUB 1
JMP O
D: MOV -1, DOWN
JMP L
C: SWP
ADD 1
SWP

@3
MOV 0, DOWN
N: MOV 0, UP
MOV RIGHT, ACC
JEZ RST
L1: MOV DOWN, UP
SUB 1
JGZ L1
MOV DOWN, ACC
ADD 8
L2: MOV ACC, DOWN
MOV UP, ACC
JNZ L2
RST: JMP N

@4
O: JRO DOWN
ADD 1
JMP O
IN: MOV UP, ACC
ADD 1
MOV ACC, LEFT
JGZ IN
MOV -1, ACC
MOV ACC, DOWN

@5
L: MOV UP, ACC
ADD 1
JEZ C
MOV ACC, DOWN
JLZ L
SWP
O: JEZ F
MOV 8, DOWN
SUB 1
JMP O
F: MOV UP, DOWN
JMP F
C: SWP
ADD 1
SWP

@7
MOV 8, ACC
I: MOV 1, LEFT
SUB 1
JNZ I
MOV 3, UP
MOV UP, NIL
N: MOV LEFT, ACC
JEZ E
L: MOV ACC, UP
SUB 8
JLZ N
MOV UP, DOWN
JMP L
E: MOV RIGHT, DOWN
JMP E

@8
L: MOV UP, ACC
JGZ E
SWP
ADD 1
SWP
JMP L
E: SWP
O: JEZ F
MOV 7, LEFT
SUB 1
JMP O
F: MOV UP, LEFT
JMP F
