#include "cmm450.csci"
F0001:

	push(0)
	push(0)
	push(0)
	push(5)
	push(1)
	load(SP)
	store(SP)
	push(4)
	push(1)
	load(SP)
	push(0)
	load(SP)
	add
	load(0)
	store(SP)
	push(3)
	push(1)
	load(SP)
	push(1)
	add
	store(SP)
L0001:

	push(3)
	load(SP)
	push(2)
	load(SP)
	lt
	brz( L0002 )
	push(3)
	load(SP)
	push(0)
	load(SP)
	add
	load(0)
	push(4)
	load(SP)
	lt
	brz( L0004 )
	push(4)
	push(3)
	load(SP)
	push(0)
	load(SP)
	add
	load(0)
	store(SP)
	push(5)
	push(3)
	load(SP)
	store(SP)
	jump( L0003 )
L0004:

L0003:

	push(3)
	push(3)
	load(SP)
	push(1)
	add
	store(SP)
	jump( L0001 )
L0002:

	push(5)
	load(SP)
	ret
	ret
F0002:

	push(0)
	push(0)
	push(3)
	push(1)
	load(SP)
	store(SP)
L0005:

	push(3)
	load(SP)
	push(2)
	load(SP)
	push(1)
	sub
	lt
	brz( L0006 )
	push(0)
	push(4)
	push(0)
	load(SP)
	push(3)
	load(SP)
	push(2)
	load(SP)
	push(1 )
	call( 3 )
	store(SP)
	push(5)
	push(4)
	load(SP)
	push(0)
	load(SP)
	add
	load(0)
	store(SP)
	push(4)
	load(SP)
	push(0)
	load(SP)
	add
	push(3)
	load(SP)
	push(0)
	load(SP)
	add
	load(0)
	store(0)
	push(3)
	load(SP)
	push(0)
	load(SP)
	add
	push(5)
	load(SP)
	store(0)
	push(3)
	push(3)
	load(SP)
	push(1)
	add
	store(SP)
	jump( L0005 )
L0006:

	end
F0003:

	push(0)
	push(0)
	push(0)
	store(SP)
L0007:

	push(0)
	load(SP)
	push(10)
	lt
	brz( L0008 )
	push(0)
	load(SP)
	push(0)
	add
	push(-2 )
	call( 0 )
	store(0)
	push(0)
	push(0)
	load(SP)
	push(1)
	add
	store(SP)
	jump( L0007 )
L0008:

	push(0)
	push(0)
	push(10)
	push(2 )
	call( 3 )
	push(0)
	push(0)
	store(SP)
L0009:

	push(0)
	load(SP)
	push(10)
	lt
	brz( L0010 )
	push(0)
	load(SP)
	push(0)
	add
	load(0)
	push(-1 )
	call( 1 )
	push(0)
	push(0)
	load(SP)
	push(1)
	add
	store(SP)
	jump( L0009 )
L0010:

	end
CALLSWITCH:
	jumptable
	entry( -2 , INPUT )
	entry ( -1 , OUTPUT )
	entry ( 0 , INIT )
	entry ( 1 , F0001 )
	entry ( 2 , F0002 )
MAIN:
	entry ( 3 , F0003 )
	endtable
INIT:
	push(0)
	push(0)
	push(0)
	push(0)
	push(0)
	push(0)
	push(0)
	push(0)
	push(0)
	push(0)
	start
