libavcodec/mpegaudiodec.c:1938: error: Buffer Overrun L2
  Offset: [0, 9] Size: 9 by call to `mp_decode_frame`.

libavcodec/mpegaudiodec.c:1924:19: Call
1922.             return AVERROR_INVALIDDATA;
1923.         }
1924.         header = (AV_RB32(buf) & 0x000fffff) | s->syncword; // patch header
                        ^
1925. 
1926.         if (ff_mpa_check_header(header) < 0) // Bad header, discard block

libavutil/bswap.h:66:1: Parameter `x`
  64. 
  65. #ifndef av_bswap32
  66. static av_always_inline av_const uint32_t av_bswap32(uint32_t x)
      ^
  67. {
  68.     return AV_BSWAP32C(x);

libavutil/bswap.h:68:5: Assignment
  66. static av_always_inline av_const uint32_t av_bswap32(uint32_t x)
  67. {
  68.     return AV_BSWAP32C(x);
          ^
  69. }
  70. #endif

libavcodec/mpegaudiodec.c:1924:9: Assignment
1922.             return AVERROR_INVALIDDATA;
1923.         }
1924.         header = (AV_RB32(buf) & 0x000fffff) | s->syncword; // patch header
              ^
1925. 
1926.         if (ff_mpa_check_header(header) < 0) // Bad header, discard block

libavcodec/mpegaudiodec.c:1929:9: Call
1927.             break;
1928. 
1929.         avpriv_mpegaudio_decode_header((MPADecodeHeader *)m, header);
              ^
