	.file	"playad.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

	.section	.rodata
	.type	ima9_step_indices, %object
	.size	ima9_step_indices, 16
ima9_step_indices:
	.byte	-1
	.byte	-1
	.byte	-1
	.byte	-1
	.byte	2
	.byte	4
	.byte	7
	.byte	12
	.byte	-1
	.byte	-1
	.byte	-1
	.byte	-1
	.byte	2
	.byte	4
	.byte	7
	.byte	12
	.global	ima_step_table
	.align	1
	.type	ima_step_table, %object
	.size	ima_step_table, 178
ima_step_table:
	.short	7
	.short	8
	.short	9
	.short	10
	.short	11
	.short	12
	.short	13
	.short	14
	.short	16
	.short	17
	.short	19
	.short	21
	.short	23
	.short	25
	.short	28
	.short	31
	.short	34
	.short	37
	.short	41
	.short	45
	.short	50
	.short	55
	.short	60
	.short	66
	.short	73
	.short	80
	.short	88
	.short	97
	.short	107
	.short	118
	.short	130
	.short	143
	.short	157
	.short	173
	.short	190
	.short	209
	.short	230
	.short	253
	.short	279
	.short	307
	.short	337
	.short	371
	.short	408
	.short	449
	.short	494
	.short	544
	.short	598
	.short	658
	.short	724
	.short	796
	.short	876
	.short	963
	.short	1060
	.short	1166
	.short	1282
	.short	1411
	.short	1552
	.short	1707
	.short	1878
	.short	2066
	.short	2272
	.short	2499
	.short	2749
	.short	3024
	.short	3327
	.short	3660
	.short	4026
	.short	4428
	.short	4871
	.short	5358
	.short	5894
	.short	6484
	.short	7132
	.short	7845
	.short	8630
	.short	9493
	.short	10442
	.short	11487
	.short	12635
	.short	13899
	.short	15289
	.short	16818
	.short	18500
	.short	20350
	.short	22385
	.short	24623
	.short	27086
	.short	29794
	.short	32767
	.section	.iwram,"ax",%progbits
	.align	2
	.global	decode_ad
	.type	decode_ad, %function
decode_ad:
	@ Function supports interworking.
	@ args = 0, pretend = 0, frame = 4
	@ frame_needed = 0, uses_anonymous_args = 0
	stmfd	sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
	ldr	r9, .L24
	sub	sp, sp, #4
	mov	r4, r2	@  son2
	cmp	r3, #0	@  len
	mov	r2, #0
	mov	r5, r0	@  dst
	mov	r6, r3	@  len
	mov	r8, r1	@  src
	ldr	lr, [r9, #4]	@  last_sample,  ad.last_sample
	ldr	r0, [r9, #8]	@  index,  ad.last_index
	str	r2, [sp, #0]	@  by
	beq	.L23
	ldr	sl, .L24+4
.L21:
	cmp	r0, #0	@  index
	movlt	r0, #0	@  index
	ldr	r2, .L24+8
	cmp	r0, #88	@  index
	movge	r0, #88	@  index
	mov	r3, r0, asl #1	@  index
	tst	r6, #1	@  len
	ldrh	r1, [r3, r2]	@  step,  ima_step_table
	ldreqb	r3, [r8], #1	@ zero_extendqisi2
	ldrne	r3, [sp, #0]	@  by
	andeq	r2, r3, #15	@  code
	movne	r2, r3, lsr #4	@  code
	andeq	r3, r3, #255
	streq	r3, [sp, #0]	@  by
	mov	r3, r1, asr #3	@  diff,  step
	tst	r2, #1	@  code
	addne	r3, r3, r1, lsr #2	@  diff,  diff,  step
	tst	r2, #2	@  code
	addne	r3, r3, r1, lsr #1	@  diff,  diff,  step
	and	r7, r2, #7	@  code
	tst	r2, #4	@  code
	addne	r3, r3, r1	@  diff,  diff,  step
	cmp	r7, #7
	addeq	r3, r3, r1, lsr #1	@  diff,  diff,  step
	tst	r2, #8	@  code
	rsbne	r3, r3, #0	@  diff,  diff
	mov	r2, #-2147483648
	add	lr, lr, r3	@  last_sample,  last_sample,  diff
	mov	r2, r2, asr #16
	mov	r3, #32512	@  last_sample
	cmp	lr, r2	@  last_sample
	movlt	lr, r2	@  last_sample
	add	r3, r3, #255	@  last_sample,  last_sample
	ldrsb	r2, [r4], #1
	cmp	lr, r3	@  last_sample,  last_sample
	movge	lr, r3	@  last_sample,  last_sample
	mov	r1, lr, asr #8	@  last_sample
	add	ip, r1, r2	@  i
	cmp	ip, #127	@  i
	movge	ip, #127	@  i
	mvn	r2, #127
	cmp	ip, r2	@  i
	movlt	ip, r2	@  i
	strb	ip, [r5], #1	@  i
	ldrsb	r3, [r4], #1
	add	ip, r1, r3	@  i
	cmp	ip, #127	@  i
	movge	ip, #127	@  i
	ldrsb	r3, [sl, r7]	@  ima9_step_indices
	cmp	ip, r2	@  i
	movlt	ip, r2	@  i
	subs	r6, r6, #1	@  len,  len
	strb	ip, [r5], #1	@  i
	add	r0, r0, r3	@  index,  index
	bne	.L21
.L23:
	str	lr, [r9, #4]	@  last_sample,  ad.last_sample
	str	r0, [r9, #8]	@  index,  ad.last_index
	add	sp, sp, #4
	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
	bx	lr
.L25:
	.align	2
.L24:
	.word	ad
	.word	ima9_step_indices
	.word	ima_step_table
	.size	decode_ad, .-decode_ad
	.ident	"GCC: (GNU) 3.3.2"
