
;  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	2
device_desc:
	.byte	18
	.byte	1
	.half	272
	.space	3
	.byte	16
	.half	4292
	.half	60000
	.half	256
	.byte	1
	.byte	2
	.space	1
	.byte	1
	.align	2
config_desc:
	.byte	9
	.byte	2
	.half	32
	.byte	1
	.byte	1
	.space	1
	.byte	128
	.byte	50
	.align	2
interface_desc:
	.byte	9
	.byte	4
	.space	2
	.byte	2
	.byte	255
	.space	2
	.byte	2
	.align	2
endpoint_desc_ep2in:
	.byte	7
	.byte	5
	.byte	130
	.byte	2
	.half	64
	.space	1
	.align	2
endpoint_desc_ep2out:
	.byte	7
	.byte	5
	.byte	2
	.byte	2
	.half	64
	.space	1
	.align	2
string_desc:
	.word	__LC0
	.word	__LC1
	.word	__LC2
	.align	2
__LC2:
	.ascii	"J\003C\000P\0002\0001\0000\0002\000 \000U\000S\000B\000 "
	.ascii	"\000t\000o\000 \000U\000A\000R\000T\000 \000B\000r\000i\000"
	.ascii	"d\000g\000e\000 \000C\000o\000n\000t\000r\000o\000l\000l"
	.ascii	"\000e\000r\000\000"
	.align	2
__LC1:
	.ascii	"\032\003S\000i\000l\000i\000c\000o\000n\000 \000L\000a\000"
	.ascii	"b\000s\000\000"
	.align	2
__LC0:
	.ascii	"\004\003\t\004\000"
	.align	2
usb_inf:
	.word	0
	.space	12
	.word	ep2_rxdone
	.word	ep2_txdone
	.space	16
	.word	get_descriptor
	.space	8
	.word	set_configuration
	.space	4
	.word	set_interface
	.space	8
	.word	vendor_request

	.lcomm	tmpbuf.66 32
	.code
	.align	1
get_descriptor:
;	.frame	%sp,12,$31		# vars= 0, regs= 3/0, args= 0, extra= 0
;	.mask	0x80030000,-4
;	.fmask	0x00000000,0
	pushn	%r1
	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
	or	%r10,%r11
	ld.w	%r11,%r10
	srl	%r11,0x8	; 	xsrl	%r11,8
	ld.ub	%r1,%r10
	cmp	%r11,0x2	; 	xcmp	%r11,2
	jreq	__LX73		; 	xjreq	__L73
	jrgt	__LX82		; 	xjrgt	__L82
	cmp	%r11,0x1	; 	xcmp	%r11,1
	jreq	__LX72		; 	xjreq	__L72
	jp	__LX71		; 	xjp	__L71
__LX82:				; __L82:
	cmp	%r11,0x3	; 	xcmp	%r11,3
	jreq	__LX78		; 	xjreq	__L78
	jp	__LX71		; 	xjp	__L71
__LX72:				; __L72:
	ext	device_desc+0x0@h	; 	xld.w	%r12,device_desc
	ext	device_desc+0x0@m
	ld.w	%r12,device_desc+0x0@l
	ld.w	%r13,0x12	; 	xld.w	%r13,0x00000012		; 18
	ext	usb_ep0_tx@rm	; 	xcall	usb_ep0_tx
	call	usb_ep0_tx@rl
	jp	__LX70		; 	xjp	__L70
__LX73:				; __L73:
	cmp	%r1,0x0
	jrne	__LX71		; 	xjrne	__L71
	ext	tmpbuf.66+0x0@h	; 	xld.w	%r0,tmpbuf.66
	ext	tmpbuf.66+0x0@m
	ld.w	%r0,tmpbuf.66+0x0@l
	ld.w	%r12,%r0
	ext	config_desc+0x0@h	; 	xld.w	%r13,config_desc
	ext	config_desc+0x0@m
	ld.w	%r13,config_desc+0x0@l
	ld.w	%r14,0x9	; 	xld.w	%r14,0x00000009		; 9
	ext	memcpy@rm	; 	xcall	memcpy
	call	memcpy@rl
	add	%r1,0x9		; 	xadd	%r1,%r1,9
	ld.w	%r12,%r0
	add	%r12,%r1
	ext	interface_desc+0x0@h	; 	xld.w	%r13,interface_desc
	ext	interface_desc+0x0@m
	ld.w	%r13,interface_desc+0x0@l
	ld.w	%r14,%r1
	ext	memcpy@rm	; 	xcall	memcpy
	call	memcpy@rl
	ext	0x12		; 	xadd	%r12,%r0,18
	add	%r12,%r0
	ext	endpoint_desc_ep2in+0x0@h	; 	xld.w	%r13,endpoint_desc_ep2in
	ext	endpoint_desc_ep2in+0x0@m
	ld.w	%r13,endpoint_desc_ep2in+0x0@l
	ld.w	%r14,0x7	; 	xld.w	%r14,0x00000007		; 7
	ext	memcpy@rm	; 	xcall	memcpy
	call	memcpy@rl
	ld.w	%r1,0x19	; 	xld.w	%r1,0x00000019		; 25
	ld.w	%r12,%r0
	add	%r12,%r1
	ext	endpoint_desc_ep2out+0x0@h	; 	xld.w	%r13,endpoint_desc_ep2out
	ext	endpoint_desc_ep2out+0x0@m
	ld.w	%r13,endpoint_desc_ep2out+0x0@l
	ld.w	%r14,0x7	; 	xld.w	%r14,0x00000007		; 7
	ext	memcpy@rm	; 	xcall	memcpy
	call	memcpy@rl
	ld.w	%r12,%r0
	ext	0x7		; 	xadd	%r13,%r1,7
	add	%r13,%r1
	ext	usb_ep0_tx@rm	; 	xcall	usb_ep0_tx
	call	usb_ep0_tx@rl
	jp	__LX70		; 	xjp	__L70
