
;  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	3609
	.half	4118
	.half	1
	.byte	1
	.byte	2
	.space	1
	.byte	1
	.align	2
config_desc:
	.byte	9
	.byte	2
	.half	32
	.byte	1
	.byte	1
	.byte	3
	.byte	128
	.byte	50
	.align	2
interface_desc:
	.byte	9
	.byte	4
	.space	2
	.byte	2
	.byte	255
	.byte	255
	.byte	255
	.byte	4
	.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
	.word	__LC3
	.word	__LC4
	.align	2
__LC4:
	.ascii	"&\003E\000t\000h\000e\000r\000n\000e\000t\000 \000i\000n"
	.ascii	"\000t\000e\000r\000f\000a\000c\000e\000\000"
	.align	2
__LC3:
	.ascii	".\003E\000t\000h\000e\000r\000n\000e\000t\000 \000c\000o"
	.ascii	"\000n\000f\000i\000g\000u\000r\000a\000t\000i\000o\000n\000"
	.ascii	"\000"
	.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
	.word	bus_reset
	.space	8
	.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
	.global	ethernet_null_address
	.align	2
ethernet_null_address:
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.global	ethernet_broadcast_address
	.align	2
ethernet_broadcast_address:
	.byte	255
	.byte	255
	.byte	255
	.byte	255
	.byte	255
	.byte	255

	.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,0x4		; 	xcmp	%r1,4
	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
	.align	1
vendor_request:
;	.frame	%sp,8,$31		# vars= 0, regs= 2/0, args= 0, extra= 0
;	.mask	0x80010000,-4
;	.fmask	0x00000000,0
	pushn	%r0
	ext	0x1		; 	xld.ub	%r0,[%r12+1]
	ld.ub	%r0,[%r12]
	cmp	%r0,0x0
	jrne	__LX87		; 	xjrne	__L87
	cmp	%r14,0x6	; 	xcmp	%r14,6
	jrne	__LX89		; 	xjrne	__L89
	ld.w	%r12,%r13
	ext	ethernet_set_address@rm	; 	xcall	ethernet_set_address
	call	ethernet_set_address@rl
	ld.w	%r12,%r0
	ld.w	%r13,%r12
	ext	usb_ep0_tx@rm	; 	xcall	usb_ep0_tx
	call	usb_ep0_tx@rl
	jp	__LX86		; 	xjp	__L86
__LX89:				; __L89:
__LX87:				; __L87:
	ext	usb_ep0_stall@rm	; 	xcall	usb_ep0_stall
	call	usb_ep0_stall@rl
__LX86:				; __L86:
	popn	%r0
	ret
	.align	1
bus_reset:
;	.frame	%sp,8,$31		# vars= 0, regs= 2/0, args= 0, extra= 0
;	.mask	0x80010000,-4
;	.fmask	0x00000000,0
	pushn	%r0
	ext	driver+0x5f4@h	; 	xld.w	%r0,driver+1524
	ext	driver+0x5f4@m
	ld.w	%r0,driver+0x5f4@l
	ld.w	%r12,[%r0]	; 	xld.w	%r12,[%r0]
	ext	clear_queue@rm	; 	xcall	clear_queue
	call	clear_queue@rl
	ld.w	%r11,0x0
	ext	0x5f0		; 	xld.w	[%r0+1520],%r11
	ld.w	[%r0],%r11
	ext	0x5f8		; 	xld.w	[%r0+1528],%r11
	ld.w	[%r0],%r11
	ext	0x4		; 	xsub	%r10,%r0,4
	sub	%r10,%r0
	ld.w	[%r10],%r11	; 	xld.w	[%r10],%r11
	ext	0x17		; 	xadd	%r0,%r0,1532
	add	%r0,0x3c
	ld.w	%r10,[%r0]	; 	xld.w	%r10,[%r0]
	add	%r10,0x1	; 	xadd	%r10,%r10,1
	ld.w	[%r0],%r10	; 	xld.w	[%r0],%r10
	popn	%r0
	ret
	.align	1
ep2_rxdone:
;	.frame	%sp,72,$31		# vars= 64, regs= 2/0, args= 0, extra= 0
;	.mask	0x80010000,-4
;	.fmask	0x00000000,0
	pushn	%r0
	sub	%sp,0x10	; 	xsub	%sp,%sp,64
