	.file	"son.c"
@ GNU C version 3.3.2 (arm-thumb-elf)
@	compiled by GNU C version 3.3.1 (cygming special).
@ GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
@ options passed:  -fpreprocessed -mthumb-interwork -mlong-calls
@ -auxbase-strip -O2 -Wall -fverbose-asm
@ options enabled:  -fdefer-pop -fomit-frame-pointer
@ -foptimize-sibling-calls -fcse-follow-jumps -fcse-skip-blocks
@ -fexpensive-optimizations -fthread-jumps -fstrength-reduce -fpeephole
@ -fforce-mem -ffunction-cse -fkeep-static-consts -fcaller-saves
@ -freg-struct-return -fgcse -fgcse-lm -fgcse-sm -floop-optimize
@ -fcrossjumping -fif-conversion -fif-conversion2 -frerun-cse-after-loop
@ -frerun-loop-opt -fdelete-null-pointer-checks -fschedule-insns
@ -fschedule-insns2 -fsched-interblock -fsched-spec -fbranch-count-reg
@ -freorder-blocks -freorder-functions -fcprop-registers -fcommon
@ -fverbose-asm -fgnu-linker -fregmove -foptimize-register-move
@ -fargument-alias -fstrict-aliasing -fmerge-constants
@ -fzero-initialized-in-bss -fident -fpeephole2 -fguess-branch-probability
@ -fmath-errno -ftrapping-math -mapcs -mapcs-frame -mapcs-32 -msoft-float
@ -mthumb-interwork -mlong-calls

	.global	cur_mixbuf
	.bss
	.global	cur_mixbuf
	.align	2
	.type	cur_mixbuf, %object
	.size	cur_mixbuf, 4
cur_mixbuf:
	.space	4
	.global	bMusique
	.data
	.align	2
	.type	bMusique, %object
	.size	bMusique, 4
bMusique:
	.word	1
	.global	bSons
	.align	2
	.type	bSons, %object
	.size	bSons, 4
bSons:
	.word	1
	.global	__son
	.align	2
	.type	__son, %object
	.size	__son, 4
__son:
	.word	buffer_zero
	.text
	.align	2
	.type	dsound_set_buffer, %function