__LX78:				; __L78:
	cmp	%r1,0x2		; 	xcmp	%r1,2
	jrgt	__LX71		; 	xjrgt	__L71
	ld.w	%r10,%r1
	sll	%r10,0x2	; 	xsll	%r10,2
	ext	string_desc+0x0@h	; 	xld.w	%r12,[%r10+string_desc]
	ext	string_desc+0x0@m
	ld.w	%r9,string_desc+0x0@l
	add	%r9,%r10
	ld.w	%r12,[%r9]
	ld.b	%r13,[%r12]	; 	xld.b	%r13,[%r12]
	ext	usb_ep0_tx@rm	; 	xcall	usb_ep0_tx
	call	usb_ep0_tx@rl
	jp	__LX70		; 	xjp	__L70
__LX71:				; __L71:
	ext	usb_ep0_stall@rm	; 	xcall	usb_ep0_stall
	call	usb_ep0_stall@rl
__LX70:				; __L70:
	popn	%r1
	ret
	.align	1
set_configuration:
;	.frame	%sp,4,$31		# vars= 0, regs= 1/0, args= 0, extra= 0
;	.mask	0x80000000,-4
;	.fmask	0x00000000,0
	ld.w	%r13,0x0
	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
	or	%r10,%r11
	cmp	%r10,0x1	; 	xcmp	%r10,1
	jrne	__LX84		; 	xjrne	__L84
	ld.w	%r13,%r10
__LX84:				; __L84:
	ld.w	%r12,%r13
	ext	D12_SetEndpointEnable@rm	; 	xcall	D12_SetEndpointEnable
	call	D12_SetEndpointEnable@rl
	ld.w	%r12,0x0
	ld.w	%r13,%r12
	ext	usb_ep0_tx@rm	; 	xcall	usb_ep0_tx
	call	usb_ep0_tx@rl
	ret
	.align	1
set_interface:
;	.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,%r12
	ext	usb_ep0_tx@rm	; 	xcall	usb_ep0_tx
	call	usb_ep0_tx@rl
	ret
	.data
	.align	1
cp210x_baudrate:
	.half	384
	.align	2
cp210x_bits:
	.byte	0x0
	.byte	0x8
	.code
	.align	1
vendor_request:
;	.frame	%sp,8,$31		# vars= 4, regs= 1/0, args= 0, extra= 0
;	.mask	0x80000000,-4
;	.fmask	0x00000000,0
	sub	%sp,0x1		; 	xsub	%sp,%sp,4
	ld.ub	%r10,[%r12]	; 	xld.ub	%r10,[%r12]
	ext	0x1		; 	xcmp	%r10,65
	cmp	%r10,0x1
	jreq	__LX88		; 	xjreq	__L88
	ext	0x3		; 	xcmp	%r10,193
	cmp	%r10,0x1
	ext	__LX101@rm	; 	xjreq	__L101
	jreq	__LX101@rl
	ext	__L87@rm	; 	xjp	__L87
	jp	__L87@rl
__LX88:				; __L88:
	ext	0x1		; 	xld.ub	%r10,[%r12+1]
	ld.ub	%r10,[%r12]
	cmp	%r10,0x19	; 	xcmp	%r10,25
	ext	__L87@rm	; 	xjrugt	__L87
	jrugt	__L87@rl
	sll	%r10,0x2	; 	xsll	%r10,2
	ext	__L99+0x0@h	; 	xld.w	%r10,[%r10+__L99]
	ext	__L99+0x0@m
	ld.w	%r9,__L99+0x0@l
	add	%r9,%r10
	ld.w	%r10,[%r9]
	jp	%r10
	.code
	.align	2
__L99:
	.word	__L90
	.word	__L91
	.word	__L87
	.word	__L92
	.word	__L87
	.word	__L93
	.word	__L87
	.word	__L94
	.word	__L87
	.word	__L87
	.word	__L87
	.word	__L87
	.word	__L87
	.word	__L87
	.word	__L87
	.word	__L87
	.word	__L87
	.word	__L87
	.word	__L87
	.word	__L97
	.word	__L87
	.word	__L87
	.word	__L87
	.word	__L87
	.word	__L87
	.word	__L98
	.code
__L90:
	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
	or	%r10,%r11
	ext	cp210x_uart+0x0@ah	; 	xld.h	[cp210x_uart],%r10
	ext	cp210x_uart+0x0@al
	ld.h	[%r8],%r10
	jp	__LX115		; 	xjp	__L115
__L91:
	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
	or	%r10,%r11
	ext	cp210x_baudrate+0x0@ah	; 	xld.h	[cp210x_baudrate],%r10
	ext	cp210x_baudrate+0x0@al
	ld.h	[%r8],%r10
	jp	__LX115		; 	xjp	__L115
__L92:
	ext	cp210x_bits+0x0@h	; 	xld.w	%r11,cp210x_bits
	ext	cp210x_bits+0x0@m
	ld.w	%r11,cp210x_bits+0x0@l
	ext	0x2		; 	xadd	%r10,%r12,2
	add	%r10,%r12
	ld.b	%r12,[%r10]+
	ld.b	%r13,[%r10]+
	ld.b	[%r11]+,%r12
	ld.b	[%r11]+,%r13
	jp	__LX115		; 	xjp	__L115
__L93:
	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
	or	%r10,%r11
	ext	cp210x_break+0x0@ah	; 	xld.h	[cp210x_break],%r10
	ext	cp210x_break+0x0@al
	ld.h	[%r8],%r10
	jp	__LX115		; 	xjp	__L115
