
;  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
__LC0:
	.ascii	"clipudp.$(%d)\000"
	.code
	.align	1
udp_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	udp_driver+0x14@h	; 	xld.w	%r14,udp_driver+20
	ext	udp_driver+0x14@m
	ld.w	%r14,udp_driver+0x14@l
	ld.w	%r11,[%r14]	; 	xld.w	%r11,[%r14]
	cmp	%r11,%r14
	jreq	__LX72		; 	xjreq	__L72
	ext	__LC0+0x0@h	; 	xld.w	%r15,__LC0
	ext	__LC0+0x0@m
	ld.w	%r15,__LC0+0x0@l
__LX73:				; __L73:
	cmp	%r11,0x0
	jrne	__LX74		; 	xjrne	__L74
	ld.w	[%sp+0x0],%r15	; 	xld.w	[%sp],%r15
	ext	0x0		; 	xld.w	%r10,0x0000002f		; 47
	ld.w	%r10,0x2f
	ld.w	[%sp+0x1],%r10	; 	xld.w	[%sp+4],%r10
	ext	die@rm		; 	xcall	die
	call	die@rl
__LX74:				; __L74:
	ext	0x8		; 	xsub	%r13,%r11,8
	sub	%r13,%r11
	ld.w	%r10,[%r13]	; 	xld.w	%r10,[%r13]
	cmp	%r10,%r12
	jrne	__LX75		; 	xjrne	__L75
	ld.w	%r10,%r13
	jp	__LX77		; 	xjp	__L77
__LX75:				; __L75:
	ld.w	%r11,[%r11]	; 	xld.w	%r11,[%r11]
	cmp	%r11,%r14
	jrne	__LX73		; 	xjrne	__L73
__LX72:				; __L72:
	ld.w	%r10,0x0
__LX77:				; __L77:
	add	%sp,0x2		; 	xadd	%sp,%sp,8
	ret
	.align	1
udp_allocate_ephemeral_port:
;	.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	udp_driver+0x14@h	; 	xld.w	%r13,udp_driver+20
	ext	udp_driver+0x14@m
	ld.w	%r13,udp_driver+0x14@l
	ld.w	%r11,[%r13]	; 	xld.w	%r11,[%r13]
	ext	0x300		; 	xld.w	%r12,0x0000c000		; 49152
	ld.w	%r12,0x0
	ext	__LC0+0x0@h	; 	xld.w	%r14,__LC0
	ext	__LC0+0x0@m
	ld.w	%r14,__LC0+0x0@l
	ext	0x1		; 	xld.w	%r15,0x00000054		; 84
	ld.w	%r15,0x14
__LX82:				; __L82:
	cmp	%r11,%r13
	jreq	__LX80		; 	xjreq	__L80
__LX85:				; __L85:
	cmp	%r11,0x0
	jrne	__LX86		; 	xjrne	__L86
	ld.w	[%sp+0x0],%r14	; 	xld.w	[%sp],%r14
	ld.w	[%sp+0x1],%r15	; 	xld.w	[%sp+4],%r15
	ext	die@rm		; 	xcall	die
	call	die@rl
__LX86:				; __L86:
	ext	0x8		; 	xsub	%r10,%r11,8
	sub	%r10,%r11
	ld.w	%r10,[%r10]	; 	xld.w	%r10,[%r10]
	cmp	%r10,%r12
	jreq	__LX84		; 	xjreq	__L84
	ld.w	%r11,[%r11]	; 	xld.w	%r11,[%r11]
	cmp	%r11,%r13
	jrne	__LX85		; 	xjrne	__L85
__LX84:				; __L84:
	cmp	%r11,%r13
	jreq	__LX80		; 	xjreq	__L80
	add	%r12,0x1	; 	xadd	%r12,%r12,1
	ext	0x3ff		; 	xcmp	%r12,65535
	cmp	%r12,0x3f
	jrle	__LX82		; 	xjrle	__L82
