
; Generated by gcc, modified by <mech@toth.org.uk>

 get fpmacros.s

 AREA |C$$code1|, CODE, READONLY

 align
 EXPORT |fft_short|
|fft_short|
 stmfd r13!, {r4 - r10, r14}
 sub r9, r13, #192
 sub r13, r13, #288
 cmp r13, r10
 bllt |__rt_stkovf_split_big|
 stmia r13, {r1, r2} ; phole stm
 mov r2, #0
 str r3, [r13, #8]
 add r0, r0, #214016
 add r0, r0, #632
 adrl r7, |L..50|
 str r0, [r7, #4]

|L..24|
 ldr r7, [r13]
 mov r0, #31
 add r12, r7, r2, lsl #10
 add r7, r12, #512
 add r2, r2, #1
 add r12, r2, r2, lsl #1
 mov r12, r12, lsl #22
 mov r6, r12, asr #16
 str r2, [r13, #76]

|L..28|
 ldr r12, [r13, #4]
 adrl r2, |L..50|
 ldmia r2, {r2, r4}
 ldr r10, [r13, #8]
 ldrb r3, [r2, r0, lsl #2] ; zero_extendqisi2
 ldr r2, [r10, r12, lsl #2]
 add r5, r4, r3, lsl #2
 add r1, r3, r6
 add r2, r2, r1, lsl #2
 rsb r3, r3, #127
 add r3, r4, r3, lsl #2
 mov r12, #2
 mov r10, r7
 stmfd r13!, {r6, r7}

|L..29|
 stmfd r13!, {r0 - r5}
 _ldfs   , , r3         ; ldfs f1, [r3]
 _ldfs2  , r2, #512     ; ldfs f2, [r2, #512]
 _fmls f0,   ,          ; fmls f0, f1, f2
 _ldfs   , r2, #0       ; ldfs f2, [r2]
 _ldfs2  , r5, #0       ; ldfs f1, [r5]
 _fmls   ,   ,          ; fmls f1, f2, f1
 _cass f5, f4,   , f0   ; adfs f4, f1, f0
                        ; rsfs f5, f1, f0
 _ldfs   , r5, #256     ; ldfs f1, [r5, #256]
 _ldfs2  , r2, #256     ; ldfs f6, [r2, #256]
 _fmls f0,   ,          ; fmls f0, f1, f6
 _ldfs   , r3, #-256    ; ldfs f1, [r3, #-256]
 _ldfs2  , r2, #768     ; ldfs f6, [r2, #768]
 _fmls   ,   ,          ; fmls f1, f1, f6
 _rcss f0,   ,   , f0   ; adfs f2, f1, f0
                        ; rsfs f0, f1, f0
 _cass   ,   , f4,      ; adfs f6, f4, f2
                        ; sufs f2, f4, f2
 _stfs   , r10, #-8     ; stfs f2, [r10, #-8]
 _stfs2  , r10, #-16    ; stfs f6, [r10, #-16]
 _cass   ,   , f5, f0   ; adfs f6, f5, f0
                        ; sufs f0, f5, f0
 _stfs   , r10, #-4     ; stfs f0, [r10, #-4]
 _stfs2  , r10, #-12    ; stfs f6, [r10, #-12]
  ldmfd r13!, {r0 - r5}
 add r10, r10, #512
 add r2, r2, #4
 sub r3, r3, #4
 add r5, r5, #4
 subs r12, r12, #1
 bne |L..29|

 ldmfd r13!, {r6, r7}
 subs r0, r0, #1
 sub r7, r7, #16
 bpl |L..28|

 adrl r0, |L..50|+8
 ldr r0, [r0]
 add r12, r7, #1024
 str r12, [r13, #12]
 mov r3, #4
 str r0, [r13, #16]
 str r3, [r13, #20]

|L..30|
  adrl r1, |L..50|+12
  ldmia r1, {r0 - r2}
  add r3, r9, #vf7
  stmia r3, {r0 - r2}    ; f7 = sqrt(2)
 ldr r3, [r13, #20]
 mov r1, r7
 ldr r5, [r13, #16]
 mov r2, r3, asr #1
 str r2, [r13, #24]
 mov r2, r3, lsl #17
 mov r2, r2, asr #16
 mov r12, r2, lsl #17
 mov r12, r12, asr #16
 add r5, r5, #8
 mov r0, r12, lsl #2
 str r12, [r13, #20]
 add r12, r2, r3
 mov r12, r12, lsl #16
 mov r12, r12, asr #14
 ldr r4, [r13, #24]
 add r6, r1, r12
 str r5, [r13, #80]
 mov r2, r2, lsl #2
 str r0, [r13, #84]
 add r5, r1, r2
 str r12, [r13, #88]
 mov r8, r3, lsl #2
 str r2, [r13, #92]
 add r10, r1, r4, lsl #2
 add r4, r1, r8
 add r3, r10, r2
 add r2, r10, r12
 add r12, r10, r8

|L..32|
  stmfd r13!, {r0 - r8}
 _ldfs   , , r1         ; ldfs f0, [r1]
 _ldfs2  , , r4         ; ldfs f1, [r4]
 _cass f2, f3,   ,      ; sufs f2, f0, f1
                        ; adfs f3, f0, f1
 _ldfs   , r5, #0       ; ldfs f0, r5, #0
 _ldfs2  , r6, #0       ; ldfs f1, [r6]
 _cass   , f1,   ,      ; sufs f4, f0, f1
                        ; adfs f1, f0, f1
 _rcss   ,   ,   , f2   ; adfs f0, f4, f2
                        ; rsfs f2, f4, f2
 _stfs   , r6, #0       ; stfs f2, [r6]
 _stfs2  , r4, #0       ; stfs f0, [r4]
 _rcss   ,   , f1, f3   ; rsfs f2, f1, f3
                        ; adfs f0, f1, f3
 _stfs   , r5, #0       ; stfs f2, [r5]
 _stfs2  , r1, #0       ; stfs f0, [r1]
 _ldfs   , r10, #0      ; ldfs f1, [r10]
 _ldfs2  , r12, #0      ; ldfs f2, [r12]
 _cass f0, f3,   ,      ; adfs f3, f1, f2
                        ; sufs f0, f1, f2
 _ldfs   , r3, #0       ; ldfs f1, [r3]
 _fmls   ,   , f7       ; fmls f2, f1, f7
 _rcss   ,   ,   , f3   ; adfs f1, f2, f3
                        ; rsfs f2, f2, f3
 _stfs   , r3, #0       ; stfs f2, [r3]
 _stfs2  , r10, #0      ; stfs f1, [r10]
 _ldfs   , r2, #0       ; ldfs f1, [r2]
 _fmls   ,   , f7       ; fmls f4, f1, f7
 _rcss   ,   ,   , f0   ; rsfs f1, f4, f0
                        ; adfs f2, f4, f0
 _stfs   , r2, #0       ; stfs f1, [r2]
 _stfs2  , , r12        ; stfs f2, [r12]
  ldmfd r13!, {r0 - r8}
 add r10, r10, r0
 add r12, r12, r0
 add r1, r1, r0
 add r2, r2, r0
 add r3, r3, r0
 add r4, r4, r0
 add r5, r5, r0
 ldr r14, [r13, #12]
 add r6, r6, r0
 cmp r1, r14
 bcc |L..32|

 ldr r0, [r13, #16]
 ldr r2, [r13, #24]
  stmfd r13!, {r3 - r8}
 _ldfs2 f9, , r0        ; ldfs f9, [r0]
  add r0, r0, #4
 _ldfs2 f8, , r0        ; ldfs f8, [r0, #4]
  ldmfd r13!, {r3 - r8}
 mov r0, #1
 cmp r2, #1
 ble |L..43|
 add r3, r7, r8
 ldr r4, [r13, #88]
 str r3, [r13, #44]
 ldr r2, [r13, #84]
 str r4, [r13, #60]

|L..37|
  stmfd r13!, {r0 - r8}
 _fget {r0 - r1}, f8
  movs r7, r0, lsl #2
  addne r0, r0, #1      ; fmls f1, f8, #2   (cheat)
 _fsave f0, {r0 - r2}
 _fmls   ,   , f8       ; fmls f1, f0, f8
 _rsfs f10,  , im1      ; rsfs f10, f1, #1
 _fmls f11, f0, f9      ; fmls f11, f0, f9
  ldmfd r13!, {r0 - r8}
 mov r12, r0, lsl #2
 ldr r3, [r13, #44]
 add r0, r0, #1
 str r0, [r13, #72]
 ldr r4, [r13, #92]
 add r1, r7, r12
 ldr r10, [r13, #60]
 add r6, r1, r8
  stmfd r13!, {r7, r8, r11}
 sub r11, r3, r12
 add r3, r1, r4
 add r12, r1, r10
 add r5, r11, r4
 add r4, r11, r10
 add r10, r11, r8

|L..39|
   stmfd r13!, {r0 - r6}
 _ldfs f2, , r6         ; ldfs f2, [r6]
 _fmls f3,   , f11      ; fmls f3, f2, f11
 _ldfs2 f1, r10, #0     ; ldfs f1, [r10]
 _fmls   , f10,         ; fmls f4, f10, f1
 _rsfs   ,   , f3       ; rsfs f3, f4, f3
 _ldfs2  , r11, #0      ; ldfs f4, [r11]
 _rcss f13, f12,   ,    ; adfs f12, f3, f4
                        ; rsfs f13, f3, f4
 _fmls f2, f2, f10      ; fmls f2, f2, f10
 _fmls   , f1, f11      ; fmls f1, f1, f11
 _adfs f7,   , f2       ; adfs f7, f1, f2
 _ldfs2 f2, r12, #0     ; ldfs f2, [r12]
 _fmls f4, f11,         ; fmls f4, f11, f2
 _ldfs f1, r4, #0       ; ldfs f1, [r4]
 _fmls   ,   , f10      ; fmls f6, f1, f10
 _rsfs f6,   , f4       ; rsfs f6, f6, f4
 _fmls f2, f2, f10      ; fmls f2, f2, f10
 _ldfs f4, r1, #0       ; ldfs f4, [r1]
 _sufs f14,   , f7      ; sufs f14, f4, f7
 _adfs f4, f4, f7       ; adfs f4, f4, f7
 _fmls   , f11, f1      ; fmls f0, f11, f1
 _adfs   ,   , f2       ; adfs f5, f0, f2
 _ldfs2  , r3, #0       ; ldfs f0, [r3]
 _rcss f0, f3,   ,      ; adfs f3, f5, f0
                        ; rsfs f0, f5, f0
 _ldfs   , r5, #0       ; ldfs f5, [r5]
 _cass f2, f5,   , f6   ; sufs f2, f5, f6
                        ; adfs f5, f5, f6
 _fmls f7,   , f8       ; fmls f0, f2, f8
 _fmls   , f3, f9       ; fmls f1, f3, f9
 _adfs   ,   , f7       ; adfs f7, f1, f0
 _rcss   ,   ,   , f4   ; rsfs f1, f7, f4
                        ; adfs f7, f7, f4
 _stfs   , r3, #0       ; stfs f1, [r3]
 _stfs2  , r1, #0       ; stfs f7, [r1]
 _fmls f6, f2, f9       ; fmls f6, f2, f9
 _fmls   , f3, f8       ; fmls f1, f3, f8
 _sufs   ,   , f6       ; sufs f6, f1, f6
 _rcss   ,   ,   , f13  ; rsfs f2, f6, f13
                        ; adfs f3, f6, f13
 _stfs   , r4, #0       ; stfs f2, [r4]
 _stfs2  , r10, #0      ; stfs f3, [r10]
 _fmls f7, f0, f8       ; fmls f7, f0, f8
 _fmls   , f9, f5       ; fmls f3, f9, f5
 _sufs f6,   , f7       ; sufs f6, f3, f7
 _rcss   ,   ,   , f14  ; rsfs f0, f6, f14
                        ; adfs f7, f6, f14
 _stfs   , , r12        ; stfs f0, [r12]
 _stfs2  , r6, #0       ; stfs f7, [r6]
 _fmls f0, f0, f9       ; fmls f0, f0, f9
 _fmls   , f5, f8       ; fmls f5, f5, f8
 _adfs   ,   ,f0        ; adfs f1, f5, f0
 _rcss   ,   ,   , f12  ; rsfs f0, f1, f12
                        ; adfs f1, f1, f12
 _stfs   , r5, #0       ; stfs f0, [r5]
 _stfs2  , , r11        ; stfs f1, [r11]

  ldmfd r13!, {r0 - r6}
 add r10, r10, r2
 add r11, r11, r2
 add r12, r12, r2
 add r1, r1, r2
 add r3, r3, r2
 add r4, r4, r2
  ldr r0, [r13, #12+12]
 add r5, r5, r2
 add r6, r6, r2
 cmp r1, r0
 bcc |L..39|

  ldr r11, [r13, #16+12]
  stmfd r13!, {r1, r2, r4 - r6}
 _ldfs f2, , r11        ; ldfs f2, [r11]
 _fmls f3,   , f9       ; fmls f3, f2, f9
 _ldfs f0, r11, #4      ; ldfs f0, [r11, #4]
 _fmls f1,   , f8       ; fmls f1, f0, f8
 _fmls f0, f0, f9       ; fmls f0, f0, f9
 _sufs f9, f3, f1       ; sufs f9, f3, f1
 _fmls   , f2, f8       ; fmls f1, f2, f8
 _adfs f8,   , f0       ; adfs f8, f1, f0
  ldmfd r13!, {r1, r2, r4 - r8, r11}
 ldr r0, [r13, #72]
 ldr r3, [r13, #24]
 cmp r0, r3
 blt |L..37|

|L..43|
 ldr r5, [r13, #20]
 ldr r4, [r13, #80]
 cmp r5, #256
 str r4, [r13, #16]
 blt |L..30|

 ldr r2, [r13, #76]
 cmp r2, #2
 ble |L..24|

  add r13, r13, #288
 ldmfd r13!, {r4 - r10, r15}

|L..50|
 DCD |rv_tbl|
 DCD 0 ;|window_s|
 DCD |costab|
 DCD &3FFF,   &B504F333, &F9DE6484   ; long double sqrt(2)


 EXPORT |fft_long|
|fft_long|
 stmfd r13!, {r4 - r10, r14}
  sub r9, r13, #192
 sub r13, r13, #276
 cmp r13, r10
 bllt |__rt_stkovf_split_big|
 mov r10, r2
 mov r7, r3
 add r8, r1, #2048
 add r0, r0, #209920
 add r6, r0, #632
 adrl r1, |L..77|
 str r6, [r1]
 mov r1, #127
  stmfd r13!, {r11}
 ldr r5, [r7, r10, lsl #2]

|L..56|
 adrl r2, |L..77|+4
 ldr r2, [r2]
 str r1, [r13, #4]
 ldrb r3, [r2, r1] ; zero_extendqisi2
 mov r10, r8
 mov r3, r3, lsl #16
 mov r3, r3, asr #14
 add r11, r6, r3
 add r12, r5, r3
  stmfd r13!, {r3, r5, r6, r8}
 _ldfs   , r11, #0      ; ldfs f0, [r11]
 _ldfs2  , r12, #0      ; ldfs f1, [r12]
 _fmls f2,   ,          ; fmls f2, f0, f1
 _ldfs   , r11, #2048   ; ldfs f0, [r11, #2048]
 _ldfs2  , r12, #2048   ; ldfs f1, [r12, #2048]
 _fmls   ,   ,          ; fmls f1, f0, f1
 _rcss f2, f4,   , f2   ; adfs f4, f1, f2
                        ; rsfs f2, f1, f2
 _ldfs   , r11, #1024   ; ldfs f0, [r11, #1024]
 _ldfs2  , r12, #1024   ; ldfs f1, [r12, #1024]
 _fmls f3,   ,          ; fmls f3, f0, f1
 _ldfs   , r11, #3072   ; ldfs f0, [r11, #3072]
 _ldfs2  , r12, #3072   ; ldfs f1, [r11, #3072]
 _fmls f1,   ,          ; fmls f1, f0, f1
 _adfs   ,   , f3       ; adfs f5, f1, f3
 _rcss   ,   ,   , f4   ; rsfs f0, f5, f4
                        ; adfs f5, f5, f4
 _stfs   , r10, #-8     ; stfs f0, [r10, #-8]
 _stfs2  , r10, #-16    ; stfs f5, [r10, #-16]
 _sufs   , f3, f1       ; sufs f3, f3, f1
 _rcss   ,   ,   , f2   ; rsfs f0, f3, f2
                        ; adfs f3, f3, f2
 _stfs   , r10, #-4     ; stfs f0, [r10, #-4]
 _stfs2  , r10, #-12    ; stfs f3, [r10, #-12]
  add r10, r10, #2048
  add r11, r11, #4
  add r12, r12, #4
 _ldfs   , r11, #0      ; ldfs f0, [r11]
 _ldfs2  , r12, #0      ; ldfs f1, [r12]
 _fmls f2,   ,          ; fmls f2, f0, f1
 _ldfs   , r11, #2048   ; ldfs f0, [r11, #2048]
 _ldfs2  , r12, #2048   ; ldfs f1, [r12, #2048]
 _fmls   ,   ,          ; fmls f1, f0, f1
 _rcss f2, f4,   , f2   ; adfs f4, f1, f2
                        ; rsfs f2, f1, f2
 _ldfs   , r11, #1024   ; ldfs f0, [r11, #1024]
 _ldfs2  , r12, #1024   ; ldfs f1, [r12, #1024]
 _fmls f3,   ,          ; fmls f3, f0, f1
 _ldfs   , r11, #3072   ; ldfs f0, [r11, #3072]
 _ldfs2  , r12, #3072   ; ldfs f1, [r11, #3072]
 _fmls f1,   ,          ; fmls f1, f0, f1
 _adfs   ,   , f3       ; adfs f5, f1, f3
 _rcss   ,   ,   , f4   ; rsfs f0, f5, f4
                        ; adfs f5, f5, f4
 _stfs   , r10, #-8     ; stfs f0, [r10, #-8]
 _stfs2  , r10, #-16    ; stfs f5, [r10, #-16]
 _sufs f3, f3, f1       ; sufs f3, f3, f1
 _rcss   ,   , f3, f2   ; rsfs f0, f3, f2
                        ; adfs f3, f3, f2
 _stfs   , r10, #-4     ; stfs f0, [r10, #-4]
 _stfs2   , r10, #-12   ; stfs f3, [r10, #-12]
  ldmfd r13!, {r3, r5, r6, r8}
 ldr r1, [r13, #4]
 sub r8, r8, #16
 subs r1, r1, #1
 bpl |L..56|

  ldmfd r13!, {r11}

 mov r3, #4
 add r4, r8, #4096
 str r4, [r13, #4]
 adrl r10, |L..77|+8
 ldr r10, [r10]
 str r3, [r13, #12]
 str r10, [r13, #8]

|L..58| ; 100
  adrl r1, |L..50|+12
  ldmia r1, {r0 - r2}
  add r3, r9, #vf5
  stmia r3, {r0 - r2}    ; f5 = sqrt(2)
 ldr r3, [r13, #12]
 mov r1, r8
 ldr r10, [r13, #8]
 mov r12, r3, asr #1
 mov r2, r3, lsl #17
 mov r2, r2, asr #16
 str r12, [r13, #16]
 mov r12, r2, lsl #17
 mov r12, r12, asr #16
 add r10, r10, #8
 mov r0, r12, lsl #2
 str r12, [r13, #12]
 add r12, r2, r3
 mov r12, r12, lsl #16
 mov r12, r12, asr #14
 ldr r4, [r13, #16]
 add r7, r1, r12
 str r10, [r13, #64]
 mov r2, r2, lsl #2
 str r2, [r13, #80]
 add r2, r1, r2
 str r0, [r13, #68]
 mov r3, r3, lsl #2
 str r12, [r13, #72]
 add r12, r1, r3
 ldr r14, [r13, #72]
 add r10, r1, r4, lsl #2
 ldr r4, [r13, #80]
 add r5, r10, r14
 add r6, r10, r4
 add r4, r10, r3

|L..60|
  stmfd r13!, {r0 - r8, r10}
 _ldfs   , , r1         ; ldfs f1, [r1]
 _ldfs2  , r12, #0      ; ldfs f0, [r12]
 _cass f1, f3,   ,      ; adfs f3, f1, f0
                        ; sufs f1, f1, f0
 _ldfs   , r2, #0       ; ldfs f2, [r2]
 _ldfs2  , r7, #0       ; ldfs f0, [r7]
 _cass f4, f2,   ,      ; sufs f4, f2, f0
                        ; adfs f2, f2, f0
 _cass   ,   , f3,      ; sufs f0, f3, f2
                        ; adfs f2, f3, f2
 _stfs   , r2, #0       ; stfs f0, [r2]
 _stfs2  , r1, #0       ; stfs f2, [r1]
 _cass   ,   , f1, f4   ; sufs f0, f1, f4
                        ; adfs f2, f1, f4
 _stfs   , r7, #0       ; stfs f0, [r7]
 _stfs2  , , r12        ; stfs f2, [r12]
 _ldfs   , r10, #0      ; ldfs f1, [r10]
 _ldfs2  , r4, #0       ; ldfs f0, [r4]
 _cass f3, f1,   ,      ; sufs f3, f1, f0
                        ; adfs f1, f1, f0
 _ldfs   , r6, #0       ; ldfs f2, [r6]
 _fmls   ,   , f5       ; fmls f2, f2, f5
 _rcss   ,   ,   , f1   ; rsfs f0, f2, f1
                        ; adfs f2, f2, f1
 _stfs   , r6, #0       ; stfs f0, [r6]
 _stfs2  , r10, #0      ; stfs f2, [r10]
 _ldfs   , r5, #0       ; ldfs f2, [r5]
 _fmls   ,   , f5       ; fmls f2, f2, f5
 _rcss   ,   ,   , f3   ; rsfs f0, f2, f3
                        ; adfs f2, f2, f3
 _stfs   , r5, #0       ; stfs f0, [r5]
 _stfs2  , r4, #0       ; stfs f2, [r4]
  ldmfd r13!, {r0 - r8, r10}
 add r12, r12, r0
 add r2, r2, r0
 add r4, r4, r0
 add r5, r5, r0 
 add r6, r6, r0
 add r7, r7, r0
 add r10, r10, r0
 ldr r14, [r13, #4]
 add r1, r1, r0
 cmp r1, r14
 bcc |L..60|

 ldr r1, [r13, #8]
  stmfd r13!, {r3, r8}
 _ldfs2 f10, , r1       ; ldfs f10, [r1]
  add r1, r1, #4
 _ldfs2 f8, , r1        ; ldfs f8, [r1, #4]
  ldmfd r13!, {r3, r8}
 ldr r1, [r13, #16]
 mov r4, #1
 cmp r1, #1
 ble |L..71|
 add r2, r3, r8
 ldr r10, [r13, #72]
 mov r7, r3
 str r2, [r13, #36]
 str r10, [r13, #52]

|L..65|
 mov r12, r4, lsl #2
 add r4, r4, #1
 str r4, [r13, #76]
  stmfd r13!, {r7, r8}
 _fget {r0 - r2}, f8
  movs r7, r0, lsl #2
  addne r0, r0, #1      ; fmls f1, f8, #2   (cheat)
 _fsave f1, {r0 - r2}
 _fmls   ,   , f8       ; fmls f0, f1, f8
 _rsfs   ,   , im1      ; rsfs f9, f0, #1
  bl round_s            ; required to generate output identical to original code
 _fsave f9, {r0 - r2}
 _fmls f11, f1, f10     ; fmls f11, f1, f10
  ldmfd r13!, {r7, r8}
 ldr r2, [r13, #36]
 add r1, r8, r12
 ldr r0, [r13, #68]
 sub r10, r2, r12
 ldr r4, [r13, #80]
 add r2, r1, r7
 ldr r14, [r13, #52]
 add r6, r1, r4
 add r3, r1, r14
 add r12, r4, r10
 add r4, r7, r10
 add r5, r10, r14
  stmfd r13!, {r7, r8}

|L..67|
  stmfd r13!, {r0 - r6, r10}
 _ldfs f2, , r2         ; ldfs f2, [r2]
 _fmls f3,   , f11      ; fmls f3, f2, f11
 _ldfs f1, r4, #0       ; ldfs f1, [r4]
 _fmls   ,   , f9       ; fmls f0, f1, f9
 _rsfs f6,   , f3       ; rsfs f6, f0, f3
 _fmls f2, f2, f9       ; fmls f2, f2, f9
 _fmls   , f1, f11      ; fmls f1, f1, f11
 _adfs f7,   , f2       ; adfs f7, f1, f2
 _ldfs   , r10, #0      ; ldfs f0, [r10]
 _cass f12, f13,   , f6 ; sufs f12, f0, f6
                        ; adfs f13, f0, f6
 _ldfs f2, r3, #0       ; ldfs f2, [r3]
 _fmls f3,   , f11      ; fmls f3, f2, f11
 _ldfs f0, r5, #0       ; ldfs f0, [r5]
 _fmls   ,   , f9       ; fmls f4, f0, f9
 _rsfs f1,   , f3       ; rsfs f1, f4, f3
 _ldfs   , r1, #0       ; ldfs f4, [r1]
 _cass f14, f4,   , f7  ; sufs f14, f4, f7
                        ; adfs f4, f4, f7
 _fmls f0, f0, f11      ; fmls f0, f0, f11
 _fmls   , f2, f9       ; fmls f2, f2, f9
 _adfs f7,   , f0       ; adfs f7, f2, f0
 _ldfs2 f15, r6, #0     ; ldfs f15, [r6]
 _adfs f3,   ,          ; adfs f3, f7, f15
 _ldfs   , r12, #0      ; ldfs f0, [r12]
 _cass f2, f5,   , f1   ; adfs f5, f0, f1
                        ; sufs f2, f0, f1
 _fmls f0,   , f10      ; fmls f0, f2, f10
 _fmls   , f3, f8       ; fmls f1, f3, f8
 _sufs   ,   , f0       ; sufs f6, f1, f0
 _rcss   ,   ,   , f12  ; sufs f1, f6, f12
                        ; adfs f0, f6, f12
 _stfs   , r5, #0       ; stfs f1, [r5]
 _stfs2  , r4, #0       ; stfs f0, [r4]
 _sufs f7, f15, f7      ; sufs f7, f15, f7
 _fmls f3, f3, f10      ; fmls f3, f3, f10
 _fmls   , f2, f8       ; fmls f2, f2, f8
 _adfs   ,   , f3       ; adfs f1, f2, f3
 _rcss   ,   ,   , f4   ; rsfs f1, f1, f4
                        ; adfs f0, f1, f4
 _stfs   , r6, #0       ; stfs f1, [r6]
 _stfs2  , r1, #0       ; stfs f0, [r1]
 _fmls f0, f7, f8       ; fmls f0, f7, f8
 _fmls   , f5, f10      ; fmls f1, f5, f10
 _sufs   ,   , f0       ; sufs f6, f1, f0
 _rcss   ,   ,   , f14  ; rsfs f1, f6, f14
                        ; adfs f0, f6, f14
 _stfs   , r3, #0       ; stfs f1, [r3]
 _stfs2  , r2, #0       ; stfs f0, [r2]
 _fmls f0, f7, f10      ; fmls f0, f7, f10
 _fmls   , f5, f8       ; fmls f5, f5, f8
 _adfs   ,   , f0       ; adfs f7, f5, f0
 _rcss   ,   ,   , f13  ; rsfs f1, f7, f13
                        ; adfs f0, f7, f13
 _stfs   , r12, #0      ; stfs f1, [r12]
 _stfs2  , r10, #0      ; stfs f0, [r10]
  ldmfd r13!, {r0 - r6, r10}
 add r12, r12, r0
 add r1, r1, r0
 add r2, r2, r0
 add r3, r3, r0
 add r4, r4, r0
 add r5, r5, r0
 add r6, r6, r0
  ldr r14, [r13, #4+(2*4)]
 add r10, r10, r0
 cmp r1, r14
 bcc |L..67|

  ldr r0, [r13, #8+(2*4)]
 _ldfs f2, , r0         ; ldfs f2, [r0]
 _fmls f3,   , f10      ; fmls f3, f2, f10
  ldr r0, [r13, #8+(2*4)]
  add r0, r0, #4
 _ldfs f1, , r0         ; ldfs f1, [r0, #4]
 _fmls f0,   , f8       ; fmls f0, f1, f8
 _fmls f1, f1, f10      ; fmls f1, f1, f10
 _fmls   , f2, f8       ; fmls f2, f2, f8
 _adfs f8,   , f1       ; adfs f8, f2, f1
 _sufs f10, f3, f0      ; sufs f10, f3, f0
  ldmfd r13!, {r7, r8}
 ldr r2, [r13, #16]
 ldr r4, [r13, #76]
 cmp r4, r2
 blt |L..65|

|L..71|
 ldr r4, [r13, #64]
 ldr r10, [r13, #12]
 str r4, [r13, #8]
 cmp r10, #1024
 blt |L..58|

  add r13, r13, #276
 ldmfd r13!, {r4 - r10, r15}

|L..77|
 DCD 0 ;|window|
 DCD |rv_tbl|
 DCD |costab|


 EXPORT |init_fft|
|init_fft|
  mov r12, r13
  stmfd r13!, {r4 - r7, r11, r12, r14, r15}
  sfmfd f4, 2, [r13]!
 sub r11, r12, #4
 cmp r13, r10
 bllt |__rt_stkovf_split_small|
 add r6, r0, #209920
 add r6, r6, #632
 add r7, r0, #214016
 add r7, r7, #632
 mov r5, #0

|L..81n|
 add r4, r6, r5, lsl #2
  fltdz f5, r5
  adfd f5, f5, #0.5
  ldfd f0, |L..89n|
  mufd f0, f0, f5
  cosd f0, f0
  ldfd f1, |L..89n|+8
  mufd f5, f5, f1
  mufd f0, f0, #0.5
  ldfd f4, |L..89n|+16
  sufd f4, f4, f0
  cosd f0, f5
  ldfd f1, |L..89n|+24
  mufd f0, f0, f1
  adfd f4, f4, f0
  stfs f4, [r4, #0]
 add r5, r5, #1
 cmp r5, #1024
 blt |L..81n|

 mov r5, #0
  ldfd f4, |L..89n|+32

|L..86n|
 add r12, r7, r5, lsl #2
  fltdz f0, r5
  adfdz f0, f0, #0.5
  mufdz f0, f0, f4
  coss f0, f0
  rsfdz f0, f0, #1
  mufdz f0, f0, #0.5
  stfs f0, [r12, #0]
 add r5, r5, #1
 cmp r5, #127
 ble |L..86n|

  lfm f4, 2, [r11, #-52]
 ldmea r11, {r4 - r7, r11, r13, r15}

|L..89n|
 DCD &3f7921fb, &54442d18 ; double 6.13592315154256467968e-3
 DCD &3f8921fb, &54442d18 ; double 1.22718463030851293594e-2
 DCD &3fdae147, &ae147ae1 ; double 4.19999999999999984457e-1
 DCD &3fb47ae1, &47ae147b ; double 8.00000000000000016653e-2
 DCD &3f9921fb, &54442d18 ; double 2.45436926061702587187e-2

|costab|
 KEEP |costab|
 DCD &3f6c835e ; double 9.23879504203796386719e-1
 DCD &3ec3ef15 ; double 3.82683426141738891602e-1
 DCD &3f7ec46d ; double 9.95184719562530517578e-1
 DCD &3dc8bd36 ; double 9.80171412229537963867e-2
 DCD &3f7fec43 ; double 9.99698817729949951172e-1
 DCD &3cc90ab0 ; double 2.45412290096282958984e-2
 DCD &3f7ffec4 ; double 9.99981164932250976562e-1
 DCD &3bc90f88 ; double 6.13588467240333557129e-3

|rv_tbl|
 KEEP |rv_tbl|
 DCB 0  , 128, 64 , 192, 32 , 160, 96 , 224
 DCB 16 , 144, 80 , 208, 48 , 176, 112, 240
 DCB 8  , 136, 72 , 200, 40 , 168, 104, 232
 DCB 24 , 152, 88 , 216, 56 , 184, 120, 248
 DCB 4  , 132, 68 , 196, 36 , 164, 100, 228
 DCB 20 , 148, 84 , 212, 52 , 180, 116, 244
 DCB 12 , 140, 76 , 204, 44 , 172, 108, 236
 DCB 28 , 156, 92 , 220, 60 , 188, 124, 252
 DCB 2  , 130, 66 , 194, 34 , 162, 98 , 226
 DCB 18 , 146, 82 , 210, 50 , 178, 114, 242
 DCB 10 , 138, 74 , 202, 42 , 170, 106, 234
 DCB 26 , 154, 90 , 218, 58 , 186, 122, 250
 DCB 6  , 134, 70 , 198, 38 , 166, 102, 230
 DCB 22 , 150, 86 , 214, 54 , 182, 118, 246
 DCB 14 , 142, 78 , 206, 46 , 174, 110, 238
 DCB 30 , 158, 94 , 222, 62 , 190, 126, 254

 END