__L94:
	ld.w	%r11,%sp
	ext	0x2		; 	xadd	%r10,%r12,2
	add	%r10,%r12
	ld.b	%r12,[%r10]+
	ld.b	%r13,[%r10]+
	ld.b	[%r11]+,%r12
	ld.b	[%r11]+,%r13
	ld.uh	%r12,[%sp+0x0]	; 	xld.uh	%r12,[%sp]
	ld.w	%r10,%r12
	ext	0x4		; 	xand	%r10,%r10,0x00000100
	and	%r10,0x0
	jrne	__LX95		; 	xjrne	__L95
	ext	cp210x_control+0x0@ah	; 	xld.uh	%r11,[cp210x_control]
	ext	cp210x_control+0x0@al
	ld.uh	%r11,[%r8]
	and	%r11,0x1	; 	xand	%r11,%r11,0x00000001
	ld.w	%r10,%r12
	ext	0x3ff		; 	xand	%r10,%r10,0x0000fffe
	and	%r10,0x3e
	or	%r10,%r11
	ld.h	[%sp+0x0],%r10	; 	xld.h	[%sp],%r10
__LX95:				; __L95:
	ld.uh	%r12,[%sp+0x0]	; 	xld.uh	%r12,[%sp]
	ld.w	%r10,%r12
	ext	0x8		; 	xand	%r10,%r10,0x00000200
	and	%r10,0x0
	jrne	__LX96		; 	xjrne	__L96
	ext	cp210x_control+0x0@ah	; 	xld.uh	%r11,[cp210x_control]
	ext	cp210x_control+0x0@al
	ld.uh	%r11,[%r8]
	and	%r11,0x2	; 	xand	%r11,%r11,0x00000002
	ld.w	%r10,%r12
	ext	0x3ff		; 	xand	%r10,%r10,0x0000fffd
	and	%r10,0x3d
	or	%r10,%r11
	ld.h	[%sp+0x0],%r10	; 	xld.h	[%sp],%r10
__LX96:				; __L96:
	ld.uh	%r10,[%sp+0x0]	; 	xld.uh	%r10,[%sp]
	ld.uh	%r11,%r10
	sll	%r11,0x3	; 	xsll	%r11,3
	and	%r11,0x10	; 	xand	%r11,%r11,0x00000010
	ext	0x3ff		; 	xand	%r10,%r10,0x0000ffef
	and	%r10,0x2f
	or	%r10,%r11
	ld.w	%r11,%r10
	and	%r11,0x1	; 	xand	%r11,%r11,0x00000001
	sll	%r11,0x5	; 	xsll	%r11,5
	ext	0x3ff		; 	xand	%r10,%r10,0x0000ffdf
	and	%r10,0x1f
	or	%r10,%r11
	ld.w	%r11,%r10
	and	%r11,0x1	; 	xand	%r11,%r11,0x00000001
	sll	%r11,0x7	; 	xsll	%r11,7
	ext	0x3fd		; 	xand	%r10,%r10,0x0000ff7f
	and	%r10,0x3f
	or	%r10,%r11
	ld.h	[%sp+0x0],%r10	; 	xld.h	[%sp],%r10
	ext	cp210x_control+0x0@ah	; 	xld.h	[cp210x_control],%r10
	ext	cp210x_control+0x0@al
	ld.h	[%r8],%r10
	jp	__LX115		; 	xjp	__L115
__L97:
	ext	cp210x_modemctl+0x0@h	; 	xld.w	%r12,cp210x_modemctl
	ext	cp210x_modemctl+0x0@m
	ld.w	%r12,cp210x_modemctl+0x0@l
	ld.w	%r14,0x10	; 	xld.w	%r14,0x00000010		; 16
	jp	__LX116		; 	xjp	__L116
__L98:
	ext	cp210x_unknown+0x0@h	; 	xld.w	%r12,cp210x_unknown
	ext	cp210x_unknown+0x0@m
	ld.w	%r12,cp210x_unknown+0x0@l
	ld.w	%r14,0x6	; 	xld.w	%r14,0x00000006		; 6
__LX116:				; __L116:
	ext	memcpy@rm	; 	xcall	memcpy
	call	memcpy@rl
__LX115:				; __L115:
	ld.w	%r12,0x0
	ld.w	%r13,%r12
	ext	usb_ep0_tx@rm	; 	xcall	usb_ep0_tx
	call	usb_ep0_tx@rl
	jp	__LX86		; 	xjp	__L86
__LX101:				; __L101:
	ext	0x1		; 	xld.ub	%r10,[%r12+1]
	ld.ub	%r10,[%r12]
	cmp	%r10,0x19	; 	xcmp	%r10,25
	jrugt	__L87		; 	xjrugt	__L87
	sll	%r10,0x2	; 	xsll	%r10,2
	ext	__L111+0x0@h	; 	xld.w	%r10,[%r10+__L111]
	ext	__L111+0x0@m
	ld.w	%r9,__L111+0x0@l
	add	%r9,%r10
	ld.w	%r10,[%r9]
	jp	%r10
	.code
	.align	2
__L111:
	.word	__L103
	.word	__L104
	.word	__L87
	.word	__L105
	.word	__L87
	.word	__L106
	.word	__L87
	.word	__L108
	.word	__L108
	.word	__L87
	.word	__L87
	.word	__L87
	.word	__L87
	.word	__L87
	.word	__L87
	.word	__L87
	.word	__L87
	.word	__L87
	.word	__L87
	.word	__L109
	.word	__L87
	.word	__L87
	.word	__L87
	.word	__L87
	.word	__L87
	.word	__L110
	.code
__L103:
	ext	cp210x_uart+0x0@h	; 	xld.w	%r12,cp210x_uart
	ext	cp210x_uart+0x0@m
	ld.w	%r12,cp210x_uart+0x0@l
	jp	__LX117		; 	xjp	__L117
