
;  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
	.byte	2
	.space	2
	.byte	16
	.half	3609
	.half	4119
	.half	1
	.byte	1
	.byte	2
	.space	1
	.byte	1
	.align	2
config_desc:
	.byte	9
	.byte	2
	.half	67
	.byte	2
	.byte	1
	.space	1
	.byte	128
	.byte	50
	.align	2
interface_desc_0:
	.byte	9
	.byte	4
	.byte	0
	.space	1
	.byte	1
	.byte	2
	.byte	2
	.byte	1
	.space	1
	.align	2
cdc_class_specific_desc_0:
	.byte	5
	.byte	36
	.byte	0
	.byte	16
	.byte	1
	.byte	4
	.byte	36
	.byte	2
	.byte	2
	.byte	5
	.byte	36
	.byte	6
	.byte	0
	.byte	1
	.byte	5
	.byte	36
	.byte	1
	.byte	0
	.byte	1
	.align	2
endpoint_desc_ep1in:
	.byte	7
	.byte	5
	.byte	129
	.byte	3
	.half	16
	.byte	2
	.align	2
interface_desc_1:
	.byte	9
	.byte	4
	.byte	1
	.space	1
	.byte	2
	.byte	10
	.space	3
	.align	2
endpoint_desc_ep2out:
	.byte	7
	.byte	5
	.byte	2
	.byte	2
	.half	64
	.space	1
	.align	2
endpoint_desc_ep2in:
	.byte	7
	.byte	5
	.byte	130
	.byte	2
	.half	64
	.space	1
	.align	2
string_desc:
	.word	__LC0
	.word	__LC1
	.word	__LC2
	.align	2
__LC2:
	.ascii	"\"\003P\000/\000E\000C\000E\000 \000U\000S\000B\000 \000"
	.ascii	"d\000e\000v\000i\000c\000e\000\000"
	.align	2
__LC1:
	.ascii	"\026\003P\000i\000e\000c\000e\000 \000L\000a\000b\000.\000"
	.ascii	"\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	4
	.word	class_request
	.space	4
	.data
	.align	2
serial_state_notification:
	.byte	161
	.byte	32
	.half	0
	.half	0
	.half	2
	.space	2

	.lcomm	tmpbuf.66 67
	.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_0+0x0@h	; 	xld.w	%r13,interface_desc_0
	ext	interface_desc_0+0x0@m
	ld.w	%r13,interface_desc_0+0x0@l
	ld.w	%r14,%r1
	ext	memcpy@rm	; 	xcall	memcpy
	call	memcpy@rl
	ld.w	%r1,0x12	; 	xld.w	%r1,0x00000012		; 18
	ld.w	%r12,%r0
	add	%r12,%r1
	ext	cdc_class_specific_desc_0+0x0@h	; 	xld.w	%r13,cdc_class_specific_desc_0
	ext	cdc_class_specific_desc_0+0x0@m
	ld.w	%r13,cdc_class_specific_desc_0+0x0@l
	ld.w	%r14,0x13	; 	xld.w	%r14,0x00000013		; 19
	ext	memcpy@rm	; 	xcall	memcpy
	call	memcpy@rl
	add	%r1,0x13	; 	xadd	%r1,%r1,19
	ld.w	%r12,%r0
	add	%r12,%r1
	ext	endpoint_desc_ep1in+0x0@h	; 	xld.w	%r13,endpoint_desc_ep1in
	ext	endpoint_desc_ep1in+0x0@m
	ld.w	%r13,endpoint_desc_ep1in+0x0@l
	ld.w	%r14,0x7	; 	xld.w	%r14,0x00000007		; 7
	ext	memcpy@rm	; 	xcall	memcpy
	call	memcpy@rl
	add	%r1,0x7		; 	xadd	%r1,%r1,7
	ld.w	%r12,%r0
	add	%r12,%r1
	ext	interface_desc_1+0x0@h	; 	xld.w	%r13,interface_desc_1
	ext	interface_desc_1+0x0@m
	ld.w	%r13,interface_desc_1+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	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
	add	%r1,0x7		; 	xadd	%r1,%r1,7
	ld.w	%r12,%r0
	add	%r12,%r1
	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	%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

	.lcomm	line_coding_structure.73 7
	.align	1
