
;  GNU C 2.7.2 [AL 1.1, MM 40] RISC NEWS-OS compiled by CC

;  Cc1 defaults:
;  -mmemcpy

;  Cc1 arguments (-G value = 0, Cpu = 3000, ISA = 1):
;  -quiet -dumpbase -O2 -Wall -o

gcc2_compiled.:
__gnu_compiled_c:
	.code
	.align	1
D12OutCmd:
;	.frame	%sp,4,$31		# vars= 0, regs= 1/0, args= 0, extra= 0
;	.mask	0x80000000,-4
;	.fmask	0x00000000,0
	ext	0x8		; 	xld.w	%r10,0x00400004		; 4194308
	ext	0x0
	ld.w	%r10,0x4
	;.set	volatile
	ld.b	[%r10],%r12	; 	xld.b	[%r10],%r12
	;.set	novolatile
; APP
	nop
; NO_APP
	ret
	.align	1
D12OutDat:
;	.frame	%sp,4,$31		# vars= 0, regs= 1/0, args= 0, extra= 0
;	.mask	0x80000000,-4
;	.fmask	0x00000000,0
	ext	0x8		; 	xld.w	%r10,0x00400000		; 4194304
	ext	0x0
	ld.w	%r10,0x0
	;.set	volatile
	ld.b	[%r10],%r12	; 	xld.b	[%r10],%r12
	;.set	novolatile
; APP
	nop
; NO_APP
	ret
	.align	1
D12InDat:
;	.frame	%sp,4,$31		# vars= 0, regs= 1/0, args= 0, extra= 0
;	.mask	0x80000000,-4
;	.fmask	0x00000000,0
	ext	0x8		; 	xld.w	%r10,0x00400000		; 4194304
	ext	0x0
	ld.w	%r10,0x0
	;.set	volatile
	ld.ub	%r10,[%r10]	; 	xld.ub	%r10,[%r10]
	;.set	novolatile
	ld.ub	%r10,%r10
; APP
	nop
; NO_APP
	ret
	.align	1
	.global	D12_SetAddressEnable
D12_SetAddressEnable:
;	.frame	%sp,12,$31		# vars= 0, regs= 3/0, args= 0, extra= 0
;	.mask	0x80030000,-4
;	.fmask	0x00000000,0
	pushn	%r1
	ld.w	%r1,%r12
	ld.w	%r0,%r13
	ext	0x3		; 	xld.w	%r12,0x000000d0		; 208
	ld.w	%r12,0x10
	call	D12OutCmd	; 	xcall	D12OutCmd
	cmp	%r0,0x0
	jreq	__LX74		; 	xjreq	__L74
	ext	0x2		; 	xoor	%r1,%r1,0x00000080
	or	%r1,0x0
__LX74:				; __L74:
	ld.w	%r12,%r1
	call	D12OutDat	; 	xcall	D12OutDat
	popn	%r1
	ret
	.align	1
	.global	D12_SetEndpointEnable
D12_SetEndpointEnable:
;	.frame	%sp,8,$31		# vars= 0, regs= 2/0, args= 0, extra= 0
;	.mask	0x80010000,-4
;	.fmask	0x00000000,0
	pushn	%r0
	ld.w	%r0,%r12
	ext	0x3		; 	xld.w	%r12,0x000000d8		; 216
	ld.w	%r12,0x18
	call	D12OutCmd	; 	xcall	D12OutCmd
	not	%r12,%r0
	add	%r12,1
	or	%r12,%r0
	srl	%r12,0x8	; 	xsrl	%r12,31
	srl	%r12,0x8
	srl	%r12,0x8
	srl	%r12,0x7
	call	D12OutDat	; 	xcall	D12OutDat
	popn	%r0
	ret
	.align	1
	.global	D12_SetMode
D12_SetMode:
;	.frame	%sp,12,$31		# vars= 0, regs= 3/0, args= 0, extra= 0
;	.mask	0x80030000,-4
;	.fmask	0x00000000,0
	pushn	%r1
	ld.w	%r0,%r12
	ld.w	%r1,%r13
	ext	0x3		; 	xld.w	%r12,0x000000f3		; 243
	ld.w	%r12,0x33
	call	D12OutCmd	; 	xcall	D12OutCmd
	ld.w	%r12,%r0
	call	D12OutDat	; 	xcall	D12OutDat
	ld.w	%r12,%r1
	call	D12OutDat	; 	xcall	D12OutDat
	popn	%r1
	ret
	.align	1
	.global	D12_SetDMA
D12_SetDMA:
;	.frame	%sp,8,$31		# vars= 0, regs= 2/0, args= 0, extra= 0
;	.mask	0x80010000,-4
;	.fmask	0x00000000,0
	pushn	%r0
	ld.w	%r0,%r12
	ext	0x3		; 	xld.w	%r12,0x000000fb		; 251
	ld.w	%r12,0x3b
	call	D12OutCmd	; 	xcall	D12OutCmd
	ld.w	%r12,%r0
	call	D12OutDat	; 	xcall	D12OutDat
	popn	%r0
	ret
	.align	1
	.global	D12_ReadInterruptRegister
D12_ReadInterruptRegister:
;	.frame	%sp,8,$31		# vars= 0, regs= 2/0, args= 0, extra= 0
;	.mask	0x80010000,-4
;	.fmask	0x00000000,0
	pushn	%r0
	ext	0x3		; 	xld.w	%r12,0x000000f4		; 244
	ld.w	%r12,0x34
	call	D12OutCmd	; 	xcall	D12OutCmd
	call	D12InDat	; 	xcall	D12InDat
	ld.w	%r0,%r10
	call	D12InDat	; 	xcall	D12InDat
	sll	%r10,0x8	; 	xsll	%r10,8
	or	%r0,%r10
	ld.w	%r10,%r0
	popn	%r0
	ret
	.align	1
	.global	D12_SelectEndpoint
D12_SelectEndpoint:
;	.frame	%sp,4,$31		# vars= 0, regs= 1/0, args= 0, extra= 0
;	.mask	0x80000000,-4
;	.fmask	0x00000000,0
	call	D12OutCmd	; 	xcall	D12OutCmd
	call	D12InDat	; 	xcall	D12InDat
	ret
	.align	1
	.global	D12_ReadLastTransactionStatus