dsound_set_buffer:
	@ Function supports interworking.
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 0, uses_anonymous_args = 0
	@ link register save eliminated.
	mov	r2, #67108864
	add	r1, r2, #188
	mov	r3, #0	@ movhi
	@ lr needed for prologue
	strh	r3, [r1, #10]	@ movhi 	@  <variable>.control
	mov	ip, r0	@  src
	eor r0, r0, r0; eor r0, r0, r0
	mvn	r3, #18688
	str	ip, [r2, #188]	@  src,  <variable>.src
	add	r0, r2, #160
	sub	r3, r3, #191
	mov	r2, #1	@ movhi
	str	r0, [r1, #4]	@  <variable>.dst
	strh	r2, [r1, #8]	@ movhi 	@  <variable>.count
	strh	r3, [r1, #10]	@ movhi 	@  <variable>.control
	bx	lr
	.size	dsound_set_buffer, .-dsound_set_buffer
	.align	2
	.global	dsound_vblank
	.type	dsound_vblank, %function
dsound_vblank:
	@ Function supports interworking.
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	mov	ip, sp
	stmfd	sp!, {r4, r5, r6, r7, r8, fp, ip, lr, pc}
	ldr	r4, .L13
	ldr	r2, .L13+4
	ldr	r3, [r4, #0]	@  __son
	ldr	r1, [r2, #0]	@  __fin_son
	add	r3, r3, #352
	cmp	r3, r1
	ldr	r3, .L13+8
	ldrcs	r8, .L13+12
	ldr	r3, [r3, #0]	@  bMusique
	strcs	r8, [r4, #0]	@  __son
	ldrcc	r8, .L13+12
	cmp	r3, #0
	ldreq	r0, .L13+16
	sub	fp, ip, #4
	streq	r3, [r0, #0]	@  ad.data
	beq	.L5
	ldr	r0, .L13+16
	ldr	r3, [r0, #0]	@  ad.data
	cmp	r3, #0
	bne	.L5
	ldr	r2, [r0, #12]	@  ad.debut
	cmp	r2, #0
	strne	r2, [r0, #0]	@  ad.data
	strne	r3, [r0, #8]	@  ad.last_index
	strne	r3, [r0, #4]	@  ad.last_sample
.L5:
	ldr	r3, .L13+20
	ldr	r2, [r3, #0]	@  bSons
	ldr	r1, [r0, #0]	@  ad.data
	cmp	r2, #0
	streq	r8, [r4, #0]	@  __son
	cmp	r1, #0
	ldr	r6, .L13+16
	beq	.L8
	ldr	r2, [r0, #16]	@  ad.fin
	add	r3, r1, #88
	cmp	r3, r2
	bls	.L9
	ldr	r2, [r0, #12]	@  ad.debut
	mov	r3, #0
	str	r3, [r0, #8]	@  ad.last_index
	stmia	r0, {r2, r3}	@ phole stm
	mov	r1, r2
.L9:
	ldr	r5, .L13+24
	ldr	r0, [r5, #0]	@  cur_mixbuf
	ldr	r7, .L13+28
	add	r3, r0, r0, asl #2
	add	r0, r0, r3, asl #1
	ldr	r2, [r4, #0]	@  __son
	mov	r3, #176
	add	r0, r7, r0, asl #5
	ldr	ip, .L13+32
	mov	lr, pc
	bx	ip
	ldr	r3, [r6, #0]	@  ad.data
	add	r3, r3, #88
	str	r3, [r6, #0]	@  ad.data
.L10:
	ldr	r3, [r4, #0]	@  __son
	ldr	r0, [r5, #0]	@  cur_mixbuf
	cmp	r3, r8
	addne	r3, r3, #352
	strne	r3, [r4, #0]	@  __son
	add	r3, r0, r0, asl #2
	add	r0, r0, r3, asl #1
	add	r0, r7, r0, asl #5
	bl	dsound_set_buffer
	ldr	r3, [r5, #0]	@  cur_mixbuf
	cmp	r3, #0
	movne	r3, #0
	moveq	r3, #1
	str	r3, [r5, #0]	@  cur_mixbuf
	ldmea	fp, {r4, r5, r6, r7, r8, fp, sp, lr}
	bx	lr
.L8:
	ldr	r5, .L13+24
	ldr	r0, [r5, #0]	@  cur_mixbuf
	ldr	r7, .L13+28
	add	r3, r0, r0, asl #2
	add	r0, r0, r3, asl #1
	ldr	r2, [r4, #0]	@  __son
	add	r0, r7, r0, asl #5
	ldr	r1, .L13+12
	mov	r3, #176
	ldr	ip, .L13+32
	mov	lr, pc
	bx	ip
	b	.L10
.L14:
	.align	2
.L13:
	.word	__son
	.word	__fin_son
	.word	bMusique
	.word	buffer_zero
	.word	ad
	.word	bSons
	.word	cur_mixbuf
	.word	mixbuf
	.word	decode_ad
	.size	dsound_vblank, .-dsound_vblank
	.align	2
	.global	JoueSon
	.type	JoueSon, %function
JoueSon:
	@ Function supports interworking.
	@ args = 0, pretend = 0, frame = 4
	@ frame_needed = 1, uses_anonymous_args = 0
	mov	ip, sp
	stmfd	sp!, {fp, ip, lr, pc}
	sub	fp, ip, #4
	sub	sp, sp, #4
	sub	r1, fp, #16
	ldr	r3, .L17
	mov	lr, pc
	bx	r3
	cmp	r0, #0	@  son
	beq	.L15
	ldr	r3, .L17+4
	ldr	r2, [fp, #-16]
	str	r0, [r3, #0]	@  son,  __son
	ldr	r3, [r2, #36]	@  <variable>.taille
	ldr	r2, .L17+8
	add	r3, r0, r3	@  son
	str	r3, [r2, #0]	@  __fin_son
.L15:
	ldmea	fp, {fp, sp, lr}
	bx	lr
.L18:
	.align	2
.L17:
	.word	SymFind
	.word	__son
	.word	__fin_son
	.size	JoueSon, .-JoueSon
	.align	2
	.global	start_ad
	.type	start_ad, %function
start_ad:
	@ Function supports interworking.
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 0, uses_anonymous_args = 0
	str	lr, [sp, #-4]!
	ldr	ip, .L20
	mov	r2, #0
	ldr	lr, [r0, #32]	@  <variable>.offset
	ldr	r3, .L20+4
	str	r2, [ip, #8]	@  ad.last_index
	str	r2, [ip, #4]	@  ad.last_sample
	ldr	r2, [r3, #0]	@  gblData
	add	r1, r0, #32
	ldmia	r1, {r1, r3}	@ phole ldm
	add	r1, r2, r1
	add	r3, r1, r3
	add	r2, r2, lr
	str	r3, [ip, #16]	@  ad.fin
	str	r2, [ip, #0]	@  ad.data
	str	r1, [ip, #12]	@  ad.debut
	ldr	lr, [sp], #4
	bx	lr
.L21:
	.align	2
.L20:
	.word	ad
	.word	gblData
	.size	start_ad, .-start_ad
	.align	2
	.global	JoueMusique
	.type	JoueMusique, %function
JoueMusique:
	@ Function supports interworking.
	@ args = 0, pretend = 0, frame = 4
	@ frame_needed = 1, uses_anonymous_args = 0
	mov	ip, sp
	stmfd	sp!, {fp, ip, lr, pc}
	sub	fp, ip, #4
	sub	sp, sp, #4
	ldr	r3, .L25
	sub	r1, fp, #16
	mov	lr, pc
	bx	r3
	ldr	r3, .L25+4
	cmp	r0, #0	@  son
	streq	r0, [r3, #16]	@  son,  ad.fin
	streq	r0, [r3, #0]	@  son,  ad.data
	streq	r0, [r3, #12]	@  son,  ad.debut
	ldrne	r0, [fp, #-16]
	blne	start_ad
.L22:
	ldmea	fp, {fp, sp, lr}
	bx	lr
.L26:
	.align	2
.L25:
	.word	SymFind
	.word	ad
	.size	JoueMusique, .-JoueMusique
	.align	2
	.type	set_bias, %function
set_bias:
	@ Function supports interworking.
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 0, uses_anonymous_args = 0
	@ link register save eliminated.
	mov	r2, #67108864
	ldrh	r3, [r2, #136]
	bic	r3, r3, #49152
	orr	r3, r3, #16384
	@ lr needed for prologue
	strh	r3, [r2, #136]	@ movhi 
	bx	lr
	.size	set_bias, .-set_bias
	.align	2
	.global	InterruptHandler
	.type	InterruptHandler, %function
InterruptHandler:
	@ Function supports interworking.
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	mov	ip, sp
	stmfd	sp!, {r4, r5, r6, fp, ip, lr, pc}
	mov	r6, #67108864
	mov	r3, #0	@ movhi
	add	r6, r6, #520
	strh	r3, [r6, #0]	@ movhi 
	mov	r4, #512
	add	r4, r4, #67108866
	ldrh	r2, [r4, #0]
	ldrh	r3, [r4, #0]
	tst	r3, #4
	sub	fp, ip, #4
	mov	r5, r2	@  Int_Flag
	bne	.L30
.L29:
	mov	r3, #1	@ movhi
	strh	r5, [r4, #0]	@ movhi 	@  Int_Flag
	strh	r3, [r6, #0]	@ movhi 
	ldmea	fp, {r4, r5, r6, fp, sp, lr}
	bx	lr
.L30:
	bl	dsound_vblank
	b	.L29
	.size	InterruptHandler, .-InterruptHandler
	.align	2
	.global	init_sound
	.type	init_sound, %function
init_sound:
	@ Function supports interworking.
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 0, uses_anonymous_args = 0
	stmfd	sp!, {r4, r5, lr}
	mov	r3, #67108864
	mvn	r0, #17408
	mvn	ip, #796
	add	r2, r3, #256
	mov	r1, #128
	mov	r4, #0
	sub	r0, r0, #242
	sub	ip, ip, #1
	mvn	r5, #136	@ movhi
	mvn	lr, #31488
	strh	r4, [r2, #2]	@ movhi 	@  <variable>.control
	sub	lr, lr, #233
	strh	r1, [r3, #132]	@ movhi 
	strh	r5, [r3, #128]	@ movhi 
	strh	r0, [r3, #130]	@ movhi 
	strh	ip, [r2, #0]	@ movhi 	@  <variable>.count
	strh	r1, [r2, #2]	@ movhi 	@  <variable>.control
	mov	r2, #8	@ movhi
	strh	r1, [r3, #112]	@ movhi 
	strh	r4, [r3, #114]	@ movhi 
	strh	lr, [r3, #116]	@ movhi 
	strh	r2, [r3, #96]	@ movhi 
	ldmfd	sp!, {r4, r5, lr}
	b	set_bias
	.size	init_sound, .-init_sound
	.align	2
	.global	ModeSon
	.type	ModeSon, %function
ModeSon:
	@ Function supports interworking.
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 0, uses_anonymous_args = 0
	mov	r2, #67108864
	mov	r1, r2
	mov	r3, #50331648
	cmp	r0, #0	@  mode
	str	lr, [sp, #-4]!
	add	r2, r2, #520
	add	r1, r1, #512
	add	r3, r3, #32512
	bne	.L33
	str	r0, [r3, #252]	@  mode
	mov	r3, #67108864
	strh	r0, [r2, #0]	@ movhi 	@  mode
	strh	r0, [r1, #0]	@ movhi 	@  mode
	strh	r0, [r3, #4]	@ movhi 	@  mode
	mov	r3, #1	@ movhi
	strh	r3, [r2, #0]	@ movhi 
.L32:
	ldr	lr, [sp], #4
	bx	lr
.L33:
	mov	lr, #67108864
	mov	r1, lr
	mov	ip, #12800
	mov	r2, #50331648
	cmp	r0, #1	@  mode
	add	lr, lr, #520
	add	r1, r1, #512
	add	ip, ip, #32
	add	r2, r2, #32512
	bne	.L32
	ldr	r3, .L36
	str	r3, [r2, #252]
	mov	r3, #0	@ movhi
	strh	r3, [lr, #0]	@ movhi 
	mov	r3, #4	@ movhi
	strh	r3, [r1, #0]	@ movhi 
	mov	r3, #67108864
	strh	ip, [r3, #4]	@ movhi 
	strh	r0, [lr, #0]	@ movhi 	@  mode
	b	.L32
.L37:
	.align	2
.L36:
	.word	InterruptHandler
	.size	ModeSon, .-ModeSon
	.comm	pRoutineLointaine, 4, 32
	.comm	pFctLointaine, 4, 32
	.comm	ligne2, 4, 32
	.comm	gblCurs, 4, 32
	.global	mixbuf
	.section	.ewram,"aw",%progbits
	.type	mixbuf, %object
	.size	mixbuf, 704
mixbuf:
	.space	704
	.comm	ad, 20, 32
	.global	buffer_zero
	.type	buffer_zero, %object
	.size	buffer_zero, 352
buffer_zero:
	.space	352
	.comm	__fin_son, 4, 32
	.ident	"GCC: (GNU) 3.3.2"
