@0
MOV 5, 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 5, DOWN

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

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

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

@5
MOV DOWN, ACC
JRO UP
ADD ACC
ADD DOWN
ADD ACC
JMP E
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
ADD 99
MOV 5, RIGHT

@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