__L104:
	ext	cp210x_baudrate+0x0@h	; 	xld.w	%r12,cp210x_baudrate
	ext	cp210x_baudrate+0x0@m
	ld.w	%r12,cp210x_baudrate+0x0@l
	jp	__LX117		; 	xjp	__L117
__L105:
	ext	cp210x_bits+0x0@h	; 	xld.w	%r12,cp210x_bits
	ext	cp210x_bits+0x0@m
	ld.w	%r12,cp210x_bits+0x0@l
	jp	__LX117		; 	xjp	__L117
__L106:
	ext	cp210x_break+0x0@h	; 	xld.w	%r12,cp210x_break
	ext	cp210x_break+0x0@m
	ld.w	%r12,cp210x_break+0x0@l
	jp	__LX117		; 	xjp	__L117
__L108:
	ext	cp210x_control+0x0@h	; 	xld.w	%r12,cp210x_control
	ext	cp210x_control+0x0@m
	ld.w	%r12,cp210x_control+0x0@l
__LX117:				; __L117:
	ld.w	%r13,0x2	; 	xld.w	%r13,0x00000002		; 2
	ext	usb_ep0_tx@rm	; 	xcall	usb_ep0_tx
	call	usb_ep0_tx@rl
	jp	__LX86		; 	xjp	__L86
__L109:
	ext	cp210x_modemctl+0x0@h	; 	xld.w	%r12,cp210x_modemctl
	ext	cp210x_modemctl+0x0@m
	ld.w	%r12,cp210x_modemctl+0x0@l
	ld.w	%r13,0x10	; 	xld.w	%r13,0x00000010		; 16
	ext	usb_ep0_tx@rm	; 	xcall	usb_ep0_tx
	call	usb_ep0_tx@rl
	jp	__LX86		; 	xjp	__L86
__L110:
	ext	cp210x_unknown+0x0@h	; 	xld.w	%r12,cp210x_unknown
	ext	cp210x_unknown+0x0@m
	ld.w	%r12,cp210x_unknown+0x0@l
	ld.w	%r13,0x6	; 	xld.w	%r13,0x00000006		; 6
	ext	usb_ep0_tx@rm	; 	xcall	usb_ep0_tx
	call	usb_ep0_tx@rl
	jp	__LX86		; 	xjp	__L86
__L87:
	ext	usb_ep0_stall@rm	; 	xcall	usb_ep0_stall
	call	usb_ep0_stall@rl
__LX86:				; __L86:
	add	%sp,0x1		; 	xadd	%sp,%sp,4
	ret
	.align	1
ep2_rxdone:
;	.frame	%sp,4,$31		# vars= 0, regs= 1/0, args= 0, extra= 0
;	.mask	0x80000000,-4
;	.fmask	0x00000000,0
	call	ep2_rxsub	; 	xcall	ep2_rxsub
	ext	cp210x+0x18@ah	; 	xld.w	%r10,[cp210x+24]
	ext	cp210x+0x18@al
	ld.w	%r10,[%r8]
	cmp	%r10,0x0
	jreq	__LX119		; 	xjreq	__L119
	call	%r10
__LX119:				; __L119:
	ret
	.align	1
ep2_rxsub:
;	.frame	%sp,80,$31		# vars= 64, regs= 4/0, args= 0, extra= 0
;	.mask	0x80070000,-4
;	.fmask	0x00000000,0
	pushn	%r2
	sub	%sp,0x10	; 	xsub	%sp,%sp,64
	ext	cp210x+0x4@h	; 	xld.w	%r1,cp210x+4
	ext	cp210x+0x4@m
	ld.w	%r1,cp210x+0x4@l
	ext	0x8		; 	xadd	%r2,%r1,8
	add	%r2,%r1
__LX121:				; __L121:
	ld.w	%r12,0x4	; 	xld.w	%r12,0x00000004		; 4
	ld.w	%r13,%sp
	ext	0x1		; 	xld.w	%r14,0x00000040		; 64
	ld.w	%r14,0x0
	ext	D12_ReadBuffer@rm	; 	xcall	D12_ReadBuffer
	call	D12_ReadBuffer@rl
	ld.w	%r0,%r10
	cmp	%r0,0x3f	; 	xcmp	%r0,-1
	jreq	__LX122		; 	xjreq	__L122
	ld.w	%r10,[%r1]	; 	xld.w	%r10,[%r1]
	ld.w	%r11,[%r2]	; 	xld.w	%r11,[%r2]
	sub	%r10,%r11
	cmp	%r0,%r10
	jrgt	__LX122		; 	xjrgt	__L122
	ld.w	%r12,0x4	; 	xld.w	%r12,0x00000004		; 4
	ext	D12_ClearBuffer@rm	; 	xcall	D12_ClearBuffer
	call	D12_ClearBuffer@rl
	cmp	%r0,0x0
	jreq	__LX121		; 	xjreq	__L121
	ext	0x4		; 	xld.w	%r11,[%r1+4]
	ld.w	%r11,[%r1]
	ld.w	%r10,[%r2]	; 	xld.w	%r10,[%r2]
	ld.w	%r12,%r11
	add	%r12,%r10
	add	%r10,%r0
	ld.w	[%r2],%r10	; 	xld.w	[%r2],%r10
	ld.w	%r13,%sp
__LX127:				; __L127:
	ld.w	%r10,[%r1]	; 	xld.w	%r10,[%r1]
	cmp	%r12,%r10
	jrlt	__LX130		; 	xjrlt	__L130
	sub	%r12,%r10
__LX130:				; __L130:
	ext	cp210x+0x0@ah	; 	xld.w	%r10,[cp210x]
	ext	cp210x+0x0@al
	ld.w	%r10,[%r8]
	add	%r10,%r12
	ld.ub	%r11,[%r13]	; 	xld.ub	%r11,[%r13]
	ld.b	[%r10],%r11	; 	xld.b	[%r10],%r11
	add	%r13,0x1	; 	xadd	%r13,%r13,1
	add	%r12,0x1	; 	xadd	%r12,%r12,1
	sub	%r0,0x1		; 	xsub	%r0,%r0,1
	jrne	__LX127		; 	xjrne	__L127
	jp	__LX121		; 	xjp	__L121