__LX80:				; __L80:
	ext	0x3ff		; 	xcmp	%r12,65535
	cmp	%r12,0x3f
	jrle	__LX91		; 	xjrle	__L91
	ext	__LC0+0x0@h	; 	xld.w	%r10,__LC0
	ext	__LC0+0x0@m
	ld.w	%r10,__LC0+0x0@l
	ld.w	[%sp+0x0],%r10	; 	xld.w	[%sp],%r10
	ext	0x1		; 	xld.w	%r10,0x00000062		; 98
	ld.w	%r10,0x22
	ld.w	[%sp+0x1],%r10	; 	xld.w	[%sp+4],%r10
	ext	die@rm		; 	xcall	die
	call	die@rl
__LX91:				; __L91:
	ld.w	%r10,%r12
	add	%sp,0x2		; 	xadd	%sp,%sp,8
	ret
	.align	1
	.global	udp_start
udp_start:
;	.frame	%sp,8,$31		# vars= 0, regs= 2/0, args= 0, extra= 0
;	.mask	0x80010000,-4
;	.fmask	0x00000000,0
	pushn	%r0
	call	udp_stop	; 	xcall	udp_stop
	ext	udp_driver+0x0@h	; 	xld.w	%r0,udp_driver
	ext	udp_driver+0x0@m
	ld.w	%r0,udp_driver+0x0@l
	ld.w	%r12,%r0
	ld.w	%r13,0x0
	ld.w	%r14,0x1c	; 	xld.w	%r14,0x0000001c		; 28
	ext	memset@rm	; 	xcall	memset
	call	memset@rl
	ext	0x14		; 	xadd	%r12,%r0,20
	add	%r12,%r0
	ext	InitializeListHead@rm	; 	xcall	InitializeListHead
	call	InitializeListHead@rl
	ld.w	%r10,0x11	; 	xld.w	%r10,0x00000011		; 17
	ld.w	[%r0],%r10	; 	xld.w	[%r0],%r10
	ext	udp_recv+0x0@h	; 	xld.w	%r10,udp_recv
	ext	udp_recv+0x0@m
	ld.w	%r10,udp_recv+0x0@l
	ext	0x4		; 	xld.w	[%r0+4],%r10
	ld.w	[%r0],%r10
	ld.w	%r12,%r0
	ext	ip_open@rm	; 	xcall	ip_open
	call	ip_open@rl
	popn	%r0
	ret
	.align	1
	.global	udp_stop
udp_stop:
;	.frame	%sp,8,$31		# vars= 0, regs= 2/0, args= 0, extra= 0
;	.mask	0x80010000,-4
;	.fmask	0x00000000,0
	pushn	%r0
	ext	udp_driver+0x14@h	; 	xld.w	%r0,udp_driver+20
	ext	udp_driver+0x14@m
	ld.w	%r0,udp_driver+0x14@l
	ld.w	%r10,[%r0]	; 	xld.w	%r10,[%r0]
	cmp	%r10,0x0
	jreq	__LX94		; 	xjreq	__L94
	sub	%r0,0x14	; 	xsub	%r0,%r0,20
	ld.w	%r12,%r0
	ext	ip_close@rm	; 	xcall	ip_close
	call	ip_close@rl
	ld.w	%r12,%r0
	ld.w	%r13,0x0
	ld.w	%r14,0x1c	; 	xld.w	%r14,0x0000001c		; 28
	ext	memset@rm	; 	xcall	memset
	call	memset@rl
__LX94:				; __L94:
	popn	%r0
	ret
	.align	1
	.global	udp_open
udp_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]
	cmp	%r12,0x0
	jrne	__LX100		; 	xjrne	__L100
	call	udp_allocate_ephemeral_port	; 	xcall	udp_allocate_ephemeral_port
	ld.w	[%r0],%r10	; 	xld.w	[%r0],%r10
	jp	__LX101		; 	xjp	__L101
__LX100:				; __L100:
	ld.w	%r10,%r12
	ext	0x1c00		; 	xand	%r10,%r10,0xffff0000
	and	%r10,0x0
	jreq	__LX102		; 	xjreq	__L102
	ext	__LC0+0x0@h	; 	xld.w	%r10,__LC0
	ext	__LC0+0x0@m
	ld.w	%r10,__LC0+0x0@l
	ld.w	[%sp+0x0],%r10	; 	xld.w	[%sp],%r10
	ext	0x2		; 	xld.w	%r10,0x00000096		; 150
	ld.w	%r10,0x16
	ld.w	[%sp+0x1],%r10	; 	xld.w	[%sp+4],%r10
	ext	die@rm		; 	xcall	die
	call	die@rl
