*B gcd
*V gcd c integer 20
*V gcd b integer 16
*V gcd a integer 12
*F gcd gcd integer 2
*P1 integer 12
*P2 integer 16
*V example z integer 8
*V example y integer 4
*V example x integer 0
*V example output unknown 0
*V example input unknown 0
*P example example 2
*P1 unknown 0
*P2 unknown 0
gcd	NOP			
	PUSH			a
	CALL			write
	MOV	1		T0
	SUB	b	0	T1
	JZ	T1		L0
	MOV	0		T0
L0	NOP			
	JZ	T0		L1
	MOV	a		gcd
	JMP			L2
L1	NOP			
	MOD	a	b	T2
	MOV	T2		c
	PUSH			b
	PUSH			c
	CALL			gcd
	PULL			T3
	MOV	T3		gcd
L2	NOP			
	RTN			
*B example
*F gcd gcd integer 2
*P1 integer 12
*P2 integer 16
*V example z integer 8
*V example y integer 4
*V example x integer 0
*V example output unknown 0
*V example input unknown 0
*P example example 2
*P1 unknown 0
*P2 unknown 0
_start	NOP			
	PUSH			x
	CALL			read
	PUSH			x
	CALL			write
	PUSH			y
	CALL			read
	PUSH			y
	CALL			write
	PUSH			x
	PUSH			y
	CALL			gcd
	PULL			T4
	MOV	T4		z
	PUSH			z
	CALL			write
	CALL			_exit