__LX122:				; __L122:
	add	%sp,0x10	; 	xadd	%sp,%sp,64
	popn	%r2
	ret
	.align	1
ep2_txdone:
;	.frame	%sp,4,$31		# vars= 0, regs= 1/0, args= 0, extra= 0
;	.mask	0x80000000,-4
;	.fmask	0x00000000,0
	ext	cp210x+0x28@h	; 	xld.w	%r11,cp210x+40
	ext	cp210x+0x28@m
	ld.w	%r11,cp210x+0x28@l
	ld.w	%r10,[%r11]	; 	xld.w	%r10,[%r11]
	cmp	%r10,0x0
	jreq	__LX133		; 	xjreq	__L133
	call	ep2_txsub	; 	xcall	ep2_txsub
	jp	__LX134		; 	xjp	__L134
__LX133:				; __L133:
	ext	0x8		; 	xld.w	%r10,[%r11+8]
	ld.w	%r10,[%r11]
	cmp	%r10,0x0
	jreq	__LX134		; 	xjreq	__L134
	call	%r10
__LX134:				; __L134:
	ret
	.align	1
ep2_txsub:
;	.frame	%sp,84,$31		# vars= 64, regs= 5/0, args= 0, extra= 0
;	.mask	0x800f0000,-4
;	.fmask	0x00000000,0
	pushn	%r3
	sub	%sp,0x10	; 	xsub	%sp,%sp,64
	ext	cp210x+0x20@h	; 	xld.w	%r2,cp210x+32
	ext	cp210x+0x20@m
	ld.w	%r2,cp210x+0x20@l
	ext	0x8		; 	xadd	%r3,%r2,8
	add	%r3,%r2
__LX137:				; __L137:
	ext	cp210x+0x28@ah	; 	xld.w	%r10,[cp210x+40]
	ext	cp210x+0x28@al
	ld.w	%r10,[%r8]
	ext	0x0		; 	xld.w	%r0,0x0000003f		; 63
	ld.w	%r0,0x3f
	ext	0x0		; 	xcmp	%r10,62
	cmp	%r10,0x3e
	jrugt	__LX140		; 	xjrugt	__L140
	ld.w	%r0,%r10
__LX140:				; __L140:
	cmp	%r0,0x0
	jreq	__LX138		; 	xjreq	__L138
	ext	cp210x+0x24@ah	; 	xld.w	%r1,[cp210x+36]
	ext	cp210x+0x24@al
	ld.w	%r1,[%r8]
	ld.w	%r14,%sp
__LX143:				; __L143:
	ext	cp210x+0x1c@ah	; 	xld.w	%r10,[cp210x+28]
	ext	cp210x+0x1c@al
	ld.w	%r10,[%r8]
	add	%r10,%r1
	ld.ub	%r10,[%r10]	; 	xld.ub	%r10,[%r10]
	ld.b	[%r14],%r10	; 	xld.b	[%r14],%r10
	add	%r14,0x1	; 	xadd	%r14,%r14,1
	add	%r1,0x1		; 	xadd	%r1,%r1,1
	ld.w	%r10,[%r2]	; 	xld.w	%r10,[%r2]
	cmp	%r1,%r10
	jrne	__LX145		; 	xjrne	__L145
	ld.w	%r1,0x0
__LX145:				; __L145:
	sub	%r0,0x1		; 	xsub	%r0,%r0,1
	jrne	__LX143		; 	xjrne	__L143
	ld.w	%r12,0x5	; 	xld.w	%r12,0x00000005		; 5
	ld.w	%r13,%sp
	ld.w	%r9,%sp		; 	xsub	%r14,%r14,%sp
	sub	%r14,%r9
	ext	D12_WriteBuffer@rm	; 	xcall	D12_WriteBuffer
	call	D12_WriteBuffer@rl
	ld.w	%r0,%r10
	cmp	%r0,0x3f	; 	xcmp	%r0,-1
	jreq	__LX138		; 	xjreq	__L138
	ld.w	%r12,0x5	; 	xld.w	%r12,0x00000005		; 5
	ext	D12_ValidateBuffer@rm	; 	xcall	D12_ValidateBuffer
	call	D12_ValidateBuffer@rl
	ld.w	%r10,[%r3]	; 	xld.w	%r10,[%r3]
	sub	%r10,%r0
	ld.w	[%r3],%r10	; 	xld.w	[%r3],%r10
	ext	cp210x+0x24@ah	; 	xld.w	[cp210x+36],%r1
	ext	cp210x+0x24@al
	ld.w	[%r8],%r1
	jp	__LX137		; 	xjp	__L137
__LX138:				; __L138:
	add	%sp,0x10	; 	xadd	%sp,%sp,64
	popn	%r3
	ret
	.code
	.align	2
__LC3:
	.ascii	"clipcp21.$(%d)\000"
	.code
	.align	1
	.global	cp210x_start
