@0
MOV RIGHT, DOWN

@1
MOV RIGHT, LEFT

@2
MOV RIGHT, LEFT

@3
A: MOV UP, ACC
JEZ BS
MOV ACC, LEFT
JMP A
BS: MOV UP, ACC
JEZ CS
MOV ACC, DOWN
JMP BS
CS: MOV UP, ACC
JEZ A
ADD 300
MOV ACC, DOWN
JMP CS

@4
MOV 0, LEFT
T: MOV RIGHT, NIL
F: MOV LEFT, ACC
JEZ FE
MOV ACC, RIGHT
MOV ACC, RIGHT
JMP F
FE: MOV ACC, RIGHT
MOV 0, LEFT
MOV 0, DOWN
R: MOV DOWN, ACC
JEZ T
MOV ACC, LEFT
JMP R

@5
MOV 1, RIGHT
MOV 0, LEFT
E: MOV LEFT, ACC
JEZ EN
SUB RIGHT
MOV 1, RIGHT
JEZ MATCH
MOV LEFT, DOWN
JMP E
MATCH: ADD LEFT
ADD 300
MOV ACC, DOWN
JMP E
EN: MOV RIGHT, NIL
MOV 0, RIGHT

@6
G: MOV UP, ACC
SAV
S: MOV LEFT, ACC
JEZ G
SWP
MOV ACC, LEFT
SWP
JMP S

@7
MOV 0, RIGHT
MOV UP, NIL
L: MOV RIGHT, ACC
JEZ Z
SUB 600
JLZ P
MOV ACC, DOWN
MOV -1, UP
JMP L
P: ADD 600
MOV ACC, UP
JMP L
Z: MOV 0, UP