__LX102:				; __L102:
	ext	udp_find_client@rm	; 	xcall	udp_find_client
	call	udp_find_client@rl
	cmp	%r10,0x0
	jreq	__LX101		; 	xjreq	__L101
	ext	__LC0+0x0@h	; 	xld.w	%r10,__LC0
	ext	__LC0+0x0@m
	ld.w	%r10,__LC0+0x0@l
	ld.w	[%sp+0x0],%r10	; 	xld.w	[%sp],%r10
	ext	0x2		; 	xld.w	%r10,0x00000099		; 153
	ld.w	%r10,0x19
	ld.w	[%sp+0x1],%r10	; 	xld.w	[%sp+4],%r10
	ext	die@rm		; 	xcall	die
	call	die@rl
__LX101:				; __L101:
	ext	udp_driver+0x14@h	; 	xld.w	%r12,udp_driver+20
	ext	udp_driver+0x14@m
	ld.w	%r12,udp_driver+0x14@l
	ext	0x8		; 	xadd	%r13,%r0,8
	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	udp_close
udp_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	udp_find_client@rm	; 	xcall	udp_find_client
	call	udp_find_client@rl
	cmp	%r10,%r0
	jreq	__LX109		; 	xjreq	__L109
	ext	__LC0+0x0@h	; 	xld.w	%r10,__LC0
	ext	__LC0+0x0@m
	ld.w	%r10,__LC0+0x0@l
	ld.w	[%sp+0x0],%r10	; 	xld.w	[%sp],%r10
	ext	0x2		; 	xld.w	%r10,0x000000a9		; 169
	ld.w	%r10,0x29
	ld.w	[%sp+0x1],%r10	; 	xld.w	[%sp+4],%r10
	ext	die@rm		; 	xcall	die
	call	die@rl
__LX109:				; __L109:
	ext	0x8		; 	xadd	%r12,%r10,8
	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	udp_send
udp_send:
;	.frame	%sp,48,$31		# vars= 20, regs= 5/0, args= 8, extra= 0
;	.mask	0x800f0000,-4
;	.fmask	0x00000000,0
	pushn	%r3
	sub	%sp,0x7		; 	xsub	%sp,%sp,28
	ld.w	%r1,%r12
	ld.w	[%sp+0x5],%r13	; 	xld.w	[%sp+20],%r13
	ld.w	%r3,%r14
	ld.w	[%sp+0x6],%r15	; 	xld.w	[%sp+24],%r15
	ld.w	%r12,%sp	; 	xadd	%r12,%sp,8
	add	%r12,0x8
	ext	ip_get_config@rm	; 	xcall	ip_get_config
	call	ip_get_config@rl
	ld.w	%r4,[%sp+0xc]	; 	xld.w	%r4,[%sp+48]
	cmp	%r4,0x0
	jrge	__LX112		; 	xjrge	__L112
	ext	__LC0+0x0@h	; 	xld.w	%r10,__LC0
	ext	__LC0+0x0@m
	ld.w	%r10,__LC0+0x0@l
	ld.w	[%sp+0x0],%r10	; 	xld.w	[%sp],%r10
	ext	0x2		; 	xld.w	%r10,0x000000be		; 190
	ld.w	%r10,0x3e
	ld.w	[%sp+0x1],%r10	; 	xld.w	[%sp+4],%r10
	ext	die@rm		; 	xcall	die
	call	die@rl
__LX112:				; __L112:
	ld.w	%r2,[%sp+0xc]	; 	xld.w	%r2,[%sp+48]
	add	%r2,0x8		; 	xadd	%r2,%r2,8
	ld.w	%r12,%r2
	ext	malloc@rm	; 	xcall	malloc
	call	malloc@rl
	ld.w	%r0,%r10
	cmp	%r0,0x0
	jrne	__LX113		; 	xjrne	__L113
	ext	__LC0+0x0@h	; 	xld.w	%r10,__LC0
	ext	__LC0+0x0@m
	ld.w	%r10,__LC0+0x0@l
	ld.w	[%sp+0x0],%r10	; 	xld.w	[%sp],%r10
	ext	0x3		; 	xld.w	%r10,0x000000c5		; 197
	ld.w	%r10,0x5
	ld.w	[%sp+0x1],%r10	; 	xld.w	[%sp+4],%r10
	ext	die@rm		; 	xcall	die
	call	die@rl