D12_ReadLastTransactionStatus:
;	.frame	%sp,4,$31		# vars= 0, regs= 1/0, args= 0, extra= 0
;	.mask	0x80000000,-4
;	.fmask	0x00000000,0
	ext	0x1		; 	xoor	%r12,%r12,0x00000040
	or	%r12,0x0
	call	D12OutCmd	; 	xcall	D12OutCmd
	call	D12InDat	; 	xcall	D12InDat
	ret
	.align	1
	.global	D12_ReadEndpointStatus
D12_ReadEndpointStatus:
;	.frame	%sp,4,$31		# vars= 0, regs= 1/0, args= 0, extra= 0
;	.mask	0x80000000,-4
;	.fmask	0x00000000,0
	ext	0x2		; 	xoor	%r12,%r12,0x00000080
	or	%r12,0x0
	call	D12OutCmd	; 	xcall	D12OutCmd
	call	D12InDat	; 	xcall	D12InDat
	ret
	.align	1
	.global	D12_ReadBuffer
D12_ReadBuffer:
;	.frame	%sp,16,$31		# vars= 0, regs= 4/0, args= 0, extra= 0
;	.mask	0x80070000,-4
;	.fmask	0x00000000,0
	pushn	%r2
	ld.w	%r2,%r13
	ld.w	%r0,%r14
	call	D12_SelectEndpoint	; 	xcall	D12_SelectEndpoint
	and	%r10,0x1	; 	xand	%r10,%r10,0x00000001
	jrne	__LX84		; 	xjrne	__L84
	ld.w	%r10,0x3f	; 	xld.w	%r10,-1			; 0xffffffff
	jp	__LX91		; 	xjp	__L91
__LX84:				; __L84:
	ext	0x3		; 	xld.w	%r12,0x000000f0		; 240
	ld.w	%r12,0x30
	call	D12OutCmd	; 	xcall	D12OutCmd
	call	D12InDat	; 	xcall	D12InDat
	call	D12InDat	; 	xcall	D12InDat
	ld.w	%r1,%r10
	cmp	%r1,%r0
	jrle	__LX85		; 	xjrle	__L85
	ld.w	%r1,%r0
__LX85:				; __L85:
	cmp	%r1,0x0
	jrle	__LX87		; 	xjrle	__L87
	ld.w	%r0,%r2
	ld.w	%r2,%r1
	add	%r2,%r0
__LX89:				; __L89:
	call	D12InDat	; 	xcall	D12InDat
	ld.b	[%r0],%r10	; 	xld.b	[%r0],%r10
	add	%r0,0x1		; 	xadd	%r0,%r0,1
	cmp	%r0,%r2
	jrlt	__LX89		; 	xjrlt	__L89
__LX87:				; __L87:
	ld.w	%r10,%r1
__LX91:				; __L91:
	popn	%r2
	ret
	.align	1
	.global	D12_WriteBuffer
D12_WriteBuffer:
;	.frame	%sp,16,$31		# vars= 0, regs= 4/0, args= 0, extra= 0
;	.mask	0x80070000,-4
;	.fmask	0x00000000,0
	pushn	%r2
	ld.w	%r1,%r13
	ld.w	%r2,%r14
	call	D12_SelectEndpoint	; 	xcall	D12_SelectEndpoint
	ld.w	%r0,%r10
	and	%r0,0x1		; 	xand	%r0,%r0,0x00000001
	jreq	__LX93		; 	xjreq	__L93
	ld.w	%r10,0x3f	; 	xld.w	%r10,-1			; 0xffffffff
	jp	__LX99		; 	xjp	__L99
__LX93:				; __L93:
	ext	0x3		; 	xld.w	%r12,0x000000f0		; 240
	ld.w	%r12,0x30
	ext	D12OutCmd@rm	; 	xcall	D12OutCmd
	call	D12OutCmd@rl
	ld.w	%r12,%r0
	ext	D12OutDat@rm	; 	xcall	D12OutDat
	call	D12OutDat@rl
	ld.w	%r12,%r2
	ext	D12OutDat@rm	; 	xcall	D12OutDat
	call	D12OutDat@rl
	cmp	%r0,%r2
	jrge	__LX95		; 	xjrge	__L95
	ld.w	%r0,%r1
	ld.w	%r1,%r2
	add	%r1,%r0
__LX97:				; __L97:
	ld.ub	%r12,[%r0]	; 	xld.ub	%r12,[%r0]
	ext	D12OutDat@rm	; 	xcall	D12OutDat
	call	D12OutDat@rl
	add	%r0,0x1		; 	xadd	%r0,%r0,1
	cmp	%r0,%r1
	jrlt	__LX97		; 	xjrlt	__L97
__LX95:				; __L95:
	ld.w	%r10,%r2
__LX99:				; __L99:
	popn	%r2
	ret
	.align	1
	.global	D12_SetEndpointStatus
D12_SetEndpointStatus:
;	.frame	%sp,8,$31		# vars= 0, regs= 2/0, args= 0, extra= 0
;	.mask	0x80010000,-4
;	.fmask	0x00000000,0
	pushn	%r0
	ld.w	%r0,%r13
	ext	0x1		; 	xoor	%r12,%r12,0x00000040
	or	%r12,0x0
	ext	D12OutCmd@rm	; 	xcall	D12OutCmd
	call	D12OutCmd@rl
	not	%r12,%r0
	add	%r12,1
	or	%r12,%r0
	srl	%r12,0x8	; 	xsrl	%r12,31
	srl	%r12,0x8
	srl	%r12,0x8
	srl	%r12,0x7
	ext	D12OutDat@rm	; 	xcall	D12OutDat
	call	D12OutDat@rl
	popn	%r0
	ret
	.align	1
	.global	D12_AcknowledgeSetup
D12_AcknowledgeSetup:
;	.frame	%sp,4,$31		# vars= 0, regs= 1/0, args= 0, extra= 0
;	.mask	0x80000000,-4
;	.fmask	0x00000000,0
	call	D12_SelectEndpoint	; 	xcall	D12_SelectEndpoint
	ext	0x3		; 	xld.w	%r12,0x000000f1		; 241
	ld.w	%r12,0x31
	ext	D12OutCmd@rm	; 	xcall	D12OutCmd
	call	D12OutCmd@rl
	ret
	.align	1
	.global	D12_ClearBuffer
