const register MPA_INT *w, *w2, *p;
register const MPA_INT *w, *w2, *p;
static void synth_filter(MPADecodeContext *s1,                         int ch, int16_t *samples, int incr,                          int32_t sb_samples[SBLIMIT]){    int32_t tmp[32];    register MPA_INT *synth_buf;    const register MPA_INT *w, *w2, *p;    int j, offset, v;    int16_t *samples2;#if FRAC_BITS <= 15    int sum, sum2;#else    int64_t sum, sum2;#endif        dct32(tmp, sb_samples);        offset = s1->synth_buf_offset[ch];    synth_buf = s1->synth_buf[ch] + offset;    for(j=0;j<32;j++) {        v = tmp[j];#if FRAC_BITS <= 15        /* NOTE: can cause a loss in precision if very high amplitude           sound */        if (v > 32767)            v = 32767;        else if (v < -32768)            v = -32768;#endif        synth_buf[j] = v;    }    /* copy to avoid wrap */    memcpy(synth_buf + 512, synth_buf, 32 * sizeof(MPA_INT));    samples2 = samples + 31 * incr;    w = window;    w2 = window + 31;    sum = 0;    p = synth_buf + 16;    SUM8(sum, +=, w, p);    p = synth_buf + 48;    SUM8(sum, -=, w + 32, p);    *samples = round_sample(sum);    samples += incr;    w++;    /* we calculate two samples at the same time to avoid one memory       access per two sample */    for(j=1;j<16;j++) {        sum = 0;        sum2 = 0;        p = synth_buf + 16 + j;        SUM8P2(sum, +=, sum2, -=, w, w2, p);        p = synth_buf + 48 - j;        SUM8P2(sum, -=, sum2, -=, w + 32, w2 + 32, p);        *samples = round_sample(sum);        samples += incr;        *samples2 = round_sample(sum2);        samples2 -= incr;        w++;        w2--;    }        p = synth_buf + 32;    sum = 0;    SUM8(sum, -=, w + 32, p);    *samples = round_sample(sum);    offset = (offset - 32) & 511;    s1->synth_buf_offset[ch] = offset;}