__LX137:				; __L137:
	ld.w	%r10,[%r1]	; 	xld.w	%r10,[%r1]
	ext	0x1		; 	xld.b	[%r0+1],%r10
	ld.b	[%r0],%r10
	jp	__LX115		; 	xjp	__L115
__LX113:				; __L113:
	cmp	%r1,0x0
	jreq	__LX117		; 	xjreq	__L117
	ld.w	%r10,[%r1]	; 	xld.w	%r10,[%r1]
	sra	%r10,0x8	; 	xsra	%r10,8
	ld.b	[%r0],%r10	; 	xld.b	[%r0],%r10
	jp	__LX118		; 	xjp	__L118
__LX117:				; __L117:
	ld.w	%r4,0x0
	ld.b	[%r0],%r4	; 	xld.b	[%r0],%r4
__LX118:				; __L118:
	cmp	%r1,0x0
	jrne	__LX137		; 	xjrne	__L137
	ld.w	%r4,0x0
	ext	0x1		; 	xld.b	[%r0+1],%r4
	ld.b	[%r0],%r4
__LX115:				; __L115:
	ld.w	%r10,%r3
	sra	%r10,0x8	; 	xsra	%r10,8
	ext	0x2		; 	xld.b	[%r0+2],%r10
	ld.b	[%r0],%r10
	ext	0x3		; 	xld.b	[%r0+3],%r3
	ld.b	[%r0],%r3
	ld.w	%r10,%r2
	sra	%r10,0x8	; 	xsra	%r10,8
	ext	0x4		; 	xld.b	[%r0+4],%r10
	ld.b	[%r0],%r10
	ext	0x5		; 	xld.b	[%r0+5],%r2
	ld.b	[%r0],%r2
	ext	0x8		; 	xadd	%r12,%r0,8
	add	%r12,%r0
	ld.w	%r13,[%sp+0x6]	; 	xld.w	%r13,[%sp+24]
	ld.w	%r14,[%sp+0xc]	; 	xld.w	%r14,[%sp+48]
	ext	memcpy@rm	; 	xcall	memcpy
	call	memcpy@rl
	ld.w	[%sp+0x0],%r2	; 	xld.w	[%sp],%r2
	ld.w	%r10,0x6	; 	xld.w	%r10,0x00000006		; 6
	ld.w	[%sp+0x1],%r10	; 	xld.w	[%sp+4],%r10
	ld.w	%r12,[%sp+0x2]	; 	xld.w	%r12,[%sp+8]
	ld.w	%r13,[%sp+0x5]	; 	xld.w	%r13,[%sp+20]
	ld.w	%r14,0x11	; 	xld.w	%r14,0x00000011		; 17
	ld.w	%r15,%r0
	ext	update_internet_checksum_pseudo_header@rm	; 	xcall	update_internet_checksum_pseudo_header
	call	update_internet_checksum_pseudo_header@rl
	ext	0x6		; 	xld.ub	%r11,[%r0+6]
	ld.ub	%r11,[%r0]
	sll	%r11,0x8	; 	xsll	%r11,8
	ext	0x7		; 	xld.ub	%r10,[%r0+7]
	ld.ub	%r10,[%r0]
	or	%r10,%r11
	jrne	__LX130		; 	xjrne	__L130
	ext	0x3		; 	xld.w	%r10,0x000000ff		; 255
	ld.w	%r10,0x3f
	ext	0x6		; 	xld.b	[%r0+6],%r10
	ld.b	[%r0],%r10
	ext	0x7		; 	xld.b	[%r0+7],%r10
	ld.b	[%r0],%r10
__LX130:				; __L130:
	ext	udp_driver+0x0@h	; 	xld.w	%r12,udp_driver
	ext	udp_driver+0x0@m
	ld.w	%r12,udp_driver+0x0@l
	ld.w	%r13,[%sp+0x5]	; 	xld.w	%r13,[%sp+20]
	ld.w	%r14,%r0
	ld.w	%r15,%r2
	ext	ip_send@rm	; 	xcall	ip_send
	call	ip_send@rl
	cmp	%r10,0x0
	jrge	__LX136		; 	xjrge	__L136
	ld.w	%r4,0x3f	; 	xld.w	%r4,-1			; 0xffffffff
	ld.w	[%sp+0xc],%r4	; 	xld.w	[%sp+48],%r4