class_request:
;	.frame	%sp,16,$31		# vars= 8, regs= 2/0, args= 0, extra= 0
;	.mask	0x80010000,-4
;	.fmask	0x00000000,0
	pushn	%r0
	sub	%sp,0x2		; 	xsub	%sp,%sp,8
	ld.w	%r0,%r12
	ext	0x1		; 	xld.ub	%r10,[%r0+1]
	ld.ub	%r10,[%r0]
	ext	0x0		; 	xld.w	%r11,0x00000021		; 33
	ld.w	%r11,0x21
	cmp	%r10,%r11
	jreq	__LX89		; 	xjreq	__L89
	jrgt	__LX96		; 	xjrgt	__L96
	ext	0x0		; 	xcmp	%r10,32
	cmp	%r10,0x20
	jreq	__LX88		; 	xjreq	__L88
	jp	__LX87		; 	xjp	__L87
__LX96:				; __L96:
	ext	0x0		; 	xcmp	%r10,34
	cmp	%r10,0x22
	jreq	__LX90		; 	xjreq	__L90
	jp	__LX87		; 	xjp	__L87
__LX88:				; __L88:
	ext	line_coding_structure.73+0x0@h	; 	xld.w	%r12,line_coding_structure.73
	ext	line_coding_structure.73+0x0@m
	ld.w	%r12,line_coding_structure.73+0x0@l
	ld.w	%r14,0x7	; 	xld.w	%r14,0x00000007		; 7
	ext	memcpy@rm	; 	xcall	memcpy
	call	memcpy@rl
	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
__LX89:				; __L89:
	ext	line_coding_structure.73+0x0@h	; 	xld.w	%r12,line_coding_structure.73
	ext	line_coding_structure.73+0x0@m
	ld.w	%r12,line_coding_structure.73+0x0@l
	ld.w	%r13,0x7	; 	xld.w	%r13,0x00000007		; 7
	ext	usb_ep0_tx@rm	; 	xcall	usb_ep0_tx
	call	usb_ep0_tx@rl
	jp	__LX86		; 	xjp	__L86
__LX90:				; __L90:
	ld.w	%r12,0x0
	ld.w	%r13,%r12
	ext	usb_ep0_tx@rm	; 	xcall	usb_ep0_tx
	call	usb_ep0_tx@rl
	ext	0x2		; 	xld.ub	%r10,[%r0+2]
	ld.ub	%r10,[%r0]
	and	%r10,0x1	; 	xand	%r10,%r10,0x00000001
	jreq	__LX91		; 	xjreq	__L91
	ext	serial_state_notification+0x8@ah	; 	xld.uh	%r10,[serial_state_notification+8]
	ext	serial_state_notification+0x8@al
	ld.uh	%r10,[%r8]
	or	%r10,0x3	; 	xoor	%r10,%r10,0x00000003
	jp	__LX97		; 	xjp	__L97
__LX91:				; __L91:
	ext	serial_state_notification+0x8@ah	; 	xld.uh	%r10,[serial_state_notification+8]
	ext	serial_state_notification+0x8@al
	ld.uh	%r10,[%r8]
	and	%r10,0x3c	; 	xand	%r10,%r10,0xfffffffc
__LX97:				; __L97:
	ext	serial_state_notification+0x8@ah	; 	xld.h	[serial_state_notification+8],%r10
	ext	serial_state_notification+0x8@al
	ld.h	[%r8],%r10
	ld.w	%r12,0x3	; 	xld.w	%r12,0x00000003		; 3
	ext	serial_state_notification+0x0@h	; 	xld.w	%r13,serial_state_notification
	ext	serial_state_notification+0x0@m
	ld.w	%r13,serial_state_notification+0x0@l
	ld.w	%r14,0xa	; 	xld.w	%r14,0x0000000a		; 10
	ext	D12_WriteBuffer@rm	; 	xcall	D12_WriteBuffer
	call	D12_WriteBuffer@rl
	cmp	%r10,0x3f	; 	xcmp	%r10,-1
	jreq	__LX86		; 	xjreq	__L86
	ld.w	%r12,0x3	; 	xld.w	%r12,0x00000003		; 3
	ext	D12_ValidateBuffer@rm	; 	xcall	D12_ValidateBuffer
	call	D12_ValidateBuffer@rl
	jp	__LX86		; 	xjp	__L86
