25                            float *synth_buf_ptr, 
int *synth_buf_offset,
 
   26                            float synth_buf2[32], 
const float window[512],
 
   27                            float out[32], 
const float in[32], 
float scale)
 
   29     float *synth_buf= synth_buf_ptr + *synth_buf_offset;
 
   34     for (i = 0; i < 16; i++){
 
   35         float a= synth_buf2[i     ];
 
   36         float b= synth_buf2[i + 16];
 
   39         for (j = 0; j < 512 - *synth_buf_offset; j += 64){
 
   40             a += window[i + j     ]*(-synth_buf[15 - i + j      ]);
 
   41             b += window[i + j + 16]*( synth_buf[     i + j      ]);
 
   42             c += window[i + j + 32]*( synth_buf[16 + i + j      ]);
 
   43             d += window[i + j + 48]*( synth_buf[31 - i + j      ]);
 
   45         for (     ; j < 512; j += 64){
 
   46             a += window[i + j     ]*(-synth_buf[15 - i + j - 512]);
 
   47             b += window[i + j + 16]*( synth_buf[     i + j - 512]);
 
   48             c += window[i + j + 32]*( synth_buf[16 + i + j - 512]);
 
   49             d += window[i + j + 48]*( synth_buf[31 - i + j - 512]);
 
   52         out[i + 16] = b*scale;
 
   54         synth_buf2[i + 16] = d;
 
   56     *synth_buf_offset= (*synth_buf_offset - 32)&511;