__LX136:				; __L136:
	ld.w	%r12,%r0
	ext	free@rm		; 	xcall	free
	call	free@rl
	ld.w	%r10,[%sp+0xc]	; 	xld.w	%r10,[%sp+48]
	add	%sp,0x7		; 	xadd	%sp,%sp,28
	popn	%r3
	ret
	.align	1
udp_recv:
;	.frame	%sp,20,$31		# vars= 0, regs= 4/0, args= 4, extra= 0
;	.mask	0x80070000,-4
;	.fmask	0x00000000,0
	pushn	%r2
	sub	%sp,0x1		; 	xsub	%sp,%sp,4
	ld.w	%r2,%r13
	ld.w	%r13,%r14
	ld.w	%r0,%r15
	ld.w	%r12,[%sp+0x5]	; 	xld.w	%r12,[%sp+20]
	cmp	%r12,0x7	; 	xcmp	%r12,7
	jrle	__LX138		; 	xjrle	__L138
	ext	0x4		; 	xld.ub	%r10,[%r0+4]
	ld.ub	%r10,[%r0]
	sll	%r10,0x8	; 	xsll	%r10,8
	ext	0x5		; 	xld.ub	%r11,[%r0+5]
	ld.ub	%r11,[%r0]
	ld.w	%r1,%r11
	or	%r1,%r10
	cmp	%r12,%r1
	jrlt	__LX138		; 	xjrlt	__L138
	ext	0x6		; 	xld.ub	%r11,[%r0+6]
	ld.ub	%r11,[%r0]
	sll	%r11,0x8	; 	xsll	%r11,8
	ext	0x7		; 	xld.ub	%r10,[%r0+7]
	ld.ub	%r10,[%r0]
	or	%r10,%r11
	jreq	__LX141		; 	xjreq	__L141
	ld.w	[%sp+0x0],%r1	; 	xld.w	[%sp],%r1
	ld.w	%r12,%r2
	ld.w	%r14,0x11	; 	xld.w	%r14,0x00000011		; 17
	ext	internet_checksum_pseudo_header@rm	; 	xcall	internet_checksum_pseudo_header
	call	internet_checksum_pseudo_header@rl
	cmp	%r10,0x0
	jrne	__LX138		; 	xjrne	__L138
__LX141:				; __L141:
	ext	0x2		; 	xld.ub	%r10,[%r0+2]
	ld.ub	%r10,[%r0]
	sll	%r10,0x8	; 	xsll	%r10,8
	ext	0x3		; 	xld.ub	%r12,[%r0+3]
	ld.ub	%r12,[%r0]
	or	%r12,%r10
	ext	udp_find_client@rm	; 	xcall	udp_find_client
	call	udp_find_client@rl
	ld.w	%r12,%r10
	cmp	%r12,0x0
	jreq	__LX138		; 	xjreq	__L138
	ext	0x4		; 	xld.w	%r10,[%r12+4]
	ld.w	%r10,[%r12]
	cmp	%r10,0x0
	jreq	__LX138		; 	xjreq	__L138
	ld.ub	%r11,[%r0]	; 	xld.ub	%r11,[%r0]
	sll	%r11,0x8	; 	xsll	%r11,8
	ext	0x1		; 	xld.ub	%r14,[%r0+1]
	ld.ub	%r14,[%r0]
	ext	0x8		; 	xsub	%r10,%r1,8
	sub	%r10,%r1
	ld.w	[%sp+0x0],%r10	; 	xld.w	[%sp],%r10
	ext	0x4		; 	xld.w	%r10,[%r12+4]
	ld.w	%r10,[%r12]
	ld.w	%r13,%r2
	or	%r14,%r11
	ext	0x8		; 	xadd	%r15,%r0,8
	add	%r15,%r0
	call	%r10
__LX138:				; __L138:
	add	%sp,0x1		; 	xadd	%sp,%sp,4
	popn	%r2
	ret
	.align	1