__LX87:				; __L87:
	ext	usb_ep0_stall@rm	; 	xcall	usb_ep0_stall
	call	usb_ep0_stall@rl
__LX86:				; __L86:
	add	%sp,0x2		; 	xadd	%sp,%sp,8
	popn	%r0
	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	cdcacm+0x14@ah	; 	xld.w	%r10,[cdcacm+20]
	ext	cdcacm+0x14@al
	ld.w	%r10,[%r8]
	cmp	%r10,0x0
	jreq	__LX99		; 	xjreq	__L99
	call	%r10
__LX99:				; __L99:
	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	cdcacm+0x4@h	; 	xld.w	%r1,cdcacm+4
	ext	cdcacm+0x4@m
	ld.w	%r1,cdcacm+0x4@l
	ext	0x8		; 	xadd	%r2,%r1,8
	add	%r2,%r1
__LX101:				; __L101:
	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	__LX102		; 	xjreq	__L102
	ld.w	%r10,[%r1]	; 	xld.w	%r10,[%r1]
	ld.w	%r11,[%r2]	; 	xld.w	%r11,[%r2]
	sub	%r10,%r11
	cmp	%r0,%r10
	jrgt	__LX102		; 	xjrgt	__L102
	ld.w	%r12,0x4	; 	xld.w	%r12,0x00000004		; 4
	ext	D12_ClearBuffer@rm	; 	xcall	D12_ClearBuffer
	call	D12_ClearBuffer@rl
	cmp	%r0,0x0
	jreq	__LX101		; 	xjreq	__L101
	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
__LX107:				; __L107:
	ld.w	%r10,[%r1]	; 	xld.w	%r10,[%r1]
	cmp	%r12,%r10
	jrlt	__LX110		; 	xjrlt	__L110
	sub	%r12,%r10
__LX110:				; __L110:
	ext	cdcacm+0x0@ah	; 	xld.w	%r10,[cdcacm]
	ext	cdcacm+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	__LX107		; 	xjrne	__L107
	jp	__LX101		; 	xjp	__L101
__LX102:				; __L102:
	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	cdcacm+0x24@h	; 	xld.w	%r11,cdcacm+36
	ext	cdcacm+0x24@m
	ld.w	%r11,cdcacm+0x24@l
	ld.w	%r10,[%r11]	; 	xld.w	%r10,[%r11]
	cmp	%r10,0x0
	jreq	__LX113		; 	xjreq	__L113
	call	ep2_txsub	; 	xcall	ep2_txsub
	jp	__LX114		; 	xjp	__L114
__LX113:				; __L113:
	ext	0x8		; 	xld.w	%r10,[%r11+8]
	ld.w	%r10,[%r11]
	cmp	%r10,0x0
	jreq	__LX114		; 	xjreq	__L114
	call	%r10
__LX114:				; __L114:
	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	cdcacm+0x1c@h	; 	xld.w	%r2,cdcacm+28
	ext	cdcacm+0x1c@m
	ld.w	%r2,cdcacm+0x1c@l
	ext	0x8		; 	xadd	%r3,%r2,8
	add	%r3,%r2
__LX117:				; __L117:
	ext	cdcacm+0x24@ah	; 	xld.w	%r10,[cdcacm+36]
	ext	cdcacm+0x24@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	__LX120		; 	xjrugt	__L120
	ld.w	%r0,%r10
__LX120:				; __L120:
	cmp	%r0,0x0
	jreq	__LX118		; 	xjreq	__L118
	ext	cdcacm+0x20@ah	; 	xld.w	%r1,[cdcacm+32]
	ext	cdcacm+0x20@al
	ld.w	%r1,[%r8]
	ld.w	%r14,%sp
