@0
MOV 6, DOWN
MOV UP, RIGHT
MOV RIGHT, ACC
SAV
MOV RIGHT, ACC
L: SWP
MOV ACC, DOWN
SWP
SUB 1
JGZ L

@1
MOV LEFT, RIGHT
MOV UP, RIGHT
MOV RIGHT, ACC
MOV ACC, LEFT
SAV
MOV RIGHT, ACC
MOV ACC, LEFT
L: SWP
MOV ACC, DOWN
SWP
SUB 1
JGZ L
MOV 6, DOWN

@2
JRO LEFT
NOP
ADD 1
ADD 8
SUB 7
ADD 8
ADD 1
MOV ACC, RIGHT
MOV LEFT, RIGHT
MOV ACC, LEFT
MOV RIGHT, LEFT
MOV 0, ACC

@3
TOP: MOV LEFT, ACC
SUB 9
JNZ P
MOV LEFT, ACC
SUB 3
R: SUB 4
JGZ R
ADD 7
MOV ACC, LEFT
JMP TOP
P: MOV LEFT, LEFT

@4
TOP: MOV DOWN, ACC
JRO UP
ADD ACC
ADD DOWN
ADD ACC
MOV ACC, DOWN
JMP TOP
MOV DOWN, NIL
SUB 999
JMP E
ADD ACC
ADD ACC
ADD DOWN
E: MOV ACC, DOWN

@5
TOP: MOV DOWN, ACC
JRO UP
ADD ACC
ADD DOWN
ADD ACC
MOV ACC, DOWN
JMP TOP
MOV DOWN, NIL
SUB 999
JMP E
ADD ACC
ADD ACC
ADD DOWN
E: MOV ACC, DOWN

@6
S: MOV ACC, UP
MOV ACC, UP
MOV UP, ACC
JLZ R
SUB 99
JMP T
R: MOV 1, ACC
JMP S
C: MOV -1, RIGHT
SUB 100
T: JGZ C
MOV 5, RIGHT
ADD 99

@7
S: MOV ACC, UP
MOV ACC, UP
MOV UP, ACC
JLZ O
I: ADD 1
J: JRO LEFT
O: MOV ACC, RIGHT
MOV RIGHT, DOWN
MOV 0, ACC
JMP S
M: SUB 100
JGZ M
ADD 99

@8
MOV LEFT, ACC
ADD 989
L: JLZ D
SWP
ADD 1
SWP
SUB 10
JMP L
D: SWP
MOV ACC, LEFT
MOV 0, ACC
SAV
