Osc::init:
		lsp	param[$0]
		ldi	$2
		ge?
		bnt	code_004b
		lap	param[$2]
		aTop	howManyCycles
code_004b:	lsp	param[$0]
		ldi	$4		; scaleX
		ge?
		bnt	code_0067
		lap	param[$4]
		aTop	startCel
		lap	param[$5]
		aTop	endCel
		lsp	param[$0]
		ldi	$6		; maxScale
		eq?
		bnt	code_0081
		lap	param[$6]
		aTop	caller
		jmp	code_0081

code_0067:	ldi	$0
		aTop	startCel
		pushi	$161		; 353, lastCel
		push0
		lap	param[$1]
		send	$4
		bnot
		aTop	endCel
		lsp	param[$0]
		ldi	$3		; z
		eq?
		bnt	code_0081
		lap	param[$3]
		aTop	caller
code_0081:	pushi	$94		; 148, init
		push1
		lsp	param[$1]
		super	Cycle, $6
		bnot
		ret

Osc::doit:
		link	$1
		pushi	$15f		; 351, nextCel
		push0
		self	$4
		bnot
		sat	temp[$0]
		push
		pToa	endCel
		gt?
		bt	code_00a2
		lst	temp[$0]
		pToa	startCel
		lt?
code_00a2:	bnt	code_00b2
		pToa	cycleDir
		neg
		aTop	cycleDir
		pushi	$160		; 352, cycleDone
		push0
		self	$4
		bnot
		jmp	code_00bc

code_00b2:	pushi	$10		; 16, cel
		push1
		lst	temp[$0]
		pToa	client
		send	$6
		bnot
code_00bc:	ret

Osc::cycleDone:
		pToa	howManyCycles
		bnt	code_00dc
		pushi	$10		; 16, cel
		push1
		pushi	$15f		; 351, nextCel
		push0
		self	$4
		bnot
		push
		pToa	client
		send	$6
		bnot
		pTos	howManyCycles
		ldi	$0
		gt?
		bnt	code_00e7
		dpToa	howManyCycles
		jmp	code_00e7

code_00dc:	ldi	$1
		aTop	completed
		pushi	$159		; 345, motionCue
		push0
		self	$4
		bnot
code_00e7:	ret