__LX95:				; __L95:
	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	__LX96		; 	xjreq	__L96
	ld.w	%r12,0x4	; 	xld.w	%r12,0x00000004		; 4
	ext	D12_ClearBuffer@rm	; 	xcall	D12_ClearBuffer
	call	D12_ClearBuffer@rl
	ld.w	%r12,%sp
	ld.w	%r13,%r0
	call	ep2_rxsub	; 	xcall	ep2_rxsub
	jp	__LX95		; 	xjp	__L95
__LX96:				; __L96:
	add	%sp,0x10	; 	xadd	%sp,%sp,64
	popn	%r0
	ret
	.align	1
ep2_rxsub:
;	.frame	%sp,12,$31		# vars= 0, regs= 3/0, args= 0, extra= 0
;	.mask	0x80030000,-4
;	.fmask	0x00000000,0
	pushn	%r1
	ld.w	%r11,%r12
	ld.w	%r0,%r13
	ext	driver+0x5f0@h	; 	xld.w	%r1,driver+1520
	ext	driver+0x5f0@m
	ld.w	%r1,driver+0x5f0@l
	ld.w	%r10,[%r1]	; 	xld.w	%r10,[%r1]
	add	%r10,%r0
	ext	0x17		; 	xcmp	%r10,1514
	cmp	%r10,0x2a
	jrgt	__LX100		; 	xjrgt	__L100
	ext	driver+0x5f0@ah	; 	xld.w	%r10,[driver+1520]
	ext	driver+0x5f0@al
	ld.w	%r10,[%r8]
	ext	0x5ea		; 	xsub	%r12,%r1,1514
	sub	%r12,%r1
	add	%r10,%r12
	ld.w	%r12,%r10
	ld.w	%r13,%r11
	ld.w	%r14,%r0
	ext	memcpy@rm	; 	xcall	memcpy
	call	memcpy@rl
__LX100:				; __L100:
	ld.w	%r10,[%r1]	; 	xld.w	%r10,[%r1]
	add	%r10,%r0
	ld.w	[%r1],%r10	; 	xld.w	[%r1],%r10
	ext	0x0		; 	xcmp	%r0,63
	cmp	%r0,0x3f
	jrgt	__LX101		; 	xjrgt	__L101
	cmp	%r10,0x0
	jreq	__LX103		; 	xjreq	__L103
	sub	%r10,0x3c	; 	xsub	%r10,%r10,60
	ext	0x16		; 	xcmp	%r10,1454
	cmp	%r10,0x2e
	jrule	__LX104		; 	xjrule	__L104
	ext	0x608		; 	xadd	%r11,%r1,1544
	add	%r11,%r1
	ld.w	%r10,[%r11]	; 	xld.w	%r10,[%r11]
	add	%r10,0x1	; 	xadd	%r10,%r10,1
	ld.w	[%r11],%r10	; 	xld.w	[%r11],%r10
	jp	__LX103		; 	xjp	__L103
__LX104:				; __L104:
	ext	0x5ea		; 	xsub	%r0,%r1,1514
	sub	%r0,%r1
	ld.w	%r12,%r0
	ext	0x5f0		; 	xsub	%r13,%r1,1520
	sub	%r13,%r1
	ld.w	%r14,0x6	; 	xld.w	%r14,0x00000006		; 6
	ext	memcmp@rm	; 	xcall	memcmp
	call	memcmp@rl
	cmp	%r10,0x0
	jreq	__LX105		; 	xjreq	__L105
	ld.w	%r12,%r0
	ext	ethernet_broadcast_address+0x0@h	; 	xld.w	%r13,ethernet_broadcast_address
	ext	ethernet_broadcast_address+0x0@m
	ld.w	%r13,ethernet_broadcast_address+0x0@l
	ld.w	%r14,0x6	; 	xld.w	%r14,0x00000006		; 6
	ext	memcmp@rm	; 	xcall	memcmp
	call	memcmp@rl
	cmp	%r10,0x0
	jrne	__LX103		; 	xjrne	__L103