cp210x_start:
;	.frame	%sp,36,$31		# vars= 8, regs= 5/0, args= 8, extra= 0
;	.mask	0x800f0000,-4
;	.fmask	0x00000000,0
	pushn	%r3
	sub	%sp,0x4		; 	xsub	%sp,%sp,16
	ld.w	%r0,%r12
	ld.w	%r1,%r13
	ld.w	[%sp+0x2],%r14	; 	xld.w	[%sp+8],%r14
	ld.w	[%sp+0x3],%r15	; 	xld.w	[%sp+12],%r15
	call	cp210x_stop	; 	xcall	cp210x_stop
	ext	cp210x+0x0@h	; 	xld.w	%r2,cp210x
	ext	cp210x+0x0@m
	ld.w	%r2,cp210x+0x0@l
	ld.w	%r12,%r2
	ld.w	%r13,0x0
	ext	0x0		; 	xld.w	%r14,0x00000034		; 52
	ld.w	%r14,0x34
	ext	memset@rm	; 	xcall	memset
	call	memset@rl
	ext	0x0		; 	xld.w	%r3,0x0000003f		; 63
	ld.w	%r3,0x3f
	cmp	%r0,%r3
	jrgt	__LX150		; 	xjrgt	__L150
	ext	0x1		; 	xld.w	%r0,0x00000040		; 64
	ld.w	%r0,0x0
__LX150:				; __L150:
	ext	0x4		; 	xld.w	[%r2+4],%r0
	ld.w	[%r2],%r0
	ld.w	%r12,%r0
	ext	malloc@rm	; 	xcall	malloc
	call	malloc@rl
	ld.w	[%r2],%r10	; 	xld.w	[%r2],%r10
	cmp	%r10,0x0
	jrne	__LX151		; 	xjrne	__L151
	ext	__LC3+0x0@h	; 	xld.w	%r10,__LC3
	ext	__LC3+0x0@m
	ld.w	%r10,__LC3+0x0@l
	ld.w	[%sp+0x0],%r10	; 	xld.w	[%sp],%r10
	ext	0x8		; 	xld.w	%r10,0x00000232		; 562
	ld.w	%r10,0x32
	ld.w	[%sp+0x1],%r10	; 	xld.w	[%sp+4],%r10
	ext	die@rm		; 	xcall	die
	call	die@rl
__LX151:				; __L151:
	ext	0x18		; 	xadd	%r0,%r2,24
	add	%r0,%r2
	ld.w	%r11,[%sp+0x2]	; 	xld.w	%r11,[%sp+8]
	ld.w	[%r0],%r11	; 	xld.w	[%r0],%r11
	cmp	%r1,%r3
	jrgt	__LX152		; 	xjrgt	__L152
	ext	0x1		; 	xld.w	%r1,0x00000040		; 64
	ld.w	%r1,0x0
__LX152:				; __L152:
	ext	0x8		; 	xld.w	[%r0+8],%r1
	ld.w	[%r0],%r1
	ld.w	%r12,%r1
	ext	malloc@rm	; 	xcall	malloc
	call	malloc@rl
	ext	0x1c		; 	xld.w	[%r2+28],%r10
	ld.w	[%r2],%r10
	cmp	%r10,0x0
	jrne	__LX153		; 	xjrne	__L153
	ext	__LC3+0x0@h	; 	xld.w	%r10,__LC3
	ext	__LC3+0x0@m
	ld.w	%r10,__LC3+0x0@l
	ld.w	[%sp+0x0],%r10	; 	xld.w	[%sp],%r10
	ext	0x8		; 	xld.w	%r10,0x0000023b		; 571
	ld.w	%r10,0x3b
	ld.w	[%sp+0x1],%r10	; 	xld.w	[%sp+4],%r10
	ext	die@rm		; 	xcall	die
	call	die@rl
__LX153:				; __L153:
	ld.w	%r11,[%sp+0x3]	; 	xld.w	%r11,[%sp+12]
	ext	0x18		; 	xld.w	[%r0+24],%r11
	ld.w	[%r0],%r11
	ext	usb_inf+0x0@h	; 	xld.w	%r12,usb_inf
	ext	usb_inf+0x0@m
	ld.w	%r12,usb_inf+0x0@l
	ext	usb_start@rm	; 	xcall	usb_start
	call	usb_start@rl
	add	%sp,0x4		; 	xadd	%sp,%sp,16
	popn	%r3
	ret
	.align	1
	.global	cp210x_stop
cp210x_stop:
;	.frame	%sp,8,$31		# vars= 0, regs= 2/0, args= 0, extra= 0
;	.mask	0x80010000,-4
;	.fmask	0x00000000,0
	pushn	%r0
	ext	usb_stop@rm	; 	xcall	usb_stop
	call	usb_stop@rl
	ext	cp210x+0x0@h	; 	xld.w	%r0,cp210x
	ext	cp210x+0x0@m
	ld.w	%r0,cp210x+0x0@l
	ld.w	%r12,[%r0]	; 	xld.w	%r12,[%r0]
	ext	free@rm		; 	xcall	free
	call	free@rl
	ext	0x1c		; 	xld.w	%r12,[%r0+28]
	ld.w	%r12,[%r0]
	ext	free@rm		; 	xcall	free
	call	free@rl
	ld.w	%r12,%r0
	ld.w	%r13,0x0
	ext	0x0		; 	xld.w	%r14,0x00000034		; 52
	ld.w	%r14,0x34
	ext	memset@rm	; 	xcall	memset
	call	memset@rl
	popn	%r0
	ret
	.align	1
	.global	cp210x_reset
cp210x_reset:
;	.frame	%sp,8,$31		# vars= 4, regs= 1/0, args= 0, extra= 0
;	.mask	0x80000000,-4
;	.fmask	0x00000000,0
	sub	%sp,0x1		; 	xsub	%sp,%sp,4
	ld.w	%r12,%sp
	ext	pceSyncEnterCriticalSection@rm	; 	xcall	pceSyncEnterCriticalSection
	call	pceSyncEnterCriticalSection@rl
	ext	cp210x+0x8@h	; 	xld.w	%r10,cp210x+8
	ext	cp210x+0x8@m
	ld.w	%r10,cp210x+0x8@l
	ld.w	%r11,0x0
	ld.w	[%r10],%r11	; 	xld.w	[%r10],%r11
	ext	0x4		; 	xld.w	[%r10+4],%r11
	ld.w	[%r10],%r11
	ext	0x8		; 	xld.w	[%r10+8],%r11
	ld.w	[%r10],%r11
	ext	0x1c		; 	xld.w	[%r10+28],%r11
	ld.w	[%r10],%r11
	ext	0x20		; 	xld.w	[%r10+32],%r11
	ld.w	[%r10],%r11
	ext	0x24		; 	xld.w	[%r10+36],%r11
	ld.w	[%r10],%r11
	ld.w	%r12,%sp
	ext	pceSyncLeaveCriticalSection@rm	; 	xcall	pceSyncLeaveCriticalSection
	call	pceSyncLeaveCriticalSection@rl
	add	%sp,0x1		; 	xadd	%sp,%sp,4
	ret
	.align	1
	.global	cp210x_recv