internal_udp_socket_recv:
;	.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	[%sp+0x2],%r12	; 	xld.w	[%sp+8],%r12
	ld.w	%r1,%r13
	ld.w	%r2,%r14
	ld.w	[%sp+0x3],%r15	; 	xld.w	[%sp+12],%r15
	ld.w	%r3,[%sp+0x9]	; 	xld.w	%r3,[%sp+36]
	add	%r3,0x8		; 	xadd	%r3,%r3,8
	ld.w	%r12,%r3
	ext	malloc@rm	; 	xcall	malloc
	call	malloc@rl
	ld.w	%r0,%r10
	cmp	%r0,0x0
	jrne	__LX146		; 	xjrne	__L146
	ext	__LC0+0x0@h	; 	xld.w	%r10,__LC0
	ext	__LC0+0x0@m
	ld.w	%r10,__LC0+0x0@l
	ld.w	[%sp+0x0],%r10	; 	xld.w	[%sp],%r10
	ext	0x4		; 	xld.w	%r10,0x00000138		; 312
	ld.w	%r10,0x38
	ld.w	[%sp+0x1],%r10	; 	xld.w	[%sp+4],%r10
	ext	die@rm		; 	xcall	die
	call	die@rl
__LX146:				; __L146:
	ld.b	[%r0],%r1	; 	xld.b	[%r0],%r1
	ld.w	%r10,%r1
	sra	%r10,0x8	; 	xsra	%r10,8
	ext	0x1		; 	xld.b	[%r0+1],%r10
	ld.b	[%r0],%r10
	ld.w	%r10,%r1
	sra	%r10,0x8	; 	xsra	%r10,16
	sra	%r10,0x8
	ext	0x2		; 	xld.b	[%r0+2],%r10
	ld.b	[%r0],%r10
	ld.w	%r10,%r1
	sra	%r10,0x8	; 	xsra	%r10,24
	sra	%r10,0x8
	sra	%r10,0x8
	ext	0x3		; 	xld.b	[%r0+3],%r10
	ld.b	[%r0],%r10
	ext	0x4		; 	xld.b	[%r0+4],%r2
	ld.b	[%r0],%r2
	ld.w	%r10,%r2
	sra	%r10,0x8	; 	xsra	%r10,8
	ext	0x5		; 	xld.b	[%r0+5],%r10
	ld.b	[%r0],%r10
	ld.w	%r10,%r2
	sra	%r10,0x8	; 	xsra	%r10,16
	sra	%r10,0x8
	ext	0x6		; 	xld.b	[%r0+6],%r10
	ld.b	[%r0],%r10
	ld.w	%r10,%r2
	sra	%r10,0x8	; 	xsra	%r10,24
	sra	%r10,0x8
	sra	%r10,0x8
	ext	0x7		; 	xld.b	[%r0+7],%r10
	ld.b	[%r0],%r10
	ext	0x8		; 	xadd	%r12,%r0,8
	add	%r12,%r0
	ld.w	%r13,[%sp+0x3]	; 	xld.w	%r13,[%sp+12]
	ld.w	%r14,[%sp+0x9]	; 	xld.w	%r14,[%sp+36]
	ext	memcpy@rm	; 	xcall	memcpy
	call	memcpy@rl
	ld.w	%r11,[%sp+0x2]	; 	xld.w	%r11,[%sp+8]
	ext	0x10		; 	xld.w	%r12,[%r11+16]
	ld.w	%r12,[%r11]
	ld.w	%r13,%r0
	ld.w	%r14,%r3
	ext	write_queue@rm	; 	xcall	write_queue
	call	write_queue@rl
	ld.w	%r12,%r0
	ext	free@rm		; 	xcall	free
	call	free@rl
	add	%sp,0x4		; 	xadd	%sp,%sp,16
	popn	%r3
	ret
	.align	1
	.global	udp_socket_open
udp_socket_open:
;	.frame	%sp,24,$31		# vars= 0, regs= 4/0, args= 8, extra= 0
;	.mask	0x80070000,-4
;	.fmask	0x00000000,0
	pushn	%r2
	sub	%sp,0x2		; 	xsub	%sp,%sp,8
	ld.w	%r2,%r12
	ld.w	%r1,%r13
	ext	0x17		; 	xcmp	%r1,1479
	cmp	%r1,0x7
	jrgt	__LX156		; 	xjrgt	__L156
	ext	0x17		; 	xld.w	%r1,0x000005c8		; 1480
	ld.w	%r1,0x8