__LX105:				; __L105:
	ext	0x604		; 	xadd	%r11,%r1,1540
	add	%r11,%r1
	ld.w	%r10,[%r11]	; 	xld.w	%r10,[%r11]
	add	%r10,0x1	; 	xadd	%r10,%r10,1
	ld.w	[%r11],%r10	; 	xld.w	[%r11],%r10
	ext	0x5de		; 	xsub	%r10,%r1,1502
	sub	%r10,%r1
	ld.ub	%r10,[%r10]	; 	xld.ub	%r10,[%r10]
	sll	%r10,0x8	; 	xsll	%r10,8
	ext	0x5dd		; 	xsub	%r11,%r1,1501
	sub	%r11,%r1
	ld.ub	%r12,[%r11]	; 	xld.ub	%r12,[%r11]
	or	%r12,%r10
	call	ethernet_find_client	; 	xcall	ethernet_find_client
	cmp	%r10,0x0
	jreq	__LX103		; 	xjreq	__L103
	ext	0x4		; 	xld.w	%r11,[%r10+4]
	ld.w	%r11,[%r10]
	cmp	%r11,0x0
	jreq	__LX103		; 	xjreq	__L103
	ld.w	%r15,[%r1]	; 	xld.w	%r15,[%r1]
	ld.w	%r12,%r10
	ext	0x5e4		; 	xsub	%r13,%r1,1508
	sub	%r13,%r1
	ext	0x5dc		; 	xsub	%r14,%r1,1500
	sub	%r14,%r1
	sub	%r15,0xe	; 	xsub	%r15,%r15,14
	call	%r11
__LX103:				; __L103:
	ld.w	%r4,0x0
	ext	driver+0x5f0@ah	; 	xld.w	[driver+1520],%r4
	ext	driver+0x5f0@al
	ld.w	[%r8],%r4
__LX101:				; __L101:
	popn	%r1
	ret
	.align	1
ep2_txdone:
;	.frame	%sp,4,$31		# vars= 0, regs= 1/0, args= 0, extra= 0
;	.mask	0x80000000,-4
;	.fmask	0x00000000,0
	call	ep2_txsub	; 	xcall	ep2_txsub
	ext	driver+0xbec@ah	; 	xld.w	[driver+3052],%r10
	ext	driver+0xbec@al
	ld.w	[%r8],%r10
	ret
	.align	1
ep2_txsub:
;	.frame	%sp,20,$31		# vars= 0, regs= 5/0, args= 0, extra= 0
;	.mask	0x800f0000,-4
;	.fmask	0x00000000,0
	pushn	%r3
	ext	driver+0xbe4@h	; 	xld.w	%r3,driver+3044
	ext	driver+0xbe4@m
	ld.w	%r3,driver+0xbe4@l
	ld.w	%r2,[%r3]	; 	xld.w	%r2,[%r3]
	cmp	%r2,0x0
	jrne	__LX110		; 	xjrne	__L110
	ext	0x5f0		; 	xsub	%r10,%r3,1520
	sub	%r10,%r3
	ld.w	%r12,[%r10]	; 	xld.w	%r12,[%r10]
	ext	driver+0x5f8@h	; 	xld.w	%r13,driver+1528
	ext	driver+0x5f8@m
	ld.w	%r13,driver+0x5f8@l
	ext	0x17		; 	xld.w	%r14,0x000005ea		; 1514
	ld.w	%r14,0x2a
	ext	read_queue@rm	; 	xcall	read_queue
	call	read_queue@rl
	ld.w	%r1,%r10
	cmp	%r1,0x0
	jrge	__LX111		; 	xjrge	__L111
	ld.w	%r10,%r2
	jp	__LX115		; 	xjp	__L115
__LX111:				; __L111:
	ext	0x0		; 	xcmp	%r1,59
	cmp	%r1,0x3b
	jrgt	__LX112		; 	xjrgt	__L112
	ext	0x0		; 	xld.w	%r0,0x0000003c		; 60
	ld.w	%r0,0x3c
	ld.w	%r12,%r1
	ext	driver+0x5f8@h	; 	xld.w	%r15,driver+1528
	ext	driver+0x5f8@m
	ld.w	%r15,driver+0x5f8@l
	add	%r12,%r15
	ld.w	%r13,%r2
	ld.w	%r14,%r0
	sub	%r14,%r1
	ext	memset@rm	; 	xcall	memset
	call	memset@rl
	ld.w	%r1,%r0