D12_ClearBuffer:
;	.frame	%sp,4,$31		# vars= 0, regs= 1/0, args= 0, extra= 0
;	.mask	0x80000000,-4
;	.fmask	0x00000000,0
	call	D12_SelectEndpoint	; 	xcall	D12_SelectEndpoint
	ext	0x3		; 	xld.w	%r12,0x000000f2		; 242
	ld.w	%r12,0x32
	ext	D12OutCmd@rm	; 	xcall	D12OutCmd
	call	D12OutCmd@rl
	ret
	.align	1
	.global	D12_ValidateBuffer
D12_ValidateBuffer:
;	.frame	%sp,4,$31		# vars= 0, regs= 1/0, args= 0, extra= 0
;	.mask	0x80000000,-4
;	.fmask	0x00000000,0
	call	D12_SelectEndpoint	; 	xcall	D12_SelectEndpoint
	ext	0x3		; 	xld.w	%r12,0x000000fa		; 250
	ld.w	%r12,0x3a
	ext	D12OutCmd@rm	; 	xcall	D12OutCmd
	call	D12OutCmd@rl
	ret
	.align	1
	.global	D12_SendResume
D12_SendResume:
;	.frame	%sp,4,$31		# vars= 0, regs= 1/0, args= 0, extra= 0
;	.mask	0x80000000,-4
;	.fmask	0x00000000,0
	ext	0x3		; 	xld.w	%r12,0x000000f6		; 246
	ld.w	%r12,0x36
	ext	D12OutCmd@rm	; 	xcall	D12OutCmd
	call	D12OutCmd@rl
	ret
	.align	1
	.global	D12_ReadCurrentFrameNumber
D12_ReadCurrentFrameNumber:
;	.frame	%sp,8,$31		# vars= 0, regs= 2/0, args= 0, extra= 0
;	.mask	0x80010000,-4
;	.fmask	0x00000000,0
	pushn	%r0
	ext	0x3		; 	xld.w	%r12,0x000000f5		; 245
	ld.w	%r12,0x35
	ext	D12OutCmd@rm	; 	xcall	D12OutCmd
	call	D12OutCmd@rl
	ext	D12InDat@rm	; 	xcall	D12InDat
	call	D12InDat@rl
	ld.w	%r0,%r10
	ext	D12InDat@rm	; 	xcall	D12InDat
	call	D12InDat@rl
	sll	%r10,0x8	; 	xsll	%r10,8
	or	%r0,%r10
	ld.w	%r10,%r0
	popn	%r0
	ret
	.align	1
	.global	D12_ReadChipID
D12_ReadChipID:
;	.frame	%sp,8,$31		# vars= 0, regs= 2/0, args= 0, extra= 0
;	.mask	0x80010000,-4
;	.fmask	0x00000000,0
	pushn	%r0
	ext	0x3		; 	xld.w	%r12,0x000000fd		; 253
	ld.w	%r12,0x3d
	ext	D12OutCmd@rm	; 	xcall	D12OutCmd
	call	D12OutCmd@rl
	ext	D12InDat@rm	; 	xcall	D12InDat
	call	D12InDat@rl
	ld.w	%r0,%r10
	ext	D12InDat@rm	; 	xcall	D12InDat
	call	D12InDat@rl
	sll	%r10,0x8	; 	xsll	%r10,8
	or	%r0,%r10
	ld.w	%r10,%r0
	popn	%r0
	ret
	.align	1
usb_isr:
;	.frame	%sp,4,$31		# vars= 0, regs= 1/0, args= 0, extra= 0
;	.mask	0x80000000,-4
;	.fmask	0x00000000,0
; APP
	pushn	%r15
	ld.w	%r0,%alr
	ld.w	%r1,%ahr
	pushn	%r1
; NO_APP
	call	fn_usb_isr	; 	xcall	fn_usb_isr
	ext	0x20		; 	xbclr	[262784],0x1
	ext	0x280
	bclr	[%r8],0x1
; APP
	popn	%r1
	ld.w	%ahr,%r1
	ld.w	%alr,%r0
	popn	%r15
	reti
; NO_APP
	ret
	.align	1
fn_usb_isr:
;	.frame	%sp,8,$31		# vars= 0, regs= 2/0, args= 0, extra= 0
;	.mask	0x80010000,-4
;	.fmask	0x00000000,0
	pushn	%r0
	ext	D12_ReadInterruptRegister@rm	; 	xcall	D12_ReadInterruptRegister
	call	D12_ReadInterruptRegister@rl
	ld.w	%r0,%r10
	ld.w	%r12,%r0
	ext	0x1		; 	xand	%r12,%r12,0x00000040
	and	%r12,0x0
	jreq	__LX110		; 	xjreq	__L110
	call	bus_reset	; 	xcall	bus_reset
	jp	__LX111		; 	xjp	__L111
__LX110:				; __L110:
	ld.w	%r10,%r0
	and	%r10,0x1	; 	xand	%r10,%r10,0x00000001
	jreq	__LX114		; 	xjreq	__L114
	ext	D12_ReadLastTransactionStatus@rm	; 	xcall	D12_ReadLastTransactionStatus
	call	D12_ReadLastTransactionStatus@rl
	ld.w	%r12,%r10
	call	ep0_rxdone	; 	xcall	ep0_rxdone
__LX114:				; __L114:
	ld.w	%r10,%r0
	and	%r10,0x2	; 	xand	%r10,%r10,0x00000002
	jreq	__LX115		; 	xjreq	__L115
	ld.w	%r12,0x1	; 	xld.w	%r12,0x00000001		; 1
	ext	D12_ReadLastTransactionStatus@rm	; 	xcall	D12_ReadLastTransactionStatus
	call	D12_ReadLastTransactionStatus@rl
	ext	ep0_txdone@rm	; 	xcall	ep0_txdone
	call	ep0_txdone@rl
__LX115:				; __L115:
	ld.w	%r10,%r0
	and	%r10,0x4	; 	xand	%r10,%r10,0x00000004
	jreq	__LX116		; 	xjreq	__L116
	ld.w	%r12,0x2	; 	xld.w	%r12,0x00000002		; 2
	ext	D12_ReadLastTransactionStatus@rm	; 	xcall	D12_ReadLastTransactionStatus
	call	D12_ReadLastTransactionStatus@rl
	ext	usb_inf+0x8@ah	; 	xld.w	%r10,[usb_inf+8]
	ext	usb_inf+0x8@al
	ld.w	%r10,[%r8]
	cmp	%r10,0x0
	jreq	__LX116		; 	xjreq	__L116
	call	%r10
