@start: subleq @tmp, @IN subleq @remainder, @tmp subleq @tmp, @tmp subleq @tmp, @IN subleq @divisor, @tmp @loop: subleq @n_quotient, @one subleq @remainder, @divisor, @leq subleq @tmp, @tmp, @loop @leq: subleq @tmp, @tmp subleq @tmp, @remainder, @eq subleq @n_quotient, @n_one subleq @tmp, @tmp subleq @tmp, @divisor subleq @remainder, @tmp subleq @divisor, @divisor, @done @eq: subleq @remainder, @remainder, @done @done: subleq @OUT, @n_quotient subleq @tmp, @tmp subleq @tmp, @remainder subleq @OUT, @tmp subleq @remainder, @remainder subleq @divisor, @divisor subleq @n_quotient, @n_quotient subleq @tmp, @tmp, @start ; Variables @tmp: .data 0 @remainder: .data 0 @divisor: .data 0 @n_quotient: .data 0 ; Constants @one: .data 1 @n_one: .data -1