__LX112:				; __L112:
	ld.w	[%r3],%r1	; 	xld.w	[%r3],%r1
	ext	0x4		; 	xld.w	[%r3+4],%r2
	ld.w	[%r3],%r2
__LX110:				; __L110:
	ext	driver+0xbe4@h	; 	xld.w	%r0,driver+3044
	ext	driver+0xbe4@m
	ld.w	%r0,driver+0xbe4@l
	ext	0x4		; 	xadd	%r2,%r0,4
	add	%r2,%r0
	ld.w	%r10,[%r0]	; 	xld.w	%r10,[%r0]
	ld.w	%r11,[%r2]	; 	xld.w	%r11,[%r2]
	ld.w	%r1,%r10
	sub	%r1,%r11
	ext	0x1		; 	xld.w	%r10,0x00000040		; 64
	ld.w	%r10,0x0
	cmp	%r1,%r10
	jrle	__LX113		; 	xjrle	__L113
	ld.w	%r1,%r10
__LX113:				; __L113:
	ext	0x5ec		; 	xsub	%r13,%r0,1516
	sub	%r13,%r0
	ld.w	%r12,0x5	; 	xld.w	%r12,0x00000005		; 5
	add	%r11,%r13
	ld.w	%r13,%r11
	ld.w	%r14,%r1
	ext	D12_WriteBuffer@rm	; 	xcall	D12_WriteBuffer
	call	D12_WriteBuffer@rl
	ld.w	%r12,0x5	; 	xld.w	%r12,0x00000005		; 5
	ext	D12_ValidateBuffer@rm	; 	xcall	D12_ValidateBuffer
	call	D12_ValidateBuffer@rl
	ld.w	%r10,[%r2]	; 	xld.w	%r10,[%r2]
	add	%r10,%r1
	ld.w	[%r2],%r10	; 	xld.w	[%r2],%r10
	ext	0x0		; 	xcmp	%r1,63
	cmp	%r1,0x3f
	jrgt	__LX114		; 	xjrgt	__L114
	ld.w	%r15,0x0
	ld.w	[%r0],%r15	; 	xld.w	[%r0],%r15
	ext	0x18		; 	xadd	%r11,%r0,24
	add	%r11,%r0
	ld.w	%r10,[%r11]	; 	xld.w	%r10,[%r11]
	add	%r10,0x1	; 	xadd	%r10,%r10,1
	ld.w	[%r11],%r10	; 	xld.w	[%r11],%r10
__LX114:				; __L114:
	ld.w	%r10,0x1	; 	xld.w	%r10,0x00000001		; 1
__LX115:				; __L115:
	popn	%r3
	ret
	.code
	.align	2
__LC5:
	.ascii	"clipeth.$(%d)\000"
	.code
	.align	1
ethernet_find_client:
;	.frame	%sp,12,$31		# vars= 0, regs= 1/0, args= 8, extra= 0
;	.mask	0x80000000,-4
;	.fmask	0x00000000,0
	sub	%sp,0x2		; 	xsub	%sp,%sp,8
	ext	driver+0xc04@h	; 	xld.w	%r14,driver+3076
	ext	driver+0xc04@m
	ld.w	%r14,driver+0xc04@l
	ld.w	%r11,[%r14]	; 	xld.w	%r11,[%r14]
	cmp	%r11,%r14
	jreq	__LX118		; 	xjreq	__L118
	ext	__LC5+0x0@h	; 	xld.w	%r15,__LC5
	ext	__LC5+0x0@m
	ld.w	%r15,__LC5+0x0@l
__LX119:				; __L119:
	cmp	%r11,0x0
	jrne	__LX120		; 	xjrne	__L120
	ld.w	[%sp+0x0],%r15	; 	xld.w	[%sp],%r15
	ext	0x6		; 	xld.w	%r10,0x000001bc		; 444
	ld.w	%r10,0x3c
	ld.w	[%sp+0x1],%r10	; 	xld.w	[%sp+4],%r10
	ext	die@rm		; 	xcall	die
	call	die@rl
__LX120:				; __L120:
	ext	0xc		; 	xsub	%r13,%r11,12
	sub	%r13,%r11
	ld.w	%r10,[%r13]	; 	xld.w	%r10,[%r13]
	cmp	%r10,%r12
	jrne	__LX121		; 	xjrne	__L121
	ld.w	%r10,%r13
	jp	__LX123		; 	xjp	__L123
