www.pudn.com > fft_iccavr.rar > fft2.lis
.module fft2.c
.area text(rom, con, rel)
0000 .dbfile D:\HJN\Design\AVR\fft\fft2.c
0000 .dbfunc e FFT _FFT fV
0000 ; l0 -> y+36
0000 ; vi -> y+32
0000 ; vr -> y+28
0000 ; is -> y+26
0000 ; i -> y+24
0000 ; poddi -> y+20
0000 ; poddr -> y+16
0000 ; q -> y+12
0000 ; p -> y+8
0000 ; s -> y+4
0000 ; m -> y+2
0000 ; nv -> y+0
0000 ; it -> R20,R21
0000 ; j -> R10,R11
0000 ; il -> y+70
0000 ; l -> y+68
0000 ; fi -> R12,R13
0000 ; fr -> R14,R15
0000 ; k -> y+62
0000 ; n -> y+60
0000 ; pi -> y+58
0000 ; pr -> y+56
.even
0000 _FFT::
0000 0E940000 xcall push_arg4
0004 0E940000 xcall push_gset5
0008 AE97 sbiw R28,46
000A FE01 movw R30,R28
000C E05C subi R30,192 ; addi 64
000E FF4F sbci R31,255
0010 E080 ldd R14,z+0
0012 F180 ldd R15,z+1
0014 FE01 movw R30,R28
0016 EE5B subi R30,190 ; addi 66
0018 FF4F sbci R31,255
001A C080 ldd R12,z+0
001C D180 ldd R13,z+1
001E .dbline -1
001E .dbline 10
001E ; #include
001E ;
001E ; /*pr:输入实部
001E ; pi:输入虚部
001E ; n为2^k,n不小于数据个数
001E ; l:为0表示正变换,1表示反变换
001E ; il:1表示fr为取模结果。0表示fr输出实部fi输出虚部
001E ; */
001E ; void FFT(double* pr, double* pi, int n, int k, double* fr, double* fi, int l, int il)
001E ; {
001E .dbline 13
001E ; int it,m,is,i,j,nv,l0;
001E ; double p,q,s,vr,vi,poddr,poddi;
001E ; for(it = 0;it <= n - 1;it ++)
001E 4427 clr R20
0020 5527 clr R21
0022 6BC0 xjmp L5
0024 L2:
0024 .dbline 14
0024 ; {
0024 .dbline 15
0024 ; m = it;
0024 5B83 std y+3,R21
0026 4A83 std y+2,R20
0028 .dbline 16
0028 ; is = 0;
0028 2224 clr R2
002A 3324 clr R3
002C 3B8E std y+27,R3
002E 2A8E std y+26,R2
0030 .dbline 17
0030 ; for(i = 0;i <= k - 1;i ++)
0030 398E std y+25,R3
0032 288E std y+24,R2
0034 22C0 xjmp L9
0036 L6:
0036 .dbline 18
0036 .dbline 19
0036 22E0 ldi R18,2
0038 30E0 ldi R19,0
003A 0A81 ldd R16,y+2
003C 1B81 ldd R17,y+3
003E 0E940000 xcall div16s
0042 5801 movw R10,R16
0044 .dbline 20
0044 02E0 ldi R16,2
0046 10E0 ldi R17,0
0048 9501 movw R18,R10
004A 0E940000 xcall empy16s
004E 2A80 ldd R2,y+2
0050 3B80 ldd R3,y+3
0052 201A sub R2,R16
0054 310A sbc R3,R17
0056 2A8D ldd R18,y+26
0058 3B8D ldd R19,y+27
005A 02E0 ldi R16,2
005C 10E0 ldi R17,0
005E 0E940000 xcall empy16s
0062 2801 movw R4,R16
0064 420C add R4,R2
0066 531C adc R5,R3
0068 5B8E std y+27,R5
006A 4A8E std y+26,R4
006C .dbline 21
006C BB82 std y+3,R11
006E AA82 std y+2,R10
0070 .dbline 22
0070 L7:
0070 .dbline 17
0070 888D ldd R24,y+24
0072 998D ldd R25,y+25
0074 0196 adiw R24,1
0076 998F std y+25,R25
0078 888F std y+24,R24
007A L9:
007A .dbline 17
007A 8EAD ldd R24,y+62
007C 9FAD ldd R25,y+63
007E 0197 sbiw R24,1
0080 288C ldd R2,y+24
0082 398C ldd R3,y+25
0084 8215 cp R24,R2
0086 9305 cpc R25,R3
0088 B4F6 brge L6
008A .dbline 23
008A 2A8D ldd R18,y+26
008C 3B8D ldd R19,y+27
008E 04E0 ldi R16,4
0090 10E0 ldi R17,0
0092 0E940000 xcall empy16s
0096 F801 movw R30,R16
0098 08AC ldd R0,y+56
009A 19AC ldd R1,y+57
009C E00D add R30,R0
009E F11D adc R31,R1
00A0 2080 ldd R2,z+0
00A2 3180 ldd R3,z+1
00A4 4280 ldd R4,z+2
00A6 5380 ldd R5,z+3
00A8 04E0 ldi R16,4
00AA 10E0 ldi R17,0
00AC 9A01 movw R18,R20
00AE 0E940000 xcall empy16s
00B2 F801 movw R30,R16
00B4 EE0D add R30,R14
00B6 FF1D adc R31,R15
00B8 2082 std z+0,R2
00BA 3182 std z+1,R3
00BC 4282 std z+2,R4
00BE 5382 std z+3,R5
00C0 .dbline 24
00C0 2A8D ldd R18,y+26
00C2 3B8D ldd R19,y+27
00C4 04E0 ldi R16,4
00C6 10E0 ldi R17,0
00C8 0E940000 xcall empy16s
00CC F801 movw R30,R16
00CE 0AAC ldd R0,y+58
00D0 1BAC ldd R1,y+59
00D2 E00D add R30,R0
00D4 F11D adc R31,R1
00D6 2080 ldd R2,z+0
00D8 3180 ldd R3,z+1
00DA 4280 ldd R4,z+2
00DC 5380 ldd R5,z+3
00DE 04E0 ldi R16,4
00E0 10E0 ldi R17,0
00E2 9A01 movw R18,R20
00E4 0E940000 xcall empy16s
00E8 F801 movw R30,R16
00EA EC0D add R30,R12
00EC FD1D adc R31,R13
00EE 2082 std z+0,R2
00F0 3182 std z+1,R3
00F2 4282 std z+2,R4
00F4 5382 std z+3,R5
00F6 .dbline 25
00F6 L3:
00F6 .dbline 13
00F6 4F5F subi R20,255 ; offset = 1
00F8 5F4F sbci R21,255
00FA L5:
00FA .dbline 13
00FA 8CAD ldd R24,y+60
00FC 9DAD ldd R25,y+61
00FE 0197 sbiw R24,1
0100 8417 cp R24,R20
0102 9507 cpc R25,R21
0104 0CF0 brlt X3
0106 8ECF xjmp L2
0108 X3:
0108 .dbline 26
0108 ; {
0108 ; j = m / 2;
0108 ; is = 2 * is + (m - 2 * j);
0108 ; m = j;
0108 ; }
0108 ; fr[it] = pr[is];
0108 ; fi[it] = pi[is];
0108 ; }
0108 ; pr[0] = 1.0;
0108 00E0 ldi R16,L10
010C 0E940000 xcall lpm32
0110 1801 movw R2,R16
0112 2901 movw R4,R18
0114 E8AD ldd R30,y+56
0116 F9AD ldd R31,y+57
0118 2082 std z+0,R2
011A 3182 std z+1,R3
011C 4282 std z+2,R4
011E 5382 std z+3,R5
0120 .dbline 27
0120 ; pi[0] = 0.0;
0120 00E0 ldi R16,L11
0124 0E940000 xcall lpm32
0128 1801 movw R2,R16
012A 2901 movw R4,R18
012C EAAD ldd R30,y+58
012E FBAD ldd R31,y+59
0130 2082 std z+0,R2
0132 3182 std z+1,R3
0134 4282 std z+2,R4
0136 5382 std z+3,R5
0138 .dbline 28
0138 ; p = 6.283185306 / (1.0 * n);
0138 00E0 ldi R16,L12
013C 0E940000 xcall lpm32
0140 3A93 st -y,R19
0142 2A93 st -y,R18
0144 1A93 st -y,R17
0146 0A93 st -y,R16
0148 00E0 ldi R16,L10
014C 0E940000 xcall lpm32
0150 3A93 st -y,R19
0152 2A93 st -y,R18
0154 1A93 st -y,R17
0156 0A93 st -y,R16
0158 ; stack offset 8
0158 FE01 movw R30,R28
015A EC5B subi R30,188 ; addi 68
015C FF4F sbci R31,255
015E 0081 ldd R16,z+0
0160 1181 ldd R17,z+1
0162 0E940000 xcall int2fp
0166 3A93 st -y,R19
0168 2A93 st -y,R18
016A 1A93 st -y,R17
016C 0A93 st -y,R16
016E 0E940000 xcall empy32fs
0172 0E940000 xcall div32f
0176 FE01 movw R30,R28
0178 0087 std z+8,R16
017A 1187 std z+9,R17
017C 2287 std z+10,R18
017E 3387 std z+11,R19
0180 .dbline 29
0180 ; pr[1] = cos(p);
0180 FE01 movw R30,R28
0182 0085 ldd R16,z+8
0184 1185 ldd R17,z+9
0186 2285 ldd R18,z+10
0188 3385 ldd R19,z+11
018A 0E940000 xcall _cos
018E 1801 movw R2,R16
0190 2901 movw R4,R18
0192 E8AD ldd R30,y+56
0194 F9AD ldd R31,y+57
0196 2482 std z+4,R2
0198 3582 std z+5,R3
019A 4682 std z+6,R4
019C 5782 std z+7,R5
019E .dbline 30
019E ; pi[1] = -sin(p);
019E FE01 movw R30,R28
01A0 0085 ldd R16,z+8
01A2 1185 ldd R17,z+9
01A4 2285 ldd R18,z+10
01A6 3385 ldd R19,z+11
01A8 0E940000 xcall _sin
01AC 3A93 st -y,R19
01AE 2A93 st -y,R18
01B0 1A93 st -y,R17
01B2 0A93 st -y,R16
01B4 0E940000 xcall neg32f
01B8 EAAD ldd R30,y+58
01BA FBAD ldd R31,y+59
01BC 0483 std z+4,R16
01BE 1583 std z+5,R17
01C0 2683 std z+6,R18
01C2 3783 std z+7,R19
01C4 .dbline 31
01C4 ; if(l != 0)
01C4 FE01 movw R30,R28
01C6 EC5B subi R30,188 ; addi 68
01C8 FF4F sbci R31,255
01CA 0080 ldd R0,z+0
01CC 1180 ldd R1,z+1
01CE 0020 tst R0
01D0 11F4 brne X0
01D2 1120 tst R1
01D4 A1F0 breq L13
01D6 X0:
01D6 .dbline 32
01D6 ; pi[1] = -pi[1];
01D6 8AAD ldd R24,y+58
01D8 9BAD ldd R25,y+59
01DA 0496 adiw R24,4
01DC 1C01 movw R2,R24
01DE FC01 movw R30,R24
01E0 4080 ldd R4,z+0
01E2 5180 ldd R5,z+1
01E4 6280 ldd R6,z+2
01E6 7380 ldd R7,z+3
01E8 7A92 st -y,R7
01EA 6A92 st -y,R6
01EC 5A92 st -y,R5
01EE 4A92 st -y,R4
01F0 0E940000 xcall neg32f
01F4 F101 movw R30,R2
01F6 0083 std z+0,R16
01F8 1183 std z+1,R17
01FA 2283 std z+2,R18
01FC 3383 std z+3,R19
01FE L13:
01FE .dbline 33
01FE ; for(i = 2;i <= n - 1;i ++)
01FE 82E0 ldi R24,2
0200 90E0 ldi R25,0
0202 998F std y+25,R25
0204 888F std y+24,R24
0206 E4C0 xjmp L18
0208 L15:
0208 .dbline 34
0208 .dbline 35
0208 288D ldd R18,y+24
020A 398D ldd R19,y+25
020C 04E0 ldi R16,4
020E 10E0 ldi R17,0
0210 0E940000 xcall empy16s
0214 F801 movw R30,R16
0216 3497 sbiw R30,4
0218 08AC ldd R0,y+56
021A 19AC ldd R1,y+57
021C E00D add R30,R0
021E F11D adc R31,R1
0220 2080 ldd R2,z+0
0222 3180 ldd R3,z+1
0224 4280 ldd R4,z+2
0226 5380 ldd R5,z+3
0228 5A92 st -y,R5
022A 4A92 st -y,R4
022C 3A92 st -y,R3
022E 2A92 st -y,R2
0230 F001 movw R30,R0
0232 2480 ldd R2,z+4
0234 3580 ldd R3,z+5
0236 4680 ldd R4,z+6
0238 5780 ldd R5,z+7
023A 5A92 st -y,R5
023C 4A92 st -y,R4
023E 3A92 st -y,R3
0240 2A92 st -y,R2
0242 0E940000 xcall empy32f
0246 FE01 movw R30,R28
0248 0087 std z+8,R16
024A 1187 std z+9,R17
024C 2287 std z+10,R18
024E 3387 std z+11,R19
0250 .dbline 36
0250 288D ldd R18,y+24
0252 398D ldd R19,y+25
0254 04E0 ldi R16,4
0256 10E0 ldi R17,0
0258 0E940000 xcall empy16s
025C F801 movw R30,R16
025E 3497 sbiw R30,4
0260 0AAC ldd R0,y+58
0262 1BAC ldd R1,y+59
0264 E00D add R30,R0
0266 F11D adc R31,R1
0268 2080 ldd R2,z+0
026A 3180 ldd R3,z+1
026C 4280 ldd R4,z+2
026E 5380 ldd R5,z+3
0270 5A92 st -y,R5
0272 4A92 st -y,R4
0274 3A92 st -y,R3
0276 2A92 st -y,R2
0278 F001 movw R30,R0
027A 2480 ldd R2,z+4
027C 3580 ldd R3,z+5
027E 4680 ldd R4,z+6
0280 5780 ldd R5,z+7
0282 5A92 st -y,R5
0284 4A92 st -y,R4
0286 3A92 st -y,R3
0288 2A92 st -y,R2
028A 0E940000 xcall empy32f
028E FE01 movw R30,R28
0290 0487 std z+12,R16
0292 1587 std z+13,R17
0294 2687 std z+14,R18
0296 3787 std z+15,R19
0298 .dbline 37
0298 288D ldd R18,y+24
029A 398D ldd R19,y+25
029C 04E0 ldi R16,4
029E 10E0 ldi R17,0
02A0 0E940000 xcall empy16s
02A4 C801 movw R24,R16
02A6 0497 sbiw R24,4
02A8 FC01 movw R30,R24
02AA 08AC ldd R0,y+56
02AC 19AC ldd R1,y+57
02AE E00D add R30,R0
02B0 F11D adc R31,R1
02B2 4080 ldd R4,z+0
02B4 5180 ldd R5,z+1
02B6 6280 ldd R6,z+2
02B8 7380 ldd R7,z+3
02BA 7A92 st -y,R7
02BC 6A92 st -y,R6
02BE 5A92 st -y,R5
02C0 4A92 st -y,R4
02C2 FC01 movw R30,R24
02C4 ; stack offset 4
02C4 0EAC ldd R0,y+62
02C6 1FAC ldd R1,y+63
02C8 E00D add R30,R0
02CA F11D adc R31,R1
02CC 2080 ldd R2,z+0
02CE 3180 ldd R3,z+1
02D0 4280 ldd R4,z+2
02D2 5380 ldd R5,z+3
02D4 5A92 st -y,R5
02D6 4A92 st -y,R4
02D8 3A92 st -y,R3
02DA 2A92 st -y,R2
02DC 0E940000 xcall add32fs
02E0 ; stack offset 4
02E0 ECAD ldd R30,y+60
02E2 FDAD ldd R31,y+61
02E4 2480 ldd R2,z+4
02E6 3580 ldd R3,z+5
02E8 4680 ldd R4,z+6
02EA 5780 ldd R5,z+7
02EC 5A92 st -y,R5
02EE 4A92 st -y,R4
02F0 3A92 st -y,R3
02F2 2A92 st -y,R2
02F4 ; stack offset 8
02F4 DE01 movw R26,R28
02F6 AE5B subi R26,190 ; addi 66
02F8 BF4F sbci R27,255
02FA ED91 ld R30,x+
02FC FC91 ld R31,x
02FE 2480 ldd R2,z+4
0300 3580 ldd R3,z+5
0302 4680 ldd R4,z+6
0304 5780 ldd R5,z+7
0306 5A92 st -y,R5
0308 4A92 st -y,R4
030A 3A92 st -y,R3
030C 2A92 st -y,R2
030E 0E940000 xcall add32fs
0312 0E940000 xcall empy32f
0316 FE01 movw R30,R28
0318 0483 std z+4,R16
031A 1583 std z+5,R17
031C 2683 std z+6,R18
031E 3783 std z+7,R19
0320 .dbline 38
0320 288D ldd R18,y+24
0322 398D ldd R19,y+25
0324 04E0 ldi R16,4
0326 10E0 ldi R17,0
0328 0E940000 xcall empy16s
032C F801 movw R30,R16
032E 08AC ldd R0,y+56
0330 19AC ldd R1,y+57
0332 E00D add R30,R0
0334 F11D adc R31,R1
0336 DE01 movw R26,R28
0338 1896 adiw R26,8
033A 2D90 ld R2,x+
033C 3D90 ld R3,x+
033E 4D90 ld R4,x+
0340 5C90 ld R5,x
0342 5A92 st -y,R5
0344 4A92 st -y,R4
0346 3A92 st -y,R3
0348 2A92 st -y,R2
034A DE01 movw R26,R28
034C ; stack offset 4
034C 5096 adiw R26,16
034E 2D90 ld R2,x+
0350 3D90 ld R3,x+
0352 4D90 ld R4,x+
0354 5C90 ld R5,x
0356 5A92 st -y,R5
0358 4A92 st -y,R4
035A 3A92 st -y,R3
035C 2A92 st -y,R2
035E 0E940000 xcall sub32f
0362 0083 std z+0,R16
0364 1183 std z+1,R17
0366 2283 std z+2,R18
0368 3383 std z+3,R19
036A .dbline 39
036A FE01 movw R30,R28
036C 2480 ldd R2,z+4
036E 3580 ldd R3,z+5
0370 4680 ldd R4,z+6
0372 5780 ldd R5,z+7
0374 5A92 st -y,R5
0376 4A92 st -y,R4
0378 3A92 st -y,R3
037A 2A92 st -y,R2
037C FE01 movw R30,R28
037E ; stack offset 4
037E 2484 ldd R2,z+12
0380 3584 ldd R3,z+13
0382 4684 ldd R4,z+14
0384 5784 ldd R5,z+15
0386 5A92 st -y,R5
0388 4A92 st -y,R4
038A 3A92 st -y,R3
038C 2A92 st -y,R2
038E 0E940000 xcall sub32fs
0392 FE01 movw R30,R28
0394 ; stack offset 4
0394 2088 ldd R2,z+16
0396 3188 ldd R3,z+17
0398 4288 ldd R4,z+18
039A 5388 ldd R5,z+19
039C 5A92 st -y,R5
039E 4A92 st -y,R4
03A0 3A92 st -y,R3
03A2 2A92 st -y,R2
03A4 0E940000 xcall sub32f
03A8 288D ldd R18,y+24
03AA 398D ldd R19,y+25
03AC 04E0 ldi R16,4
03AE 10E0 ldi R17,0
03B0 0E940000 xcall empy16s
03B4 F801 movw R30,R16
03B6 0AAC ldd R0,y+58
03B8 1BAC ldd R1,y+59
03BA E00D add R30,R0
03BC F11D adc R31,R1
03BE 0083 std z+0,R16
03C0 1183 std z+1,R17
03C2 2283 std z+2,R18
03C4 3383 std z+3,R19
03C6 .dbline 40
03C6 L16:
03C6 .dbline 33
03C6 888D ldd R24,y+24
03C8 998D ldd R25,y+25
03CA 0196 adiw R24,1
03CC 998F std y+25,R25
03CE 888F std y+24,R24
03D0 L18:
03D0 .dbline 33
03D0 8CAD ldd R24,y+60
03D2 9DAD ldd R25,y+61
03D4 0197 sbiw R24,1
03D6 288C ldd R2,y+24
03D8 398C ldd R3,y+25
03DA 8215 cp R24,R2
03DC 9305 cpc R25,R3
03DE 0CF0 brlt X4
03E0 13CF xjmp L15
03E2 X4:
03E2 .dbline 41
03E2 ; {
03E2 ; p = pr[i - 1] * pr[1];
03E2 ; q = pi[i - 1] * pi[1];
03E2 ; s = (pr[i - 1] + pi[i - 1]) * (pr[1] + pi[1]);
03E2 ; pr[i] = p - q;
03E2 ; pi[i] = s - p - q;
03E2 ; }
03E2 ; for(it = 0;it <= n - 2;it = it + 2)
03E2 4427 clr R20
03E4 5527 clr R21
03E6 ACC0 xjmp L22
03E8 L19:
03E8 .dbline 42
03E8 .dbline 43
03E8 04E0 ldi R16,4
03EA 10E0 ldi R17,0
03EC 9A01 movw R18,R20
03EE 0E940000 xcall empy16s
03F2 F801 movw R30,R16
03F4 EE0D add R30,R14
03F6 FF1D adc R31,R15
03F8 2080 ldd R2,z+0
03FA 3180 ldd R3,z+1
03FC 4280 ldd R4,z+2
03FE 5380 ldd R5,z+3
0400 FE01 movw R30,R28
0402 248E std z+28,R2
0404 358E std z+29,R3
0406 468E std z+30,R4
0408 578E std z+31,R5
040A .dbline 44
040A 04E0 ldi R16,4
040C 10E0 ldi R17,0
040E 9A01 movw R18,R20
0410 0E940000 xcall empy16s
0414 F801 movw R30,R16
0416 EC0D add R30,R12
0418 FD1D adc R31,R13
041A 2080 ldd R2,z+0
041C 3180 ldd R3,z+1
041E 4280 ldd R4,z+2
0420 5380 ldd R5,z+3
0422 FE01 movw R30,R28
0424 20A2 std z+32,R2
0426 31A2 std z+33,R3
0428 42A2 std z+34,R4
042A 53A2 std z+35,R5
042C .dbline 45
042C 04E0 ldi R16,4
042E 10E0 ldi R17,0
0430 9A01 movw R18,R20
0432 0E940000 xcall empy16s
0436 1801 movw R2,R16
0438 2E0C add R2,R14
043A 3F1C adc R3,R15
043C FE01 movw R30,R28
043E 448C ldd R4,z+28
0440 558C ldd R5,z+29
0442 668C ldd R6,z+30
0444 778C ldd R7,z+31
0446 7A92 st -y,R7
0448 6A92 st -y,R6
044A 5A92 st -y,R5
044C 4A92 st -y,R4
044E F101 movw R30,R2
0450 4480 ldd R4,z+4
0452 5580 ldd R5,z+5
0454 6680 ldd R6,z+6
0456 7780 ldd R7,z+7
0458 7A92 st -y,R7
045A 6A92 st -y,R6
045C 5A92 st -y,R5
045E 4A92 st -y,R4
0460 0E940000 xcall add32f
0464 F101 movw R30,R2
0466 0083 std z+0,R16
0468 1183 std z+1,R17
046A 2283 std z+2,R18
046C 3383 std z+3,R19
046E .dbline 46
046E 04E0 ldi R16,4
0470 10E0 ldi R17,0
0472 9A01 movw R18,R20
0474 0E940000 xcall empy16s
0478 1801 movw R2,R16
047A 2C0C add R2,R12
047C 3D1C adc R3,R13
047E FE01 movw R30,R28
0480 40A0 ldd R4,z+32
0482 51A0 ldd R5,z+33
0484 62A0 ldd R6,z+34
0486 73A0 ldd R7,z+35
0488 7A92 st -y,R7
048A 6A92 st -y,R6
048C 5A92 st -y,R5
048E 4A92 st -y,R4
0490 F101 movw R30,R2
0492 4480 ldd R4,z+4
0494 5580 ldd R5,z+5
0496 6680 ldd R6,z+6
0498 7780 ldd R7,z+7
049A 7A92 st -y,R7
049C 6A92 st -y,R6
049E 5A92 st -y,R5
04A0 4A92 st -y,R4
04A2 0E940000 xcall add32f
04A6 F101 movw R30,R2
04A8 0083 std z+0,R16
04AA 1183 std z+1,R17
04AC 2283 std z+2,R18
04AE 3383 std z+3,R19
04B0 .dbline 47
04B0 04E0 ldi R16,4
04B2 10E0 ldi R17,0
04B4 9A01 movw R18,R20
04B6 0E940000 xcall empy16s
04BA C801 movw R24,R16
04BC 8E0D add R24,R14
04BE 9F1D adc R25,R15
04C0 0496 adiw R24,4
04C2 1C01 movw R2,R24
04C4 FE01 movw R30,R28
04C6 448C ldd R4,z+28
04C8 558C ldd R5,z+29
04CA 668C ldd R6,z+30
04CC 778C ldd R7,z+31
04CE 7A92 st -y,R7
04D0 6A92 st -y,R6
04D2 5A92 st -y,R5
04D4 4A92 st -y,R4
04D6 FC01 movw R30,R24
04D8 4080 ldd R4,z+0
04DA 5180 ldd R5,z+1
04DC 6280 ldd R6,z+2
04DE 7380 ldd R7,z+3
04E0 7A92 st -y,R7
04E2 6A92 st -y,R6
04E4 5A92 st -y,R5
04E6 4A92 st -y,R4
04E8 0E940000 xcall sub32f
04EC F101 movw R30,R2
04EE 0083 std z+0,R16
04F0 1183 std z+1,R17
04F2 2283 std z+2,R18
04F4 3383 std z+3,R19
04F6 .dbline 48
04F6 04E0 ldi R16,4
04F8 10E0 ldi R17,0
04FA 9A01 movw R18,R20
04FC 0E940000 xcall empy16s
0500 C801 movw R24,R16
0502 8C0D add R24,R12
0504 9D1D adc R25,R13
0506 0496 adiw R24,4
0508 1C01 movw R2,R24
050A FE01 movw R30,R28
050C 40A0 ldd R4,z+32
050E 51A0 ldd R5,z+33
0510 62A0 ldd R6,z+34
0512 73A0 ldd R7,z+35
0514 7A92 st -y,R7
0516 6A92 st -y,R6
0518 5A92 st -y,R5
051A 4A92 st -y,R4
051C FC01 movw R30,R24
051E 4080 ldd R4,z+0
0520 5180 ldd R5,z+1
0522 6280 ldd R6,z+2
0524 7380 ldd R7,z+3
0526 7A92 st -y,R7
0528 6A92 st -y,R6
052A 5A92 st -y,R5
052C 4A92 st -y,R4
052E 0E940000 xcall sub32f
0532 F101 movw R30,R2
0534 0083 std z+0,R16
0536 1183 std z+1,R17
0538 2283 std z+2,R18
053A 3383 std z+3,R19
053C .dbline 49
053C L20:
053C .dbline 41
053C 4E5F subi R20,254 ; offset = 2
053E 5F4F sbci R21,255
0540 L22:
0540 .dbline 41
0540 8CAD ldd R24,y+60
0542 9DAD ldd R25,y+61
0544 0297 sbiw R24,2
0546 8417 cp R24,R20
0548 9507 cpc R25,R21
054A 0CF0 brlt X5
054C 4DCF xjmp L19
054E X5:
054E .dbline 50
054E ; {
054E ; vr = fr[it];
054E ; vi = fi[it];
054E ; fr[it] = vr + fr[it + 1];
054E ; fi[it] = vi + fi[it + 1];
054E ; fr[it + 1] = vr - fr[it + 1];
054E ; fi[it + 1] = vi - fi[it + 1];
054E ; }
054E ; m = n / 2;
054E 22E0 ldi R18,2
0550 30E0 ldi R19,0
0552 0CAD ldd R16,y+60
0554 1DAD ldd R17,y+61
0556 0E940000 xcall div16s
055A 1B83 std y+3,R17
055C 0A83 std y+2,R16
055E .dbline 51
055E ; nv = 2;
055E 82E0 ldi R24,2
0560 90E0 ldi R25,0
0562 9983 std y+1,R25
0564 8883 std y+0,R24
0566 .dbline 52
0566 ; for(l0 = k - 2;l0 >= 0;l0 --)
0566 8EAD ldd R24,y+62
0568 9FAD ldd R25,y+63
056A 0297 sbiw R24,2
056C 9DA3 std y+37,R25
056E 8CA3 std y+36,R24
0570 F6C1 xjmp L26
0572 L23:
0572 .dbline 53
0572 ; {
0572 .dbline 54
0572 ; m = m / 2;
0572 22E0 ldi R18,2
0574 30E0 ldi R19,0
0576 0A81 ldd R16,y+2
0578 1B81 ldd R17,y+3
057A 0E940000 xcall div16s
057E 1B83 std y+3,R17
0580 0A83 std y+2,R16
0582 .dbline 55
0582 ; nv = 2 * nv;
0582 2881 ldd R18,y+0
0584 3981 ldd R19,y+1
0586 02E0 ldi R16,2
0588 10E0 ldi R17,0
058A 0E940000 xcall empy16s
058E 1983 std y+1,R17
0590 0883 std y+0,R16
0592 .dbline 56
0592 ; for(it = 0;it <= (m - 1) * nv;it = it + nv)
0592 4427 clr R20
0594 5527 clr R21
0596 D2C1 xjmp L30
0598 L27:
0598 .dbline 57
0598 ; for(j = 0;j <= (nv / 2) - 1;j ++)
0598 AA24 clr R10
059A BB24 clr R11
059C BFC1 xjmp L34
059E L31:
059E .dbline 58
059E .dbline 59
059E 0A81 ldd R16,y+2
05A0 1B81 ldd R17,y+3
05A2 9501 movw R18,R10
05A4 0E940000 xcall empy16s
05A8 9801 movw R18,R16
05AA 04E0 ldi R16,4
05AC 10E0 ldi R17,0
05AE 0E940000 xcall empy16s
05B2 F801 movw R30,R16
05B4 08AC ldd R0,y+56
05B6 19AC ldd R1,y+57
05B8 E00D add R30,R0
05BA F11D adc R31,R1
05BC 2080 ldd R2,z+0
05BE 3180 ldd R3,z+1
05C0 4280 ldd R4,z+2
05C2 5380 ldd R5,z+3
05C4 5A92 st -y,R5
05C6 4A92 st -y,R4
05C8 3A92 st -y,R3
05CA 2A92 st -y,R2
05CC 22E0 ldi R18,2
05CE 30E0 ldi R19,0
05D0 ; stack offset 4
05D0 0C81 ldd R16,y+4
05D2 1D81 ldd R17,y+5
05D4 0E940000 xcall div16s
05D8 9A01 movw R18,R20
05DA 2A0D add R18,R10
05DC 3B1D adc R19,R11
05DE 200F add R18,R16
05E0 311F adc R19,R17
05E2 04E0 ldi R16,4
05E4 10E0 ldi R17,0
05E6 0E940000 xcall empy16s
05EA F801 movw R30,R16
05EC EE0D add R30,R14
05EE FF1D adc R31,R15
05F0 2080 ldd R2,z+0
05F2 3180 ldd R3,z+1
05F4 4280 ldd R4,z+2
05F6 5380 ldd R5,z+3
05F8 5A92 st -y,R5
05FA 4A92 st -y,R4
05FC 3A92 st -y,R3
05FE 2A92 st -y,R2
0600 0E940000 xcall empy32f
0604 FE01 movw R30,R28
0606 0087 std z+8,R16
0608 1187 std z+9,R17
060A 2287 std z+10,R18
060C 3387 std z+11,R19
060E .dbline 60
060E 0A81 ldd R16,y+2
0610 1B81 ldd R17,y+3
0612 9501 movw R18,R10
0614 0E940000 xcall empy16s
0618 9801 movw R18,R16
061A 04E0 ldi R16,4
061C 10E0 ldi R17,0
061E 0E940000 xcall empy16s
0622 F801 movw R30,R16
0624 0AAC ldd R0,y+58
0626 1BAC ldd R1,y+59
0628 E00D add R30,R0
062A F11D adc R31,R1
062C 2080 ldd R2,z+0
062E 3180 ldd R3,z+1
0630 4280 ldd R4,z+2
0632 5380 ldd R5,z+3
0634 5A92 st -y,R5
0636 4A92 st -y,R4
0638 3A92 st -y,R3
063A 2A92 st -y,R2
063C 22E0 ldi R18,2
063E 30E0 ldi R19,0
0640 ; stack offset 4
0640 0C81 ldd R16,y+4
0642 1D81 ldd R17,y+5
0644 0E940000 xcall div16s
0648 9A01 movw R18,R20
064A 2A0D add R18,R10
064C 3B1D adc R19,R11
064E 200F add R18,R16
0650 311F adc R19,R17
0652 04E0 ldi R16,4
0654 10E0 ldi R17,0
0656 0E940000 xcall empy16s
065A F801 movw R30,R16
065C EC0D add R30,R12
065E FD1D adc R31,R13
0660 2080 ldd R2,z+0
0662 3180 ldd R3,z+1
0664 4280 ldd R4,z+2
0666 5380 ldd R5,z+3
0668 5A92 st -y,R5
066A 4A92 st -y,R4
066C 3A92 st -y,R3
066E 2A92 st -y,R2
0670 0E940000 xcall empy32f
0674 FE01 movw R30,R28
0676 0487 std z+12,R16
0678 1587 std z+13,R17
067A 2687 std z+14,R18
067C 3787 std z+15,R19
067E .dbline 61
067E 0A81 ldd R16,y+2
0680 1B81 ldd R17,y+3
0682 9501 movw R18,R10
0684 0E940000 xcall empy16s
0688 9801 movw R18,R16
068A 04E0 ldi R16,4
068C 10E0 ldi R17,0
068E 0E940000 xcall empy16s
0692 1801 movw R2,R16
0694 F101 movw R30,R2
0696 08AC ldd R0,y+56
0698 19AC ldd R1,y+57
069A E00D add R30,R0
069C F11D adc R31,R1
069E 4080 ldd R4,z+0
06A0 5180 ldd R5,z+1
06A2 6280 ldd R6,z+2
06A4 7380 ldd R7,z+3
06A6 7A92 st -y,R7
06A8 6A92 st -y,R6
06AA 5A92 st -y,R5
06AC 4A92 st -y,R4
06AE F101 movw R30,R2
06B0 ; stack offset 4
06B0 0EAC ldd R0,y+62
06B2 1FAC ldd R1,y+63
06B4 E00D add R30,R0
06B6 F11D adc R31,R1
06B8 2080 ldd R2,z+0
06BA 3180 ldd R3,z+1
06BC 4280 ldd R4,z+2
06BE 5380 ldd R5,z+3
06C0 5A92 st -y,R5
06C2 4A92 st -y,R4
06C4 3A92 st -y,R3
06C6 2A92 st -y,R2
06C8 0E940000 xcall add32f
06CC FE01 movw R30,R28
06CE 0483 std z+4,R16
06D0 1583 std z+5,R17
06D2 2683 std z+6,R18
06D4 3783 std z+7,R19
06D6 .dbline 62
06D6 22E0 ldi R18,2
06D8 30E0 ldi R19,0
06DA 0881 ldd R16,y+0
06DC 1981 ldd R17,y+1
06DE 0E940000 xcall div16s
06E2 9A01 movw R18,R20
06E4 2A0D add R18,R10
06E6 3B1D adc R19,R11
06E8 200F add R18,R16
06EA 311F adc R19,R17
06EC 04E0 ldi R16,4
06EE 10E0 ldi R17,0
06F0 0E940000 xcall empy16s
06F4 FE01 movw R30,R28
06F6 2480 ldd R2,z+4
06F8 3580 ldd R3,z+5
06FA 4680 ldd R4,z+6
06FC 5780 ldd R5,z+7
06FE 5A92 st -y,R5
0700 4A92 st -y,R4
0702 3A92 st -y,R3
0704 2A92 st -y,R2
0706 F801 movw R30,R16
0708 EE0D add R30,R14
070A FF1D adc R31,R15
070C 2080 ldd R2,z+0
070E 3180 ldd R3,z+1
0710 4280 ldd R4,z+2
0712 5380 ldd R5,z+3
0714 5A92 st -y,R5
0716 4A92 st -y,R4
0718 3A92 st -y,R3
071A 2A92 st -y,R2
071C F801 movw R30,R16
071E EC0D add R30,R12
0720 FD1D adc R31,R13
0722 2080 ldd R2,z+0
0724 3180 ldd R3,z+1
0726 4280 ldd R4,z+2
0728 5380 ldd R5,z+3
072A 5A92 st -y,R5
072C 4A92 st -y,R4
072E 3A92 st -y,R3
0730 2A92 st -y,R2
0732 0E940000 xcall add32fs
0736 0E940000 xcall empy32f
073A FE01 movw R30,R28
073C 0483 std z+4,R16
073E 1583 std z+5,R17
0740 2683 std z+6,R18
0742 3783 std z+7,R19
0744 .dbline 63
0744 FE01 movw R30,R28
0746 2084 ldd R2,z+8
0748 3184 ldd R3,z+9
074A 4284 ldd R4,z+10
074C 5384 ldd R5,z+11
074E 5A92 st -y,R5
0750 4A92 st -y,R4
0752 3A92 st -y,R3
0754 2A92 st -y,R2
0756 FE01 movw R30,R28
0758 ; stack offset 4
0758 2088 ldd R2,z+16
075A 3188 ldd R3,z+17
075C 4288 ldd R4,z+18
075E 5388 ldd R5,z+19
0760 5A92 st -y,R5
0762 4A92 st -y,R4
0764 3A92 st -y,R3
0766 2A92 st -y,R2
0768 0E940000 xcall sub32f
076C FE01 movw R30,R28
076E 008B std z+16,R16
0770 118B std z+17,R17
0772 228B std z+18,R18
0774 338B std z+19,R19
0776 .dbline 64
0776 FE01 movw R30,R28
0778 2480 ldd R2,z+4
077A 3580 ldd R3,z+5
077C 4680 ldd R4,z+6
077E 5780 ldd R5,z+7
0780 5A92 st -y,R5
0782 4A92 st -y,R4
0784 3A92 st -y,R3
0786 2A92 st -y,R2
0788 FE01 movw R30,R28
078A ; stack offset 4
078A 2484 ldd R2,z+12
078C 3584 ldd R3,z+13
078E 4684 ldd R4,z+14
0790 5784 ldd R5,z+15
0792 5A92 st -y,R5
0794 4A92 st -y,R4
0796 3A92 st -y,R3
0798 2A92 st -y,R2
079A 0E940000 xcall sub32fs
079E FE01 movw R30,R28
07A0 ; stack offset 4
07A0 2088 ldd R2,z+16
07A2 3188 ldd R3,z+17
07A4 4288 ldd R4,z+18
07A6 5388 ldd R5,z+19
07A8 5A92 st -y,R5
07AA 4A92 st -y,R4
07AC 3A92 st -y,R3
07AE 2A92 st -y,R2
07B0 0E940000 xcall sub32f
07B4 FE01 movw R30,R28
07B6 048B std z+20,R16
07B8 158B std z+21,R17
07BA 268B std z+22,R18
07BC 378B std z+23,R19
07BE .dbline 65
07BE 1A01 movw R2,R20
07C0 2A0C add R2,R10
07C2 3B1C adc R3,R11
07C4 22E0 ldi R18,2
07C6 30E0 ldi R19,0
07C8 0881 ldd R16,y+0
07CA 1981 ldd R17,y+1
07CC 0E940000 xcall div16s
07D0 9101 movw R18,R2
07D2 200F add R18,R16
07D4 311F adc R19,R17
07D6 04E0 ldi R16,4
07D8 10E0 ldi R17,0
07DA 0E940000 xcall empy16s
07DE F801 movw R30,R16
07E0 EE0D add R30,R14
07E2 FF1D adc R31,R15
07E4 04E0 ldi R16,4
07E6 10E0 ldi R17,0
07E8 9101 movw R18,R2
07EA 0E940000 xcall empy16s
07EE D801 movw R26,R16
07F0 AE0D add R26,R14
07F2 BF1D adc R27,R15
07F4 2D90 ld R2,x+
07F6 3D90 ld R3,x+
07F8 4D90 ld R4,x+
07FA 5C90 ld R5,x
07FC 5A92 st -y,R5
07FE 4A92 st -y,R4
0800 3A92 st -y,R3
0802 2A92 st -y,R2
0804 DE01 movw R26,R28
0806 ; stack offset 4
0806 5496 adiw R26,20
0808 2D90 ld R2,x+
080A 3D90 ld R3,x+
080C 4D90 ld R4,x+
080E 5C90 ld R5,x
0810 5A92 st -y,R5
0812 4A92 st -y,R4
0814 3A92 st -y,R3
0816 2A92 st -y,R2
0818 0E940000 xcall sub32f
081C 0083 std z+0,R16
081E 1183 std z+1,R17
0820 2283 std z+2,R18
0822 3383 std z+3,R19
0824 .dbline 66
0824 1A01 movw R2,R20
0826 2A0C add R2,R10
0828 3B1C adc R3,R11
082A 22E0 ldi R18,2
082C 30E0 ldi R19,0
082E 0881 ldd R16,y+0
0830 1981 ldd R17,y+1
0832 0E940000 xcall div16s
0836 9101 movw R18,R2
0838 200F add R18,R16
083A 311F adc R19,R17
083C 04E0 ldi R16,4
083E 10E0 ldi R17,0
0840 0E940000 xcall empy16s
0844 F801 movw R30,R16
0846 EC0D add R30,R12
0848 FD1D adc R31,R13
084A 04E0 ldi R16,4
084C 10E0 ldi R17,0
084E 9101 movw R18,R2
0850 0E940000 xcall empy16s
0854 D801 movw R26,R16
0856 AC0D add R26,R12
0858 BD1D adc R27,R13
085A 2D90 ld R2,x+
085C 3D90 ld R3,x+
085E 4D90 ld R4,x+
0860 5C90 ld R5,x
0862 5A92 st -y,R5
0864 4A92 st -y,R4
0866 3A92 st -y,R3
0868 2A92 st -y,R2
086A DE01 movw R26,R28
086C ; stack offset 4
086C 5896 adiw R26,24
086E 2D90 ld R2,x+
0870 3D90 ld R3,x+
0872 4D90 ld R4,x+
0874 5C90 ld R5,x
0876 5A92 st -y,R5
0878 4A92 st -y,R4
087A 3A92 st -y,R3
087C 2A92 st -y,R2
087E 0E940000 xcall sub32f
0882 0083 std z+0,R16
0884 1183 std z+1,R17
0886 2283 std z+2,R18
0888 3383 std z+3,R19
088A .dbline 67
088A 9A01 movw R18,R20
088C 2A0D add R18,R10
088E 3B1D adc R19,R11
0890 04E0 ldi R16,4
0892 10E0 ldi R17,0
0894 0E940000 xcall empy16s
0898 1801 movw R2,R16
089A 2E0C add R2,R14
089C 3F1C adc R3,R15
089E F101 movw R30,R2
08A0 4080 ldd R4,z+0
08A2 5180 ldd R5,z+1
08A4 6280 ldd R6,z+2
08A6 7380 ldd R7,z+3
08A8 7A92 st -y,R7
08AA 6A92 st -y,R6
08AC 5A92 st -y,R5
08AE 4A92 st -y,R4
08B0 FE01 movw R30,R28
08B2 ; stack offset 4
08B2 4488 ldd R4,z+20
08B4 5588 ldd R5,z+21
08B6 6688 ldd R6,z+22
08B8 7788 ldd R7,z+23
08BA 7A92 st -y,R7
08BC 6A92 st -y,R6
08BE 5A92 st -y,R5
08C0 4A92 st -y,R4
08C2 0E940000 xcall add32f
08C6 F101 movw R30,R2
08C8 0083 std z+0,R16
08CA 1183 std z+1,R17
08CC 2283 std z+2,R18
08CE 3383 std z+3,R19
08D0 .dbline 68
08D0 9A01 movw R18,R20
08D2 2A0D add R18,R10
08D4 3B1D adc R19,R11
08D6 04E0 ldi R16,4
08D8 10E0 ldi R17,0
08DA 0E940000 xcall empy16s
08DE 1801 movw R2,R16
08E0 2C0C add R2,R12
08E2 3D1C adc R3,R13
08E4 F101 movw R30,R2
08E6 4080 ldd R4,z+0
08E8 5180 ldd R5,z+1
08EA 6280 ldd R6,z+2
08EC 7380 ldd R7,z+3
08EE 7A92 st -y,R7
08F0 6A92 st -y,R6
08F2 5A92 st -y,R5
08F4 4A92 st -y,R4
08F6 FE01 movw R30,R28
08F8 ; stack offset 4
08F8 408C ldd R4,z+24
08FA 518C ldd R5,z+25
08FC 628C ldd R6,z+26
08FE 738C ldd R7,z+27
0900 7A92 st -y,R7
0902 6A92 st -y,R6
0904 5A92 st -y,R5
0906 4A92 st -y,R4
0908 0E940000 xcall add32f
090C F101 movw R30,R2
090E 0083 std z+0,R16
0910 1183 std z+1,R17
0912 2283 std z+2,R18
0914 3383 std z+3,R19
0916 .dbline 69
0916 L32:
0916 .dbline 57
0916 C501 movw R24,R10
0918 0196 adiw R24,1
091A 5C01 movw R10,R24
091C L34:
091C .dbline 57
091C 22E0 ldi R18,2
091E 30E0 ldi R19,0
0920 0881 ldd R16,y+0
0922 1981 ldd R17,y+1
0924 0E940000 xcall div16s
0928 C801 movw R24,R16
092A 0197 sbiw R24,1
092C 8A15 cp R24,R10
092E 9B05 cpc R25,R11
0930 0CF0 brlt X6
0932 35CE xjmp L31
0934 X6:
0934 L28:
0934 .dbline 56
0934 2880 ldd R2,y+0
0936 3980 ldd R3,y+1
0938 420D add R20,R2
093A 531D adc R21,R3
093C L30:
093C .dbline 56
093C 2881 ldd R18,y+0
093E 3981 ldd R19,y+1
0940 0A81 ldd R16,y+2
0942 1B81 ldd R17,y+3
0944 0150 subi R16,1
0946 1040 sbci R17,0
0948 0E940000 xcall empy16s
094C 0417 cp R16,R20
094E 1507 cpc R17,R21
0950 0CF0 brlt X7
0952 22CE xjmp L27
0954 X7:
0954 .dbline 70
0954 L24:
0954 .dbline 52
0954 8CA1 ldd R24,y+36
0956 9DA1 ldd R25,y+37
0958 0197 sbiw R24,1
095A 9DA3 std y+37,R25
095C 8CA3 std y+36,R24
095E L26:
095E .dbline 52
095E 8CA1 ldd R24,y+36
0960 9DA1 ldd R25,y+37
0962 8030 cpi R24,0
0964 E0E0 ldi R30,0
0966 9E07 cpc R25,R30
0968 0CF0 brlt X8
096A 03CE xjmp L23
096C X8:
096C .dbline 71
096C ; {
096C ; p = pr[m * j] * fr[it + j + nv / 2];
096C ; q = pi[m * j] * fi[it + j + nv / 2];
096C ; s = pr[m * j] + pi[m * j];
096C ; s = s * (fr[it + j + nv / 2] + fi[it + j + nv / 2]);
096C ; poddr = p - q;
096C ; poddi = s - p - q;
096C ; fr[it + j + nv / 2] = fr[it + j] - poddr;
096C ; fi[it + j + nv / 2] = fi[it + j] - poddi;
096C ; fr[it + j] = fr[it + j] + poddr;
096C ; fi[it + j] = fi[it + j] + poddi;
096C ; }
096C ; }
096C ; if(l != 0)
096C FE01 movw R30,R28
096E EC5B subi R30,188 ; addi 68
0970 FF4F sbci R31,255
0972 0080 ldd R0,z+0
0974 1180 ldd R1,z+1
0976 0020 tst R0
0978 19F4 brne X1
097A 1120 tst R1
097C 09F4 brne X9
097E 6FC0 xjmp L35
0980 X9:
0980 X1:
0980 .dbline 72
0980 ; for(i = 0;i <= n - 1;i ++)
0980 2224 clr R2
0982 3324 clr R3
0984 398E std y+25,R3
0986 288E std y+24,R2
0988 61C0 xjmp L40
098A L37:
098A .dbline 73
098A .dbline 74
098A 288D ldd R18,y+24
098C 398D ldd R19,y+25
098E 04E0 ldi R16,4
0990 10E0 ldi R17,0
0992 0E940000 xcall empy16s
0996 1801 movw R2,R16
0998 2E0C add R2,R14
099A 3F1C adc R3,R15
099C F101 movw R30,R2
099E 4080 ldd R4,z+0
09A0 5180 ldd R5,z+1
09A2 6280 ldd R6,z+2
09A4 7380 ldd R7,z+3
09A6 7A92 st -y,R7
09A8 6A92 st -y,R6
09AA 5A92 st -y,R5
09AC 4A92 st -y,R4
09AE 00E0 ldi R16,L10
09B2 0E940000 xcall lpm32
09B6 3A93 st -y,R19
09B8 2A93 st -y,R18
09BA 1A93 st -y,R17
09BC 0A93 st -y,R16
09BE ; stack offset 8
09BE FE01 movw R30,R28
09C0 EC5B subi R30,188 ; addi 68
09C2 FF4F sbci R31,255
09C4 0081 ldd R16,z+0
09C6 1181 ldd R17,z+1
09C8 0E940000 xcall int2fp
09CC 3A93 st -y,R19
09CE 2A93 st -y,R18
09D0 1A93 st -y,R17
09D2 0A93 st -y,R16
09D4 0E940000 xcall empy32fs
09D8 0E940000 xcall div32f
09DC F101 movw R30,R2
09DE 0083 std z+0,R16
09E0 1183 std z+1,R17
09E2 2283 std z+2,R18
09E4 3383 std z+3,R19
09E6 .dbline 75
09E6 288D ldd R18,y+24
09E8 398D ldd R19,y+25
09EA 04E0 ldi R16,4
09EC 10E0 ldi R17,0
09EE 0E940000 xcall empy16s
09F2 1801 movw R2,R16
09F4 2C0C add R2,R12
09F6 3D1C adc R3,R13
09F8 F101 movw R30,R2
09FA 4080 ldd R4,z+0
09FC 5180 ldd R5,z+1
09FE 6280 ldd R6,z+2
0A00 7380 ldd R7,z+3
0A02 7A92 st -y,R7
0A04 6A92 st -y,R6
0A06 5A92 st -y,R5
0A08 4A92 st -y,R4
0A0A 00E0 ldi R16,L10
0A0E 0E940000 xcall lpm32
0A12 3A93 st -y,R19
0A14 2A93 st -y,R18
0A16 1A93 st -y,R17
0A18 0A93 st -y,R16
0A1A ; stack offset 8
0A1A FE01 movw R30,R28
0A1C EC5B subi R30,188 ; addi 68
0A1E FF4F sbci R31,255
0A20 0081 ldd R16,z+0
0A22 1181 ldd R17,z+1
0A24 0E940000 xcall int2fp
0A28 3A93 st -y,R19
0A2A 2A93 st -y,R18
0A2C 1A93 st -y,R17
0A2E 0A93 st -y,R16
0A30 0E940000 xcall empy32fs
0A34 0E940000 xcall div32f
0A38 F101 movw R30,R2
0A3A 0083 std z+0,R16
0A3C 1183 std z+1,R17
0A3E 2283 std z+2,R18
0A40 3383 std z+3,R19
0A42 .dbline 76
0A42 L38:
0A42 .dbline 72
0A42 888D ldd R24,y+24
0A44 998D ldd R25,y+25
0A46 0196 adiw R24,1
0A48 998F std y+25,R25
0A4A 888F std y+24,R24
0A4C L40:
0A4C .dbline 72
0A4C 8CAD ldd R24,y+60
0A4E 9DAD ldd R25,y+61
0A50 0197 sbiw R24,1
0A52 288C ldd R2,y+24
0A54 398C ldd R3,y+25
0A56 8215 cp R24,R2
0A58 9305 cpc R25,R3
0A5A 0CF0 brlt X10
0A5C 96CF xjmp L37
0A5E X10:
0A5E L35:
0A5E .dbline 77
0A5E ; {
0A5E ; fr[i] = fr[i] / (1.0 * n);
0A5E ; fi[i] = fi[i] / (1.0 * n);
0A5E ; }
0A5E ; if(il != 0)
0A5E FE01 movw R30,R28
0A60 EA5B subi R30,186 ; addi 70
0A62 FF4F sbci R31,255
0A64 0080 ldd R0,z+0
0A66 1180 ldd R1,z+1
0A68 0020 tst R0
0A6A 19F4 brne X2
0A6C 1120 tst R1
0A6E 09F4 brne X11
0A70 47C1 xjmp L41
0A72 X11:
0A72 X2:
0A72 .dbline 78
0A72 ; for(i = 0;i <= n - 1;i ++)
0A72 2224 clr R2
0A74 3324 clr R3
0A76 398E std y+25,R3
0A78 288E std y+24,R2
0A7A 39C1 xjmp L46
0A7C L43:
0A7C .dbline 79
0A7C ; {
0A7C .dbline 80
0A7C ; pr[i] = sqrt(fr[i] * fr[i] + fi[i] * fi[i]);
0A7C 288D ldd R18,y+24
0A7E 398D ldd R19,y+25
0A80 04E0 ldi R16,4
0A82 10E0 ldi R17,0
0A84 0E940000 xcall empy16s
0A88 1801 movw R2,R16
0A8A F101 movw R30,R2
0A8C EE0D add R30,R14
0A8E FF1D adc R31,R15
0A90 4080 ldd R4,z+0
0A92 5180 ldd R5,z+1
0A94 6280 ldd R6,z+2
0A96 7380 ldd R7,z+3
0A98 FE01 movw R30,R28
0A9A 46A2 std z+38,R4
0A9C 57A2 std z+39,R5
0A9E 60A6 std z+40,R6
0AA0 71A6 std z+41,R7
0AA2 F101 movw R30,R2
0AA4 EC0D add R30,R12
0AA6 FD1D adc R31,R13
0AA8 4080 ldd R4,z+0
0AAA 5180 ldd R5,z+1
0AAC 6280 ldd R6,z+2
0AAE 7380 ldd R7,z+3
0AB0 FE01 movw R30,R28
0AB2 42A6 std z+42,R4
0AB4 53A6 std z+43,R5
0AB6 64A6 std z+44,R6
0AB8 75A6 std z+45,R7
0ABA FE01 movw R30,R28
0ABC 46A0 ldd R4,z+38
0ABE 57A0 ldd R5,z+39
0AC0 60A4 ldd R6,z+40
0AC2 71A4 ldd R7,z+41
0AC4 7A92 st -y,R7
0AC6 6A92 st -y,R6
0AC8 5A92 st -y,R5
0ACA 4A92 st -y,R4
0ACC FE01 movw R30,R28
0ACE ; stack offset 4
0ACE 42A4 ldd R4,z+42
0AD0 53A4 ldd R5,z+43
0AD2 64A4 ldd R6,z+44
0AD4 75A4 ldd R7,z+45
0AD6 7A92 st -y,R7
0AD8 6A92 st -y,R6
0ADA 5A92 st -y,R5
0ADC 4A92 st -y,R4
0ADE 0E940000 xcall empy32fs
0AE2 FE01 movw R30,R28
0AE4 ; stack offset 4
0AE4 46A4 ldd R4,z+46
0AE6 57A4 ldd R5,z+47
0AE8 60A8 ldd R6,z+48
0AEA 71A8 ldd R7,z+49
0AEC 7A92 st -y,R7
0AEE 6A92 st -y,R6
0AF0 5A92 st -y,R5
0AF2 4A92 st -y,R4
0AF4 FE01 movw R30,R28
0AF6 ; stack offset 8
0AF6 42A8 ldd R4,z+50
0AF8 53A8 ldd R5,z+51
0AFA 64A8 ldd R6,z+52
0AFC 75A8 ldd R7,z+53
0AFE 7A92 st -y,R7
0B00 6A92 st -y,R6
0B02 5A92 st -y,R5
0B04 4A92 st -y,R4
0B06 0E940000 xcall empy32fs
0B0A 0E940000 xcall add32f
0B0E 2F92 push R2
0B10 3F92 push R3
0B12 0E940000 xcall _sqrt
0B16 3F90 pop R3
0B18 2F90 pop R2
0B1A 2801 movw R4,R16
0B1C 3901 movw R6,R18
0B1E F101 movw R30,R2
0B20 08AC ldd R0,y+56
0B22 19AC ldd R1,y+57
0B24 E00D add R30,R0
0B26 F11D adc R31,R1
0B28 4082 std z+0,R4
0B2A 5182 std z+1,R5
0B2C 6282 std z+2,R6
0B2E 7382 std z+3,R7
0B30 .dbline 81
0B30 ; if(fabs(fr[i]) < 0.000001 * fabs(fi[i]))
0B30 288D ldd R18,y+24
0B32 398D ldd R19,y+25
0B34 04E0 ldi R16,4
0B36 10E0 ldi R17,0
0B38 0E940000 xcall empy16s
0B3C F801 movw R30,R16
0B3E EE0D add R30,R14
0B40 FF1D adc R31,R15
0B42 0081 ldd R16,z+0
0B44 1181 ldd R17,z+1
0B46 2281 ldd R18,z+2
0B48 3381 ldd R19,z+3
0B4A 0E940000 xcall _fabs
0B4E 1801 movw R2,R16
0B50 2901 movw R4,R18
0B52 288D ldd R18,y+24
0B54 398D ldd R19,y+25
0B56 04E0 ldi R16,4
0B58 10E0 ldi R17,0
0B5A 0E940000 xcall empy16s
0B5E F801 movw R30,R16
0B60 EC0D add R30,R12
0B62 FD1D adc R31,R13
0B64 0081 ldd R16,z+0
0B66 1181 ldd R17,z+1
0B68 2281 ldd R18,z+2
0B6A 3381 ldd R19,z+3
0B6C 2F92 push R2
0B6E 3F92 push R3
0B70 4F92 push R4
0B72 5F92 push R5
0B74 0E940000 xcall _fabs
0B78 5F90 pop R5
0B7A 4F90 pop R4
0B7C 3F90 pop R3
0B7E 2F90 pop R2
0B80 3801 movw R6,R16
0B82 4901 movw R8,R18
0B84 5A92 st -y,R5
0B86 4A92 st -y,R4
0B88 3A92 st -y,R3
0B8A 2A92 st -y,R2
0B8C 00E0 ldi R16,L49
0B90 0E940000 xcall lpm32
0B94 3A93 st -y,R19
0B96 2A93 st -y,R18
0B98 1A93 st -y,R17
0B9A 0A93 st -y,R16
0B9C 9A92 st -y,R9
0B9E 8A92 st -y,R8
0BA0 7A92 st -y,R7
0BA2 6A92 st -y,R6
0BA4 0E940000 xcall empy32fs
0BA8 0E940000 xcall cmp32f
0BAC 0CF0 brlt X12
0BAE 52C0 xjmp L47
0BB0 X12:
0BB0 .dbline 82
0BB0 ; {
0BB0 .dbline 83
0BB0 ; if((fi[i] * fr[i]) > 0)
0BB0 288D ldd R18,y+24
0BB2 398D ldd R19,y+25
0BB4 04E0 ldi R16,4
0BB6 10E0 ldi R17,0
0BB8 0E940000 xcall empy16s
0BBC 1801 movw R2,R16
0BBE 00E0 ldi R16,L11
0BC2 0E940000 xcall lpm32
0BC6 3A93 st -y,R19
0BC8 2A93 st -y,R18
0BCA 1A93 st -y,R17
0BCC 0A93 st -y,R16
0BCE F101 movw R30,R2
0BD0 EC0D add R30,R12
0BD2 FD1D adc R31,R13
0BD4 4080 ldd R4,z+0
0BD6 5180 ldd R5,z+1
0BD8 6280 ldd R6,z+2
0BDA 7380 ldd R7,z+3
0BDC 7A92 st -y,R7
0BDE 6A92 st -y,R6
0BE0 5A92 st -y,R5
0BE2 4A92 st -y,R4
0BE4 F101 movw R30,R2
0BE6 EE0D add R30,R14
0BE8 FF1D adc R31,R15
0BEA 2080 ldd R2,z+0
0BEC 3180 ldd R3,z+1
0BEE 4280 ldd R4,z+2
0BF0 5380 ldd R5,z+3
0BF2 5A92 st -y,R5
0BF4 4A92 st -y,R4
0BF6 3A92 st -y,R3
0BF8 2A92 st -y,R2
0BFA 0E940000 xcall empy32fs
0BFE 0E940000 xcall cmp32f
0C02 A4F4 brge L50
0C04 .dbline 84
0C04 ; pi[i] = 90.0;
0C04 288D ldd R18,y+24
0C06 398D ldd R19,y+25
0C08 04E0 ldi R16,4
0C0A 10E0 ldi R17,0
0C0C 0E940000 xcall empy16s
0C10 F801 movw R30,R16
0C12 0AAC ldd R0,y+58
0C14 1BAC ldd R1,y+59
0C16 E00D add R30,R0
0C18 F11D adc R31,R1
0C1A 00E0 ldi R16,L52
0C1E 0E940000 xcall lpm32
0C22 0083 std z+0,R16
0C24 1183 std z+1,R17
0C26 2283 std z+2,R18
0C28 3383 std z+3,R19
0C2A 5CC0 xjmp L48
0C2C L50:
0C2C .dbline 86
0C2C ; else
0C2C ; pi[i] = -90.0;
0C2C 288D ldd R18,y+24
0C2E 398D ldd R19,y+25
0C30 04E0 ldi R16,4
0C32 10E0 ldi R17,0
0C34 0E940000 xcall empy16s
0C38 F801 movw R30,R16
0C3A 0AAC ldd R0,y+58
0C3C 1BAC ldd R1,y+59
0C3E E00D add R30,R0
0C40 F11D adc R31,R1
0C42 00E0 ldi R16,L53
0C46 0E940000 xcall lpm32
0C4A 0083 std z+0,R16
0C4C 1183 std z+1,R17
0C4E 2283 std z+2,R18
0C50 3383 std z+3,R19
0C52 .dbline 87
0C52 ; }
0C52 48C0 xjmp L48
0C54 L47:
0C54 .dbline 89
0C54 ; else
0C54 ; pi[i] = atan(fi[i] / fr[i]) * 360.0 / 6.283185306;
0C54 288D ldd R18,y+24
0C56 398D ldd R19,y+25
0C58 04E0 ldi R16,4
0C5A 10E0 ldi R17,0
0C5C 0E940000 xcall empy16s
0C60 1801 movw R2,R16
0C62 F101 movw R30,R2
0C64 EC0D add R30,R12
0C66 FD1D adc R31,R13
0C68 4080 ldd R4,z+0
0C6A 5180 ldd R5,z+1
0C6C 6280 ldd R6,z+2
0C6E 7380 ldd R7,z+3
0C70 7A92 st -y,R7
0C72 6A92 st -y,R6
0C74 5A92 st -y,R5
0C76 4A92 st -y,R4
0C78 F101 movw R30,R2
0C7A EE0D add R30,R14
0C7C FF1D adc R31,R15
0C7E 4080 ldd R4,z+0
0C80 5180 ldd R5,z+1
0C82 6280 ldd R6,z+2
0C84 7380 ldd R7,z+3
0C86 7A92 st -y,R7
0C88 6A92 st -y,R6
0C8A 5A92 st -y,R5
0C8C 4A92 st -y,R4
0C8E 0E940000 xcall div32f
0C92 2F92 push R2
0C94 3F92 push R3
0C96 0E940000 xcall _atan
0C9A 3F90 pop R3
0C9C 2F90 pop R2
0C9E 2801 movw R4,R16
0CA0 3901 movw R6,R18
0CA2 00E0 ldi R16,L54
0CA6 0E940000 xcall lpm32
0CAA 3A93 st -y,R19
0CAC 2A93 st -y,R18
0CAE 1A93 st -y,R17
0CB0 0A93 st -y,R16
0CB2 7A92 st -y,R7
0CB4 6A92 st -y,R6
0CB6 5A92 st -y,R5
0CB8 4A92 st -y,R4
0CBA 0E940000 xcall empy32fs
0CBE 00E0 ldi R16,L12
0CC2 0E940000 xcall lpm32
0CC6 3A93 st -y,R19
0CC8 2A93 st -y,R18
0CCA 1A93 st -y,R17
0CCC 0A93 st -y,R16
0CCE 0E940000 xcall div32f
0CD2 F101 movw R30,R2
0CD4 0AAC ldd R0,y+58
0CD6 1BAC ldd R1,y+59
0CD8 E00D add R30,R0
0CDA F11D adc R31,R1
0CDC 0083 std z+0,R16
0CDE 1183 std z+1,R17
0CE0 2283 std z+2,R18
0CE2 3383 std z+3,R19
0CE4 L48:
0CE4 .dbline 90
0CE4 L44:
0CE4 .dbline 78
0CE4 888D ldd R24,y+24
0CE6 998D ldd R25,y+25
0CE8 0196 adiw R24,1
0CEA 998F std y+25,R25
0CEC 888F std y+24,R24
0CEE L46:
0CEE .dbline 78
0CEE 8CAD ldd R24,y+60
0CF0 9DAD ldd R25,y+61
0CF2 0197 sbiw R24,1
0CF4 288C ldd R2,y+24
0CF6 398C ldd R3,y+25
0CF8 8215 cp R24,R2
0CFA 9305 cpc R25,R3
0CFC 0CF0 brlt X13
0CFE BECE xjmp L43
0D00 X13:
0D00 L41:
0D00 .dbline -2
0D00 L1:
0D00 AE96 adiw R28,46
0D02 0E940000 xcall pop_gset5
0D06 2496 adiw R28,4
0D08 .dbline 0 ; func end
0D08 0895 ret
0D0A .dbsym l l0 36 I
0D0A .dbsym l vi 32 D
0D0A .dbsym l vr 28 D
0D0A .dbsym l is 26 I
0D0A .dbsym l i 24 I
0D0A .dbsym l poddi 20 D
0D0A .dbsym l poddr 16 D
0D0A .dbsym l q 12 D
0D0A .dbsym l p 8 D
0D0A .dbsym l s 4 D
0D0A .dbsym l m 2 I
0D0A .dbsym l nv 0 I
0D0A .dbsym r it 20 I
0D0A .dbsym r j 10 I
0D0A .dbsym l il 70 I
0D0A .dbsym l l 68 I
0D0A .dbsym r fi 12 pD
0D0A .dbsym r fr 14 pD
0D0A .dbsym l k 62 I
0D0A .dbsym l n 60 I
0D0A .dbsym l pi 58 pD
0D0A .dbsym l pr 56 pD
0D0A .dbend
0D0A .dbfunc e main _main fI
.even
0D0A _main::
0D0A .dbline -1
0D0A .dbline 94
0D0A ; }
0D0A ; }
0D0A ;
0D0A ; main()
0D0A ; {
0D0A L56:
0D0A .dbline 95
0D0A L57:
0D0A .dbline 95
0D0A FFCF xjmp L56
0D0C X14:
0D0C .dbline -2
0D0C L55:
0D0C .dbline 0 ; func end
0D0C 0895 ret
0D0E .dbend
.area lit(rom, con, rel)
0000 L54:
0000 0000B443 .word 0x0,0x43b4
0004 L53:
0004 0000B4C2 .word 0x0,0xc2b4
0008 L52:
0008 0000B442 .word 0x0,0x42b4
000C L49:
000C BD378635 .word 0x37bd,0x3586
0010 L12:
0010 DB0FC940 .word 0xfdb,0x40c9
0014 L11:
0014 00000000 .word 0x0,0x0
0018 L10:
0018 0000803F .word 0x0,0x3f80