@0
MOV 5, ACC
I: MOV 0, RIGHT
MOV 0, RIGHT
MOV 0, RIGHT
SUB 1
JGZ I
L: MOV UP, ACC
MOV ACC, DOWN
SUB 3
MOV ACC, DOWN
MOV ACC, DOWN
JMP L

@1
JMP E
JMP A
JMP B
E: JRO DOWN
B: SWP
SUB 4
JEZ Z1
ADD 5
Z1: MOV ACC, DOWN
SWP
JMP E
A: SUB 4
JEZ Z2
ADD 5
Z2: MOV ACC, DOWN

@2
E: MOV UP, RIGHT
MOV UP, ACC
JLZ S
MOV 1, RIGHT
SWP
SUB UP
MOV ACC, RIGHT
JMP E
S: MOV UP, NIL
MOV -1, RIGHT

@3
E: MOV LEFT, RIGHT
JRO LEFT
MOV LEFT, ACC
JLZ L1
JGZ L2
JMP E1
L1: MOV UP, DOWN
ADD 1
JLZ L1
JMP E1
L2: MOV DOWN, UP
SUB 1
JGZ L2
E1: MOV UP, RIGHT
MOV RIGHT, UP

@4
E: MOV LEFT, ACC
SUB 2
JGZ R
JEZ R2
MOV ACC, UP
MOV UP, DOWN
JMP D
R2: MOV -1, RIGHT
MOV RIGHT, DOWN
JMP D
R: MOV LEFT, RIGHT
MOV RIGHT, LEFT
MOV RIGHT, DOWN
D: ADD 2
MOV ACC, DOWN

@5
E: MOV LEFT, ACC
JLZ C2
SUB 4
JEZ Z
ADD 5
Z: MOV ACC, LEFT
MOV ACC, LEFT
JMP E
C2: SWP
SUB 4
JEZ Z2
ADD 5
Z2: MOV ACC, LEFT
SWP

@6
MOV UP, ACC
MOV 0, DOWN
MOV UP, DOWN
L: MOV ACC, DOWN
MOV ACC, DOWN
MOV ACC, DOWN
MOV ACC, DOWN
MOV ACC, DOWN
MOV ACC, DOWN
MOV ACC, DOWN
MOV ACC, DOWN
MOV ACC, DOWN
MOV ACC, DOWN
JRO RIGHT
MOV -1, DOWN

@7
MOV -10, LEFT
MOV -10, LEFT
MOV 1, LEFT