__LX121:				; __L121:
	ld.w	%r11,[%r11]	; 	xld.w	%r11,[%r11]
	cmp	%r11,%r14
	jrne	__LX119		; 	xjrne	__L119
__LX118:				; __L118:
	ld.w	%r10,0x0
__LX123:				; __L123:
	add	%sp,0x2		; 	xadd	%sp,%sp,8
	ret
	.align	1
	.global	ethernet_start
ethernet_start:
;	.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
	call	ethernet_stop	; 	xcall	ethernet_stop
	ext	driver+0x0@h	; 	xld.w	%r1,driver
	ext	driver+0x0@m
	ld.w	%r1,driver+0x0@l
	ld.w	%r12,%r1
	ld.w	%r13,0x0
	ext	0x30		; 	xld.w	%r14,0x00000c0c		; 3084
	ld.w	%r14,0xc
	ext	memset@rm	; 	xcall	memset
	call	memset@rl
	ext	0x17		; 	xcmp	%r0,1513
	cmp	%r0,0x29
	jrgt	__LX125		; 	xjrgt	__L125
	ext	0x17		; 	xld.w	%r0,0x000005ea		; 1514
	ld.w	%r0,0x2a
__LX125:				; __L125:
	ld.w	%r12,%r0
	ext	create_queue@rm	; 	xcall	create_queue
	call	create_queue@rl
	ext	0x5f4		; 	xld.w	[%r1+1524],%r10
	ld.w	[%r1],%r10
	ext	0xc04		; 	xadd	%r12,%r1,3076
	add	%r12,%r1
	ext	InitializeListHead@rm	; 	xcall	InitializeListHead
	call	InitializeListHead@rl
	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
	popn	%r1
	ret
	.align	1
	.global	ethernet_stop
ethernet_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	driver+0x5f4@h	; 	xld.w	%r0,driver+1524
	ext	driver+0x5f4@m
	ld.w	%r0,driver+0x5f4@l
	ld.w	%r12,[%r0]	; 	xld.w	%r12,[%r0]
	cmp	%r12,0x0
	jreq	__LX127		; 	xjreq	__L127
	ext	delete_queue@rm	; 	xcall	delete_queue
	call	delete_queue@rl
__LX127:				; __L127:
	ext	0x5f4		; 	xsub	%r12,%r0,1524
	sub	%r12,%r0
	ld.w	%r13,0x0
	ext	0x30		; 	xld.w	%r14,0x00000c0c		; 3084
	ld.w	%r14,0xc
	ext	memset@rm	; 	xcall	memset
	call	memset@rl
	popn	%r0
	ret
	.align	1
	.global	ethernet_open
ethernet_open:
;	.frame	%sp,20,$31		# vars= 4, regs= 2/0, args= 8, extra= 0
;	.mask	0x80010000,-4
;	.fmask	0x00000000,0
	pushn	%r0
	sub	%sp,0x3		; 	xsub	%sp,%sp,12
	ld.w	%r0,%r12
	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]
	ext	0x600		; 	xsub	%r10,%r12,1536
	sub	%r10,%r12
	ext	0x3e7		; 	xcmp	%r10,63999
	cmp	%r10,0x3f
	jrule	__LX132		; 	xjrule	__L132
	ext	__LC5+0x0@h	; 	xld.w	%r10,__LC5
	ext	__LC5+0x0@m
	ld.w	%r10,__LC5+0x0@l
	ld.w	[%sp+0x0],%r10	; 	xld.w	[%sp],%r10
	ext	0x7		; 	xld.w	%r10,0x000001f7		; 503
	ld.w	%r10,0x37
	ld.w	[%sp+0x1],%r10	; 	xld.w	[%sp+4],%r10
	ext	die@rm		; 	xcall	die
	call	die@rl
__LX132:				; __L132:
	call	ethernet_find_client	; 	xcall	ethernet_find_client
	cmp	%r10,0x0
	jreq	__LX133		; 	xjreq	__L133
	ext	__LC5+0x0@h	; 	xld.w	%r10,__LC5
	ext	__LC5+0x0@m
	ld.w	%r10,__LC5+0x0@l
	ld.w	[%sp+0x0],%r10	; 	xld.w	[%sp],%r10
	ext	0x7		; 	xld.w	%r10,0x000001fb		; 507
	ld.w	%r10,0x3b
	ld.w	[%sp+0x1],%r10	; 	xld.w	[%sp+4],%r10
	ext	die@rm		; 	xcall	die
	call	die@rl
