	.file	"43886466.c"
	.intel_syntax noprefix
	.text
	.globl	Sinewave
	.section	.rodata
	.align 32
	.type	Sinewave, @object
	.size	Sinewave, 1536
Sinewave:
	.value	0
	.value	201
	.value	402
	.value	603
	.value	804
	.value	1005
	.value	1206
	.value	1406
	.value	1607
	.value	1808
	.value	2009
	.value	2209
	.value	2410
	.value	2610
	.value	2811
	.value	3011
	.value	3211
	.value	3411
	.value	3611
	.value	3811
	.value	4011
	.value	4210
	.value	4409
	.value	4608
	.value	4807
	.value	5006
	.value	5205
	.value	5403
	.value	5601
	.value	5799
	.value	5997
	.value	6195
	.value	6392
	.value	6589
	.value	6786
	.value	6982
	.value	7179
	.value	7375
	.value	7571
	.value	7766
	.value	7961
	.value	8156
	.value	8351
	.value	8545
	.value	8739
	.value	8932
	.value	9126
	.value	9319
	.value	9511
	.value	9703
	.value	9895
	.value	10087
	.value	10278
	.value	10469
	.value	10659
	.value	10849
	.value	11038
	.value	11227
	.value	11416
	.value	11604
	.value	11792
	.value	11980
	.value	12166
	.value	12353
	.value	12539
	.value	12724
	.value	12909
	.value	13094
	.value	13278
	.value	13462
	.value	13645
	.value	13827
	.value	14009
	.value	14191
	.value	14372
	.value	14552
	.value	14732
	.value	14911
	.value	15090
	.value	15268
	.value	15446
	.value	15623
	.value	15799
	.value	15975
	.value	16150
	.value	16325
	.value	16499
	.value	16672
	.value	16845
	.value	17017
	.value	17189
	.value	17360
	.value	17530
	.value	17699
	.value	17868
	.value	18036
	.value	18204
	.value	18371
	.value	18537
	.value	18702
	.value	18867
	.value	19031
	.value	19194
	.value	19357
	.value	19519
	.value	19680
	.value	19840
	.value	20000
	.value	20159
	.value	20317
	.value	20474
	.value	20631
	.value	20787
	.value	20942
	.value	21096
	.value	21249
	.value	21402
	.value	21554
	.value	21705
	.value	21855
	.value	22004
	.value	22153
	.value	22301
	.value	22448
	.value	22594
	.value	22739
	.value	22883
	.value	23027
	.value	23169
	.value	23311
	.value	23452
	.value	23592
	.value	23731
	.value	23869
	.value	24006
	.value	24143
	.value	24278
	.value	24413
	.value	24546
	.value	24679
	.value	24811
	.value	24942
	.value	25072
	.value	25201
	.value	25329
	.value	25456
	.value	25582
	.value	25707
	.value	25831
	.value	25954
	.value	26077
	.value	26198
	.value	26318
	.value	26437
	.value	26556
	.value	26673
	.value	26789
	.value	26905
	.value	27019
	.value	27132
	.value	27244
	.value	27355
	.value	27466
	.value	27575
	.value	27683
	.value	27790
	.value	27896
	.value	28001
	.value	28105
	.value	28208
	.value	28309
	.value	28410
	.value	28510
	.value	28608
	.value	28706
	.value	28802
	.value	28897
	.value	28992
	.value	29085
	.value	29177
	.value	29268
	.value	29358
	.value	29446
	.value	29534
	.value	29621
	.value	29706
	.value	29790
	.value	29873
	.value	29955
	.value	30036
	.value	30116
	.value	30195
	.value	30272
	.value	30349
	.value	30424
	.value	30498
	.value	30571
	.value	30643
	.value	30713
	.value	30783
	.value	30851
	.value	30918
	.value	30984
	.value	31049
	.value	31113
	.value	31175
	.value	31236
	.value	31297
	.value	31356
	.value	31413
	.value	31470
	.value	31525
	.value	31580
	.value	31633
	.value	31684
	.value	31735
	.value	31785
	.value	31833
	.value	31880
	.value	31926
	.value	31970
	.value	32014
	.value	32056
	.value	32097
	.value	32137
	.value	32176
	.value	32213
	.value	32249
	.value	32284
	.value	32318
	.value	32350
	.value	32382
	.value	32412
	.value	32441
	.value	32468
	.value	32495
	.value	32520
	.value	32544
	.value	32567
	.value	32588
	.value	32609
	.value	32628
	.value	32646
	.value	32662
	.value	32678
	.value	32692
	.value	32705
	.value	32717
	.value	32727
	.value	32736
	.value	32744
	.value	32751
	.value	32757
	.value	32761
	.value	32764
	.value	32766
	.value	32767
	.value	32766
	.value	32764
	.value	32761
	.value	32757
	.value	32751
	.value	32744
	.value	32736
	.value	32727
	.value	32717
	.value	32705
	.value	32692
	.value	32678
	.value	32662
	.value	32646
	.value	32628
	.value	32609
	.value	32588
	.value	32567
	.value	32544
	.value	32520
	.value	32495
	.value	32468
	.value	32441
	.value	32412
	.value	32382
	.value	32350
	.value	32318
	.value	32284
	.value	32249
	.value	32213
	.value	32176
	.value	32137
	.value	32097
	.value	32056
	.value	32014
	.value	31970
	.value	31926
	.value	31880
	.value	31833
	.value	31785
	.value	31735
	.value	31684
	.value	31633
	.value	31580
	.value	31525
	.value	31470
	.value	31413
	.value	31356
	.value	31297
	.value	31236
	.value	31175
	.value	31113
	.value	31049
	.value	30984
	.value	30918
	.value	30851
	.value	30783
	.value	30713
	.value	30643
	.value	30571
	.value	30498
	.value	30424
	.value	30349
	.value	30272
	.value	30195
	.value	30116
	.value	30036
	.value	29955
	.value	29873
	.value	29790
	.value	29706
	.value	29621
	.value	29534
	.value	29446
	.value	29358
	.value	29268
	.value	29177
	.value	29085
	.value	28992
	.value	28897
	.value	28802
	.value	28706
	.value	28608
	.value	28510
	.value	28410
	.value	28309
	.value	28208
	.value	28105
	.value	28001
	.value	27896
	.value	27790
	.value	27683
	.value	27575
	.value	27466
	.value	27355
	.value	27244
	.value	27132
	.value	27019
	.value	26905
	.value	26789
	.value	26673
	.value	26556
	.value	26437
	.value	26318
	.value	26198
	.value	26077
	.value	25954
	.value	25831
	.value	25707
	.value	25582
	.value	25456
	.value	25329
	.value	25201
	.value	25072
	.value	24942
	.value	24811
	.value	24679
	.value	24546
	.value	24413
	.value	24278
	.value	24143
	.value	24006
	.value	23869
	.value	23731
	.value	23592
	.value	23452
	.value	23311
	.value	23169
	.value	23027
	.value	22883
	.value	22739
	.value	22594
	.value	22448
	.value	22301
	.value	22153
	.value	22004
	.value	21855
	.value	21705
	.value	21554
	.value	21402
	.value	21249
	.value	21096
	.value	20942
	.value	20787
	.value	20631
	.value	20474
	.value	20317
	.value	20159
	.value	20000
	.value	19840
	.value	19680
	.value	19519
	.value	19357
	.value	19194
	.value	19031
	.value	18867
	.value	18702
	.value	18537
	.value	18371
	.value	18204
	.value	18036
	.value	17868
	.value	17699
	.value	17530
	.value	17360
	.value	17189
	.value	17017
	.value	16845
	.value	16672
	.value	16499
	.value	16325
	.value	16150
	.value	15975
	.value	15799
	.value	15623
	.value	15446
	.value	15268
	.value	15090
	.value	14911
	.value	14732
	.value	14552
	.value	14372
	.value	14191
	.value	14009
	.value	13827
	.value	13645
	.value	13462
	.value	13278
	.value	13094
	.value	12909
	.value	12724
	.value	12539
	.value	12353
	.value	12166
	.value	11980
	.value	11792
	.value	11604
	.value	11416
	.value	11227
	.value	11038
	.value	10849
	.value	10659
	.value	10469
	.value	10278
	.value	10087
	.value	9895
	.value	9703
	.value	9511
	.value	9319
	.value	9126
	.value	8932
	.value	8739
	.value	8545
	.value	8351
	.value	8156
	.value	7961
	.value	7766
	.value	7571
	.value	7375
	.value	7179
	.value	6982
	.value	6786
	.value	6589
	.value	6392
	.value	6195
	.value	5997
	.value	5799
	.value	5601
	.value	5403
	.value	5205
	.value	5006
	.value	4807
	.value	4608
	.value	4409
	.value	4210
	.value	4011
	.value	3811
	.value	3611
	.value	3411
	.value	3211
	.value	3011
	.value	2811
	.value	2610
	.value	2410
	.value	2209
	.value	2009
	.value	1808
	.value	1607
	.value	1406
	.value	1206
	.value	1005
	.value	804
	.value	603
	.value	402
	.value	201
	.value	0
	.value	-201
	.value	-402
	.value	-603
	.value	-804
	.value	-1005
	.value	-1206
	.value	-1406
	.value	-1607
	.value	-1808
	.value	-2009
	.value	-2209
	.value	-2410
	.value	-2610
	.value	-2811
	.value	-3011
	.value	-3211
	.value	-3411
	.value	-3611
	.value	-3811
	.value	-4011
	.value	-4210
	.value	-4409
	.value	-4608
	.value	-4807
	.value	-5006
	.value	-5205
	.value	-5403
	.value	-5601
	.value	-5799
	.value	-5997
	.value	-6195
	.value	-6392
	.value	-6589
	.value	-6786
	.value	-6982
	.value	-7179
	.value	-7375
	.value	-7571
	.value	-7766
	.value	-7961
	.value	-8156
	.value	-8351
	.value	-8545
	.value	-8739
	.value	-8932
	.value	-9126
	.value	-9319
	.value	-9511
	.value	-9703
	.value	-9895
	.value	-10087
	.value	-10278
	.value	-10469
	.value	-10659
	.value	-10849
	.value	-11038
	.value	-11227
	.value	-11416
	.value	-11604
	.value	-11792
	.value	-11980
	.value	-12166
	.value	-12353
	.value	-12539
	.value	-12724
	.value	-12909
	.value	-13094
	.value	-13278
	.value	-13462
	.value	-13645
	.value	-13827
	.value	-14009
	.value	-14191
	.value	-14372
	.value	-14552
	.value	-14732
	.value	-14911
	.value	-15090
	.value	-15268
	.value	-15446
	.value	-15623
	.value	-15799
	.value	-15975
	.value	-16150
	.value	-16325
	.value	-16499
	.value	-16672
	.value	-16845
	.value	-17017
	.value	-17189
	.value	-17360
	.value	-17530
	.value	-17699
	.value	-17868
	.value	-18036
	.value	-18204
	.value	-18371
	.value	-18537
	.value	-18702
	.value	-18867
	.value	-19031
	.value	-19194
	.value	-19357
	.value	-19519
	.value	-19680
	.value	-19840
	.value	-20000
	.value	-20159
	.value	-20317
	.value	-20474
	.value	-20631
	.value	-20787
	.value	-20942
	.value	-21096
	.value	-21249
	.value	-21402
	.value	-21554
	.value	-21705
	.value	-21855
	.value	-22004
	.value	-22153
	.value	-22301
	.value	-22448
	.value	-22594
	.value	-22739
	.value	-22883
	.value	-23027
	.value	-23169
	.value	-23311
	.value	-23452
	.value	-23592
	.value	-23731
	.value	-23869
	.value	-24006
	.value	-24143
	.value	-24278
	.value	-24413
	.value	-24546
	.value	-24679
	.value	-24811
	.value	-24942
	.value	-25072
	.value	-25201
	.value	-25329
	.value	-25456
	.value	-25582
	.value	-25707
	.value	-25831
	.value	-25954
	.value	-26077
	.value	-26198
	.value	-26318
	.value	-26437
	.value	-26556
	.value	-26673
	.value	-26789
	.value	-26905
	.value	-27019
	.value	-27132
	.value	-27244
	.value	-27355
	.value	-27466
	.value	-27575
	.value	-27683
	.value	-27790
	.value	-27896
	.value	-28001
	.value	-28105
	.value	-28208
	.value	-28309
	.value	-28410
	.value	-28510
	.value	-28608
	.value	-28706
	.value	-28802
	.value	-28897
	.value	-28992
	.value	-29085
	.value	-29177
	.value	-29268
	.value	-29358
	.value	-29446
	.value	-29534
	.value	-29621
	.value	-29706
	.value	-29790
	.value	-29873
	.value	-29955
	.value	-30036
	.value	-30116
	.value	-30195
	.value	-30272
	.value	-30349
	.value	-30424
	.value	-30498
	.value	-30571
	.value	-30643
	.value	-30713
	.value	-30783
	.value	-30851
	.value	-30918
	.value	-30984
	.value	-31049
	.value	-31113
	.value	-31175
	.value	-31236
	.value	-31297
	.value	-31356
	.value	-31413
	.value	-31470
	.value	-31525
	.value	-31580
	.value	-31633
	.value	-31684
	.value	-31735
	.value	-31785
	.value	-31833
	.value	-31880
	.value	-31926
	.value	-31970
	.value	-32014
	.value	-32056
	.value	-32097
	.value	-32137
	.value	-32176
	.value	-32213
	.value	-32249
	.value	-32284
	.value	-32318
	.value	-32350
	.value	-32382
	.value	-32412
	.value	-32441
	.value	-32468
	.value	-32495
	.value	-32520
	.value	-32544
	.value	-32567
	.value	-32588
	.value	-32609
	.value	-32628
	.value	-32646
	.value	-32662
	.value	-32678
	.value	-32692
	.value	-32705
	.value	-32717
	.value	-32727
	.value	-32736
	.value	-32744
	.value	-32751
	.value	-32757
	.value	-32761
	.value	-32764
	.value	-32766
	.text
	.globl	FIX_MPY
	.type	FIX_MPY, @function