__LX156:				; __L156:
	ld.w	%r12,0x14	; 	xld.w	%r12,0x00000014		; 20
	ext	malloc@rm	; 	xcall	malloc
	call	malloc@rl
	ld.w	%r0,%r10
	cmp	%r0,0x0
	jrne	__LX157		; 	xjrne	__L157
	ext	__LC0+0x0@h	; 	xld.w	%r10,__LC0
	ext	__LC0+0x0@m
	ld.w	%r10,__LC0+0x0@l
	ld.w	[%sp+0x0],%r10	; 	xld.w	[%sp],%r10
	ext	0x5		; 	xld.w	%r10,0x00000152		; 338
	ld.w	%r10,0x12
	ld.w	[%sp+0x1],%r10	; 	xld.w	[%sp+4],%r10
	ext	die@rm		; 	xcall	die
	call	die@rl
__LX157:				; __L157:
	ld.w	%r12,%r0
	ld.w	%r13,0x0
	ld.w	%r14,0x14	; 	xld.w	%r14,0x00000014		; 20
	ext	memset@rm	; 	xcall	memset
	call	memset@rl
	ld.w	%r12,%r1
	ext	create_queue@rm	; 	xcall	create_queue
	call	create_queue@rl
	ext	0x10		; 	xld.w	[%r0+16],%r10
	ld.w	[%r0],%r10
	ld.w	[%r0],%r2	; 	xld.w	[%r0],%r2
	ext	internal_udp_socket_recv+0x0@h	; 	xld.w	%r10,internal_udp_socket_recv
	ext	internal_udp_socket_recv+0x0@m
	ld.w	%r10,internal_udp_socket_recv+0x0@l
	ext	0x4		; 	xld.w	[%r0+4],%r10
	ld.w	[%r0],%r10
	ld.w	%r12,%r0
	ext	udp_open@rm	; 	xcall	udp_open
	call	udp_open@rl
	ld.w	%r10,%r0
	add	%sp,0x2		; 	xadd	%sp,%sp,8
	popn	%r2
	ret
	.align	1
	.global	udp_socket_close
udp_socket_close:
;	.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	udp_close@rm	; 	xcall	udp_close
	call	udp_close@rl
	ext	0x10		; 	xld.w	%r12,[%r0+16]
	ld.w	%r12,[%r0]
	ext	delete_queue@rm	; 	xcall	delete_queue
	call	delete_queue@rl
	ld.w	%r12,%r0
	ext	free@rm		; 	xcall	free
	call	free@rl
	popn	%r0
	ret
	.align	1
	.global	udp_socket_recv
udp_socket_recv:
;	.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	%r2,%r12
	ld.w	%r3,%r13
	ld.w	[%sp+0x2],%r14	; 	xld.w	[%sp+8],%r14
	ld.w	[%sp+0x3],%r15	; 	xld.w	[%sp+12],%r15
	ld.w	%r1,[%sp+0x9]	; 	xld.w	%r1,[%sp+36]
	add	%r1,0x8		; 	xadd	%r1,%r1,8
	ld.w	%r12,%r1
	ext	malloc@rm	; 	xcall	malloc
	call	malloc@rl
	ld.w	%r0,%r10
	cmp	%r0,0x0
	jrne	__LX160		; 	xjrne	__L160
	ext	__LC0+0x0@h	; 	xld.w	%r10,__LC0
	ext	__LC0+0x0@m
	ld.w	%r10,__LC0+0x0@l
	ld.w	[%sp+0x0],%r10	; 	xld.w	[%sp],%r10
	ext	0x5		; 	xld.w	%r10,0x00000178		; 376
	ld.w	%r10,0x38
	ld.w	[%sp+0x1],%r10	; 	xld.w	[%sp+4],%r10
	ext	die@rm		; 	xcall	die
	call	die@rl