__LX133:				; __L133:
	ext	driver+0xc04@h	; 	xld.w	%r12,driver+3076
	ext	driver+0xc04@m
	ld.w	%r12,driver+0xc04@l
	ext	0xc		; 	xadd	%r13,%r0,12
	add	%r13,%r0
	ext	InsertTailList@rm	; 	xcall	InsertTailList
	call	InsertTailList@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	%r0
	ret
	.align	1
	.global	ethernet_close
ethernet_close:
;	.frame	%sp,20,$31		# vars= 4, regs= 2/0, args= 8, extra= 0
;	.mask	0x80010000,-4
;	.fmask	0x00000000,0
	pushn	%r0
	sub	%sp,0x3		; 	xsub	%sp,%sp,12
	ld.w	%r0,%r12
	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]
	ext	ethernet_find_client@rm	; 	xcall	ethernet_find_client
	call	ethernet_find_client@rl
	cmp	%r10,%r0
	jreq	__LX139		; 	xjreq	__L139
	ext	__LC5+0x0@h	; 	xld.w	%r10,__LC5
	ext	__LC5+0x0@m
	ld.w	%r10,__LC5+0x0@l
	ld.w	[%sp+0x0],%r10	; 	xld.w	[%sp],%r10
	ext	0x8		; 	xld.w	%r10,0x0000020a		; 522
	ld.w	%r10,0xa
	ld.w	[%sp+0x1],%r10	; 	xld.w	[%sp+4],%r10
	ext	die@rm		; 	xcall	die
	call	die@rl
__LX139:				; __L139:
	ext	0xc		; 	xadd	%r12,%r10,12
	add	%r12,%r10
	ext	RemoveEntryList@rm	; 	xcall	RemoveEntryList
	call	RemoveEntryList@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	%r0
	ret
	.align	1
	.global	ethernet_send
ethernet_send:
;	.frame	%sp,40,$31		# vars= 12, regs= 5/0, args= 8, extra= 0
;	.mask	0x800f0000,-4
;	.fmask	0x00000000,0
	pushn	%r3
	sub	%sp,0x5		; 	xsub	%sp,%sp,20
	ld.w	%r0,%r12
	ld.w	[%sp+0x3],%r13	; 	xld.w	[%sp+12],%r13
	ld.w	[%sp+0x4],%r14	; 	xld.w	[%sp+16],%r14
	ld.w	%r3,%r15
	cmp	%r3,0x0
	jrge	__LX142		; 	xjrge	__L142
	ext	__LC5+0x0@h	; 	xld.w	%r10,__LC5
	ext	__LC5+0x0@m
	ld.w	%r10,__LC5+0x0@l
	ld.w	[%sp+0x0],%r10	; 	xld.w	[%sp],%r10
	ext	0x8		; 	xld.w	%r10,0x0000021c		; 540
	ld.w	%r10,0x1c
	ld.w	[%sp+0x1],%r10	; 	xld.w	[%sp+4],%r10
	ext	die@rm		; 	xcall	die
	call	die@rl
__LX142:				; __L142:
	ext	0x17		; 	xcmp	%r3,1500
	cmp	%r3,0x1c
	jrle	__LX144		; 	xjrle	__L144
	ext	__LC5+0x0@h	; 	xld.w	%r10,__LC5
	ext	__LC5+0x0@m
	ld.w	%r10,__LC5+0x0@l
	ld.w	[%sp+0x0],%r10	; 	xld.w	[%sp],%r10
	ext	0x8		; 	xld.w	%r10,0x00000226		; 550
	ld.w	%r10,0x26
	ld.w	[%sp+0x1],%r10	; 	xld.w	[%sp+4],%r10
	ext	die@rm		; 	xcall	die
	call	die@rl
