@1
A:MOV UP ACC
L:SUB 2
JLZ F
SWP
ADD 1
SWP
JNZ L
MOV 2 DOWN
SWP
JMP L
F:ADD 1
SWP
ADD ACC
ADD 1
MOV ACC DOWN

@2
A:MOV DOWN ACC
JLZ A
SAV
MOV DOWN ACC
JEZ A
SUB 8
JGZ F
MOV 4 DOWN
SWP
NEG
MOV ACC DOWN
JMP A
F:MOV -3 DOWN
SWP
MOV ACC DOWN

@4
A:MOV UP ACC
SUB 2
JEZ P
JLZ E
ADD 2
MOV ACC RIGHT
W:MOV DOWN NIL
JMP A
P:MOV 2 DOWN
JMP A
E:MOV 0 DOWN
JMP W

@5
A:MOV LEFT ACC
N:MOV ACC RIGHT
MOV ACC UP
JLZ A
MOV 0 ACC
L:ADD 1
JRO RIGHT
MOV ACC UP
MOV UP RIGHT
MOV UP ACC
JMP N
MOV ACC RIGHT
MOV 0 UP
JMP N

@6
A:JRO DOWN
MOV LEFT ACC
L:SUB DOWN
JGZ P
JEZ S
MOV 1 LEFT
MOV LEFT DOWN
JMP A
P:MOV -1 LEFT
MOV -1 DOWN
JMP L
S:MOV 5 LEFT
MOV 1 DOWN
MOV LEFT DOWN

@8
A:MOV ANY ACC
MOV ACC DOWN
JNZ A
MOV 1 UP

@9
A:MOV RIGHT ACC
JGZ O
NEG
SUB 1
JEZ A
ADD 1
O:MOV ACC LEFT

@10
A:MOV 1 ACC
I:ADD 2
N:MOV 1 UP
L:MOV ACC UP
JRO UP
MOV ACC LEFT
MOV UP NIL
JMP N
T:MOV 13 UP
MOV UP LEFT
E:MOV 0 LEFT