__LX116:				; __L116:
	ld.w	%r10,%r0
	and	%r10,0x8	; 	xand	%r10,%r10,0x00000008
	jreq	__LX118		; 	xjreq	__L118
	ld.w	%r12,0x3	; 	xld.w	%r12,0x00000003		; 3
	ext	D12_ReadLastTransactionStatus@rm	; 	xcall	D12_ReadLastTransactionStatus
	call	D12_ReadLastTransactionStatus@rl
	ext	usb_inf+0xc@ah	; 	xld.w	%r10,[usb_inf+12]
	ext	usb_inf+0xc@al
	ld.w	%r10,[%r8]
	cmp	%r10,0x0
	jreq	__LX118		; 	xjreq	__L118
	call	%r10
__LX118:				; __L118:
	ld.w	%r10,%r0
	and	%r10,0x10	; 	xand	%r10,%r10,0x00000010
	jreq	__LX120		; 	xjreq	__L120
	ld.w	%r12,0x4	; 	xld.w	%r12,0x00000004		; 4
	ext	D12_ReadLastTransactionStatus@rm	; 	xcall	D12_ReadLastTransactionStatus
	call	D12_ReadLastTransactionStatus@rl
	ext	usb_inf+0x10@ah	; 	xld.w	%r10,[usb_inf+16]
	ext	usb_inf+0x10@al
	ld.w	%r10,[%r8]
	cmp	%r10,0x0
	jreq	__LX120		; 	xjreq	__L120
	call	%r10
__LX120:				; __L120:
	ld.w	%r10,%r0
	ext	0x0		; 	xand	%r10,%r10,0x00000020
	and	%r10,0x20
	jreq	__LX111		; 	xjreq	__L111
	ld.w	%r12,0x5	; 	xld.w	%r12,0x00000005		; 5
	ext	D12_ReadLastTransactionStatus@rm	; 	xcall	D12_ReadLastTransactionStatus
	call	D12_ReadLastTransactionStatus@rl
	ext	usb_inf+0x14@ah	; 	xld.w	%r10,[usb_inf+20]
	ext	usb_inf+0x14@al
	ld.w	%r10,[%r8]
	cmp	%r10,0x0
	jreq	__LX111		; 	xjreq	__L111
	call	%r10
__LX111:				; __L111:
	popn	%r0
	ret
	.align	1
bus_reset:
;	.frame	%sp,4,$31		# vars= 0, regs= 1/0, args= 0, extra= 0
;	.mask	0x80000000,-4
;	.fmask	0x00000000,0
	ext	usb_inf+0x4@ah	; 	xld.w	%r10,[usb_inf+4]
	ext	usb_inf+0x4@al
	ld.w	%r10,[%r8]
	cmp	%r10,0x0
	jreq	__LX125		; 	xjreq	__L125
	call	%r10
__LX125:				; __L125:
	ret
	.align	1
ep0_rxdone:
;	.frame	%sp,36,$31		# vars= 16, regs= 5/0, args= 0, extra= 0
;	.mask	0x800f0000,-4
;	.fmask	0x00000000,0
	pushn	%r3
	sub	%sp,0x4		; 	xsub	%sp,%sp,16
	ld.w	%r1,%r12
	ld.w	%r12,0x0
	ld.w	%r13,%sp
	ld.w	%r14,0x10	; 	xld.w	%r14,0x00000010		; 16
	ext	D12_ReadBuffer@rm	; 	xcall	D12_ReadBuffer
	call	D12_ReadBuffer@rl
	ld.w	%r0,%r10
	cmp	%r0,0x3f	; 	xcmp	%r0,-1
	jreq	__LX126		; 	xjreq	__L126
	ext	0x0		; 	xand	%r1,%r1,0x00000020
	and	%r1,0x20
	jreq	__LX128		; 	xjreq	__L128
	ext	control_xfer+0x0@h	; 	xld.w	%r1,control_xfer
	ext	control_xfer+0x0@m
	ld.w	%r1,control_xfer+0x0@l
	ld.w	%r15,0x0
	ld.w	[%r1],%r15	; 	xld.w	[%r1],%r15
	cmp	%r0,0x8		; 	xcmp	%r0,8
	jrne	__LX140		; 	xjrne	__L140
	ext	0x4		; 	xadd	%r0,%r1,4
	add	%r0,%r1
	ld.w	%r11,%r0
	ld.w	%r10,%sp
	ld.w	%r12,[%r10]+
	ld.w	%r13,[%r10]+
	ld.w	[%r11]+,%r12
	ld.w	[%r11]+,%r13
	ld.w	%r12,0x0
	ext	D12_AcknowledgeSetup@rm	; 	xcall	D12_AcknowledgeSetup
	call	D12_AcknowledgeSetup@rl
	ld.w	%r12,0x1	; 	xld.w	%r12,0x00000001		; 1
	ext	D12_AcknowledgeSetup@rm	; 	xcall	D12_AcknowledgeSetup
	call	D12_AcknowledgeSetup@rl
	ld.w	%r12,0x0
	ext	D12_ClearBuffer@rm	; 	xcall	D12_ClearBuffer
	call	D12_ClearBuffer@rl
	ext	0xa		; 	xld.uh	%r13,[%r1+10]
	ld.uh	%r13,[%r1]
	ext	0xc		; 	xld.w	[%r1+12],%r13
	ld.w	[%r1],%r13
	ld.w	%r15,0x0
	ext	0x10		; 	xld.w	[%r1+16],%r15
	ld.w	[%r1],%r15
	btst	[%r0],0x7	; 	xbtst	[%r0],0x7
	jreq	__LX130		; 	xjreq	__L130
	ld.w	%r12,%r0
	ld.w	%r13,0x0
	jp	__LX141		; 	xjp	__L141
__LX130:				; __L130:
	cmp	%r13,0x0
	jrne	__LX132		; 	xjrne	__L132
	ld.w	%r12,%r0
__LX141:				; __L141:
	ld.w	%r14,%r13
	call	device_request	; 	xcall	device_request
	jp	__LX126		; 	xjp	__L126
__LX132:				; __L132:
	cmp	%r13,0x10	; 	xcmp	%r13,16
	jrgt	__LX140		; 	xjrgt	__L140
	ld.w	%r10,0x1	; 	xld.w	%r10,0x00000001		; 1
	ld.w	[%r1],%r10	; 	xld.w	[%r1],%r10
	jp	__LX126		; 	xjp	__L126
