@1
MOV RIGHT, DOWN

@2
MOV RIGHT, LEFT

@3
L1: MOV UP, ACC
MOV ACC, LEFT
JNZ L1
L2: MOV UP, DOWN
JMP L2

@4
MOV 0, LEFT
S1: MOV UP, ACC
JEZ OUT
MOV ACC, LEFT
JMP S1
IN: MOV 0, LEFT
L: MOV DOWN, ACC
JEZ OUT
MOV ACC, LEFT
JMP L
OUT: MOV LEFT, ACC
MOV ACC, RIGHT
JNZ OUT
MOV RIGHT, DOWN
JMP IN

@5
L: MOV LEFT, ACC
JEZ D
MOV 1, RIGHT
SUB RIGHT
JEZ NEG
ADD RIGHT
JMP P
NEG: SUB RIGHT
P: MOV ACC, DOWN
JMP L
D: MOV 4, RIGHT
MOV RIGHT, LEFT

@6
S: MOV UP, ACC
L: JRO LEFT
MOV ACC, LEFT
MOV ACC, LEFT
JMP L
JEZ Z
MOV 11, LEFT
JMP S
Z: MOV DOWN, LEFT
JRO DOWN

@7
S: MOV 0, RIGHT
JRO UP
M2: MOV RIGHT, ACC
JGZ M2
NEG
MOV ACC, UP
JNZ M2
JMP S
M3: MOV RIGHT, ACC
JEZ S
MOV ACC, DOWN
JMP M3
M1: MOV RIGHT, ACC
MOV ACC, UP
JNZ M1

@8
MOV 1, UP
MOV -9, UP
MOV 1, UP
MOV -8, UP
MOV 7, UP
MOV -9, UP