__LX123:				; __L123:
	ext	cdcacm+0x18@ah	; 	xld.w	%r10,[cdcacm+24]
	ext	cdcacm+0x18@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	__LX125		; 	xjrne	__L125
	ld.w	%r1,0x0
__LX125:				; __L125:
	sub	%r0,0x1		; 	xsub	%r0,%r0,1
	jrne	__LX123		; 	xjrne	__L123
	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	__LX118		; 	xjreq	__L118
	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	cdcacm+0x20@ah	; 	xld.w	[cdcacm+32],%r1
	ext	cdcacm+0x20@al
	ld.w	[%r8],%r1
	jp	__LX117		; 	xjp	__L117
__LX118:				; __L118:
	add	%sp,0x10	; 	xadd	%sp,%sp,64
	popn	%r3
	ret
	.code
	.align	2
__LC3:
	.ascii	"clipacm.$(%d)\000"
	.code
	.align	1
	.global	cdcacm_start
cdcacm_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	cdcacm_stop	; 	xcall	cdcacm_stop
	ext	cdcacm+0x0@h	; 	xld.w	%r2,cdcacm
	ext	cdcacm+0x0@m
	ld.w	%r2,cdcacm+0x0@l
	ld.w	%r12,%r2
	ld.w	%r13,0x0
	ext	0x0		; 	xld.w	%r14,0x00000030		; 48
	ld.w	%r14,0x30
	ext	memset@rm	; 	xcall	memset
	call	memset@rl
	ext	0x0		; 	xld.w	%r3,0x0000003f		; 63
	ld.w	%r3,0x3f
	cmp	%r0,%r3
	jrgt	__LX130		; 	xjrgt	__L130
	ext	0x1		; 	xld.w	%r0,0x00000040		; 64
	ld.w	%r0,0x0
__LX130:				; __L130:
	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	__LX131		; 	xjrne	__L131
	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	0x9		; 	xld.w	%r10,0x00000245		; 581
	ld.w	%r10,0x5
	ld.w	[%sp+0x1],%r10	; 	xld.w	[%sp+4],%r10
	ext	die@rm		; 	xcall	die
	call	die@rl
__LX131:				; __L131:
	ext	0x14		; 	xadd	%r0,%r2,20
	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	__LX132		; 	xjrgt	__L132
	ext	0x1		; 	xld.w	%r1,0x00000040		; 64
	ld.w	%r1,0x0
__LX132:				; __L132:
	ext	0x1c		; 	xld.w	[%r2+28],%r1
	ld.w	[%r2],%r1
	ld.w	%r12,%r1
	ext	malloc@rm	; 	xcall	malloc
	call	malloc@rl
	ext	0x18		; 	xld.w	[%r2+24],%r10
	ld.w	[%r2],%r10
	cmp	%r10,0x0
	jrne	__LX133		; 	xjrne	__L133
	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	0x9		; 	xld.w	%r10,0x0000024e		; 590
	ld.w	%r10,0xe
	ld.w	[%sp+0x1],%r10	; 	xld.w	[%sp+4],%r10
	ext	die@rm		; 	xcall	die
	call	die@rl
__LX133:				; __L133:
	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	cdcacm_stop
cdcacm_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	cdcacm+0x0@h	; 	xld.w	%r0,cdcacm
	ext	cdcacm+0x0@m
	ld.w	%r0,cdcacm+0x0@l
	ld.w	%r12,[%r0]	; 	xld.w	%r12,[%r0]
	ext	free@rm		; 	xcall	free
	call	free@rl
	ext	0x18		; 	xld.w	%r12,[%r0+24]
	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,0x00000030		; 48
	ld.w	%r14,0x30
	ext	memset@rm	; 	xcall	memset
	call	memset@rl
	popn	%r0
	ret
	.align	1
	.global	cdcacm_reset
cdcacm_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	cdcacm+0x8@h	; 	xld.w	%r10,cdcacm+8
	ext	cdcacm+0x8@m
	ld.w	%r10,cdcacm+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	0x18		; 	xld.w	[%r10+24],%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
	ld.w	%r12,%sp
	ext	pceSyncLeaveCriticalSection@rm	; 	xcall	pceSyncLeaveCriticalSection
	call	pceSyncLeaveCriticalSection@rl
	add	%sp,0x1		; 	xadd	%sp,%sp,4
	ret
	.align	1
	.global	cdcacm_recv
