@1
MOV RIGHT, DOWN

@2
MOV RIGHT, LEFT

@3
S1: MOV UP, ACC
MOV ACC, LEFT
JNZ S1
S2: MOV UP, ACC
MOV ACC, DOWN
JNZ S2
S3: MOV UP, ACC
NEG
MOV ACC, DOWN
JNZ S3

@4
MOV 0, LEFT
L0: MOV UP, ACC
JEZ S
MOV ACC, LEFT
JMP L0
S: MOV 1, RIGHT
L1: MOV LEFT, ACC
MOV ACC, RIGHT
JNZ L1
MOV RIGHT, DOWN
MOV 0, LEFT
L2: MOV DOWN, ACC
JEZ S
MOV ACC, LEFT
JMP L2

@5
S: MOV LEFT, NIL
MOV 0, DOWN
L: MOV LEFT, ACC
JEZ D
SUB RIGHT
JEZ M
ADD RIGHT
MOV ACC, DOWN
JMP L
M: SUB RIGHT
MOV ACC, DOWN
SAV
JMP L
D: SWP
MOV ACC, LEFT

@6
S: MOV UP, ACC
JEZ S
SAV
MOV 12, ACC
L: SWP
MOV ACC, LEFT
MOV ACC, LEFT
SWP
SUB 1
JNZ L
JMP S

@7
S: MOV UP, ACC
SAV
L: MOV RIGHT, ACC
MOV ACC, UP
JNZ L
SWP
JGZ O
JMP S
O: MOV ACC, DOWN