FIX_MPY:
.LFB0:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	edx, edi
	mov	eax, esi
	mov	WORD PTR -20[rbp], dx
	mov	WORD PTR -24[rbp], ax
	movsx	edx, WORD PTR -20[rbp]
	movsx	eax, WORD PTR -24[rbp]
	imul	eax, edx
	sar	eax, 14
	mov	DWORD PTR -4[rbp], eax
	mov	eax, DWORD PTR -4[rbp]
	and	eax, 1
	mov	WORD PTR -24[rbp], ax
	mov	eax, DWORD PTR -4[rbp]
	sar	eax
	mov	edx, eax
	movzx	eax, WORD PTR -24[rbp]
	add	eax, edx
	mov	WORD PTR -20[rbp], ax
	movzx	eax, WORD PTR -20[rbp]
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE0:
	.size	FIX_MPY, .-FIX_MPY
	.globl	fix_fft
	.type	fix_fft, @function
fix_fft:
.LFB1:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	rbx
	sub	rsp, 88
	.cfi_offset 3, -24
	mov	QWORD PTR -80[rbp], rdi
	mov	QWORD PTR -88[rbp], rsi
	mov	eax, ecx
	mov	WORD PTR -92[rbp], dx
	mov	WORD PTR -96[rbp], ax
	movsx	eax, WORD PTR -92[rbp]
	mov	edx, 1
	mov	ecx, eax
	sal	edx, cl
	mov	eax, edx
	mov	DWORD PTR -20[rbp], eax
	cmp	DWORD PTR -20[rbp], 1024
	jle	.L4
	mov	eax, -1
	jmp	.L5
.L4:
	mov	DWORD PTR -48[rbp], 0
	mov	eax, DWORD PTR -20[rbp]
	sub	eax, 1
	mov	DWORD PTR -16[rbp], eax
	mov	DWORD PTR -28[rbp], 0
	mov	WORD PTR -92[rbp], 1
	jmp	.L6