cdcacm_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	cdcacm+0xc@h	; 	xld.w	%r2,cdcacm+12
	ext	cdcacm+0xc@m
	ld.w	%r2,cdcacm+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
__LX144:				; __L144:
	ld.w	%r12,[%r2]	; 	xld.w	%r12,[%r2]
	cmp	%r12,%r0
	jrle	__LX147		; 	xjrle	__L147
	ld.w	%r12,%r0
__LX147:				; __L147:
	cmp	%r12,0x0
	jreq	__LX148		; 	xjreq	__L148
	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
__LX149:				; __L149:
	ext	cdcacm+0x0@ah	; 	xld.w	%r11,[cdcacm]
	ext	cdcacm+0x0@al
	ld.w	%r11,[%r8]
	ext	cdcacm+0x8@ah	; 	xld.w	%r10,[cdcacm+8]
	ext	cdcacm+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	__LX151		; 	xjrne	__L151
	ld.w	%r15,0x0
	ld.w	[%r3],%r15	; 	xld.w	[%r3],%r15
__LX151:				; __L151:
	sub	%r12,0x1	; 	xsub	%r12,%r12,1
	jrne	__LX149		; 	xjrne	__L149
__LX148:				; __L148:
	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	cdcacm+0xc@ah	; 	xld.w	%r10,[cdcacm+12]
	ext	cdcacm+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	__LX145		; 	xjreq	__L145
	cmp	%r0,0x0
	jrne	__LX144		; 	xjrne	__L144
__LX145:				; __L145:
	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	cdcacm_send
cdcacm_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	__LX158		; 	xjrge	__L158
	ld.w	%r12,[%sp+0x1]	; 	xld.w	%r12,[%sp+4]
	ext	strlen@rm	; 	xcall	strlen
	call	strlen@rl
	ld.w	%r0,%r10
__LX158:				; __L158:
	ld.w	%r12,%sp
	ext	pceSyncEnterCriticalSection@rm	; 	xcall	pceSyncEnterCriticalSection
	call	pceSyncEnterCriticalSection@rl
	ext	cdcacm+0x1c@h	; 	xld.w	%r1,cdcacm+28
	ext	cdcacm+0x1c@m
	ld.w	%r1,cdcacm+0x1c@l
	ext	0x8		; 	xadd	%r14,%r1,8
	add	%r14,%r1
	ext	0xc		; 	xadd	%r3,%r1,12
	add	%r3,%r1
__LX162:				; __L162:
	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	__LX165		; 	xjrle	__L165
	ld.w	%r12,%r0
__LX165:				; __L165:
	cmp	%r12,0x0
	jreq	__LX166		; 	xjreq	__L166
	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
__LX167:				; __L167:
	ld.w	%r10,[%r1]	; 	xld.w	%r10,[%r1]
	cmp	%r13,%r10
	jrlt	__LX170		; 	xjrlt	__L170
	sub	%r13,%r10
__LX170:				; __L170:
	ext	cdcacm+0x18@ah	; 	xld.w	%r11,[cdcacm+24]
	ext	cdcacm+0x18@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	__LX167		; 	xjrne	__L167
__LX166:				; __L166:
	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	__LX163		; 	xjreq	__L163
	cmp	%r0,0x0
	jrne	__LX162		; 	xjrne	__L162
__LX163:				; __L163:
	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	cdcacm_stat
cdcacm_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	cdcacm+0xc@h	; 	xld.w	%r11,cdcacm+12
	ext	cdcacm+0xc@m
	ld.w	%r11,cdcacm+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	0x18		; 	xld.w	%r10,[%r11+24]
	ld.w	%r10,[%r11]
	ext	0x8		; 	xld.w	[%r0+8],%r10
	ld.w	[%r0],%r10
	ext	0x1c		; 	xld.w	%r10,[%r11+28]
	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	cdcacm 48