cp210x_recv:
;	.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	[%sp+0x1],%r12	; 	xld.w	[%sp+4],%r12
	ld.w	%r0,%r13
	ld.w	%r1,[%sp+0x1]	; 	xld.w	%r1,[%sp+4]
	ld.w	%r12,%sp
	ext	pceSyncEnterCriticalSection@rm	; 	xcall	pceSyncEnterCriticalSection
	call	pceSyncEnterCriticalSection@rl
	ext	cp210x+0xc@h	; 	xld.w	%r2,cp210x+12
	ext	cp210x+0xc@m
	ld.w	%r2,cp210x+0xc@l
	ext	0x4		; 	xadd	%r13,%r2,4
	add	%r13,%r2
	ext	0x4		; 	xsub	%r3,%r2,4
	sub	%r3,%r2
	ext	0x8		; 	xsub	%r14,%r2,8
	sub	%r14,%r2
__LX164:				; __L164:
	ld.w	%r12,[%r2]	; 	xld.w	%r12,[%r2]
	cmp	%r12,%r0
	jrle	__LX167		; 	xjrle	__L167
	ld.w	%r12,%r0
__LX167:				; __L167:
	cmp	%r12,0x0
	jreq	__LX168		; 	xjreq	__L168
	sub	%r0,%r12
	ld.w	%r10,[%r2]	; 	xld.w	%r10,[%r2]
	sub	%r10,%r12
	ld.w	[%r2],%r10	; 	xld.w	[%r2],%r10
	ld.w	%r10,[%r13]	; 	xld.w	%r10,[%r13]
	add	%r10,%r12
	ld.w	[%r13],%r10	; 	xld.w	[%r13],%r10
__LX169:				; __L169:
	ext	cp210x+0x0@ah	; 	xld.w	%r11,[cp210x]
	ext	cp210x+0x0@al
	ld.w	%r11,[%r8]
	ext	cp210x+0x8@ah	; 	xld.w	%r10,[cp210x+8]
	ext	cp210x+0x8@al
	ld.w	%r10,[%r8]
	add	%r11,%r10
	ld.ub	%r10,[%r11]	; 	xld.ub	%r10,[%r11]
	ld.b	[%r1],%r10	; 	xld.b	[%r1],%r10
	add	%r1,0x1		; 	xadd	%r1,%r1,1
	ld.w	%r11,[%r3]	; 	xld.w	%r11,[%r3]
	add	%r11,0x1	; 	xadd	%r11,%r11,1
	ld.w	[%r3],%r11	; 	xld.w	[%r3],%r11
	ld.w	%r10,[%r14]	; 	xld.w	%r10,[%r14]
	cmp	%r11,%r10
	jrne	__LX171		; 	xjrne	__L171
	ld.w	%r15,0x0
	ld.w	[%r3],%r15	; 	xld.w	[%r3],%r15
__LX171:				; __L171:
	sub	%r12,0x1	; 	xsub	%r12,%r12,1
	jrne	__LX169		; 	xjrne	__L169
__LX168:				; __L168:
	ld.w	[%sp+0x2],%r13	; 	xld.w	[%sp+8],%r13
	ld.w	[%sp+0x3],%r14	; 	xld.w	[%sp+12],%r14
	ext	ep2_rxsub@rm	; 	xcall	ep2_rxsub
	call	ep2_rxsub@rl
	ext	cp210x+0xc@ah	; 	xld.w	%r10,[cp210x+12]
	ext	cp210x+0xc@al
	ld.w	%r10,[%r8]
	ld.w	%r13,[%sp+0x2]	; 	xld.w	%r13,[%sp+8]
	ld.w	%r14,[%sp+0x3]	; 	xld.w	%r14,[%sp+12]
	cmp	%r10,0x0
	jreq	__LX165		; 	xjreq	__L165
	cmp	%r0,0x0
	jrne	__LX164		; 	xjrne	__L164
__LX165:				; __L165:
	ld.w	%r12,%sp
	ext	pceSyncLeaveCriticalSection@rm	; 	xcall	pceSyncLeaveCriticalSection
	call	pceSyncLeaveCriticalSection@rl
	ld.w	%r10,%r1
	ld.w	%r15,[%sp+0x1]	; 	xld.w	%r15,[%sp+4]
	sub	%r10,%r15
	add	%sp,0x4		; 	xadd	%sp,%sp,16
	popn	%r3
	ret
	.align	1
	.global	cp210x_send
cp210x_send:
;	.frame	%sp,32,$31		# vars= 12, regs= 5/0, args= 0, extra= 0
;	.mask	0x800f0000,-4
;	.fmask	0x00000000,0
	pushn	%r3
	sub	%sp,0x3		; 	xsub	%sp,%sp,12
	ld.w	[%sp+0x1],%r12	; 	xld.w	[%sp+4],%r12
	ld.w	%r0,%r13
	ld.w	%r2,[%sp+0x1]	; 	xld.w	%r2,[%sp+4]
	cmp	%r0,0x0
	jrge	__LX178		; 	xjrge	__L178
	ld.w	%r12,[%sp+0x1]	; 	xld.w	%r12,[%sp+4]
	ext	strlen@rm	; 	xcall	strlen
	call	strlen@rl
	ld.w	%r0,%r10