.L10:
	mov	eax, DWORD PTR -20[rbp]
	mov	DWORD PTR -36[rbp], eax
.L7:
	sar	DWORD PTR -36[rbp]
	mov	edx, DWORD PTR -48[rbp]
	mov	eax, DWORD PTR -36[rbp]
	add	eax, edx
	cmp	DWORD PTR -16[rbp], eax
	jl	.L7
	mov	eax, DWORD PTR -36[rbp]
	sub	eax, 1
	and	eax, DWORD PTR -48[rbp]
	mov	edx, eax
	mov	eax, DWORD PTR -36[rbp]
	add	eax, edx
	mov	DWORD PTR -48[rbp], eax
	movsx	eax, WORD PTR -92[rbp]
	cmp	DWORD PTR -48[rbp], eax
	jle	.L29
	movsx	rax, WORD PTR -92[rbp]
	lea	rdx, [rax+rax]
	mov	rax, QWORD PTR -80[rbp]
	add	rax, rdx
	movzx	eax, WORD PTR [rax]
	mov	WORD PTR -52[rbp], ax
	mov	eax, DWORD PTR -48[rbp]
	cdqe
	lea	rdx, [rax+rax]
	mov	rax, QWORD PTR -80[rbp]
	add	rax, rdx
	movsx	rdx, WORD PTR -92[rbp]
	lea	rcx, [rdx+rdx]
	mov	rdx, QWORD PTR -80[rbp]
	add	rdx, rcx
	movzx	eax, WORD PTR [rax]
	mov	WORD PTR [rdx], ax
	mov	eax, DWORD PTR -48[rbp]
	cdqe
	lea	rdx, [rax+rax]
	mov	rax, QWORD PTR -80[rbp]
	add	rdx, rax
	movzx	eax, WORD PTR -52[rbp]
	mov	WORD PTR [rdx], ax
	movsx	rax, WORD PTR -92[rbp]
	lea	rdx, [rax+rax]
	mov	rax, QWORD PTR -88[rbp]
	add	rax, rdx
	movzx	eax, WORD PTR [rax]
	mov	WORD PTR -50[rbp], ax
	mov	eax, DWORD PTR -48[rbp]
	cdqe
	lea	rdx, [rax+rax]
	mov	rax, QWORD PTR -88[rbp]
	add	rax, rdx
	movsx	rdx, WORD PTR -92[rbp]
	lea	rcx, [rdx+rdx]
	mov	rdx, QWORD PTR -88[rbp]
	add	rdx, rcx
	movzx	eax, WORD PTR [rax]
	mov	WORD PTR [rdx], ax
	mov	eax, DWORD PTR -48[rbp]
	cdqe
	lea	rdx, [rax+rax]
	mov	rax, QWORD PTR -88[rbp]
	add	rdx, rax
	movzx	eax, WORD PTR -50[rbp]
	mov	WORD PTR [rdx], ax
	jmp	.L9
.L29:
	nop
.L9:
	movzx	eax, WORD PTR -92[rbp]
	add	eax, 1
	mov	WORD PTR -92[rbp], ax
.L6:
	movsx	eax, WORD PTR -92[rbp]
	cmp	DWORD PTR -16[rbp], eax
	jge	.L10
	mov	DWORD PTR -36[rbp], 1
	mov	DWORD PTR -32[rbp], 9
	jmp	.L11
.L28:
	cmp	WORD PTR -96[rbp], 0
	je	.L12
	mov	DWORD PTR -24[rbp], 0
	mov	DWORD PTR -44[rbp], 0
	jmp	.L13
.L19:
	mov	eax, DWORD PTR -44[rbp]
	cdqe
	lea	rdx, [rax+rax]
	mov	rax, QWORD PTR -80[rbp]
	add	rax, rdx
	movzx	eax, WORD PTR [rax]
	cwde
	mov	DWORD PTR -40[rbp], eax
	cmp	DWORD PTR -40[rbp], 0
	jns	.L14
	neg	DWORD PTR -40[rbp]
.L14:
	mov	eax, DWORD PTR -44[rbp]
	cdqe
	lea	rdx, [rax+rax]
	mov	rax, QWORD PTR -88[rbp]
	add	rax, rdx
	movzx	eax, WORD PTR [rax]
	mov	WORD PTR -92[rbp], ax
	cmp	WORD PTR -92[rbp], 0
	jns	.L15
	movzx	eax, WORD PTR -92[rbp]
	neg	eax
	mov	WORD PTR -92[rbp], ax
.L15:
	cmp	DWORD PTR -40[rbp], 16383
	jg	.L16
	cmp	WORD PTR -92[rbp], 16383
	jle	.L17
.L16:
	mov	DWORD PTR -24[rbp], 1
	jmp	.L18
.L17:
	add	DWORD PTR -44[rbp], 1
.L13:
	mov	eax, DWORD PTR -44[rbp]
	cmp	eax, DWORD PTR -20[rbp]
	jl	.L19
.L18:
	cmp	DWORD PTR -24[rbp], 0
	je	.L20
	add	DWORD PTR -28[rbp], 1
	jmp	.L20
.L12:
	mov	DWORD PTR -24[rbp], 1
.L20:
	mov	eax, DWORD PTR -36[rbp]
	add	eax, eax
	mov	DWORD PTR -12[rbp], eax
	mov	WORD PTR -92[rbp], 0
	jmp	.L21
.L27:
	movsx	edx, WORD PTR -92[rbp]
	mov	eax, DWORD PTR -32[rbp]
	mov	ecx, eax
	sal	edx, cl
	mov	eax, edx
	mov	DWORD PTR -40[rbp], eax
	mov	eax, DWORD PTR -40[rbp]
	add	eax, 256
	cdqe
	lea	rdx, [rax+rax]
	lea	rax, Sinewave[rip]
	movzx	eax, WORD PTR [rdx+rax]
	mov	WORD PTR -56[rbp], ax
	mov	eax, DWORD PTR -40[rbp]
	cdqe
	lea	rdx, [rax+rax]
	lea	rax, Sinewave[rip]
	movzx	eax, WORD PTR [rdx+rax]
	neg	eax
	mov	WORD PTR -54[rbp], ax
	cmp	WORD PTR -96[rbp], 0
	je	.L22
	movzx	eax, WORD PTR -54[rbp]
	neg	eax
	mov	WORD PTR -54[rbp], ax
.L22:
	cmp	DWORD PTR -24[rbp], 0
	je	.L23
	sar	WORD PTR -56[rbp]
	sar	WORD PTR -54[rbp]
.L23:
	movsx	eax, WORD PTR -92[rbp]
	mov	DWORD PTR -44[rbp], eax
	jmp	.L24
