@0
MOV 15, ACC
L: MOV 0, RIGHT
SUB 1
JGZ L
M: MOV UP, ACC
MOV ACC, DOWN
SUB 14
JLZ K
MOV 0, ACC
K: ADD 14
MOV ACC, DOWN
MOV ACC, DOWN
JMP M

@1


@2
MOV UP, RIGHT
NEG
ADD UP
MOV ACC, RIGHT
MOV UP, ACC

@3
MOV LEFT, RIGHT
MOV LEFT, ACC
JGZ P
N: JEZ U
MOV DOWN, UP
ADD 1
JMP N
P: MOV UP, DOWN
SUB 1
JGZ P
U: MOV UP, RIGHT
MOV RIGHT, UP

@4
S: MOV LEFT, ACC
MOV ACC, DOWN
SUB 14
JGZ SP
MOV LEFT, ACC
SUB 4
JEZ Z
ADD 5
Z: MOV ACC, DOWN
MOV ACC, LEFT
JMP S
SP: MOV LEFT, LEFT
MOV ACC, RIGHT
MOV RIGHT, DOWN
MOV ACC, RIGHT

@5
S: JRO LEFT
JMP I
JMP W
MOV 0, DOWN
MOV DOWN, LEFT
MOV LEFT, NIL
JMP S
W: SWP
I: SUB 4
JEZ Z
ADD 5
Z: MOV ACC, LEFT
JRO LEFT
JMP S
SWP

@6
MOV 0, DOWN
MOV UP, DOWN
MOV UP, ACC
SWP
MOV 15, ACC
L: SWP
MOV ACC, DOWN
MOV ACC, DOWN
SWP
SUB 1
JGZ L
MOV -1, DOWN

@7
SUB 4
JEZ Z
ADD 5
Z: MOV UP, NIL
MOV ACC, UP
