libavcodec/atrac3plus.c:1614: error: Integer Overflow L2
  ([1, +oo] - 6):unsigned32 by call to `bitstream_read`.

libavcodec/atrac3plus.c:1614:78: Call
1612.             if (ctx->waves_info->amplitude_mode)
1613.                 for (i = 0; i < dst[sb].num_wavs; i++)
1614.                     ctx->waves_info->waves[dst[sb].start_index + i].amp_sf = bitstream_read(bc, 6);
                                                                                   ^
1615.             else
1616.                 ctx->waves_info->waves[dst[sb].start_index].amp_sf = bitstream_read(bc, 6);

libavcodec/bitstream.h:183:1: Parameter `n`
  181. 
  182. /* Return n bits from the buffer. n has to be in the 0-32 range. */
  183. static inline uint32_t bitstream_read(BitstreamContext *bc, unsigned n)
       ^
  184. {
  185.     if (!n)

libavcodec/bitstream.h:194:12: Call
  192.     }
  193. 
  194.     return get_val(bc, n);
                  ^
  195. }
  196. 

libavcodec/bitstream.h:130:1: <LHS trace>
128. }
129. 
130. static inline uint64_t get_val(BitstreamContext *bc, unsigned n)
     ^
131. {
132. #ifdef BITSTREAM_READER_LE

libavcodec/bitstream.h:130:1: Parameter `bc->bits_left`
    128. }
    129. 
    130. static inline uint64_t get_val(BitstreamContext *bc, unsigned n)
         ^
    131. {
    132. #ifdef BITSTREAM_READER_LE

libavcodec/bitstream.h:130:1: <RHS trace>
128. }
129. 
130. static inline uint64_t get_val(BitstreamContext *bc, unsigned n)
     ^