.L26:
	mov	edx, DWORD PTR -44[rbp]
	mov	eax, DWORD PTR -36[rbp]
	add	eax, edx
	mov	DWORD PTR -40[rbp], eax
	mov	eax, DWORD PTR -40[rbp]
	cdqe
	lea	rdx, [rax+rax]
	mov	rax, QWORD PTR -80[rbp]
	add	rax, rdx
	movzx	eax, WORD PTR [rax]
	movsx	edx, ax
	movsx	eax, WORD PTR -56[rbp]
	mov	esi, edx
	mov	edi, eax
	call	FIX_MPY
	mov	ebx, eax
	mov	eax, DWORD PTR -40[rbp]
	cdqe
	lea	rdx, [rax+rax]
	mov	rax, QWORD PTR -88[rbp]
	add	rax, rdx
	movzx	eax, WORD PTR [rax]
	movsx	edx, ax
	movsx	eax, WORD PTR -54[rbp]
	mov	esi, edx
	mov	edi, eax
	call	FIX_MPY
	mov	edx, eax
	mov	eax, ebx
	sub	eax, edx
	mov	WORD PTR -52[rbp], ax
	mov	eax, DWORD PTR -40[rbp]
	cdqe
	lea	rdx, [rax+rax]
	mov	rax, QWORD PTR -88[rbp]
	add	rax, rdx
	movzx	eax, WORD PTR [rax]
	movsx	edx, ax
	movsx	eax, WORD PTR -56[rbp]
	mov	esi, edx
	mov	edi, eax
	call	FIX_MPY
	mov	ebx, eax
	mov	eax, DWORD PTR -40[rbp]
	cdqe
	lea	rdx, [rax+rax]
	mov	rax, QWORD PTR -80[rbp]
	add	rax, rdx
	movzx	eax, WORD PTR [rax]
	movsx	edx, ax
	movsx	eax, WORD PTR -54[rbp]
	mov	esi, edx
	mov	edi, eax
	call	FIX_MPY
	add	eax, ebx
	mov	WORD PTR -50[rbp], ax
	mov	eax, DWORD PTR -44[rbp]
	cdqe
	lea	rdx, [rax+rax]
	mov	rax, QWORD PTR -80[rbp]
	add	rax, rdx
	movzx	eax, WORD PTR [rax]
	mov	WORD PTR -60[rbp], ax
	mov	eax, DWORD PTR -44[rbp]
	cdqe
	lea	rdx, [rax+rax]
	mov	rax, QWORD PTR -88[rbp]
	add	rax, rdx
	movzx	eax, WORD PTR [rax]
	mov	WORD PTR -58[rbp], ax
	cmp	DWORD PTR -24[rbp], 0
	je	.L25
	sar	WORD PTR -60[rbp]
	sar	WORD PTR -58[rbp]
.L25:
	movzx	eax, WORD PTR -60[rbp]
	movzx	ecx, WORD PTR -52[rbp]
	sub	eax, ecx
	mov	edx, eax
	mov	eax, DWORD PTR -40[rbp]
	cdqe
	lea	rcx, [rax+rax]
	mov	rax, QWORD PTR -80[rbp]
	add	rax, rcx
	mov	WORD PTR [rax], dx
	movzx	eax, WORD PTR -58[rbp]
	movzx	ecx, WORD PTR -50[rbp]
	sub	eax, ecx
	mov	edx, eax
	mov	eax, DWORD PTR -40[rbp]
	cdqe
	lea	rcx, [rax+rax]
	mov	rax, QWORD PTR -88[rbp]
	add	rax, rcx
	mov	WORD PTR [rax], dx
	movzx	edx, WORD PTR -60[rbp]
	movzx	eax, WORD PTR -52[rbp]
	add	edx, eax
	mov	eax, DWORD PTR -44[rbp]
	cdqe
	lea	rcx, [rax+rax]
	mov	rax, QWORD PTR -80[rbp]
	add	rax, rcx
	mov	WORD PTR [rax], dx
	movzx	edx, WORD PTR -58[rbp]
	movzx	eax, WORD PTR -50[rbp]
	add	edx, eax
	mov	eax, DWORD PTR -44[rbp]
	cdqe
	lea	rcx, [rax+rax]
	mov	rax, QWORD PTR -88[rbp]
	add	rax, rcx
	mov	WORD PTR [rax], dx
	mov	eax, DWORD PTR -12[rbp]
	add	DWORD PTR -44[rbp], eax
.L24:
	mov	eax, DWORD PTR -44[rbp]
	cmp	eax, DWORD PTR -20[rbp]
	jl	.L26
	movzx	eax, WORD PTR -92[rbp]
	add	eax, 1
	mov	WORD PTR -92[rbp], ax
.L21:
	movsx	eax, WORD PTR -92[rbp]
	cmp	DWORD PTR -36[rbp], eax
	jg	.L27
	sub	DWORD PTR -32[rbp], 1
	mov	eax, DWORD PTR -12[rbp]
	mov	DWORD PTR -36[rbp], eax
.L11:
	mov	eax, DWORD PTR -36[rbp]
	cmp	eax, DWORD PTR -20[rbp]
	jl	.L28
	mov	eax, DWORD PTR -28[rbp]
.L5:
	mov	rbx, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE1:
	.size	fix_fft, .-fix_fft
	.globl	fix_fftr
	.type	fix_fftr, @function
fix_fftr:
.LFB2:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 48
	mov	QWORD PTR -40[rbp], rdi
	mov	DWORD PTR -44[rbp], esi
	mov	DWORD PTR -48[rbp], edx
	mov	eax, DWORD PTR -44[rbp]
	sub	eax, 1
	mov	edx, 1
	mov	ecx, eax
	sal	edx, cl
	mov	eax, edx
	mov	DWORD PTR -20[rbp], eax
	mov	DWORD PTR -24[rbp], 0
	mov	rax, QWORD PTR -40[rbp]
	mov	QWORD PTR -16[rbp], rax
	mov	eax, DWORD PTR -20[rbp]
	cdqe
	lea	rdx, [rax+rax]
	mov	rax, QWORD PTR -40[rbp]
	add	rax, rdx
	mov	QWORD PTR -8[rbp], rax
	cmp	DWORD PTR -48[rbp], 0
	je	.L31
	mov	eax, DWORD PTR -48[rbp]
	movsx	ecx, ax
	mov	eax, DWORD PTR -44[rbp]
	sub	eax, 1
	movsx	edx, ax
	mov	rsi, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	fix_fft
	mov	DWORD PTR -24[rbp], eax
.L31:
	mov	DWORD PTR -28[rbp], 1
	jmp	.L32
.L33:
	mov	edx, DWORD PTR -20[rbp]
	mov	eax, DWORD PTR -28[rbp]
	add	eax, edx
	cdqe
	add	rax, rax
	lea	rdx, -2[rax]
	mov	rax, QWORD PTR -40[rbp]
	add	rax, rdx
	movzx	eax, WORD PTR [rax]
	mov	WORD PTR -30[rbp], ax
	mov	eax, DWORD PTR -28[rbp]
	cdqe
	lea	rdx, [rax+rax]
	mov	rax, QWORD PTR -40[rbp]
	add	rax, rdx
	mov	ecx, DWORD PTR -20[rbp]
	mov	edx, DWORD PTR -28[rbp]
	add	edx, ecx
	movsx	rdx, edx
	add	rdx, rdx
	lea	rcx, -2[rdx]
	mov	rdx, QWORD PTR -40[rbp]
	add	rdx, rcx
	movzx	eax, WORD PTR [rax]
	mov	WORD PTR [rdx], ax
	mov	eax, DWORD PTR -28[rbp]
	cdqe
	lea	rdx, [rax+rax]
	mov	rax, QWORD PTR -40[rbp]
	add	rdx, rax
	movzx	eax, WORD PTR -30[rbp]
	mov	WORD PTR [rdx], ax
	add	DWORD PTR -28[rbp], 2
.L32:
	mov	eax, DWORD PTR -28[rbp]
	cmp	eax, DWORD PTR -20[rbp]
	jl	.L33
	cmp	DWORD PTR -48[rbp], 0
	jne	.L34
	mov	eax, DWORD PTR -48[rbp]
	movsx	ecx, ax
	mov	eax, DWORD PTR -44[rbp]
	sub	eax, 1
	movsx	edx, ax
	mov	rsi, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	fix_fft
	mov	DWORD PTR -24[rbp], eax