__LX128:				; __L128:
	ext	control_xfer+0x0@h	; 	xld.w	%r3,control_xfer
	ext	control_xfer+0x0@m
	ld.w	%r3,control_xfer+0x0@l
	ld.w	%r10,[%r3]	; 	xld.w	%r10,[%r3]
	cmp	%r10,0x1	; 	xcmp	%r10,1
	jrne	__LX136		; 	xjrne	__L136
	ext	0x10		; 	xadd	%r2,%r3,16
	add	%r2,%r3
	ld.w	%r10,[%r2]	; 	xld.w	%r10,[%r2]
	add	%r10,%r0
	ext	control_xfer+0xc@ah	; 	xld.w	%r11,[control_xfer+12]
	ext	control_xfer+0xc@al
	ld.w	%r11,[%r8]
	cmp	%r10,%r11
	jrle	__LX137		; 	xjrle	__L137
__LX140:				; __L140:
	ext	usb_ep0_stall@rm	; 	xcall	usb_ep0_stall
	call	usb_ep0_stall@rl
	jp	__LX126		; 	xjp	__L126
__LX137:				; __L137:
	ext	control_xfer+0x10@ah	; 	xld.w	%r12,[control_xfer+16]
	ext	control_xfer+0x10@al
	ld.w	%r12,[%r8]
	ext	control_xfer+0x14@h	; 	xld.w	%r15,control_xfer+20
	ext	control_xfer+0x14@m
	ld.w	%r15,control_xfer+0x14@l
	add	%r12,%r15
	ld.w	%r13,%sp
	ld.w	%r14,%r0
	ext	memcpy@rm	; 	xcall	memcpy
	call	memcpy@rl
	ld.w	%r10,[%r2]	; 	xld.w	%r10,[%r2]
	add	%r10,%r0
	ld.w	[%r2],%r10	; 	xld.w	[%r2],%r10
	ld.w	%r12,%r1
	ext	D12_ClearBuffer@rm	; 	xcall	D12_ClearBuffer
	call	D12_ClearBuffer@rl
	ld.w	%r14,[%r2]	; 	xld.w	%r14,[%r2]
	ext	control_xfer+0xc@ah	; 	xld.w	%r10,[control_xfer+12]
	ext	control_xfer+0xc@al
	ld.w	%r10,[%r8]
	cmp	%r14,%r10
	jrne	__LX126		; 	xjrne	__L126
	ld.w	[%r3],%r1	; 	xld.w	[%r3],%r1
	ext	0x4		; 	xadd	%r12,%r3,4
	add	%r12,%r3
	ext	control_xfer+0x14@h	; 	xld.w	%r13,control_xfer+20
	ext	control_xfer+0x14@m
	ld.w	%r13,control_xfer+0x14@l
	call	device_request	; 	xcall	device_request
	jp	__LX126		; 	xjp	__L126
__LX136:				; __L136:
	ld.w	%r12,%r1
	ext	D12_ClearBuffer@rm	; 	xcall	D12_ClearBuffer
	call	D12_ClearBuffer@rl
__LX126:				; __L126:
	add	%sp,0x4		; 	xadd	%sp,%sp,16
	popn	%r3
	ret
	.align	1
ep0_txdone:
;	.frame	%sp,16,$31		# vars= 0, regs= 4/0, args= 0, extra= 0
;	.mask	0x80070000,-4
;	.fmask	0x00000000,0
	pushn	%r2
	ext	control_xfer+0x0@h	; 	xld.w	%r1,control_xfer
	ext	control_xfer+0x0@m
	ld.w	%r1,control_xfer+0x0@l
	ld.w	%r10,[%r1]	; 	xld.w	%r10,[%r1]
	cmp	%r10,0x2	; 	xcmp	%r10,2
	jrne	__LX146		; 	xjrne	__L146
	ext	0x10		; 	xadd	%r2,%r1,16
	add	%r2,%r1
	ext	0xc		; 	xld.w	%r10,[%r1+12]
	ld.w	%r10,[%r1]
	ld.w	%r11,[%r2]	; 	xld.w	%r11,[%r2]
	ld.w	%r0,%r10
	sub	%r0,%r11
	cmp	%r0,0x10	; 	xcmp	%r0,16
	jrle	__LX144		; 	xjrle	__L144
	ld.w	%r0,0x10	; 	xld.w	%r0,0x00000010		; 16
__LX144:				; __L144:
	ext	0x24		; 	xld.w	%r13,[%r1+36]
	ld.w	%r13,[%r1]
	ld.w	%r12,0x1	; 	xld.w	%r12,0x00000001		; 1
	add	%r13,%r11
	ld.w	%r14,%r0
	ext	D12_WriteBuffer@rm	; 	xcall	D12_WriteBuffer
	call	D12_WriteBuffer@rl
	ld.w	%r12,0x1	; 	xld.w	%r12,0x00000001		; 1
	ext	D12_ValidateBuffer@rm	; 	xcall	D12_ValidateBuffer
	call	D12_ValidateBuffer@rl
	ld.w	%r10,[%r2]	; 	xld.w	%r10,[%r2]
	add	%r10,%r0
	ld.w	[%r2],%r10	; 	xld.w	[%r2],%r10
	cmp	%r0,0xf		; 	xcmp	%r0,15
	jrgt	__LX146		; 	xjrgt	__L146
	ld.w	%r15,0x0
	ld.w	[%r1],%r15	; 	xld.w	[%r1],%r15
__LX146:				; __L146:
	popn	%r2
	ret
	.align	1
device_request:
;	.frame	%sp,4,$31		# vars= 0, regs= 1/0, args= 0, extra= 0
;	.mask	0x80000000,-4
;	.fmask	0x00000000,0
	ld.w	%r11,0x0
	ld.ub	%r10,[%r12]	; 	xld.ub	%r10,[%r12]
	ext	0x1		; 	xand	%r10,%r10,0x00000060
	and	%r10,0x20
	ext	0x0		; 	xld.w	%r15,0x00000020		; 32
	ld.w	%r15,0x20
	cmp	%r10,%r15
	jreq	__LX164		; 	xjreq	__L164
	jrgt	__LX168		; 	xjrgt	__L168
	cmp	%r10,0x0
	jreq	__LX149		; 	xjreq	__L149
	jp	__L148		; 	xjp	__L148