131. {
132. #ifdef BITSTREAM_READER_LE

libavcodec/bitstream.h:130:1: Parameter `n`
    128. }
    129. 
    130. static inline uint64_t get_val(BitstreamContext *bc, unsigned n)
         ^
    131. {
    132. #ifdef BITSTREAM_READER_LE

libavcodec/bitstream.h:139:5: Binary operation: ([1, +oo] - 6):unsigned32 by call to `bitstream_read` 
    137.     bc->bits <<= n;
    138. #endif
    139.     bc->bits_left -= n;
             ^
    140. 
    141.     return ret;

static inline uint64_t get_val(BitstreamContext *bc, unsigned n)
{
#ifdef BITSTREAM_READER_LE
    uint64_t ret = bc->bits & ((UINT64_C(1) << n) - 1);
    bc->bits >>= n;
#else
    uint64_t ret = bc->bits >> (64 - n);
    bc->bits <<= n;
#endif
    bc->bits_left -= n;
    return ret;
}
['static void decode_tones_amplitude(BitstreamContext *bc, Atrac3pChanUnitCtx *ctx,\n                                   int ch_num, int band_has_tones[])\n{\n    int mode, sb, j, i, diff, maxdiff, fi, delta, pred;\n    Atrac3pWaveParam *wsrc, *wref;\n    int refwaves[48] = { 0 };\n    Atrac3pWavesData *dst = ctx->channels[ch_num].tones_info;\n    Atrac3pWavesData *ref = ctx->channels[0].tones_info;\n    if (ch_num) {\n        for (sb = 0; sb < ctx->waves_info->num_tone_bands; sb++) {\n            if (!band_has_tones[sb] || !dst[sb].num_wavs)\n                continue;\n            wsrc = &ctx->waves_info->waves[dst[sb].start_index];\n            wref = &ctx->waves_info->waves[ref[sb].start_index];\n            for (j = 0; j < dst[sb].num_wavs; j++) {\n                for (i = 0, fi = 0, maxdiff = 1024; i < ref[sb].num_wavs; i++) {\n                    diff = FFABS(wsrc[j].freq_index - wref[i].freq_index);\n                    if (diff < maxdiff) {\n                        maxdiff = diff;\n                        fi      = i;\n                    }\n                }\n                if (maxdiff < 8)\n                    refwaves[dst[sb].start_index + j] = fi + ref[sb].start_index;\n                else if (j < ref[sb].num_wavs)\n                    refwaves[dst[sb].start_index + j] = j + ref[sb].start_index;\n                else\n                    refwaves[dst[sb].start_index + j] = -1;\n            }\n        }\n    }\n    mode = bitstream_read(bc, ch_num + 1);\n    switch (mode) {\n    case 0:\n        for (sb = 0; sb < ctx->waves_info->num_tone_bands; sb++) {\n            if (!band_has_tones[sb] || !dst[sb].num_wavs)\n                continue;\n            if (ctx->waves_info->amplitude_mode)\n                for (i = 0; i < dst[sb].num_wavs; i++)\n                    ctx->waves_info->waves[dst[sb].start_index + i].amp_sf = bitstream_read(bc, 6);\n            else\n                ctx->waves_info->waves[dst[sb].start_index].amp_sf = bitstream_read(bc, 6);\n        }\n        break;\n    case 1:\n        for (sb = 0; sb < ctx->waves_info->num_tone_bands; sb++) {\n            if (!band_has_tones[sb] || !dst[sb].num_wavs)\n                continue;\n            if (ctx->waves_info->amplitude_mode)\n                for (i = 0; i < dst[sb].num_wavs; i++)\n                    ctx->waves_info->waves[dst[sb].start_index + i].amp_sf =\n                        bitstream_read_vlc(bc, tone_vlc_tabs[3].table,\n                                           tone_vlc_tabs[3].bits, 1) + 20;\n            else\n                ctx->waves_info->waves[dst[sb].start_index].amp_sf =\n                    bitstream_read_vlc(bc, tone_vlc_tabs[4].table,\n                                       tone_vlc_tabs[4].bits, 1) + 24;\n        }\n        break;\n    case 2:\n        for (sb = 0; sb < ctx->waves_info->num_tone_bands; sb++) {\n            if (!band_has_tones[sb] || !dst[sb].num_wavs)\n                continue;\n            for (i = 0; i < dst[sb].num_wavs; i++) {\n                delta = bitstream_read_vlc(bc, tone_vlc_tabs[5].table,\n                                           tone_vlc_tabs[5].bits, 1);\n                delta = sign_extend(delta, 5);\n                pred  = refwaves[dst[sb].start_index + i] >= 0 ?\n                        ctx->waves_info->waves[refwaves[dst[sb].start_index + i]].amp_sf : 34;\n                ctx->waves_info->waves[dst[sb].start_index + i].amp_sf = (pred + delta) & 0x3F;\n            }\n        }\n        break;\n    case 3:\n        for (sb = 0; sb < ctx->waves_info->num_tone_bands; sb++) {\n            if (!band_has_tones[sb])\n                continue;\n            for (i = 0; i < dst[sb].num_wavs; i++)\n                ctx->waves_info->waves[dst[sb].start_index + i].amp_sf =\n                    refwaves[dst[sb].start_index + i] >= 0\n                    ? ctx->waves_info->waves[refwaves[dst[sb].start_index + i]].amp_sf\n                    : 32;\n        }\n        break;\n    }\n}', 'static inline uint32_t bitstream_read(BitstreamContext *bc, unsigned n)\n{\n    if (!n)\n        return 0;\n    if (n > bc->bits_left) {\n        refill_32(bc);\n        if (bc->bits_left < 32)\n            bc->bits_left = n;\n    }\n    return get_val(bc, n);\n}', 'static inline uint64_t get_val(BitstreamContext *bc, unsigned n)\n{\n#ifdef BITSTREAM_READER_LE\n    uint64_t ret = bc->bits & ((UINT64_C(1) << n) - 1);\n    bc->bits >>= n;\n#else\n    uint64_t ret = bc->bits >> (64 - n);\n    bc->bits <<= n;\n#endif\n    bc->bits_left -= n;\n    return ret;\n}']