__LX160:				; __L160:
	ext	0x10		; 	xld.w	%r12,[%r2+16]
	ld.w	%r12,[%r2]
	ld.w	%r13,%r0
	ld.w	%r14,%r1
	ext	read_queue@rm	; 	xcall	read_queue
	call	read_queue@rl
	ld.w	%r1,%r10
	cmp	%r1,0x0
	jrlt	__LX162		; 	xjrlt	__L162
	cmp	%r1,0x7		; 	xcmp	%r1,7
	jrgt	__LX163		; 	xjrgt	__L163
	ext	__LC0+0x0@h	; 	xld.w	%r10,__LC0
	ext	__LC0+0x0@m
	ld.w	%r10,__LC0+0x0@l
	ld.w	[%sp+0x0],%r10	; 	xld.w	[%sp],%r10
	ext	0x6		; 	xld.w	%r10,0x00000181		; 385
	ld.w	%r10,0x1
	ld.w	[%sp+0x1],%r10	; 	xld.w	[%sp+4],%r10
	ext	die@rm		; 	xcall	die
	call	die@rl
__LX163:				; __L163:
	cmp	%r3,0x0
	jreq	__LX164		; 	xjreq	__L164
	ld.ub	%r11,[%r0]	; 	xld.ub	%r11,[%r0]
	ext	0x1		; 	xld.ub	%r10,[%r0+1]
	ld.ub	%r10,[%r0]
	sll	%r10,0x8	; 	xsll	%r10,8
	or	%r11,%r10
	ext	0x2		; 	xld.ub	%r10,[%r0+2]
	ld.ub	%r10,[%r0]
	sll	%r10,0x8	; 	xsll	%r10,16
	sll	%r10,0x8
	or	%r11,%r10
	ext	0x3		; 	xld.ub	%r10,[%r0+3]
	ld.ub	%r10,[%r0]
	sll	%r10,0x8	; 	xsll	%r10,24
	sll	%r10,0x8
	sll	%r10,0x8
	or	%r11,%r10
	ld.w	[%r3],%r11	; 	xld.w	[%r3],%r11
__LX164:				; __L164:
	ld.w	%r4,[%sp+0x2]	; 	xld.w	%r4,[%sp+8]
	cmp	%r4,0x0
	jreq	__LX165		; 	xjreq	__L165
	ext	0x4		; 	xld.ub	%r11,[%r0+4]
	ld.ub	%r11,[%r0]
	ext	0x5		; 	xld.ub	%r10,[%r0+5]
	ld.ub	%r10,[%r0]
	sll	%r10,0x8	; 	xsll	%r10,8
	or	%r11,%r10
	ext	0x6		; 	xld.ub	%r10,[%r0+6]
	ld.ub	%r10,[%r0]
	sll	%r10,0x8	; 	xsll	%r10,16
	sll	%r10,0x8
	or	%r11,%r10
	ext	0x7		; 	xld.ub	%r10,[%r0+7]
	ld.ub	%r10,[%r0]
	sll	%r10,0x8	; 	xsll	%r10,24
	sll	%r10,0x8
	sll	%r10,0x8
	or	%r11,%r10
	ld.w	[%r4],%r11	; 	xld.w	[%r4],%r11
__LX165:				; __L165:
	sub	%r1,0x8		; 	xsub	%r1,%r1,8
	ld.w	%r12,[%sp+0x3]	; 	xld.w	%r12,[%sp+12]
	ext	0x8		; 	xadd	%r13,%r0,8
	add	%r13,%r0
	ld.w	%r14,%r1
	ext	memcpy@rm	; 	xcall	memcpy
	call	memcpy@rl
__LX162:				; __L162:
	ld.w	%r12,%r0
	ext	free@rm		; 	xcall	free
	call	free@rl
	ld.w	%r10,%r1
	add	%sp,0x4		; 	xadd	%sp,%sp,16
	popn	%r3
	ret
	.align	1
	.global	udp_socket_send
udp_socket_send:
;	.frame	%sp,8,$31		# vars= 0, regs= 1/0, args= 4, extra= 0
;	.mask	0x80000000,-4
;	.fmask	0x00000000,0
	sub	%sp,0x1		; 	xsub	%sp,%sp,4
	ld.w	%r10,[%sp+0x2]	; 	xld.w	%r10,[%sp+8]
	ld.w	[%sp+0x0],%r10	; 	xld.w	[%sp],%r10
	ext	udp_send@rm	; 	xcall	udp_send
	call	udp_send@rl
	add	%sp,0x1		; 	xadd	%sp,%sp,4
	ret

	.lcomm	udp_driver 28