.L34:
	mov	eax, DWORD PTR -24[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE2:
	.size	fix_fftr, .-fix_fftr
	.ident	"GCC: (Ubuntu 10.5.0-1ubuntu1~20.04) 10.5.0"
	.section	.note.GNU-stack,"",@progbits
	.section	.note.gnu.property,"a"
	.align 8
	.long	 1f - 0f
	.long	 4f - 1f
	.long	 5
0:
	.string	 "GNU"
1:
	.align 8
	.long	 0xc0000002
	.long	 3f - 2f
2:
	.long	 0x3
3:
	.align 8
4:

	.arch armv5t
	.eabi_attribute 20, 1
	.eabi_attribute 21, 1
	.eabi_attribute 23, 3
	.eabi_attribute 24, 1
	.eabi_attribute 25, 1
	.eabi_attribute 26, 2
	.eabi_attribute 30, 6
	.eabi_attribute 34, 0
	.eabi_attribute 18, 4
	.file	"43886466.c"
	.text
	.global	Sinewave
	.section	.rodata
	.align	2
	.type	Sinewave, %object
	.size	Sinewave, 1536
Sinewave:
	.short	0
	.short	201
	.short	402
	.short	603
	.short	804
	.short	1005
	.short	1206
	.short	1406
	.short	1607
	.short	1808
	.short	2009
	.short	2209
	.short	2410
	.short	2610
	.short	2811
	.short	3011
	.short	3211
	.short	3411
	.short	3611
	.short	3811
	.short	4011
	.short	4210
	.short	4409
	.short	4608
	.short	4807
	.short	5006
	.short	5205
	.short	5403
	.short	5601
	.short	5799
	.short	5997
	.short	6195
	.short	6392
	.short	6589
	.short	6786
	.short	6982
	.short	7179
	.short	7375
	.short	7571
	.short	7766
	.short	7961
	.short	8156
	.short	8351
	.short	8545
	.short	8739
	.short	8932
	.short	9126
	.short	9319
	.short	9511
	.short	9703
	.short	9895
	.short	10087
	.short	10278
	.short	10469
	.short	10659
	.short	10849
	.short	11038
	.short	11227
	.short	11416
	.short	11604
	.short	11792
	.short	11980
	.short	12166
	.short	12353
	.short	12539
	.short	12724
	.short	12909
	.short	13094
	.short	13278
	.short	13462
	.short	13645
	.short	13827
	.short	14009
	.short	14191
	.short	14372
	.short	14552
	.short	14732
	.short	14911
	.short	15090
	.short	15268
	.short	15446
	.short	15623
	.short	15799
	.short	15975
	.short	16150
	.short	16325
	.short	16499
	.short	16672
	.short	16845
	.short	17017
	.short	17189
	.short	17360
	.short	17530
	.short	17699
	.short	17868
	.short	18036
	.short	18204
	.short	18371
	.short	18537
	.short	18702
	.short	18867
	.short	19031
	.short	19194
	.short	19357
	.short	19519
	.short	19680
	.short	19840
	.short	20000
	.short	20159
	.short	20317
	.short	20474
	.short	20631
	.short	20787
	.short	20942
	.short	21096
	.short	21249
	.short	21402
	.short	21554
	.short	21705
	.short	21855
	.short	22004
	.short	22153
	.short	22301
	.short	22448
	.short	22594
	.short	22739
	.short	22883
	.short	23027
	.short	23169
	.short	23311
	.short	23452
	.short	23592
	.short	23731
	.short	23869
	.short	24006
	.short	24143
	.short	24278
	.short	24413
	.short	24546
	.short	24679
	.short	24811
	.short	24942
	.short	25072
	.short	25201
	.short	25329
	.short	25456
	.short	25582
	.short	25707
	.short	25831
	.short	25954
	.short	26077
	.short	26198
	.short	26318
	.short	26437
	.short	26556
	.short	26673
	.short	26789
	.short	26905
	.short	27019
	.short	27132
	.short	27244
	.short	27355
	.short	27466
	.short	27575
	.short	27683
	.short	27790
	.short	27896
	.short	28001
	.short	28105
	.short	28208
	.short	28309
	.short	28410
	.short	28510
	.short	28608
	.short	28706
	.short	28802
	.short	28897
	.short	28992
	.short	29085
	.short	29177
	.short	29268
	.short	29358
	.short	29446
	.short	29534
	.short	29621
	.short	29706
	.short	29790
	.short	29873
	.short	29955
	.short	30036
	.short	30116
	.short	30195
	.short	30272
	.short	30349
	.short	30424
	.short	30498
	.short	30571
	.short	30643
	.short	30713
	.short	30783
	.short	30851
	.short	30918
	.short	30984
	.short	31049
	.short	31113
	.short	31175
	.short	31236
	.short	31297
	.short	31356
	.short	31413
	.short	31470
	.short	31525
	.short	31580
	.short	31633
	.short	31684
	.short	31735
	.short	31785
	.short	31833
	.short	31880
	.short	31926
	.short	31970
	.short	32014
	.short	32056
	.short	32097
	.short	32137
	.short	32176
	.short	32213
	.short	32249
	.short	32284
	.short	32318
	.short	32350
	.short	32382
	.short	32412
	.short	32441
	.short	32468
	.short	32495
	.short	32520
	.short	32544
	.short	32567
	.short	32588
	.short	32609
	.short	32628
	.short	32646
	.short	32662
	.short	32678
	.short	32692
	.short	32705
	.short	32717
	.short	32727
	.short	32736
	.short	32744
	.short	32751
	.short	32757
	.short	32761
	.short	32764
	.short	32766
	.short	32767
	.short	32766
	.short	32764
	.short	32761
	.short	32757
	.short	32751
	.short	32744
	.short	32736
	.short	32727
	.short	32717
	.short	32705
	.short	32692
	.short	32678
	.short	32662
	.short	32646
	.short	32628
	.short	32609
	.short	32588
	.short	32567
	.short	32544
	.short	32520
	.short	32495
	.short	32468
	.short	32441
	.short	32412
	.short	32382
	.short	32350
	.short	32318
	.short	32284
	.short	32249
	.short	32213
	.short	32176
	.short	32137
	.short	32097
	.short	32056
	.short	32014
	.short	31970
	.short	31926
	.short	31880
	.short	31833
	.short	31785
	.short	31735
	.short	31684
	.short	31633
	.short	31580
	.short	31525
	.short	31470
	.short	31413
	.short	31356
	.short	31297
	.short	31236
	.short	31175
	.short	31113
	.short	31049
	.short	30984
	.short	30918
	.short	30851
	.short	30783
	.short	30713
	.short	30643
	.short	30571
	.short	30498
	.short	30424
	.short	30349
	.short	30272
	.short	30195
	.short	30116
	.short	30036
	.short	29955
	.short	29873
	.short	29790
	.short	29706
	.short	29621
	.short	29534
	.short	29446
	.short	29358
	.short	29268
	.short	29177
	.short	29085
	.short	28992
	.short	28897
	.short	28802
	.short	28706
	.short	28608
	.short	28510
	.short	28410
	.short	28309
	.short	28208
	.short	28105
	.short	28001
	.short	27896
	.short	27790
	.short	27683
	.short	27575
	.short	27466
	.short	27355
	.short	27244
	.short	27132
	.short	27019
	.short	26905
	.short	26789
	.short	26673
	.short	26556
	.short	26437
	.short	26318
	.short	26198
	.short	26077
	.short	25954
	.short	25831
	.short	25707
	.short	25582
	.short	25456
	.short	25329
	.short	25201
	.short	25072
	.short	24942
	.short	24811
	.short	24679
	.short	24546
	.short	24413
	.short	24278
	.short	24143
	.short	24006
	.short	23869
	.short	23731
	.short	23592
	.short	23452
	.short	23311
	.short	23169
	.short	23027
	.short	22883
	.short	22739
	.short	22594
	.short	22448
	.short	22301
	.short	22153
	.short	22004
	.short	21855
	.short	21705
	.short	21554
	.short	21402
	.short	21249
	.short	21096
	.short	20942
	.short	20787
	.short	20631
	.short	20474
	.short	20317
	.short	20159
	.short	20000
	.short	19840
	.short	19680
	.short	19519
	.short	19357
	.short	19194
	.short	19031
	.short	18867
	.short	18702
	.short	18537
	.short	18371
	.short	18204
	.short	18036
	.short	17868
	.short	17699
	.short	17530
	.short	17360
	.short	17189
	.short	17017
	.short	16845
	.short	16672
	.short	16499
	.short	16325
	.short	16150
	.short	15975
	.short	15799
	.short	15623
	.short	15446
	.short	15268
	.short	15090
	.short	14911
	.short	14732
	.short	14552
	.short	14372
	.short	14191
	.short	14009
	.short	13827
	.short	13645
	.short	13462
	.short	13278
	.short	13094
	.short	12909
	.short	12724
	.short	12539
	.short	12353
	.short	12166
	.short	11980
	.short	11792
	.short	11604
	.short	11416
	.short	11227
	.short	11038
	.short	10849
	.short	10659
	.short	10469
	.short	10278
	.short	10087
	.short	9895
	.short	9703
	.short	9511
	.short	9319
	.short	9126
	.short	8932
	.short	8739
	.short	8545
	.short	8351
	.short	8156
	.short	7961
	.short	7766
	.short	7571
	.short	7375
	.short	7179
	.short	6982
	.short	6786
	.short	6589
	.short	6392
	.short	6195
	.short	5997
	.short	5799
	.short	5601
	.short	5403
	.short	5205
	.short	5006
	.short	4807
	.short	4608
	.short	4409
	.short	4210
	.short	4011
	.short	3811
	.short	3611
	.short	3411
	.short	3211
	.short	3011
	.short	2811
	.short	2610
	.short	2410
	.short	2209
	.short	2009
	.short	1808
	.short	1607
	.short	1406
	.short	1206
	.short	1005
	.short	804
	.short	603
	.short	402
	.short	201
	.short	0
	.short	-201
	.short	-402
	.short	-603
	.short	-804
	.short	-1005
	.short	-1206
	.short	-1406
	.short	-1607
	.short	-1808
	.short	-2009
	.short	-2209
	.short	-2410
	.short	-2610
	.short	-2811
	.short	-3011
	.short	-3211
	.short	-3411
	.short	-3611
	.short	-3811
	.short	-4011
	.short	-4210
	.short	-4409
	.short	-4608
	.short	-4807
	.short	-5006
	.short	-5205
	.short	-5403
	.short	-5601
	.short	-5799
	.short	-5997
	.short	-6195
	.short	-6392
	.short	-6589
	.short	-6786
	.short	-6982
	.short	-7179
	.short	-7375
	.short	-7571
	.short	-7766
	.short	-7961
	.short	-8156
	.short	-8351
	.short	-8545
	.short	-8739
	.short	-8932
	.short	-9126
	.short	-9319
	.short	-9511
	.short	-9703
	.short	-9895
	.short	-10087
	.short	-10278
	.short	-10469
	.short	-10659
	.short	-10849
	.short	-11038
	.short	-11227
	.short	-11416
	.short	-11604
	.short	-11792
	.short	-11980
	.short	-12166
	.short	-12353
	.short	-12539
	.short	-12724
	.short	-12909
	.short	-13094
	.short	-13278
	.short	-13462
	.short	-13645
	.short	-13827
	.short	-14009
	.short	-14191
	.short	-14372
	.short	-14552
	.short	-14732
	.short	-14911
	.short	-15090
	.short	-15268
	.short	-15446
	.short	-15623
	.short	-15799
	.short	-15975
	.short	-16150
	.short	-16325
	.short	-16499
	.short	-16672
	.short	-16845
	.short	-17017
	.short	-17189
	.short	-17360
	.short	-17530
	.short	-17699
	.short	-17868
	.short	-18036
	.short	-18204
	.short	-18371
	.short	-18537
	.short	-18702
	.short	-18867
	.short	-19031
	.short	-19194
	.short	-19357
	.short	-19519
	.short	-19680
	.short	-19840
	.short	-20000
	.short	-20159
	.short	-20317
	.short	-20474
	.short	-20631
	.short	-20787
	.short	-20942
	.short	-21096
	.short	-21249
	.short	-21402
	.short	-21554
	.short	-21705
	.short	-21855
	.short	-22004
	.short	-22153
	.short	-22301
	.short	-22448
	.short	-22594
	.short	-22739
	.short	-22883
	.short	-23027
	.short	-23169
	.short	-23311
	.short	-23452
	.short	-23592
	.short	-23731
	.short	-23869
	.short	-24006
	.short	-24143
	.short	-24278
	.short	-24413
	.short	-24546
	.short	-24679
	.short	-24811
	.short	-24942
	.short	-25072
	.short	-25201
	.short	-25329
	.short	-25456
	.short	-25582
	.short	-25707
	.short	-25831
	.short	-25954
	.short	-26077
	.short	-26198
	.short	-26318
	.short	-26437
	.short	-26556
	.short	-26673
	.short	-26789
	.short	-26905
	.short	-27019
	.short	-27132
	.short	-27244
	.short	-27355
	.short	-27466
	.short	-27575
	.short	-27683
	.short	-27790
	.short	-27896
	.short	-28001
	.short	-28105
	.short	-28208
	.short	-28309
	.short	-28410
	.short	-28510
	.short	-28608
	.short	-28706
	.short	-28802
	.short	-28897
	.short	-28992
	.short	-29085
	.short	-29177
	.short	-29268
	.short	-29358
	.short	-29446
	.short	-29534
	.short	-29621
	.short	-29706
	.short	-29790
	.short	-29873
	.short	-29955
	.short	-30036
	.short	-30116
	.short	-30195
	.short	-30272
	.short	-30349
	.short	-30424
	.short	-30498
	.short	-30571
	.short	-30643
	.short	-30713
	.short	-30783
	.short	-30851
	.short	-30918
	.short	-30984
	.short	-31049
	.short	-31113
	.short	-31175
	.short	-31236
	.short	-31297
	.short	-31356
	.short	-31413
	.short	-31470
	.short	-31525
	.short	-31580
	.short	-31633
	.short	-31684
	.short	-31735
	.short	-31785
	.short	-31833
	.short	-31880
	.short	-31926
	.short	-31970
	.short	-32014
	.short	-32056
	.short	-32097
	.short	-32137
	.short	-32176
	.short	-32213
	.short	-32249
	.short	-32284
	.short	-32318
	.short	-32350
	.short	-32382
	.short	-32412
	.short	-32441
	.short	-32468
	.short	-32495
	.short	-32520
	.short	-32544
	.short	-32567
	.short	-32588
	.short	-32609
	.short	-32628
	.short	-32646
	.short	-32662
	.short	-32678
	.short	-32692
	.short	-32705
	.short	-32717
	.short	-32727
	.short	-32736
	.short	-32744
	.short	-32751
	.short	-32757
	.short	-32761
	.short	-32764
	.short	-32766
	.text
	.align	2
	.global	FIX_MPY
	.syntax unified
	.arm
	.fpu softvfp
	.type	FIX_MPY, %function
FIX_MPY:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #20
	mov	r3, r0
	mov	r2, r1
	strh	r3, [fp, #-14]	@ movhi
	mov	r3, r2	@ movhi
	strh	r3, [fp, #-16]	@ movhi
	ldrsh	r3, [fp, #-14]
	ldrsh	r2, [fp, #-16]
	mul	r3, r2, r3
	asr	r3, r3, #14
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-8]
	lsl	r3, r3, #16
	asr	r3, r3, #16
	and	r3, r3, #1
	strh	r3, [fp, #-16]	@ movhi
	ldr	r3, [fp, #-8]
	asr	r3, r3, #1
	lsl	r3, r3, #16
	lsr	r2, r3, #16
	ldrh	r3, [fp, #-16]
	add	r3, r2, r3
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	strh	r3, [fp, #-14]	@ movhi
	ldrsh	r3, [fp, #-14]
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	FIX_MPY, .-FIX_MPY
	.align	2
	.global	fix_fft
	.syntax unified
	.arm
	.fpu softvfp
	.type	fix_fft, %function
fix_fft:
	@ args = 0, pretend = 0, frame = 72
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #76
	str	r0, [fp, #-72]
	str	r1, [fp, #-76]
	mov	r1, r2
	mov	r2, r3
	mov	r3, r1	@ movhi
	strh	r3, [fp, #-78]	@ movhi
	mov	r3, r2	@ movhi
	strh	r3, [fp, #-80]	@ movhi
	ldrsh	r3, [fp, #-78]
	mov	r2, #1
	lsl	r3, r2, r3
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-24]
	cmp	r3, #1024
	ble	.L4
	mvn	r3, #0
	b	.L5
.L4:
	mov	r3, #0
	str	r3, [fp, #-52]
	ldr	r3, [fp, #-24]
	sub	r3, r3, #1
	str	r3, [fp, #-20]
	mov	r3, #0
	str	r3, [fp, #-32]
	mov	r3, #1
	strh	r3, [fp, #-78]	@ movhi
	b	.L6
.L10:
	ldr	r3, [fp, #-24]
	str	r3, [fp, #-40]
.L7:
	ldr	r3, [fp, #-40]
	asr	r3, r3, #1
	str	r3, [fp, #-40]
	ldr	r2, [fp, #-52]
	ldr	r3, [fp, #-40]
	add	r3, r2, r3
	ldr	r2, [fp, #-20]
	cmp	r2, r3
	blt	.L7
	ldr	r3, [fp, #-40]
	sub	r2, r3, #1
	ldr	r3, [fp, #-52]
	and	r3, r3, r2
	ldr	r2, [fp, #-40]
	add	r3, r2, r3
	str	r3, [fp, #-52]
	ldrsh	r3, [fp, #-78]
	ldr	r2, [fp, #-52]
	cmp	r2, r3
	ble	.L29
	ldrsh	r3, [fp, #-78]
	lsl	r3, r3, #1
	ldr	r2, [fp, #-72]
	add	r3, r2, r3
	ldrh	r3, [r3]	@ movhi
	strh	r3, [fp, #-56]	@ movhi
	ldr	r3, [fp, #-52]
	lsl	r3, r3, #1
	ldr	r2, [fp, #-72]
	add	r2, r2, r3
	ldrsh	r3, [fp, #-78]
	lsl	r3, r3, #1
	ldr	r1, [fp, #-72]
	add	r3, r1, r3
	ldrsh	r2, [r2]
	strh	r2, [r3]	@ movhi
	ldr	r3, [fp, #-52]
	lsl	r3, r3, #1
	ldr	r2, [fp, #-72]
	add	r3, r2, r3
	ldrh	r2, [fp, #-56]	@ movhi
	strh	r2, [r3]	@ movhi
	ldrsh	r3, [fp, #-78]
	lsl	r3, r3, #1
	ldr	r2, [fp, #-76]
	add	r3, r2, r3
	ldrh	r3, [r3]	@ movhi
	strh	r3, [fp, #-54]	@ movhi
	ldr	r3, [fp, #-52]
	lsl	r3, r3, #1
	ldr	r2, [fp, #-76]
	add	r2, r2, r3
	ldrsh	r3, [fp, #-78]
	lsl	r3, r3, #1
	ldr	r1, [fp, #-76]
	add	r3, r1, r3
	ldrsh	r2, [r2]
	strh	r2, [r3]	@ movhi
	ldr	r3, [fp, #-52]
	lsl	r3, r3, #1
	ldr	r2, [fp, #-76]
	add	r3, r2, r3
	ldrh	r2, [fp, #-54]	@ movhi
	strh	r2, [r3]	@ movhi
	b	.L9
.L29:
	nop
.L9:
	ldrh	r3, [fp, #-78]
	add	r3, r3, #1
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	strh	r3, [fp, #-78]	@ movhi
.L6:
	ldrsh	r3, [fp, #-78]
	ldr	r2, [fp, #-20]
	cmp	r2, r3
	bge	.L10
	mov	r3, #1
	str	r3, [fp, #-40]
	mov	r3, #9
	str	r3, [fp, #-36]
	b	.L11
.L28:
	ldrsh	r3, [fp, #-80]
	cmp	r3, #0
	beq	.L12
	mov	r3, #0
	str	r3, [fp, #-28]
	mov	r3, #0
	str	r3, [fp, #-48]
	b	.L13
.L19:
	ldr	r3, [fp, #-48]
	lsl	r3, r3, #1
	ldr	r2, [fp, #-72]
	add	r3, r2, r3
	ldrsh	r3, [r3]
	str	r3, [fp, #-44]
	ldr	r3, [fp, #-44]
	cmp	r3, #0
	bge	.L14
	ldr	r3, [fp, #-44]
	rsb	r3, r3, #0
	str	r3, [fp, #-44]
.L14:
	ldr	r3, [fp, #-48]
	lsl	r3, r3, #1
	ldr	r2, [fp, #-76]
	add	r3, r2, r3
	ldrh	r3, [r3]	@ movhi
	strh	r3, [fp, #-78]	@ movhi
	ldrsh	r3, [fp, #-78]
	cmp	r3, #0
	bge	.L15
	ldrh	r3, [fp, #-78]
	rsb	r3, r3, #0
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	strh	r3, [fp, #-78]	@ movhi
.L15:
	ldr	r3, [fp, #-44]
	cmp	r3, #16384
	bge	.L16
	ldrsh	r3, [fp, #-78]
	cmp	r3, #16384
	blt	.L17
.L16:
	mov	r3, #1
	str	r3, [fp, #-28]
	b	.L18
.L17:
	ldr	r3, [fp, #-48]
	add	r3, r3, #1
	str	r3, [fp, #-48]
.L13:
	ldr	r2, [fp, #-48]
	ldr	r3, [fp, #-24]
	cmp	r2, r3
	blt	.L19
.L18:
	ldr	r3, [fp, #-28]
	cmp	r3, #0
	beq	.L20
	ldr	r3, [fp, #-32]
	add	r3, r3, #1
	str	r3, [fp, #-32]
	b	.L20
.L12:
	mov	r3, #1
	str	r3, [fp, #-28]
.L20:
	ldr	r3, [fp, #-40]
	lsl	r3, r3, #1
	str	r3, [fp, #-16]
	mov	r3, #0
	strh	r3, [fp, #-78]	@ movhi
	b	.L21
.L27:
	ldrsh	r2, [fp, #-78]
	ldr	r3, [fp, #-36]
	lsl	r3, r2, r3
	str	r3, [fp, #-44]
	ldr	r3, [fp, #-44]
	add	r3, r3, #256
	ldr	r2, .L30
	lsl	r3, r3, #1
	add	r3, r2, r3
	ldrh	r3, [r3]	@ movhi
	strh	r3, [fp, #-60]	@ movhi
	ldr	r2, .L30
	ldr	r3, [fp, #-44]
	lsl	r3, r3, #1
	add	r3, r2, r3
	ldrsh	r3, [r3]
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	rsb	r3, r3, #0
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	strh	r3, [fp, #-58]	@ movhi
	ldrsh	r3, [fp, #-80]
	cmp	r3, #0
	beq	.L22
	ldrh	r3, [fp, #-58]
	rsb	r3, r3, #0
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	strh	r3, [fp, #-58]	@ movhi
.L22:
	ldr	r3, [fp, #-28]
	cmp	r3, #0
	beq	.L23
	ldrsh	r3, [fp, #-60]
	asr	r3, r3, #1
	strh	r3, [fp, #-60]	@ movhi
	ldrsh	r3, [fp, #-58]
	asr	r3, r3, #1
	strh	r3, [fp, #-58]	@ movhi
.L23:
	ldrsh	r3, [fp, #-78]
	str	r3, [fp, #-48]
	b	.L24
.L26:
	ldr	r2, [fp, #-48]
	ldr	r3, [fp, #-40]
	add	r3, r2, r3
	str	r3, [fp, #-44]
	ldr	r3, [fp, #-44]
	lsl	r3, r3, #1
	ldr	r2, [fp, #-72]
	add	r3, r2, r3
	ldrsh	r2, [r3]
	ldrsh	r3, [fp, #-60]
	mov	r1, r2
	mov	r0, r3
	bl	FIX_MPY
	mov	r3, r0
	lsl	r3, r3, #16
	lsr	r4, r3, #16
	ldr	r3, [fp, #-44]
	lsl	r3, r3, #1
	ldr	r2, [fp, #-76]
	add	r3, r2, r3
	ldrsh	r2, [r3]
	ldrsh	r3, [fp, #-58]
	mov	r1, r2
	mov	r0, r3
	bl	FIX_MPY
	mov	r3, r0
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	sub	r3, r4, r3
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	strh	r3, [fp, #-56]	@ movhi
	ldr	r3, [fp, #-44]
	lsl	r3, r3, #1
	ldr	r2, [fp, #-76]
	add	r3, r2, r3
	ldrsh	r2, [r3]
	ldrsh	r3, [fp, #-60]
	mov	r1, r2
	mov	r0, r3
	bl	FIX_MPY
	mov	r3, r0
	lsl	r3, r3, #16
	lsr	r4, r3, #16
	ldr	r3, [fp, #-44]
	lsl	r3, r3, #1
	ldr	r2, [fp, #-72]
	add	r3, r2, r3
	ldrsh	r2, [r3]
	ldrsh	r3, [fp, #-58]
	mov	r1, r2
	mov	r0, r3
	bl	FIX_MPY
	mov	r3, r0
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	add	r3, r4, r3
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	strh	r3, [fp, #-54]	@ movhi
	ldr	r3, [fp, #-48]
	lsl	r3, r3, #1
	ldr	r2, [fp, #-72]
	add	r3, r2, r3
	ldrh	r3, [r3]	@ movhi
	strh	r3, [fp, #-64]	@ movhi
	ldr	r3, [fp, #-48]
	lsl	r3, r3, #1
	ldr	r2, [fp, #-76]
	add	r3, r2, r3
	ldrh	r3, [r3]	@ movhi
	strh	r3, [fp, #-62]	@ movhi
	ldr	r3, [fp, #-28]
	cmp	r3, #0
	beq	.L25
	ldrsh	r3, [fp, #-64]
	asr	r3, r3, #1
	strh	r3, [fp, #-64]	@ movhi
	ldrsh	r3, [fp, #-62]
	asr	r3, r3, #1
	strh	r3, [fp, #-62]	@ movhi
.L25:
	ldrh	r2, [fp, #-64]
	ldrh	r3, [fp, #-56]
	sub	r3, r2, r3
	lsl	r3, r3, #16
	lsr	r2, r3, #16
	ldr	r3, [fp, #-44]
	lsl	r3, r3, #1
	ldr	r1, [fp, #-72]
	add	r3, r1, r3
	lsl	r2, r2, #16
	asr	r2, r2, #16
	strh	r2, [r3]	@ movhi
	ldrh	r2, [fp, #-62]
	ldrh	r3, [fp, #-54]
	sub	r3, r2, r3
	lsl	r3, r3, #16
	lsr	r2, r3, #16
	ldr	r3, [fp, #-44]
	lsl	r3, r3, #1
	ldr	r1, [fp, #-76]
	add	r3, r1, r3
	lsl	r2, r2, #16
	asr	r2, r2, #16
	strh	r2, [r3]	@ movhi
	ldrh	r2, [fp, #-64]
	ldrh	r3, [fp, #-56]
	add	r3, r2, r3
	lsl	r3, r3, #16
	lsr	r2, r3, #16
	ldr	r3, [fp, #-48]
	lsl	r3, r3, #1
	ldr	r1, [fp, #-72]
	add	r3, r1, r3
	lsl	r2, r2, #16
	asr	r2, r2, #16
	strh	r2, [r3]	@ movhi
	ldrh	r2, [fp, #-62]
	ldrh	r3, [fp, #-54]
	add	r3, r2, r3
	lsl	r3, r3, #16
	lsr	r2, r3, #16
	ldr	r3, [fp, #-48]
	lsl	r3, r3, #1
	ldr	r1, [fp, #-76]
	add	r3, r1, r3
	lsl	r2, r2, #16
	asr	r2, r2, #16
	strh	r2, [r3]	@ movhi
	ldr	r2, [fp, #-48]
	ldr	r3, [fp, #-16]
	add	r3, r2, r3
	str	r3, [fp, #-48]
.L24:
	ldr	r2, [fp, #-48]
	ldr	r3, [fp, #-24]
	cmp	r2, r3
	blt	.L26
	ldrh	r3, [fp, #-78]
	add	r3, r3, #1
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	strh	r3, [fp, #-78]	@ movhi
.L21:
	ldrsh	r3, [fp, #-78]
	ldr	r2, [fp, #-40]
	cmp	r2, r3
	bgt	.L27
	ldr	r3, [fp, #-36]
	sub	r3, r3, #1
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-16]
	str	r3, [fp, #-40]
.L11:
	ldr	r2, [fp, #-40]
	ldr	r3, [fp, #-24]
	cmp	r2, r3
	blt	.L28
	ldr	r3, [fp, #-32]
.L5:
	mov	r0, r3
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L31:
	.align	2
.L30:
	.word	Sinewave
	.size	fix_fft, .-fix_fft
	.align	2
	.global	fix_fftr
	.syntax unified
	.arm
	.fpu softvfp
	.type	fix_fftr, %function
fix_fftr:
	@ args = 0, pretend = 0, frame = 40
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #40
	str	r0, [fp, #-32]
	str	r1, [fp, #-36]
	str	r2, [fp, #-40]
	ldr	r3, [fp, #-36]
	sub	r3, r3, #1
	mov	r2, #1
	lsl	r3, r2, r3
	str	r3, [fp, #-16]
	mov	r3, #0
	str	r3, [fp, #-20]
	ldr	r3, [fp, #-32]
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-16]
	lsl	r3, r3, #1
	ldr	r2, [fp, #-32]
	add	r3, r2, r3
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-40]
	cmp	r3, #0
	beq	.L33
	ldr	r3, [fp, #-36]
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	sub	r3, r3, #1
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	lsl	r3, r3, #16
	asr	r2, r3, #16
	ldr	r3, [fp, #-40]
	lsl	r3, r3, #16
	asr	r3, r3, #16
	ldr	r1, [fp, #-12]
	ldr	r0, [fp, #-8]
	bl	fix_fft
	str	r0, [fp, #-20]
.L33:
	mov	r3, #1
	str	r3, [fp, #-24]
	b	.L34
.L35:
	ldr	r2, [fp, #-16]
	ldr	r3, [fp, #-24]
	add	r3, r2, r3
	sub	r3, r3, #-2147483647
	lsl	r3, r3, #1
	ldr	r2, [fp, #-32]
	add	r3, r2, r3
	ldrh	r3, [r3]	@ movhi
	strh	r3, [fp, #-26]	@ movhi
	ldr	r3, [fp, #-24]
	lsl	r3, r3, #1
	ldr	r2, [fp, #-32]
	add	r2, r2, r3
	ldr	r1, [fp, #-16]
	ldr	r3, [fp, #-24]
	add	r3, r1, r3
	sub	r3, r3, #-2147483647
	lsl	r3, r3, #1
	ldr	r1, [fp, #-32]
	add	r3, r1, r3
	ldrsh	r2, [r2]
	strh	r2, [r3]	@ movhi
	ldr	r3, [fp, #-24]
	lsl	r3, r3, #1
	ldr	r2, [fp, #-32]
	add	r3, r2, r3
	ldrh	r2, [fp, #-26]	@ movhi
	strh	r2, [r3]	@ movhi
	ldr	r3, [fp, #-24]
	add	r3, r3, #2
	str	r3, [fp, #-24]
.L34:
	ldr	r2, [fp, #-24]
	ldr	r3, [fp, #-16]
	cmp	r2, r3
	blt	.L35
	ldr	r3, [fp, #-40]
	cmp	r3, #0
	bne	.L36
	ldr	r3, [fp, #-36]
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	sub	r3, r3, #1
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	lsl	r3, r3, #16
	asr	r2, r3, #16
	ldr	r3, [fp, #-40]
	lsl	r3, r3, #16
	asr	r3, r3, #16
	ldr	r1, [fp, #-12]
	ldr	r0, [fp, #-8]
	bl	fix_fft
	str	r0, [fp, #-20]
.L36:
	ldr	r3, [fp, #-20]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	fix_fftr, .-fix_fftr
	.ident	"GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"
	.section	.note.GNU-stack,"",%progbits