__LX168:				; __L168:
	ext	0x1		; 	xcmp	%r10,64
	cmp	%r10,0x0
	jreq	__LX165		; 	xjreq	__L165
	jp	__L148		; 	xjp	__L148
__LX149:				; __L149:
	ext	0x1		; 	xld.ub	%r10,[%r12+1]
	ld.ub	%r10,[%r12]
	cmp	%r10,0xc	; 	xcmp	%r10,12
	jrugt	__L148		; 	xjrugt	__L148
	sll	%r10,0x2	; 	xsll	%r10,2
	ext	__L162+0x0@h	; 	xld.w	%r10,[%r10+__L162]
	ext	__L162+0x0@m
	ld.w	%r9,__L162+0x0@l
	add	%r9,%r10
	ld.w	%r10,[%r9]
	jp	%r10
	.code
	.align	2
__L162:
	.word	__L151
	.word	__L152
	.word	__L148
	.word	__L153
	.word	__L148
	.word	__L154
	.word	__L155
	.word	__L156
	.word	__L157
	.word	__L158
	.word	__L159
	.word	__L160
	.word	__L161
	.code
__L151:
	ext	usb_inf+0x18@ah	; 	xld.w	%r11,[usb_inf+24]
	ext	usb_inf+0x18@al
	ld.w	%r11,[%r8]
	jp	__L148		; 	xjp	__L148
__L152:
	ext	usb_inf+0x1c@ah	; 	xld.w	%r11,[usb_inf+28]
	ext	usb_inf+0x1c@al
	ld.w	%r11,[%r8]
	jp	__L148		; 	xjp	__L148
__L153:
	ext	usb_inf+0x20@ah	; 	xld.w	%r11,[usb_inf+32]
	ext	usb_inf+0x20@al
	ld.w	%r11,[%r8]
	jp	__L148		; 	xjp	__L148
__L154:
	ext	usb_inf+0x24@ah	; 	xld.w	%r11,[usb_inf+36]
	ext	usb_inf+0x24@al
	ld.w	%r11,[%r8]
	jp	__L148		; 	xjp	__L148
__L155:
	ext	usb_inf+0x28@ah	; 	xld.w	%r11,[usb_inf+40]
	ext	usb_inf+0x28@al
	ld.w	%r11,[%r8]
	jp	__L148		; 	xjp	__L148
__L156:
	ext	usb_inf+0x2c@ah	; 	xld.w	%r11,[usb_inf+44]
	ext	usb_inf+0x2c@al
	ld.w	%r11,[%r8]
	jp	__L148		; 	xjp	__L148
__L157:
	ext	usb_inf+0x30@ah	; 	xld.w	%r11,[usb_inf+48]
	ext	usb_inf+0x30@al
	ld.w	%r11,[%r8]
	jp	__L148		; 	xjp	__L148
__L158:
	ext	usb_inf+0x34@ah	; 	xld.w	%r11,[usb_inf+52]
	ext	usb_inf+0x34@al
	ld.w	%r11,[%r8]
	jp	__L148		; 	xjp	__L148
__L159:
	ext	usb_inf+0x38@ah	; 	xld.w	%r11,[usb_inf+56]
	ext	usb_inf+0x38@al
	ld.w	%r11,[%r8]
	jp	__L148		; 	xjp	__L148
__L160:
	ext	usb_inf+0x3c@ah	; 	xld.w	%r11,[usb_inf+60]
	ext	usb_inf+0x3c@al
	ld.w	%r11,[%r8]
	jp	__L148		; 	xjp	__L148
__L161:
	ext	usb_inf+0x40@ah	; 	xld.w	%r11,[usb_inf+64]
	ext	usb_inf+0x40@al
	ld.w	%r11,[%r8]
	jp	__L148		; 	xjp	__L148
__LX164:				; __L164:
	ext	usb_inf+0x44@ah	; 	xld.w	%r11,[usb_inf+68]
	ext	usb_inf+0x44@al
	ld.w	%r11,[%r8]
	jp	__L148		; 	xjp	__L148
__LX165:				; __L165:
	ext	usb_inf+0x48@ah	; 	xld.w	%r11,[usb_inf+72]
	ext	usb_inf+0x48@al
	ld.w	%r11,[%r8]
__L148:
	cmp	%r11,0x0
	jreq	__LX169		; 	xjreq	__L169
	call	%r11
	jp	__LX170		; 	xjp	__L170
__LX169:				; __L169:
	ext	usb_ep0_stall@rm	; 	xcall	usb_ep0_stall
	call	usb_ep0_stall@rl
__LX170:				; __L170:
	ret
	.code
	.align	2
__LXC0:				; __LC0:
	.ascii	"clipusb.$(%d)\000"
	.code
	.align	1
	.global	usb_start
usb_start:
;	.frame	%sp,24,$31		# vars= 4, regs= 3/0, args= 8, extra= 0
;	.mask	0x80030000,-4
;	.fmask	0x00000000,0
	pushn	%r1
	sub	%sp,0x3		; 	xsub	%sp,%sp,12
	ld.w	%r1,%r12
	call	usb_stop	; 	xcall	usb_stop
	ext	pceUSBDisconnect@rm	; 	xcall	pceUSBDisconnect
	call	pceUSBDisconnect@rl
	ext	pceTimerGetCount@rm	; 	xcall	pceTimerGetCount
	call	pceTimerGetCount@rl
	ld.w	%r0,%r10
__LX178:				; __L178:
	ext	pceTimerGetCount@rm	; 	xcall	pceTimerGetCount
	call	pceTimerGetCount@rl
	sub	%r10,%r0
	ext	0x7		; 	xcmp	%r10,499
	cmp	%r10,0x33
	jrule	__LX178		; 	xjrule	__L178
	ext	usb_inf+0x0@h	; 	xld.w	%r0,usb_inf
	ext	usb_inf+0x0@m
	ld.w	%r0,usb_inf+0x0@l
	ld.w	%r12,%r0
	ld.w	%r13,%r1
	ext	0x1		; 	xld.w	%r14,0x0000004c		; 76
	ld.w	%r14,0xc
	ext	memcpy@rm	; 	xcall	memcpy
	call	memcpy@rl
	ext	0x1c		; 	xadd	%r11,%r0,28
	add	%r11,%r0
	ld.w	%r10,[%r11]	; 	xld.w	%r10,[%r11]
	cmp	%r10,0x0
	jrne	__LX181		; 	xjrne	__L181
	ext	clear_feature+0x0@h	; 	xld.w	%r10,clear_feature
	ext	clear_feature+0x0@m
	ld.w	%r10,clear_feature+0x0@l
	ld.w	[%r11],%r10	; 	xld.w	[%r11],%r10
