MCyc::init:
		link	$2
		lap	param[$1]
		aTop	client
		lap	param[$2]
		aTop	points
		lsp	param[$0]
		ldi	$2
		gt?
		bnt	code_0064
		lap	param[$3]
		aTop	caller
		lsp	param[$0]
		ldi	$3		; z
		gt?
		bnt	code_0064
		lap	param[$4]
		aTop	cycleDir
code_0064:	ldi	$0
		aTop	size
code_0068:	pushi	$4b		; 75, 'K', at
		push1
		pTos	size
		pToa	points
		send	$6
		bnot
		push
		ldi	$8000		; -32768
		ne?
		bnt	code_007d
		ipToa	size
		jmp	code_0068

code_007d:	pTos	cycleDir
		ldi	$1
		eq?
		bnt	code_008a
		ldi	$0
		aTop	value
		jmp	code_0091

code_008a:	pTos	size
		ldi	$4		; scaleX
		sub
		aTop	value
code_0091:	pushi	$94		; 148, init
		push0
		super	Cycle, $4
		bnot
		ret

MCyc::doit:
		push1
		lsg	global[$40]
		pToa	cycleCnt
		sub
		push
		callk	kernel_61, $2
		bnot
		push
		pushi	$14a		; 330, cycleSpeed
		push0
		pToa	client
		send	$4
		bnot
		ge?
		bnt	code_00bd
		lag	global[$40]
		aTop	cycleCnt
		pushi	$15f		; 351, nextCel
		push0
		self	$4
		bnot
code_00bd:	ret

MCyc::nextCel:
		pushi	$f		; 15, loop
		push1
		pushi	$4b		; 75, 'K', at
		push1
		pTos	value
		pToa	points
		send	$6
		bnot
		push
		pushi	$10		; 16, cel
		push1
		pushi	$4b		; 75, 'K', at
		push1
		pTos	value
		ldi	$1
		add
		push
		pToa	points
		send	$6
		bnot
		push
		push1
		push1
		pushi	$4b		; 75, 'K', at
		push1
		pTos	value
		ldi	$2
		add
		push
		pToa	points
		send	$6
		bnot
		push
		push2
		push1
		pushi	$4b		; 75, 'K', at
		push1
		pTos	value
		ldi	$3		; z
		add
		push
		pToa	points
		send	$6
		bnot
		push
		pToa	client
		send	$18
		bnot
		pTos	value
		pTos	cycleDir
		ldi	$4		; scaleX
		mul
		add
		aTop	value
		pTos	cycleDir
		ldi	$1
		eq?
		bnt	code_011b
		pTos	value
		pToa	size
		ge?
code_011b:	bt	code_0129
		pTos	cycleDir
		ldi	$ff		; 255, asInteger
		eq?
		bnt	code_0132
		pTos	value
		ldi	$0
		lt?
code_0129:	bnt	code_0132
		pushi	$160		; 352, cycleDone
		push0
		self	$4
		bnot
code_0132:	ret

MCyc::cycleDone:
		ldi	$1
		aTop	completed
		ldi	$0
		aTop	value
		pushi	$159		; 345, motionCue
		push0
		self	$4
		bnot
		ret

