@0 D=A @SP A=M M=D @SP M=M+1 //push CONSTANT @0 D=A @LCL M=M+D @SP M=M-1 A=M D=M @LCL A=M M=D @0 D=A @LCL M=M-D //pop LOCAL (Sys.init$LOOP_START) //LABEL @0 D=A @ARG A=M+D D=M @SP A=M M=D @SP M=M+1 //push ARGUMENT @0 D=A @LCL A=M+D D=M @SP A=M M=D @SP M=M+1 //push LOCAL @SP M=M-1 A=M D=M A=A-1 M=M+D //ADD @0 D=A @LCL M=M+D @SP M=M-1 A=M D=M @LCL A=M M=D @0 D=A @LCL M=M-D //pop LOCAL @0 D=A @ARG A=M+D D=M @SP A=M M=D @SP M=M+1 //push ARGUMENT @1 D=A @SP A=M M=D @SP M=M+1 //push CONSTANT @SP M=M-1 A=M D=M A=A-1 M=M-D //SUB @0 D=A @ARG M=M+D @SP M=M-1 A=M D=M @ARG A=M M=D @0 D=A @ARG M=M-D //pop ARG @0 D=A @ARG A=M+D D=M @SP A=M M=D @SP M=M+1 //push ARGUMENT @SP M=M-1 A=M D=M @Sys.init$LOOP_START D;JNE //IFGOTO @0 D=A @LCL A=M+D D=M @SP A=M M=D @SP M=M+1 //push LOCAL