__LX144:				; __L144:
	ext	0xe		; 	xadd	%r1,%r3,14
	add	%r1,%r3
	ld.w	%r12,%r1
	ext	malloc@rm	; 	xcall	malloc
	call	malloc@rl
	ld.w	%r2,%r10
	cmp	%r2,0x0
	jrne	__LX145		; 	xjrne	__L145
	ext	__LC5+0x0@h	; 	xld.w	%r10,__LC5
	ext	__LC5+0x0@m
	ld.w	%r10,__LC5+0x0@l
	ld.w	[%sp+0x0],%r10	; 	xld.w	[%sp],%r10
	ext	0x8		; 	xld.w	%r10,0x0000022d		; 557
	ld.w	%r10,0x2d
	ld.w	[%sp+0x1],%r10	; 	xld.w	[%sp+4],%r10
	ext	die@rm		; 	xcall	die
	call	die@rl
__LX145:				; __L145:
	ld.w	%r12,%r2
	ld.w	%r13,[%sp+0x3]	; 	xld.w	%r13,[%sp+12]
	ld.w	%r14,0x6	; 	xld.w	%r14,0x00000006		; 6
	ext	memcpy@rm	; 	xcall	memcpy
	call	memcpy@rl
	ext	0x6		; 	xadd	%r12,%r2,6
	add	%r12,%r2
	call	ethernet_get_address	; 	xcall	ethernet_get_address
	ld.w	%r10,[%r0]	; 	xld.w	%r10,[%r0]
	sra	%r10,0x8	; 	xsra	%r10,8
	ext	0xc		; 	xld.b	[%r2+12],%r10
	ld.b	[%r2],%r10
	ld.w	%r10,[%r0]	; 	xld.w	%r10,[%r0]
	ext	0xd		; 	xld.b	[%r2+13],%r10
	ld.b	[%r2],%r10
	ext	0xe		; 	xadd	%r12,%r2,14
	add	%r12,%r2
	ld.w	%r13,[%sp+0x4]	; 	xld.w	%r13,[%sp+16]
	ld.w	%r14,%r3
	ext	memcpy@rm	; 	xcall	memcpy
	call	memcpy@rl
	ld.w	%r12,%sp	; 	xadd	%r12,%sp,8
	add	%r12,0x8
	ext	pceSyncEnterCriticalSection@rm	; 	xcall	pceSyncEnterCriticalSection
	call	pceSyncEnterCriticalSection@rl
	ext	driver+0x5f4@h	; 	xld.w	%r0,driver+1524
	ext	driver+0x5f4@m
	ld.w	%r0,driver+0x5f4@l
	ld.w	%r12,[%r0]	; 	xld.w	%r12,[%r0]
	ld.w	%r13,%r2
	ld.w	%r14,%r1
	ext	write_queue@rm	; 	xcall	write_queue
	call	write_queue@rl
	ld.w	%r1,%r10
	cmp	%r1,0x0
	jrlt	__LX153		; 	xjrlt	__L153
	ext	0x17		; 	xadd	%r0,%r0,1528
	add	%r0,0x38
	ld.w	%r10,[%r0]	; 	xld.w	%r10,[%r0]
	cmp	%r10,0x0
	jrne	__LX154		; 	xjrne	__L154
	ext	ep2_txsub@rm	; 	xcall	ep2_txsub
	call	ep2_txsub@rl
	ld.w	[%r0],%r10	; 	xld.w	[%r0],%r10
__LX154:				; __L154:
	ld.w	%r1,%r3
	jp	__LX155		; 	xjp	__L155
__LX153:				; __L153:
	ext	0x60c		; 	xadd	%r11,%r0,1548
	add	%r11,%r0
	ld.w	%r10,[%r11]	; 	xld.w	%r10,[%r11]
	add	%r10,0x1	; 	xadd	%r10,%r10,1
	ld.w	[%r11],%r10	; 	xld.w	[%r11],%r10
__LX155:				; __L155:
	ld.w	%r12,%sp	; 	xadd	%r12,%sp,8
	add	%r12,0x8
	ext	pceSyncLeaveCriticalSection@rm	; 	xcall	pceSyncLeaveCriticalSection
	call	pceSyncLeaveCriticalSection@rl
	ld.w	%r12,%r2
	ext	free@rm		; 	xcall	free
	call	free@rl
	ld.w	%r10,%r1
	add	%sp,0x5		; 	xadd	%sp,%sp,20
	popn	%r3
	ret
	.align	1
	.global	ethernet_set_address