1930. 
1931.         if (ch + m->nb_channels > avctx->channels) {

libavcodec/mpegaudiodecheader.c:40:9: Assignment
  38.     if (header & (1<<20)) {
  39.         s->lsf = (header & (1<<19)) ? 0 : 1;
  40.         mpeg25 = 0;
              ^
  41.     } else {
  42.         s->lsf = 1;

libavcodec/mpegaudiodecheader.c:50:5: Assignment
  48.     sample_rate_index = (header >> 10) & 3;
  49.     sample_rate = avpriv_mpa_freq_tab[sample_rate_index] >> (s->lsf + mpeg25);
  50.     sample_rate_index += 3 * (s->lsf + mpeg25);
          ^
  51.     s->sample_rate_index = sample_rate_index;
  52.     s->error_protection = ((header >> 16) & 1) ^ 1;

libavcodec/mpegaudiodecheader.c:51:5: Assignment
  49.     sample_rate = avpriv_mpa_freq_tab[sample_rate_index] >> (s->lsf + mpeg25);
  50.     sample_rate_index += 3 * (s->lsf + mpeg25);
  51.     s->sample_rate_index = sample_rate_index;
          ^
  52.     s->error_protection = ((header >> 16) & 1) ^ 1;
  53.     s->sample_rate = sample_rate;

libavcodec/mpegaudiodec.c:1938:21: Call
1936.         ch += m->nb_channels;
1937. 
1938.         out_size += mp_decode_frame(m, outptr, buf, fsize);
                          ^
1939.         buf      += fsize;
1940.         len      -= fsize;

libavcodec/mpegaudiodec.c:1546:1: Parameter `s->sample_rate_index`
  1544. }
  1545. 
  1546. static int mp_decode_frame(MPADecodeContext *s, OUT_INT *samples,
        ^
  1547.                            const uint8_t *buf, int buf_size)
  1548. {

libavcodec/mpegaudiodec.c:1570:21: Call
  1568.         s->avctx->frame_size = s->lsf ? 576 : 1152;
  1569.     default:
  1570.         nb_frames = mp_decode_layer3(s);
                            ^
  1571. 
  1572.         s->last_buf_size=0;

libavcodec/mpegaudiodec.c:1293:1: Parameter `s->sample_rate_index`
    1291. 
    1292. /* main layer3 decoding function */
    1293. static int mp_decode_layer3(MPADecodeContext *s)
          ^
    1294. {
    1295.     int nb_granules, main_data_begin;

libavcodec/mpegaudiodec.c:1524:13: Call
    1522.             }
    1523. 
    1524.             exponents_from_scale_factors(s, g, exponents);
                      ^
    1525. 
    1526.             /* read Huffman coded residue */

libavcodec/mpegaudiodec.c:777:1: <Offset trace>
775. }
776. 
777. static void exponents_from_scale_factors(MPADecodeContext *s, GranuleDef *g,
     ^
778.                                          int16_t *exponents)
779. {

libavcodec/mpegaudiodec.c:777:1: Parameter `s->sample_rate_index`
      775. }
      776. 
      777. static void exponents_from_scale_factors(MPADecodeContext *s, GranuleDef *g,
           ^
      778.                                          int16_t *exponents)
      779. {

libavcodec/mpegaudiodectab.h:572:1: <Length trace>
570. 
571. /* band size tables */
572. static const uint8_t band_size_long[9][22] = {
     ^
573. { 4, 4, 4, 4, 4, 4, 6, 6, 8, 8, 10,
574.   12, 16, 20, 24, 28, 34, 42, 50, 54, 76, 158, }, /* 44100 */

libavcodec/mpegaudiodectab.h:572:1: Array declaration
      570. 
      571. /* band size tables */
      572. static const uint8_t band_size_long[9][22] = {
           ^
      573. { 4, 4, 4, 4, 4, 4, 6, 6, 8, 8, 10,
      574.   12, 16, 20, 24, 28, 34, 42, 50, 54, 76, 158, }, /* 44100 */

libavcodec/mpegaudiodec.c:788:5: Array access: Offset: [0, 9] Size: 9 by call to `mp_decode_frame` 
      786.     shift   = g->scalefac_scale + 1;
      787. 
      788.     bstab  = band_size_long[s->sample_rate_index];
               ^
      789.     pretab = mpa_pretab[g->preflag];
      790.     for (i = 0; i < g->long_end; i++) {

static void exponents_from_scale_factors(MPADecodeContext *s, GranuleDef *g,
                                         int16_t *exponents)
{
    const uint8_t *bstab, *pretab;
    int len, i, j, k, l, v0, shift, gain, gains[3];
    int16_t *exp_ptr;
    exp_ptr = exponents;
    gain    = g->global_gain - 210;
    shift   = g->scalefac_scale + 1;
    bstab  = band_size_long[s->sample_rate_index];
    pretab = mpa_pretab[g->preflag];
    for (i = 0; i < g->long_end; i++) {
        v0 = gain - ((g->scale_factors[i] + pretab[i]) << shift) + 400;
        len = bstab[i];
        for (j = len; j > 0; j--)
            *exp_ptr++ = v0;
    }
    if (g->short_start < 13) {
        bstab    = band_size_short[s->sample_rate_index];
        gains[0] = gain - (g->subblock_gain[0] << 3);
        gains[1] = gain - (g->subblock_gain[1] << 3);
        gains[2] = gain - (g->subblock_gain[2] << 3);
        k        = g->long_end;
        for (i = g->short_start; i < 13; i++) {
            len = bstab[i];
            for (l = 0; l < 3; l++) {
                v0 = gains[l] - (g->scale_factors[k++] << shift) + 400;
                for (j = len; j > 0; j--)
                    *exp_ptr++ = v0;
            }
        }
    }
}
['static int decode_frame_mp3on4(AVCodecContext *avctx, void *data,\n                               int *got_frame_ptr, AVPacket *avpkt)\n{\n    const uint8_t *buf     = avpkt->data;\n    int buf_size           = avpkt->size;\n    MP3On4DecodeContext *s = avctx->priv_data;\n    MPADecodeContext *m;\n    int fsize, len = buf_size, out_size = 0;\n    uint32_t header;\n    OUT_INT *out_samples;\n    OUT_INT *outptr, *bp;\n    int fr, j, n, ch, ret;\n    s->frame->nb_samples = MPA_FRAME_SIZE;\n    if ((ret = avctx->get_buffer(avctx, s->frame)) < 0) {\n        av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\\n");\n        return ret;\n    }\n    out_samples = (OUT_INT *)s->frame->data[0];\n    if (buf_size < HEADER_SIZE)\n        return AVERROR_INVALIDDATA;\n    outptr = s->frames == 1 ? out_samples : s->decoded_buf;\n    avctx->bit_rate = 0;\n    ch = 0;\n    for (fr = 0; fr < s->frames; fr++) {\n        fsize = AV_RB16(buf) >> 4;\n        fsize = FFMIN3(fsize, len, MPA_MAX_CODED_FRAME_SIZE);\n        m     = s->mp3decctx[fr];\n        assert(m != NULL);\n        if (fsize < HEADER_SIZE) {\n            av_log(avctx, AV_LOG_ERROR, "Frame size smaller than header size\\n");\n            return AVERROR_INVALIDDATA;\n        }\n        header = (AV_RB32(buf) & 0x000fffff) | s->syncword;\n        if (ff_mpa_check_header(header) < 0)\n            break;\n        avpriv_mpegaudio_decode_header((MPADecodeHeader *)m, header);\n        if (ch + m->nb_channels > avctx->channels) {\n            av_log(avctx, AV_LOG_ERROR, "frame channel count exceeds codec "\n                                        "channel count\\n");\n            return AVERROR_INVALIDDATA;\n        }\n        ch += m->nb_channels;\n        out_size += mp_decode_frame(m, outptr, buf, fsize);\n        buf      += fsize;\n        len      -= fsize;\n        if (s->frames > 1) {\n            n = m->avctx->frame_size*m->nb_channels;\n            bp = out_samples + s->coff[fr];\n            if (m->nb_channels == 1) {\n                for (j = 0; j < n; j++) {\n                    *bp = s->decoded_buf[j];\n                    bp += avctx->channels;\n                }\n            } else {\n                for (j = 0; j < n; j++) {\n                    bp[0] = s->decoded_buf[j++];\n                    bp[1] = s->decoded_buf[j];\n                    bp   += avctx->channels;\n                }\n            }\n        }\n        avctx->bit_rate += m->bit_rate;\n    }\n    avctx->sample_rate = s->mp3decctx[0]->sample_rate;\n    s->frame->nb_samples = out_size / (avctx->channels * sizeof(OUT_INT));\n    *got_frame_ptr   = 1;\n    *(AVFrame *)data = *s->frame;\n    return buf_size;\n}', 'static av_always_inline av_const uint32_t av_bswap32(uint32_t x)\n{\n    return AV_BSWAP32C(x);\n}', 'int avpriv_mpegaudio_decode_header(MPADecodeHeader *s, uint32_t header)\n{\n    int sample_rate, frame_size, mpeg25, padding;\n    int sample_rate_index, bitrate_index;\n    if (header & (1<<20)) {\n        s->lsf = (header & (1<<19)) ? 0 : 1;\n        mpeg25 = 0;\n    } else {\n        s->lsf = 1;\n        mpeg25 = 1;\n    }\n    s->layer = 4 - ((header >> 17) & 3);\n    sample_rate_index = (header >> 10) & 3;\n    sample_rate = avpriv_mpa_freq_tab[sample_rate_index] >> (s->lsf + mpeg25);\n    sample_rate_index += 3 * (s->lsf + mpeg25);\n    s->sample_rate_index = sample_rate_index;\n    s->error_protection = ((header >> 16) & 1) ^ 1;\n    s->sample_rate = sample_rate;\n    bitrate_index = (header >> 12) & 0xf;\n    padding = (header >> 9) & 1;\n    s->mode = (header >> 6) & 3;\n    s->mode_ext = (header >> 4) & 3;\n    if (s->mode == MPA_MONO)\n        s->nb_channels = 1;\n    else\n        s->nb_channels = 2;\n    if (bitrate_index != 0) {\n        frame_size = avpriv_mpa_bitrate_tab[s->lsf][s->layer - 1][bitrate_index];\n        s->bit_rate = frame_size * 1000;\n        switch(s->layer) {\n        case 1:\n            frame_size = (frame_size * 12000) / sample_rate;\n            frame_size = (frame_size + padding) * 4;\n            break;\n        case 2:\n            frame_size = (frame_size * 144000) / sample_rate;\n            frame_size += padding;\n            break;\n        default:\n        case 3:\n            frame_size = (frame_size * 144000) / (sample_rate << s->lsf);\n            frame_size += padding;\n            break;\n        }\n        s->frame_size = frame_size;\n    } else {\n        return 1;\n    }\n#if defined(DEBUG)\n    av_dlog(NULL, "layer%d, %d Hz, %d kbits/s, ",\n           s->layer, s->sample_rate, s->bit_rate);\n    if (s->nb_channels == 2) {\n        if (s->layer == 3) {\n            if (s->mode_ext & MODE_EXT_MS_STEREO)\n                av_dlog(NULL, "ms-");\n            if (s->mode_ext & MODE_EXT_I_STEREO)\n                av_dlog(NULL, "i-");\n        }\n        av_dlog(NULL, "stereo");\n    } else {\n        av_dlog(NULL, "mono");\n    }\n    av_dlog(NULL, "\\n");\n#endif\n    return 0;\n}', 'static int mp_decode_frame(MPADecodeContext *s, OUT_INT *samples,\n                           const uint8_t *buf, int buf_size)\n{\n    int i, nb_frames, ch, ret;\n    OUT_INT *samples_ptr;\n    init_get_bits(&s->gb, buf + HEADER_SIZE, (buf_size - HEADER_SIZE) * 8);\n    if (s->error_protection)\n        skip_bits(&s->gb, 16);\n    switch(s->layer) {\n    case 1:\n        s->avctx->frame_size = 384;\n        nb_frames = mp_decode_layer1(s);\n        break;\n    case 2:\n        s->avctx->frame_size = 1152;\n        nb_frames = mp_decode_layer2(s);\n        break;\n    case 3:\n        s->avctx->frame_size = s->lsf ? 576 : 1152;\n    default:\n        nb_frames = mp_decode_layer3(s);\n        s->last_buf_size=0;\n        if (s->in_gb.buffer) {\n            align_get_bits(&s->gb);\n            i = get_bits_left(&s->gb)>>3;\n            if (i >= 0 && i <= BACKSTEP_SIZE) {\n                memmove(s->last_buf, s->gb.buffer + (get_bits_count(&s->gb)>>3), i);\n                s->last_buf_size=i;\n            } else\n                av_log(s->avctx, AV_LOG_ERROR, "invalid old backstep %d\\n", i);\n            s->gb           = s->in_gb;\n            s->in_gb.buffer = NULL;\n        }\n        align_get_bits(&s->gb);\n        assert((get_bits_count(&s->gb) & 7) == 0);\n        i = get_bits_left(&s->gb) >> 3;\n        if (i < 0 || i > BACKSTEP_SIZE || nb_frames < 0) {\n            if (i < 0)\n                av_log(s->avctx, AV_LOG_ERROR, "invalid new backstep %d\\n", i);\n            i = FFMIN(BACKSTEP_SIZE, buf_size - HEADER_SIZE);\n        }\n        assert(i <= buf_size - HEADER_SIZE && i >= 0);\n        memcpy(s->last_buf + s->last_buf_size, s->gb.buffer + buf_size - HEADER_SIZE - i, i);\n        s->last_buf_size += i;\n    }\n    if (!samples) {\n        s->frame.nb_samples = s->avctx->frame_size;\n        if ((ret = s->avctx->get_buffer(s->avctx, &s->frame)) < 0) {\n            av_log(s->avctx, AV_LOG_ERROR, "get_buffer() failed\\n");\n            return ret;\n        }\n        samples = (OUT_INT *)s->frame.data[0];\n    }\n    for (ch = 0; ch < s->nb_channels; ch++) {\n        samples_ptr = samples + ch;\n        for (i = 0; i < nb_frames; i++) {\n            RENAME(ff_mpa_synth_filter)(\n                         &s->mpadsp,\n                         s->synth_buf[ch], &(s->synth_buf_offset[ch]),\n                         RENAME(ff_mpa_synth_window), &s->dither_state,\n                         samples_ptr, s->nb_channels,\n                         s->sb_samples[ch][i]);\n            samples_ptr += 32 * s->nb_channels;\n        }\n    }\n    return nb_frames * 32 * sizeof(OUT_INT) * s->nb_channels;\n}', 'static int mp_decode_layer3(MPADecodeContext *s)\n{\n    int nb_granules, main_data_begin;\n    int gr, ch, blocksplit_flag, i, j, k, n, bits_pos;\n    GranuleDef *g;\n    int16_t exponents[576];\n    if (s->lsf) {\n        main_data_begin = get_bits(&s->gb, 8);\n        skip_bits(&s->gb, s->nb_channels);\n        nb_granules = 1;\n    } else {\n        main_data_begin = get_bits(&s->gb, 9);\n        if (s->nb_channels == 2)\n            skip_bits(&s->gb, 3);\n        else\n            skip_bits(&s->gb, 5);\n        nb_granules = 2;\n        for (ch = 0; ch < s->nb_channels; ch++) {\n            s->granules[ch][0].scfsi = 0;\n            s->granules[ch][1].scfsi = get_bits(&s->gb, 4);\n        }\n    }\n    for (gr = 0; gr < nb_granules; gr++) {\n        for (ch = 0; ch < s->nb_channels; ch++) {\n            av_dlog(s->avctx, "gr=%d ch=%d: side_info\\n", gr, ch);\n            g = &s->granules[ch][gr];\n            g->part2_3_length = get_bits(&s->gb, 12);\n            g->big_values     = get_bits(&s->gb,  9);\n            if (g->big_values > 288) {\n                av_log(s->avctx, AV_LOG_ERROR, "big_values too big\\n");\n                return AVERROR_INVALIDDATA;\n            }\n            g->global_gain = get_bits(&s->gb, 8);\n            if ((s->mode_ext & (MODE_EXT_MS_STEREO | MODE_EXT_I_STEREO)) ==\n                MODE_EXT_MS_STEREO)\n                g->global_gain -= 2;\n            if (s->lsf)\n                g->scalefac_compress = get_bits(&s->gb, 9);\n            else\n                g->scalefac_compress = get_bits(&s->gb, 4);\n            blocksplit_flag = get_bits1(&s->gb);\n            if (blocksplit_flag) {\n                g->block_type = get_bits(&s->gb, 2);\n                if (g->block_type == 0) {\n                    av_log(s->avctx, AV_LOG_ERROR, "invalid block type\\n");\n                    return AVERROR_INVALIDDATA;\n                }\n                g->switch_point = get_bits1(&s->gb);\n                for (i = 0; i < 2; i++)\n                    g->table_select[i] = get_bits(&s->gb, 5);\n                for (i = 0; i < 3; i++)\n                    g->subblock_gain[i] = get_bits(&s->gb, 3);\n                ff_init_short_region(s, g);\n            } else {\n                int region_address1, region_address2;\n                g->block_type = 0;\n                g->switch_point = 0;\n                for (i = 0; i < 3; i++)\n                    g->table_select[i] = get_bits(&s->gb, 5);\n                region_address1 = get_bits(&s->gb, 4);\n                region_address2 = get_bits(&s->gb, 3);\n                av_dlog(s->avctx, "region1=%d region2=%d\\n",\n                        region_address1, region_address2);\n                ff_init_long_region(s, g, region_address1, region_address2);\n            }\n            ff_region_offset2size(g);\n            ff_compute_band_indexes(s, g);\n            g->preflag = 0;\n            if (!s->lsf)\n                g->preflag = get_bits1(&s->gb);\n            g->scalefac_scale     = get_bits1(&s->gb);\n            g->count1table_select = get_bits1(&s->gb);\n            av_dlog(s->avctx, "block_type=%d switch_point=%d\\n",\n                    g->block_type, g->switch_point);\n        }\n    }\n    if (!s->adu_mode) {\n        int skip;\n        const uint8_t *ptr = s->gb.buffer + (get_bits_count(&s->gb)>>3);\n        int extrasize = av_clip(get_bits_left(&s->gb) >> 3, 0, EXTRABYTES);\n        assert((get_bits_count(&s->gb) & 7) == 0);\n        av_dlog(s->avctx, "seekback: %d\\n", main_data_begin);\n        memcpy(s->last_buf + s->last_buf_size, ptr, extrasize);\n        s->in_gb = s->gb;\n        init_get_bits(&s->gb, s->last_buf, s->last_buf_size*8);\n#if !UNCHECKED_BITSTREAM_READER\n        s->gb.size_in_bits_plus8 += extrasize * 8;\n#endif\n        s->last_buf_size <<= 3;\n        for (gr = 0; gr < nb_granules && (s->last_buf_size >> 3) < main_data_begin; gr++) {\n            for (ch = 0; ch < s->nb_channels; ch++) {\n                g = &s->granules[ch][gr];\n                s->last_buf_size += g->part2_3_length;\n                memset(g->sb_hybrid, 0, sizeof(g->sb_hybrid));\n            }\n        }\n        skip = s->last_buf_size - 8 * main_data_begin;\n        if (skip >= s->gb.size_in_bits && s->in_gb.buffer) {\n            skip_bits_long(&s->in_gb, skip - s->gb.size_in_bits);\n            s->gb           = s->in_gb;\n            s->in_gb.buffer = NULL;\n        } else {\n            skip_bits_long(&s->gb, skip);\n        }\n    } else {\n        gr = 0;\n    }\n    for (; gr < nb_granules; gr++) {\n        for (ch = 0; ch < s->nb_channels; ch++) {\n            g = &s->granules[ch][gr];\n            bits_pos = get_bits_count(&s->gb);\n            if (!s->lsf) {\n                uint8_t *sc;\n                int slen, slen1, slen2;\n                slen1 = slen_table[0][g->scalefac_compress];\n                slen2 = slen_table[1][g->scalefac_compress];\n                av_dlog(s->avctx, "slen1=%d slen2=%d\\n", slen1, slen2);\n                if (g->block_type == 2) {\n                    n = g->switch_point ? 17 : 18;\n                    j = 0;\n                    if (slen1) {\n                        for (i = 0; i < n; i++)\n                            g->scale_factors[j++] = get_bits(&s->gb, slen1);\n                    } else {\n                        for (i = 0; i < n; i++)\n                            g->scale_factors[j++] = 0;\n                    }\n                    if (slen2) {\n                        for (i = 0; i < 18; i++)\n                            g->scale_factors[j++] = get_bits(&s->gb, slen2);\n                        for (i = 0; i < 3; i++)\n                            g->scale_factors[j++] = 0;\n                    } else {\n                        for (i = 0; i < 21; i++)\n                            g->scale_factors[j++] = 0;\n                    }\n                } else {\n                    sc = s->granules[ch][0].scale_factors;\n                    j = 0;\n                    for (k = 0; k < 4; k++) {\n                        n = k == 0 ? 6 : 5;\n                        if ((g->scfsi & (0x8 >> k)) == 0) {\n                            slen = (k < 2) ? slen1 : slen2;\n                            if (slen) {\n                                for (i = 0; i < n; i++)\n                                    g->scale_factors[j++] = get_bits(&s->gb, slen);\n                            } else {\n                                for (i = 0; i < n; i++)\n                                    g->scale_factors[j++] = 0;\n                            }\n                        } else {\n                            for (i = 0; i < n; i++) {\n                                g->scale_factors[j] = sc[j];\n                                j++;\n                            }\n                        }\n                    }\n                    g->scale_factors[j++] = 0;\n                }\n            } else {\n                int tindex, tindex2, slen[4], sl, sf;\n                if (g->block_type == 2)\n                    tindex = g->switch_point ? 2 : 1;\n                else\n                    tindex = 0;\n                sf = g->scalefac_compress;\n                if ((s->mode_ext & MODE_EXT_I_STEREO) && ch == 1) {\n                    sf >>= 1;\n                    if (sf < 180) {\n                        lsf_sf_expand(slen, sf, 6, 6, 0);\n                        tindex2 = 3;\n                    } else if (sf < 244) {\n                        lsf_sf_expand(slen, sf - 180, 4, 4, 0);\n                        tindex2 = 4;\n                    } else {\n                        lsf_sf_expand(slen, sf - 244, 3, 0, 0);\n                        tindex2 = 5;\n                    }\n                } else {\n                    if (sf < 400) {\n                        lsf_sf_expand(slen, sf, 5, 4, 4);\n                        tindex2 = 0;\n                    } else if (sf < 500) {\n                        lsf_sf_expand(slen, sf - 400, 5, 4, 0);\n                        tindex2 = 1;\n                    } else {\n                        lsf_sf_expand(slen, sf - 500, 3, 0, 0);\n                        tindex2 = 2;\n                        g->preflag = 1;\n                    }\n                }\n                j = 0;\n                for (k = 0; k < 4; k++) {\n                    n  = lsf_nsf_table[tindex2][tindex][k];\n                    sl = slen[k];\n                    if (sl) {\n                        for (i = 0; i < n; i++)\n                            g->scale_factors[j++] = get_bits(&s->gb, sl);\n                    } else {\n                        for (i = 0; i < n; i++)\n                            g->scale_factors[j++] = 0;\n                    }\n                }\n                for (; j < 40; j++)\n                    g->scale_factors[j] = 0;\n            }\n            exponents_from_scale_factors(s, g, exponents);\n            huffman_decode(s, g, exponents, bits_pos + g->part2_3_length);\n        }\n        if (s->nb_channels == 2)\n            compute_stereo(s, &s->granules[0][gr], &s->granules[1][gr]);\n        for (ch = 0; ch < s->nb_channels; ch++) {\n            g = &s->granules[ch][gr];\n            reorder_block(s, g);\n            compute_antialias(s, g);\n            compute_imdct(s, g, &s->sb_samples[ch][18 * gr][0], s->mdct_buf[ch]);\n        }\n    }\n    if (get_bits_count(&s->gb) < 0)\n        skip_bits_long(&s->gb, -get_bits_count(&s->gb));\n    return nb_granules * 18;\n}', 'static void exponents_from_scale_factors(MPADecodeContext *s, GranuleDef *g,\n                                         int16_t *exponents)\n{\n    const uint8_t *bstab, *pretab;\n    int len, i, j, k, l, v0, shift, gain, gains[3];\n    int16_t *exp_ptr;\n    exp_ptr = exponents;\n    gain    = g->global_gain - 210;\n    shift   = g->scalefac_scale + 1;\n    bstab  = band_size_long[s->sample_rate_index];\n    pretab = mpa_pretab[g->preflag];\n    for (i = 0; i < g->long_end; i++) {\n        v0 = gain - ((g->scale_factors[i] + pretab[i]) << shift) + 400;\n        len = bstab[i];\n        for (j = len; j > 0; j--)\n            *exp_ptr++ = v0;\n    }\n    if (g->short_start < 13) {\n        bstab    = band_size_short[s->sample_rate_index];\n        gains[0] = gain - (g->subblock_gain[0] << 3);\n        gains[1] = gain - (g->subblock_gain[1] << 3);\n        gains[2] = gain - (g->subblock_gain[2] << 3);\n        k        = g->long_end;\n        for (i = g->short_start; i < 13; i++) {\n            len = bstab[i];\n            for (l = 0; l < 3; l++) {\n                v0 = gains[l] - (g->scale_factors[k++] << shift) + 400;\n                for (j = len; j > 0; j--)\n                    *exp_ptr++ = v0;\n            }\n        }\n    }\n}']