__LX181:				; __L181:
	ext	0x24		; 	xadd	%r11,%r0,36
	add	%r11,%r0
	ld.w	%r10,[%r11]	; 	xld.w	%r10,[%r11]
	cmp	%r10,0x0
	jrne	__LX182		; 	xjrne	__L182
	ext	set_address+0x0@h	; 	xld.w	%r10,set_address
	ext	set_address+0x0@m
	ld.w	%r10,set_address+0x0@l
	ld.w	[%r11],%r10	; 	xld.w	[%r11],%r10
__LX182:				; __L182:
	ld.w	%r12,0x11	; 	xld.w	%r12,0x00000011		; 17
	ext	usb_isr+0x0@h	; 	xld.w	%r13,usb_isr
	ext	usb_isr+0x0@m
	ld.w	%r13,usb_isr+0x0@l
	ext	pceVectorSetTrap@rm	; 	xcall	pceVectorSetTrap
	call	pceVectorSetTrap@rl
	ext	old_usb_isr+0x0@ah	; 	xld.w	[old_usb_isr],%r10
	ext	old_usb_isr+0x0@al
	ld.w	[%r8],%r10
	ld.w	%r12,%sp	; 	xadd	%r12,%sp,8
	add	%r12,0x8
	ext	pceSyncEnterCriticalSection@rm	; 	xcall	pceSyncEnterCriticalSection
	call	pceSyncEnterCriticalSection@rl
	ld.w	%r12,[%r0]	; 	xld.w	%r12,[%r0]
	or	%r12,0x14	; 	xoor	%r12,%r12,0x00000014
	ext	0x1		; 	xld.w	%r13,0x00000040		; 64
	ld.w	%r13,0x0
	ext	D12_SetMode@rm	; 	xcall	D12_SetMode
	call	D12_SetMode@rl
	ld.w	%r12,%sp	; 	xadd	%r12,%sp,8
	add	%r12,0x8
	ext	pceSyncLeaveCriticalSection@rm	; 	xcall	pceSyncLeaveCriticalSection
	call	pceSyncLeaveCriticalSection@rl
	add	%sp,0x3		; 	xadd	%sp,%sp,12
	popn	%r1
	ret
	.align	1
	.global	usb_stop
usb_stop:
;	.frame	%sp,12,$31		# vars= 4, regs= 2/0, args= 0, extra= 0
;	.mask	0x80010000,-4
;	.fmask	0x00000000,0
	pushn	%r0
	sub	%sp,0x1		; 	xsub	%sp,%sp,4
	ext	old_usb_isr+0x0@ah	; 	xld.w	%r10,[old_usb_isr]
	ext	old_usb_isr+0x0@al
	ld.w	%r10,[%r8]
	cmp	%r10,0x0
	jreq	__LX187		; 	xjreq	__L187
	ld.w	%r12,%sp
	ext	pceSyncEnterCriticalSection@rm	; 	xcall	pceSyncEnterCriticalSection
	call	pceSyncEnterCriticalSection@rl
	ld.w	%r12,0x0
	ext	0x1		; 	xld.w	%r13,0x00000040		; 64
	ld.w	%r13,0x0
	ext	D12_SetMode@rm	; 	xcall	D12_SetMode
	call	D12_SetMode@rl
	ld.w	%r12,%sp
	ext	pceSyncLeaveCriticalSection@rm	; 	xcall	pceSyncLeaveCriticalSection
	call	pceSyncLeaveCriticalSection@rl
	ext	pceTimerGetCount@rm	; 	xcall	pceTimerGetCount
	call	pceTimerGetCount@rl
	ld.w	%r0,%r10
__LX193:				; __L193:
	ext	pceTimerGetCount@rm	; 	xcall	pceTimerGetCount
	call	pceTimerGetCount@rl
	sub	%r10,%r0
	ext	0x7		; 	xcmp	%r10,499
	cmp	%r10,0x33
	jrule	__LX193		; 	xjrule	__L193
	ld.w	%r12,0x11	; 	xld.w	%r12,0x00000011		; 17
	ext	old_usb_isr+0x0@ah	; 	xld.w	%r13,[old_usb_isr]
	ext	old_usb_isr+0x0@al
	ld.w	%r13,[%r8]
	ext	pceVectorSetTrap@rm	; 	xcall	pceVectorSetTrap
	call	pceVectorSetTrap@rl
	ld.w	%r11,0x0
	ext	old_usb_isr+0x0@ah	; 	xld.w	[old_usb_isr],%r11
	ext	old_usb_isr+0x0@al
	ld.w	[%r8],%r11
	ext	pceUSBReconnect@rm	; 	xcall	pceUSBReconnect
	call	pceUSBReconnect@rl
__LX187:				; __L187:
	add	%sp,0x1		; 	xadd	%sp,%sp,4
	popn	%r0
	ret
	.align	1
	.global	usb_ep0_tx
usb_ep0_tx:
;	.frame	%sp,4,$31		# vars= 0, regs= 1/0, args= 0, extra= 0
;	.mask	0x80000000,-4
;	.fmask	0x00000000,0
	ext	control_xfer+0x4@h	; 	xld.w	%r11,control_xfer+4
	ext	control_xfer+0x4@m
	ld.w	%r11,control_xfer+0x4@l
	btst	[%r11],0x7	; 	xbtst	[%r11],0x7
	jreq	__LX197		; 	xjreq	__L197
	ext	0x6		; 	xld.uh	%r10,[%r11+6]
	ld.uh	%r10,[%r11]
	cmp	%r13,%r10
	jrle	__LX197		; 	xjrle	__L197
	ld.w	%r13,%r10
__LX197:				; __L197:
	ext	control_xfer+0xc@h	; 	xld.w	%r10,control_xfer+12
	ext	control_xfer+0xc@m
	ld.w	%r10,control_xfer+0xc@l
	ld.w	[%r10],%r13	; 	xld.w	[%r10],%r13
	ld.w	%r14,0x0
	ext	0x4		; 	xld.w	[%r10+4],%r14
	ld.w	[%r10],%r14
	ext	0x18		; 	xld.w	[%r10+24],%r12
	ld.w	[%r10],%r12
	sub	%r10,0xc	; 	xsub	%r10,%r10,12
	ld.w	%r12,0x2	; 	xld.w	%r12,0x00000002		; 2
	ld.w	[%r10],%r12	; 	xld.w	[%r10],%r12
	ext	ep0_txdone@rm	; 	xcall	ep0_txdone
	call	ep0_txdone@rl
	ret
	.align	1
	.global	usb_ep0_stall