ethernet_set_address:
;	.frame	%sp,28,$31		# vars= 4, regs= 4/0, args= 8, extra= 0
;	.mask	0x80070000,-4
;	.fmask	0x00000000,0
	pushn	%r2
	sub	%sp,0x3		; 	xsub	%sp,%sp,12
	ld.w	%r1,%r12
	ld.w	%r12,%sp	; 	xadd	%r12,%sp,8
	add	%r12,0x8
	ext	pceSyncEnterCriticalSection@rm	; 	xcall	pceSyncEnterCriticalSection
	call	pceSyncEnterCriticalSection@rl
	ext	driver+0x0@h	; 	xld.w	%r0,driver
	ext	driver+0x0@m
	ld.w	%r0,driver+0x0@l
	ld.w	%r12,%r1
	ld.w	%r13,%r0
	ld.w	%r14,0x6	; 	xld.w	%r14,0x00000006		; 6
	ext	memcmp@rm	; 	xcall	memcmp
	call	memcmp@rl
	cmp	%r10,0x0
	jreq	__LX161		; 	xjreq	__L161
	ld.w	%r12,%r0
	ld.w	%r13,%r1
	ld.w	%r14,0x6	; 	xld.w	%r14,0x00000006		; 6
	ext	memcpy@rm	; 	xcall	memcpy
	call	memcpy@rl
	ext	0xc04		; 	xadd	%r1,%r0,3076
	add	%r1,%r0
	ld.w	%r0,[%r1]	; 	xld.w	%r0,[%r1]
	cmp	%r0,%r1
	jreq	__LX161		; 	xjreq	__L161
	ext	__LC5+0x0@h	; 	xld.w	%r2,__LC5
	ext	__LC5+0x0@m
	ld.w	%r2,__LC5+0x0@l
__LX164:				; __L164:
	cmp	%r0,0x0
	jrne	__LX165		; 	xjrne	__L165
	ld.w	[%sp+0x0],%r2	; 	xld.w	[%sp],%r2
	ext	0x9		; 	xld.w	%r10,0x0000026a		; 618
	ld.w	%r10,0x2a
	ld.w	[%sp+0x1],%r10	; 	xld.w	[%sp+4],%r10
	ext	die@rm		; 	xcall	die
	call	die@rl
__LX165:				; __L165:
	ext	0xc		; 	xsub	%r12,%r0,12
	sub	%r12,%r0
	ext	0x8		; 	xld.w	%r10,[%r12+8]
	ld.w	%r10,[%r12]
	cmp	%r10,0x0
	jreq	__LX166		; 	xjreq	__L166
	call	%r10
__LX166:				; __L166:
	ld.w	%r0,[%r0]	; 	xld.w	%r0,[%r0]
	cmp	%r0,%r1
	jrne	__LX164		; 	xjrne	__L164
__LX161:				; __L161:
	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	%r2
	ret
	.align	1
	.global	ethernet_get_address
ethernet_get_address:
;	.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
	ld.w	%r12,%r0
	ext	driver+0x0@h	; 	xld.w	%r13,driver
	ext	driver+0x0@m
	ld.w	%r13,driver+0x0@l
	ld.w	%r14,0x6	; 	xld.w	%r14,0x00000006		; 6
	ext	memcpy@rm	; 	xcall	memcpy
	call	memcpy@rl
	ld.w	%r12,%sp
	ext	pceSyncLeaveCriticalSection@rm	; 	xcall	pceSyncLeaveCriticalSection
	call	pceSyncLeaveCriticalSection@rl
	add	%sp,0x1		; 	xadd	%sp,%sp,4
	popn	%r0
	ret
	.align	1
	.global	ethernet_stat
ethernet_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
	ld.w	%r12,%r0
	ext	driver+0xbf0@h	; 	xld.w	%r13,driver+3056
	ext	driver+0xbf0@m
	ld.w	%r13,driver+0xbf0@l
	ld.w	%r14,0x14	; 	xld.w	%r14,0x00000014		; 20
	ext	memcpy@rm	; 	xcall	memcpy
	call	memcpy@rl
	ld.w	%r12,%sp
	ext	pceSyncLeaveCriticalSection@rm	; 	xcall	pceSyncLeaveCriticalSection
	call	pceSyncLeaveCriticalSection@rl
	add	%sp,0x1		; 	xadd	%sp,%sp,4
	popn	%r0
	ret

	.lcomm	driver 3084
