www.pudn.com > fft_iccavr.rar > fft.lis


                        .module fft.c 
                        .area text(rom, con, rel) 
 0000                   .dbfile D:\HJN\Design\AVR\fft\fft.c 
 0000                   .dbfunc e four1 _four1 fV 
 0000           ;          theta -> y+52 
 0000           ;            wpi -> y+48 
 0000           ;            wpr -> y+44 
 0000           ;          wtemp -> y+40 
 0000           ;              m -> y+36 
 0000           ;          istep -> y+32 
 0000           ;              n -> y+28 
 0000           ;           mmax -> y+24 
 0000           ;             wr -> y+20 
 0000           ;             wi -> y+16 
 0000           ;          tempi -> y+12 
 0000           ;          tempr -> y+8 
 0000           ;              i -> y+4 
 0000           ;              j -> y+0 
 0000           ;          isign -> R10,R11 
 0000           ;             nn -> y+64 
 0000           ;           data -> R12,R13 
                        .even 
 0000           _four1:: 
 0000 3A93              st -y,r19 
 0002 2A93              st -y,r18 
 0004 0E940000          xcall push_gset4 
 0008 6801              movw R12,R16 
 000A E897              sbiw R28,56 
 000C FE01              movw R30,R28 
 000E EC5B              subi R30,188  ; addi 68 
 0010 FF4F              sbci R31,255 
 0012 A080              ldd R10,z+0 
 0014 B180              ldd R11,z+1 
 0016                   .dbline -1 
 0016                   .dbline 9 
 0016           ; /*data是输入和输出(复数),nn是FFT的点数 isign指示FFT变换方向1为正变换, 
 0016           ;  -1为反变换,程序出自《Numerical Recipes in C》 */ 
 0016           ;  
 0016           ;  
 0016           ; #include  
 0016           ; #define SWAP(a,b) tempr=(a);(a)=(b);(b)=tempr 
 0016           ;  
 0016           ; void four1(float data[], unsigned long nn, int isign) 
 0016           ; { 
 0016                   .dbline 14 
 0016           ;   unsigned long n,mmax,m,j,istep,i; 
 0016           ;   double wtemp,wr,wpr,wpi,wi,theta; 
 0016           ;   float tempr,tempi; 
 0016           ;  
 0016           ;   n=nn << 1;                //nn乘以2赋给n,作为取样点数 
 0016 FE01              movw R30,R28 
 0018 E05C              subi R30,192  ; addi 64 
 001A FF4F              sbci R31,255 
 001C 2080              ldd R2,z+0 
 001E 3180              ldd R3,z+1 
 0020 4280              ldd R4,z+2 
 0022 5380              ldd R5,z+3 
 0024 220C              lsl R2 
 0026 331C              rol R3 
 0028 441C              rol R4 
 002A 551C              rol R5 
 002C FE01              movw R30,R28 
 002E 248E              std z+28,R2 
 0030 358E              std z+29,R3 
 0032 468E              std z+30,R4 
 0034 578E              std z+31,R5 
 0036                   .dbline 15 
 0036           ;   j=1; 
 0036 41E0              ldi R20,1 
 0038 50E0              ldi R21,0 
 003A 60E0              ldi R22,0 
 003C 70E0              ldi R23,0 
 003E FE01              movw R30,R28 
 0040 4083              std z+0,R20 
 0042 5183              std z+1,R21 
 0044 6283              std z+2,R22 
 0046 7383              std z+3,R23 
 0048                   .dbline 16 
 0048 41E0              ldi R20,1 
 004A 50E0              ldi R21,0 
 004C 60E0              ldi R22,0 
 004E 70E0              ldi R23,0 
 0050 FE01              movw R30,R28 
 0052 4483              std z+4,R20 
 0054 5583              std z+5,R21 
 0056 6683              std z+6,R22 
 0058 7783              std z+7,R23 
 005A 79C1              xjmp L5 
 005C           L2: 
 005C                   .dbline 16 
 005C           ;   for (i=1;i i) { 
 005C FE01              movw R30,R28 
 005E 2480              ldd R2,z+4 
 0060 3580              ldd R3,z+5 
 0062 4680              ldd R4,z+6 
 0064 5780              ldd R5,z+7 
 0066 FE01              movw R30,R28 
 0068 6080              ldd R6,z+0 
 006A 7180              ldd R7,z+1 
 006C 8280              ldd R8,z+2 
 006E 9380              ldd R9,z+3 
 0070 2614              cp R2,R6 
 0072 3704              cpc R3,R7 
 0074 4804              cpc R4,R8 
 0076 5904              cpc R5,R9 
 0078 08F0              brlo X0 
 007A F6C0              xjmp L6 
 007C           X0: 
 007C                   .dbline 17 
 007C                   .dbline 18 
 007C           ;       SWAP(data[j],data[i]); 
 007C FE01              movw R30,R28 
 007E 2080              ldd R2,z+0 
 0080 3180              ldd R3,z+1 
 0082 4280              ldd R4,z+2 
 0084 5380              ldd R5,z+3 
 0086 44E0              ldi R20,4 
 0088 50E0              ldi R21,0 
 008A 60E0              ldi R22,0 
 008C 70E0              ldi R23,0 
 008E 5A92              st -y,R5 
 0090 4A92              st -y,R4 
 0092 3A92              st -y,R3 
 0094 2A92              st -y,R2 
 0096 8A01              movw R16,R20 
 0098 9B01              movw R18,R22 
 009A 0E940000          xcall empy32u 
 009E F801              movw R30,R16 
 00A0 EC0D              add R30,R12 
 00A2 FD1D              adc R31,R13 
 00A4 2080              ldd R2,z+0 
 00A6 3180              ldd R3,z+1 
 00A8 4280              ldd R4,z+2 
 00AA 5380              ldd R5,z+3 
 00AC FE01              movw R30,R28 
 00AE 2086              std z+8,R2 
 00B0 3186              std z+9,R3 
 00B2 4286              std z+10,R4 
 00B4 5386              std z+11,R5 
 00B6                   .dbline 18 
 00B6 FE01              movw R30,R28 
 00B8 2480              ldd R2,z+4 
 00BA 3580              ldd R3,z+5 
 00BC 4680              ldd R4,z+6 
 00BE 5780              ldd R5,z+7 
 00C0 44E0              ldi R20,4 
 00C2 50E0              ldi R21,0 
 00C4 60E0              ldi R22,0 
 00C6 70E0              ldi R23,0 
 00C8 5A92              st -y,R5 
 00CA 4A92              st -y,R4 
 00CC 3A92              st -y,R3 
 00CE 2A92              st -y,R2 
 00D0 8A01              movw R16,R20 
 00D2 9B01              movw R18,R22 
 00D4 0E940000          xcall empy32u 
 00D8 F801              movw R30,R16 
 00DA EC0D              add R30,R12 
 00DC FD1D              adc R31,R13 
 00DE 2080              ldd R2,z+0 
 00E0 3180              ldd R3,z+1 
 00E2 4280              ldd R4,z+2 
 00E4 5380              ldd R5,z+3 
 00E6 FE01              movw R30,R28 
 00E8 6080              ldd R6,z+0 
 00EA 7180              ldd R7,z+1 
 00EC 8280              ldd R8,z+2 
 00EE 9380              ldd R9,z+3 
 00F0 44E0              ldi R20,4 
 00F2 50E0              ldi R21,0 
 00F4 60E0              ldi R22,0 
 00F6 70E0              ldi R23,0 
 00F8 9A92              st -y,R9 
 00FA 8A92              st -y,R8 
 00FC 7A92              st -y,R7 
 00FE 6A92              st -y,R6 
 0100 8A01              movw R16,R20 
 0102 9B01              movw R18,R22 
 0104 0E940000          xcall empy32u 
 0108 F801              movw R30,R16 
 010A EC0D              add R30,R12 
 010C FD1D              adc R31,R13 
 010E 2082              std z+0,R2 
 0110 3182              std z+1,R3 
 0112 4282              std z+2,R4 
 0114 5382              std z+3,R5 
 0116                   .dbline 18 
 0116 FE01              movw R30,R28 
 0118 2480              ldd R2,z+4 
 011A 3580              ldd R3,z+5 
 011C 4680              ldd R4,z+6 
 011E 5780              ldd R5,z+7 
 0120 44E0              ldi R20,4 
 0122 50E0              ldi R21,0 
 0124 60E0              ldi R22,0 
 0126 70E0              ldi R23,0 
 0128 5A92              st -y,R5 
 012A 4A92              st -y,R4 
 012C 3A92              st -y,R3 
 012E 2A92              st -y,R2 
 0130 8A01              movw R16,R20 
 0132 9B01              movw R18,R22 
 0134 0E940000          xcall empy32u 
 0138 F801              movw R30,R16 
 013A EC0D              add R30,R12 
 013C FD1D              adc R31,R13 
 013E DE01              movw R26,R28 
 0140 1896              adiw R26,8 
 0142 2D90              ld R2,x+ 
 0144 3D90              ld R3,x+ 
 0146 4D90              ld R4,x+ 
 0148 5C90              ld R5,x 
 014A 2082              std z+0,R2 
 014C 3182              std z+1,R3 
 014E 4282              std z+2,R4 
 0150 5382              std z+3,R5 
 0152                   .dbline 19 
 0152           ;       SWAP(data[j+1],data[i+1]); 
 0152 41E0              ldi R20,1 
 0154 50E0              ldi R21,0 
 0156 60E0              ldi R22,0 
 0158 70E0              ldi R23,0 
 015A FE01              movw R30,R28 
 015C 2080              ldd R2,z+0 
 015E 3180              ldd R3,z+1 
 0160 4280              ldd R4,z+2 
 0162 5380              ldd R5,z+3 
 0164 240E              add R2,R20 
 0166 351E              adc R3,R21 
 0168 461E              adc R4,R22 
 016A 571E              adc R5,R23 
 016C 44E0              ldi R20,4 
 016E 50E0              ldi R21,0 
 0170 60E0              ldi R22,0 
 0172 70E0              ldi R23,0 
 0174 5A92              st -y,R5 
 0176 4A92              st -y,R4 
 0178 3A92              st -y,R3 
 017A 2A92              st -y,R2 
 017C 8A01              movw R16,R20 
 017E 9B01              movw R18,R22 
 0180 0E940000          xcall empy32u 
 0184 F801              movw R30,R16 
 0186 EC0D              add R30,R12 
 0188 FD1D              adc R31,R13 
 018A 2080              ldd R2,z+0 
 018C 3180              ldd R3,z+1 
 018E 4280              ldd R4,z+2 
 0190 5380              ldd R5,z+3 
 0192 FE01              movw R30,R28 
 0194 2086              std z+8,R2 
 0196 3186              std z+9,R3 
 0198 4286              std z+10,R4 
 019A 5386              std z+11,R5 
 019C                   .dbline 19 
 019C 41E0              ldi R20,1 
 019E 50E0              ldi R21,0 
 01A0 60E0              ldi R22,0 
 01A2 70E0              ldi R23,0 
 01A4 FE01              movw R30,R28 
 01A6 2480              ldd R2,z+4 
 01A8 3580              ldd R3,z+5 
 01AA 4680              ldd R4,z+6 
 01AC 5780              ldd R5,z+7 
 01AE 240E              add R2,R20 
 01B0 351E              adc R3,R21 
 01B2 461E              adc R4,R22 
 01B4 571E              adc R5,R23 
 01B6 44E0              ldi R20,4 
 01B8 50E0              ldi R21,0 
 01BA 60E0              ldi R22,0 
 01BC 70E0              ldi R23,0 
 01BE 5A92              st -y,R5 
 01C0 4A92              st -y,R4 
 01C2 3A92              st -y,R3 
 01C4 2A92              st -y,R2 
 01C6 8A01              movw R16,R20 
 01C8 9B01              movw R18,R22 
 01CA 0E940000          xcall empy32u 
 01CE F801              movw R30,R16 
 01D0 EC0D              add R30,R12 
 01D2 FD1D              adc R31,R13 
 01D4 2080              ldd R2,z+0 
 01D6 3180              ldd R3,z+1 
 01D8 4280              ldd R4,z+2 
 01DA 5380              ldd R5,z+3 
 01DC 41E0              ldi R20,1 
 01DE 50E0              ldi R21,0 
 01E0 60E0              ldi R22,0 
 01E2 70E0              ldi R23,0 
 01E4 FE01              movw R30,R28 
 01E6 6080              ldd R6,z+0 
 01E8 7180              ldd R7,z+1 
 01EA 8280              ldd R8,z+2 
 01EC 9380              ldd R9,z+3 
 01EE 640E              add R6,R20 
 01F0 751E              adc R7,R21 
 01F2 861E              adc R8,R22 
 01F4 971E              adc R9,R23 
 01F6 44E0              ldi R20,4 
 01F8 50E0              ldi R21,0 
 01FA 60E0              ldi R22,0 
 01FC 70E0              ldi R23,0 
 01FE 9A92              st -y,R9 
 0200 8A92              st -y,R8 
 0202 7A92              st -y,R7 
 0204 6A92              st -y,R6 
 0206 8A01              movw R16,R20 
 0208 9B01              movw R18,R22 
 020A 0E940000          xcall empy32u 
 020E F801              movw R30,R16 
 0210 EC0D              add R30,R12 
 0212 FD1D              adc R31,R13 
 0214 2082              std z+0,R2 
 0216 3182              std z+1,R3 
 0218 4282              std z+2,R4 
 021A 5382              std z+3,R5 
 021C                   .dbline 19 
 021C 41E0              ldi R20,1 
 021E 50E0              ldi R21,0 
 0220 60E0              ldi R22,0 
 0222 70E0              ldi R23,0 
 0224 FE01              movw R30,R28 
 0226 2480              ldd R2,z+4 
 0228 3580              ldd R3,z+5 
 022A 4680              ldd R4,z+6 
 022C 5780              ldd R5,z+7 
 022E 240E              add R2,R20 
 0230 351E              adc R3,R21 
 0232 461E              adc R4,R22 
 0234 571E              adc R5,R23 
 0236 44E0              ldi R20,4 
 0238 50E0              ldi R21,0 
 023A 60E0              ldi R22,0 
 023C 70E0              ldi R23,0 
 023E 5A92              st -y,R5 
 0240 4A92              st -y,R4 
 0242 3A92              st -y,R3 
 0244 2A92              st -y,R2 
 0246 8A01              movw R16,R20 
 0248 9B01              movw R18,R22 
 024A 0E940000          xcall empy32u 
 024E F801              movw R30,R16 
 0250 EC0D              add R30,R12 
 0252 FD1D              adc R31,R13 
 0254 DE01              movw R26,R28 
 0256 1896              adiw R26,8 
 0258 2D90              ld R2,x+ 
 025A 3D90              ld R3,x+ 
 025C 4D90              ld R4,x+ 
 025E 5C90              ld R5,x 
 0260 2082              std z+0,R2 
 0262 3182              std z+1,R3 
 0264 4282              std z+2,R4 
 0266 5382              std z+3,R5 
 0268                   .dbline 20 
 0268           ;     } 
 0268           L6: 
 0268                   .dbline 21 
 0268           ;     m=n >> 1;              //将n除以2的值赋给m 
 0268 FE01              movw R30,R28 
 026A 248C              ldd R2,z+28 
 026C 358C              ldd R3,z+29 
 026E 468C              ldd R4,z+30 
 0270 578C              ldd R5,z+31 
 0272 5694              lsr R5 
 0274 4794              ror R4 
 0276 3794              ror R3 
 0278 2794              ror R2 
 027A FE01              movw R30,R28 
 027C 24A2              std z+36,R2 
 027E 35A2              std z+37,R3 
 0280 46A2              std z+38,R4 
 0282 57A2              std z+39,R5 
 0284 21C0              xjmp L9 
 0286           L8: 
 0286                   .dbline 23 
 0286                   .dbline 24 
 0286 FE01              movw R30,R28 
 0288 24A0              ldd R2,z+36 
 028A 35A0              ldd R3,z+37 
 028C 46A0              ldd R4,z+38 
 028E 57A0              ldd R5,z+39 
 0290 FE01              movw R30,R28 
 0292 6080              ldd R6,z+0 
 0294 7180              ldd R7,z+1 
 0296 8280              ldd R8,z+2 
 0298 9380              ldd R9,z+3 
 029A 6218              sub R6,R2 
 029C 7308              sbc R7,R3 
 029E 8408              sbc R8,R4 
 02A0 9508              sbc R9,R5 
 02A2 FE01              movw R30,R28 
 02A4 6082              std z+0,R6 
 02A6 7182              std z+1,R7 
 02A8 8282              std z+2,R8 
 02AA 9382              std z+3,R9 
 02AC                   .dbline 25 
 02AC FE01              movw R30,R28 
 02AE 24A0              ldd R2,z+36 
 02B0 35A0              ldd R3,z+37 
 02B2 46A0              ldd R4,z+38 
 02B4 57A0              ldd R5,z+39 
 02B6 5694              lsr R5 
 02B8 4794              ror R4 
 02BA 3794              ror R3 
 02BC 2794              ror R2 
 02BE FE01              movw R30,R28 
 02C0 24A2              std z+36,R2 
 02C2 35A2              std z+37,R3 
 02C4 46A2              std z+38,R4 
 02C6 57A2              std z+39,R5 
 02C8                   .dbline 26 
 02C8           L9: 
 02C8                   .dbline 22 
 02C8           ;     while (m >= 2 && j > m)  
 02C8 42E0              ldi R20,2 
 02CA 50E0              ldi R21,0 
 02CC 60E0              ldi R22,0 
 02CE 70E0              ldi R23,0 
 02D0 FE01              movw R30,R28 
 02D2 24A0              ldd R2,z+36 
 02D4 35A0              ldd R3,z+37 
 02D6 46A0              ldd R4,z+38 
 02D8 57A0              ldd R5,z+39 
 02DA 2416              cp R2,R20 
 02DC 3506              cpc R3,R21 
 02DE 4606              cpc R4,R22 
 02E0 5706              cpc R5,R23 
 02E2 80F0              brlo L11 
 02E4 FE01              movw R30,R28 
 02E6 24A0              ldd R2,z+36 
 02E8 35A0              ldd R3,z+37 
 02EA 46A0              ldd R4,z+38 
 02EC 57A0              ldd R5,z+39 
 02EE FE01              movw R30,R28 
 02F0 6080              ldd R6,z+0 
 02F2 7180              ldd R7,z+1 
 02F4 8280              ldd R8,z+2 
 02F6 9380              ldd R9,z+3 
 02F8 2614              cp R2,R6 
 02FA 3704              cpc R3,R7 
 02FC 4804              cpc R4,R8 
 02FE 5904              cpc R5,R9 
 0300 08F4              brsh X1 
 0302 C1CF              xjmp L8 
 0304           X1: 
 0304           L11: 
 0304                   .dbline 27 
 0304 FE01              movw R30,R28 
 0306 24A0              ldd R2,z+36 
 0308 35A0              ldd R3,z+37 
 030A 46A0              ldd R4,z+38 
 030C 57A0              ldd R5,z+39 
 030E FE01              movw R30,R28 
 0310 6080              ldd R6,z+0 
 0312 7180              ldd R7,z+1 
 0314 8280              ldd R8,z+2 
 0316 9380              ldd R9,z+3 
 0318 620C              add R6,R2 
 031A 731C              adc R7,R3 
 031C 841C              adc R8,R4 
 031E 951C              adc R9,R5 
 0320 FE01              movw R30,R28 
 0322 6082              std z+0,R6 
 0324 7182              std z+1,R7 
 0326 8282              std z+2,R8 
 0328 9382              std z+3,R9 
 032A                   .dbline 28 
 032A           L3: 
 032A                   .dbline 16 
 032A 42E0              ldi R20,2 
 032C 50E0              ldi R21,0 
 032E 60E0              ldi R22,0 
 0330 70E0              ldi R23,0 
 0332 FE01              movw R30,R28 
 0334 2480              ldd R2,z+4 
 0336 3580              ldd R3,z+5 
 0338 4680              ldd R4,z+6 
 033A 5780              ldd R5,z+7 
 033C 240E              add R2,R20 
 033E 351E              adc R3,R21 
 0340 461E              adc R4,R22 
 0342 571E              adc R5,R23 
 0344 FE01              movw R30,R28 
 0346 2482              std z+4,R2 
 0348 3582              std z+5,R3 
 034A 4682              std z+6,R4 
 034C 5782              std z+7,R5 
 034E           L5: 
 034E                   .dbline 16 
 034E FE01              movw R30,R28 
 0350 248C              ldd R2,z+28 
 0352 358C              ldd R3,z+29 
 0354 468C              ldd R4,z+30 
 0356 578C              ldd R5,z+31 
 0358 FE01              movw R30,R28 
 035A 6480              ldd R6,z+4 
 035C 7580              ldd R7,z+5 
 035E 8680              ldd R8,z+6 
 0360 9780              ldd R9,z+7 
 0362 6214              cp R6,R2 
 0364 7304              cpc R7,R3 
 0366 8404              cpc R8,R4 
 0368 9504              cpc R9,R5 
 036A 08F4              brsh X2 
 036C 77CE              xjmp L2 
 036E           X2: 
 036E                   .dbline 29 
 036E           ;       { 
 036E           ;       j -= m; 
 036E           ;       m >>= 1;            //将m除以2的值赋给m 
 036E           ;     } 
 036E           ;     j += m; 
 036E           ;   } 
 036E           ;   mmax=2; 
 036E 42E0              ldi R20,2 
 0370 50E0              ldi R21,0 
 0372 60E0              ldi R22,0 
 0374 70E0              ldi R23,0 
 0376 FE01              movw R30,R28 
 0378 408F              std z+24,R20 
 037A 518F              std z+25,R21 
 037C 628F              std z+26,R22 
 037E 738F              std z+27,R23 
 0380 52C3              xjmp L13 
 0382           L12: 
 0382                   .dbline 30 
 0382           ;   while (n > mmax) { 
 0382                   .dbline 31 
 0382           ;     istep=mmax << 1; 
 0382 FE01              movw R30,R28 
 0384 208C              ldd R2,z+24 
 0386 318C              ldd R3,z+25 
 0388 428C              ldd R4,z+26 
 038A 538C              ldd R5,z+27 
 038C 220C              lsl R2 
 038E 331C              rol R3 
 0390 441C              rol R4 
 0392 551C              rol R5 
 0394 FE01              movw R30,R28 
 0396 20A2              std z+32,R2 
 0398 31A2              std z+33,R3 
 039A 42A2              std z+34,R4 
 039C 53A2              std z+35,R5 
 039E                   .dbline 32 
 039E           ;     theta=isign*(6.28318530717959/mmax); 
 039E 8501              movw R16,R10 
 03A0 0E940000          xcall int2fp 
 03A4 3A93              st -y,R19 
 03A6 2A93              st -y,R18 
 03A8 1A93              st -y,R17 
 03AA 0A93              st -y,R16 
 03AC 00E0              ldi R16,L15 
 03B0 0E940000          xcall lpm32 
 03B4 3A93              st -y,R19 
 03B6 2A93              st -y,R18 
 03B8 1A93              st -y,R17 
 03BA 0A93              st -y,R16 
 03BC 00E0              ldi R16,L16 
 03C0 0E940000          xcall lpm32 
 03C4 3A93              st -y,R19 
 03C6 2A93              st -y,R18 
 03C8 1A93              st -y,R17 
 03CA 0A93              st -y,R16 
 03CC FE01              movw R30,R28 
 03CE            ; stack offset 12 
 03CE 24A0              ldd R2,z+36 
 03D0 35A0              ldd R3,z+37 
 03D2 46A0              ldd R4,z+38 
 03D4 57A0              ldd R5,z+39 
 03D6 5694              lsr R5 
 03D8 4794              ror R4 
 03DA 3794              ror R3 
 03DC 2794              ror R2 
 03DE 8101              movw R16,R2 
 03E0 9201              movw R18,R4 
 03E2 0E940000          xcall long2fp 
 03E6 3A93              st -y,R19 
 03E8 2A93              st -y,R18 
 03EA 1A93              st -y,R17 
 03EC 0A93              st -y,R16 
 03EE 0E940000          xcall empy32fs 
 03F2 41E0              ldi R20,1 
 03F4 50E0              ldi R21,0 
 03F6 60E0              ldi R22,0 
 03F8 70E0              ldi R23,0 
 03FA FE01              movw R30,R28 
 03FC            ; stack offset 12 
 03FC 24A0              ldd R2,z+36 
 03FE 35A0              ldd R3,z+37 
 0400 46A0              ldd R4,z+38 
 0402 57A0              ldd R5,z+39 
 0404 2422              and R2,R20 
 0406 3522              and R3,R21 
 0408 4622              and R4,R22 
 040A 5722              and R5,R23 
 040C 8101              movw R16,R2 
 040E 9201              movw R18,R4 
 0410 0E940000          xcall long2fp 
 0414 3A93              st -y,R19 
 0416 2A93              st -y,R18 
 0418 1A93              st -y,R17 
 041A 0A93              st -y,R16 
 041C 0E940000          xcall add32fs 
 0420 0E940000          xcall div32fs 
 0424 0E940000          xcall empy32f 
 0428 FE01              movw R30,R28 
 042A 04AB              std z+52,R16 
 042C 15AB              std z+53,R17 
 042E 26AB              std z+54,R18 
 0430 37AB              std z+55,R19 
 0432                   .dbline 33 
 0432           ;     wtemp=sin(0.5*theta); 
 0432 00E0              ldi R16,L17 
 0436 0E940000          xcall lpm32 
 043A 3A93              st -y,R19 
 043C 2A93              st -y,R18 
 043E 1A93              st -y,R17 
 0440 0A93              st -y,R16 
 0442 FE01              movw R30,R28 
 0444            ; stack offset 4 
 0444 20AC              ldd R2,z+56 
 0446 31AC              ldd R3,z+57 
 0448 42AC              ldd R4,z+58 
 044A 53AC              ldd R5,z+59 
 044C 5A92              st -y,R5 
 044E 4A92              st -y,R4 
 0450 3A92              st -y,R3 
 0452 2A92              st -y,R2 
 0454 0E940000          xcall empy32f 
 0458 0E940000          xcall _sin 
 045C FE01              movw R30,R28 
 045E 00A7              std z+40,R16 
 0460 11A7              std z+41,R17 
 0462 22A7              std z+42,R18 
 0464 33A7              std z+43,R19 
 0466                   .dbline 34 
 0466           ;     wpr = -2.0*wtemp*wtemp; 
 0466 00E0              ldi R16,L18 
 046A 0E940000          xcall lpm32 
 046E 3A93              st -y,R19 
 0470 2A93              st -y,R18 
 0472 1A93              st -y,R17 
 0474 0A93              st -y,R16 
 0476 FE01              movw R30,R28 
 0478            ; stack offset 4 
 0478 24A4              ldd R2,z+44 
 047A 35A4              ldd R3,z+45 
 047C 46A4              ldd R4,z+46 
 047E 57A4              ldd R5,z+47 
 0480 5A92              st -y,R5 
 0482 4A92              st -y,R4 
 0484 3A92              st -y,R3 
 0486 2A92              st -y,R2 
 0488 0E940000          xcall empy32fs 
 048C FE01              movw R30,R28 
 048E            ; stack offset 4 
 048E 24A4              ldd R2,z+44 
 0490 35A4              ldd R3,z+45 
 0492 46A4              ldd R4,z+46 
 0494 57A4              ldd R5,z+47 
 0496 5A92              st -y,R5 
 0498 4A92              st -y,R4 
 049A 3A92              st -y,R3 
 049C 2A92              st -y,R2 
 049E 0E940000          xcall empy32f 
 04A2 FE01              movw R30,R28 
 04A4 04A7              std z+44,R16 
 04A6 15A7              std z+45,R17 
 04A8 26A7              std z+46,R18 
 04AA 37A7              std z+47,R19 
 04AC                   .dbline 35 
 04AC           ;     wpi=sin(theta); 
 04AC FE01              movw R30,R28 
 04AE 04A9              ldd R16,z+52 
 04B0 15A9              ldd R17,z+53 
 04B2 26A9              ldd R18,z+54 
 04B4 37A9              ldd R19,z+55 
 04B6 0E940000          xcall _sin 
 04BA FE01              movw R30,R28 
 04BC 00AB              std z+48,R16 
 04BE 11AB              std z+49,R17 
 04C0 22AB              std z+50,R18 
 04C2 33AB              std z+51,R19 
 04C4                   .dbline 36 
 04C4           ;     wr=1.0; 
 04C4 00E0              ldi R16,L19 
 04C8 0E940000          xcall lpm32 
 04CC FE01              movw R30,R28 
 04CE 048B              std z+20,R16 
 04D0 158B              std z+21,R17 
 04D2 268B              std z+22,R18 
 04D4 378B              std z+23,R19 
 04D6                   .dbline 37 
 04D6           ;     wi=0.0; 
 04D6 00E0              ldi R16,L20 
 04DA 0E940000          xcall lpm32 
 04DE FE01              movw R30,R28 
 04E0 008B              std z+16,R16 
 04E2 118B              std z+17,R17 
 04E4 228B              std z+18,R18 
 04E6 338B              std z+19,R19 
 04E8                   .dbline 38 
 04E8 41E0              ldi R20,1 
 04EA 50E0              ldi R21,0 
 04EC 60E0              ldi R22,0 
 04EE 70E0              ldi R23,0 
 04F0 FE01              movw R30,R28 
 04F2 44A3              std z+36,R20 
 04F4 55A3              std z+37,R21 
 04F6 66A3              std z+38,R22 
 04F8 77A3              std z+39,R23 
 04FA 7BC2              xjmp L24 
 04FC           L21: 
 04FC                   .dbline 38 
 04FC           ;     for (m=1;m