usb_ep0_stall:
;	.frame	%sp,4,$31		# vars= 0, regs= 1/0, args= 0, extra= 0
;	.mask	0x80000000,-4
;	.fmask	0x00000000,0
	ld.w	%r12,0x0
	ld.w	%r13,0x1	; 	xld.w	%r13,0x00000001		; 1
	ext	D12_SetEndpointStatus@rm	; 	xcall	D12_SetEndpointStatus
	call	D12_SetEndpointStatus@rl
	ld.w	%r12,0x1	; 	xld.w	%r12,0x00000001		; 1
	ld.w	%r13,%r12
	ext	D12_SetEndpointStatus@rm	; 	xcall	D12_SetEndpointStatus
	call	D12_SetEndpointStatus@rl
	ret
	.align	1
device_request_endpoint:
;	.frame	%sp,4,$31		# vars= 0, regs= 1/0, args= 0, extra= 0
;	.mask	0x80000000,-4
;	.fmask	0x00000000,0
	ext	0x4		; 	xld.ub	%r11,[%r12+4]
	ld.ub	%r11,[%r12]
	ext	0x5		; 	xld.ub	%r10,[%r12+5]
	ld.ub	%r10,[%r12]
	sll	%r10,0x8	; 	xsll	%r10,8
	or	%r10,%r11
	cmp	%r10,0x2	; 	xcmp	%r10,2
	jreq	__LX201		; 	xjreq	__L201
	jrgt	__LX210		; 	xjrgt	__L210
	cmp	%r10,0x0
	jreq	__LX201		; 	xjreq	__L201
	cmp	%r10,0x1	; 	xcmp	%r10,1
	jreq	__LX201		; 	xjreq	__L201
	jp	__LX208		; 	xjp	__L208
__LX210:				; __L210:
	ext	0x2		; 	xld.w	%r11,0x00000081		; 129
	ld.w	%r11,0x1
	cmp	%r10,%r11
	jreq	__LX206		; 	xjreq	__L206
	jrgt	__LX211		; 	xjrgt	__L211
	ext	0x2		; 	xcmp	%r10,128
	cmp	%r10,0x0
	jreq	__LX205		; 	xjreq	__L205
	jp	__LX208		; 	xjp	__L208
__LX211:				; __L211:
	ext	0x2		; 	xcmp	%r10,130
	cmp	%r10,0x2
	jreq	__LX207		; 	xjreq	__L207
	jp	__LX208		; 	xjp	__L208
__LX205:				; __L205:
	ld.w	%r10,0x3	; 	xld.w	%r10,0x00000003		; 3
	jp	__LX201		; 	xjp	__L201
__LX206:				; __L206:
	ld.w	%r10,0x4	; 	xld.w	%r10,0x00000004		; 4
	jp	__LX201		; 	xjp	__L201
__LX207:				; __L207:
	ld.w	%r10,0x5	; 	xld.w	%r10,0x00000005		; 5
	jp	__LX201		; 	xjp	__L201
__LX208:				; __L208:
	ld.w	%r10,0x3f	; 	xld.w	%r10,-1			; 0xffffffff
__LX201:				; __L201:
	ret
	.align	1
clear_feature:
;	.frame	%sp,8,$31		# vars= 0, regs= 2/0, args= 0, extra= 0
;	.mask	0x80010000,-4
;	.fmask	0x00000000,0
	pushn	%r0
	ld.ub	%r10,[%r12]	; 	xld.ub	%r10,[%r12]
	and	%r10,0x1f	; 	xand	%r10,%r10,0x0000001f
	cmp	%r10,0x1	; 	xcmp	%r10,1
	jreq	__LX217		; 	xjreq	__L217
	jrle	__LX217		; 	xjrle	__L217
	cmp	%r10,0x2	; 	xcmp	%r10,2
	jrne	__LX217		; 	xjrne	__L217
	ext	0x2		; 	xld.ub	%r11,[%r12+2]
	ld.ub	%r11,[%r12]
	ext	0x3		; 	xld.ub	%r10,[%r12+3]
	ld.ub	%r10,[%r12]
	sll	%r10,0x8	; 	xsll	%r10,8
	ld.w	%r0,%r10
	or	%r0,%r11
	jrne	__LX217		; 	xjrne	__L217
	call	device_request_endpoint	; 	xcall	device_request_endpoint
	cmp	%r10,0x0
	jrlt	__LX217		; 	xjrlt	__L217
	ld.w	%r12,%r10
	ld.w	%r13,%r0
	ext	D12_SetEndpointStatus@rm	; 	xcall	D12_SetEndpointStatus
	call	D12_SetEndpointStatus@rl
	ld.w	%r12,%r0
	ld.w	%r13,%r12
	call	usb_ep0_tx	; 	xcall	usb_ep0_tx
	jp	__LX212		; 	xjp	__L212
__LX217:				; __L217:
	call	usb_ep0_stall	; 	xcall	usb_ep0_stall
__LX212:				; __L212:
	popn	%r0
	ret
	.align	1
set_address:
;	.frame	%sp,4,$31		# vars= 0, regs= 1/0, args= 0, extra= 0
;	.mask	0x80000000,-4
;	.fmask	0x00000000,0
	ext	0x2		; 	xld.ub	%r10,[%r12+2]
	ld.ub	%r10,[%r12]
	ext	0x3		; 	xld.ub	%r12,[%r12+3]
	ld.ub	%r12,[%r12]
	sll	%r12,0x8	; 	xsll	%r12,8
	or	%r12,%r10
	ld.w	%r13,0x1	; 	xld.w	%r13,0x00000001		; 1
	ext	D12_SetAddressEnable@rm	; 	xcall	D12_SetAddressEnable
	call	D12_SetAddressEnable@rl
	ld.w	%r12,0x0
	ld.w	%r13,%r12
	call	usb_ep0_tx	; 	xcall	usb_ep0_tx
	ret

	.lcomm	old_usb_isr 4

	.lcomm	usb_inf 76

	.lcomm	control_xfer 40