__LX178:				; __L178:
	ld.w	%r12,%sp
	ext	pceSyncEnterCriticalSection@rm	; 	xcall	pceSyncEnterCriticalSection
	call	pceSyncEnterCriticalSection@rl
	ext	cp210x+0x20@h	; 	xld.w	%r1,cp210x+32
	ext	cp210x+0x20@m
	ld.w	%r1,cp210x+0x20@l
	ext	0x8		; 	xadd	%r14,%r1,8
	add	%r14,%r1
	ext	0xc		; 	xadd	%r3,%r1,12
	add	%r3,%r1
__LX182:				; __L182:
	ld.w	%r10,[%r1]	; 	xld.w	%r10,[%r1]
	ld.w	%r11,[%r14]	; 	xld.w	%r11,[%r14]
	ld.w	%r12,%r10
	sub	%r12,%r11
	cmp	%r12,%r0
	jrle	__LX185		; 	xjrle	__L185
	ld.w	%r12,%r0
__LX185:				; __L185:
	cmp	%r12,0x0
	jreq	__LX186		; 	xjreq	__L186
	ext	0x4		; 	xld.w	%r10,[%r1+4]
	ld.w	%r10,[%r1]
	ld.w	%r13,%r10
	add	%r13,%r11
	sub	%r0,%r12
	ld.w	%r10,%r11
	add	%r10,%r12
	ld.w	[%r14],%r10	; 	xld.w	[%r14],%r10
	ld.w	%r10,[%r3]	; 	xld.w	%r10,[%r3]
	add	%r10,%r12
	ld.w	[%r3],%r10	; 	xld.w	[%r3],%r10
__LX187:				; __L187:
	ld.w	%r10,[%r1]	; 	xld.w	%r10,[%r1]
	cmp	%r13,%r10
	jrlt	__LX190		; 	xjrlt	__L190
	sub	%r13,%r10
__LX190:				; __L190:
	ext	cp210x+0x1c@ah	; 	xld.w	%r11,[cp210x+28]
	ext	cp210x+0x1c@al
	ld.w	%r11,[%r8]
	add	%r11,%r13
	ld.ub	%r10,[%r2]	; 	xld.ub	%r10,[%r2]
	ld.b	[%r11],%r10	; 	xld.b	[%r11],%r10
	add	%r2,0x1		; 	xadd	%r2,%r2,1
	add	%r13,0x1	; 	xadd	%r13,%r13,1
	sub	%r12,0x1	; 	xsub	%r12,%r12,1
	jrne	__LX187		; 	xjrne	__L187
__LX186:				; __L186:
	ld.w	[%sp+0x2],%r14	; 	xld.w	[%sp+8],%r14
	ext	ep2_txsub@rm	; 	xcall	ep2_txsub
	call	ep2_txsub@rl
	ld.w	%r11,[%r1]	; 	xld.w	%r11,[%r1]
	ext	0x8		; 	xld.w	%r10,[%r1+8]
	ld.w	%r10,[%r1]
	ld.w	%r14,[%sp+0x2]	; 	xld.w	%r14,[%sp+8]
	cmp	%r11,%r10
	jreq	__LX183		; 	xjreq	__L183
	cmp	%r0,0x0
	jrne	__LX182		; 	xjrne	__L182
__LX183:				; __L183:
	ld.w	%r12,%sp
	ext	pceSyncLeaveCriticalSection@rm	; 	xcall	pceSyncLeaveCriticalSection
	call	pceSyncLeaveCriticalSection@rl
	ld.w	%r10,%r2
	ld.w	%r15,[%sp+0x1]	; 	xld.w	%r15,[%sp+4]
	sub	%r10,%r15
	add	%sp,0x3		; 	xadd	%sp,%sp,12
	popn	%r3
	ret
	.align	1
	.global	cp210x_stat
cp210x_stat:
;	.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
	ld.w	%r0,%r12
	ld.w	%r12,%sp
	ext	pceSyncEnterCriticalSection@rm	; 	xcall	pceSyncEnterCriticalSection
	call	pceSyncEnterCriticalSection@rl
	ext	cp210x+0xc@h	; 	xld.w	%r11,cp210x+12
	ext	cp210x+0xc@m
	ld.w	%r11,cp210x+0xc@l
	ld.w	%r10,[%r11]	; 	xld.w	%r10,[%r11]
	ld.w	[%r0],%r10	; 	xld.w	[%r0],%r10
	ext	0x4		; 	xld.w	%r10,[%r11+4]
	ld.w	%r10,[%r11]
	ext	0x4		; 	xld.w	[%r0+4],%r10
	ld.w	[%r0],%r10
	ext	0x1c		; 	xld.w	%r10,[%r11+28]
	ld.w	%r10,[%r11]
	ext	0x8		; 	xld.w	[%r0+8],%r10
	ld.w	[%r0],%r10
	ext	0x20		; 	xld.w	%r10,[%r11+32]
	ld.w	%r10,[%r11]
	ext	0xc		; 	xld.w	[%r0+12],%r10
	ld.w	[%r0],%r10
	ld.w	%r12,%sp
	ext	pceSyncLeaveCriticalSection@rm	; 	xcall	pceSyncLeaveCriticalSection
	call	pceSyncLeaveCriticalSection@rl
	add	%sp,0x1		; 	xadd	%sp,%sp,4
	popn	%r0
	ret

	.lcomm	cp210x 52

	.lcomm	cp210x_uart 2

	.lcomm	cp210x_break 2

	.lcomm	cp210x_control 2

	.lcomm	cp210x_modemctl 16

	.lcomm	cp210x_unknown 6
