libavcodec/atrac3plus.c:1724: error: Integer Overflow L2
  ([0, 92+max(65, `bc->bits_left`)] - 1):unsigned32 by call to `get_subband_flags`.

libavcodec/atrac3plus.c:1696:1: Parameter `bc->bits_left`
1694.  * @return result code: 0 = OK, otherwise - error code
1695.  */
1696. static int decode_tones_info(BitstreamContext *bc, Atrac3pChanUnitCtx *ctx,
      ^
1697.                              int num_channels, AVCodecContext *avctx)
1698. {

libavcodec/atrac3plus.c:1706:38: Call
1704.                sizeof(*ctx->channels[ch_num].tones_info) * ATRAC3P_SUBBANDS);
1705. 
1706.     ctx->waves_info->tones_present = bitstream_read_bit(bc);
                                           ^
1707.     if (!ctx->waves_info->tones_present)
1708.         return 0;

libavcodec/bitstream.h:145:1: Parameter `bc->bits_left`
  143. 
  144. /* Return one bit from the buffer. */
  145. static inline unsigned bitstream_read_bit(BitstreamContext *bc)
       ^
  146. {
  147.     if (!bc->bits_left)

libavcodec/bitstream.h:150:12: Call
  148.         refill_64(bc);
  149. 
  150.     return get_val(bc, 1);
                  ^
  151. }
  152. 

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: Assignment
    137.     bc->bits <<= n;
    138. #endif
    139.     bc->bits_left -= n;
             ^
    140. 
    141.     return ret;

libavcodec/atrac3plus.c:1712:39: Call
1710.     memset(ctx->waves_info->waves, 0, sizeof(ctx->waves_info->waves));
1711. 
1712.     ctx->waves_info->amplitude_mode = bitstream_read_bit(bc);
                                            ^
1713.     if (!ctx->waves_info->amplitude_mode) {
1714.         avpriv_report_missing_feature(avctx, "GHA amplitude mode 0");

libavcodec/bitstream.h:145:1: Parameter `bc->bits_left`
  143. 
  144. /* Return one bit from the buffer. */
  145. static inline unsigned bitstream_read_bit(BitstreamContext *bc)
       ^
  146. {
  147.     if (!bc->bits_left)

libavcodec/bitstream.h:150:12: Call
  148.         refill_64(bc);
  149. 
  150.     return get_val(bc, 1);
                  ^
  151. }
  152. 

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: Assignment
    137.     bc->bits <<= n;
    138. #endif
    139.     bc->bits_left -= n;
             ^
    140. 
    141.     return ret;

libavcodec/atrac3plus.c:1719:9: Call
1717. 
1718.     ctx->waves_info->num_tone_bands =
1719.         bitstream_read_vlc(bc, tone_vlc_tabs[0].table,
              ^
1720.                            tone_vlc_tabs[0].bits, 1) + 1;
1721. 

libavcodec/bitstream.h:313:1: Parameter `(*table)[*]`
  311.  * If the VLC code is invalid and max_depth > 1, then the number of bits removed
  312.  * is undefined. */
  313. static inline int bitstream_read_vlc(BitstreamContext *bc, VLC_TYPE (*table)[2],
       ^
  314.                                      int bits, int max_depth)
  315. {

libavcodec/bitstream.h:319:5: Assignment
  317.     unsigned idx = bitstream_peek(bc, bits);
  318.     int code = table[idx][0];
  319.     int n    = table[idx][1];
           ^
  320. 
  321.     if (max_depth > 1 && n < 0) {

libavcodec/bitstream.h:329:5: Call
  327.         }
  328.     }
  329.     skip_remaining(bc, n);
           ^
  330. 
  331.     return code;

libavcodec/bitstream.h:230:1: Parameter `n`
    228. }
    229. 
    230. static inline void skip_remaining(BitstreamContext *bc, unsigned n)
         ^
    231. {
    232. #ifdef BITSTREAM_READER_LE

libavcodec/bitstream.h:237:5: Assignment
    235.     bc->bits <<= n;
    236. #endif
    237.     bc->bits_left -= n;
             ^
    238. }
    239. 

libavcodec/atrac3plus.c:1723:9: Call
1721. 
1722.     if (num_channels == 2) {
1723.         get_subband_flags(bc, ctx->waves_info->tone_sharing, ctx->waves_info->num_tone_bands);
              ^
1724.         get_subband_flags(bc, ctx->waves_info->tone_master,  ctx->waves_info->num_tone_bands);
1725.         if (get_subband_flags(bc, ctx->waves_info->phase_shift,

libavcodec/atrac3plus.c:922:1: Parameter `bc->bits_left`
  920.  * @return: 0 = all flag bits are zero, 1 = there is at least one non-zero flag bit
  921.  */
  922. static int get_subband_flags(BitstreamContext *bc, uint8_t *out, int num_flags)
       ^
  923. {
  924.     int i, result;

libavcodec/atrac3plus.c:928:14: Call
  926.     memset(out, 0, num_flags);
  927. 
  928.     result = bitstream_read_bit(bc);
                    ^
  929.     if (result) {
  930.         if (bitstream_read_bit(bc))

libavcodec/bitstream.h:145:1: Parameter `bc->bits_left`
    143. 
    144. /* Return one bit from the buffer. */
    145. static inline unsigned bitstream_read_bit(BitstreamContext *bc)
         ^
    146. {
    147.     if (!bc->bits_left)

libavcodec/bitstream.h:150:12: Call
    148.         refill_64(bc);
    149. 
    150.     return get_val(bc, 1);
                    ^
    151. }
    152. 

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: Assignment
      137.     bc->bits <<= n;
      138. #endif
      139.     bc->bits_left -= n;
               ^
      140. 
      141.     return ret;

libavcodec/atrac3plus.c:1724:9: Call
1722.     if (num_channels == 2) {
1723.         get_subband_flags(bc, ctx->waves_info->tone_sharing, ctx->waves_info->num_tone_bands);
1724.         get_subband_flags(bc, ctx->waves_info->tone_master,  ctx->waves_info->num_tone_bands);
              ^
1725.         if (get_subband_flags(bc, ctx->waves_info->phase_shift,
1726.                               ctx->waves_info->num_tone_bands)) {

libavcodec/atrac3plus.c:922:1: Parameter `bc->bits_left`
  920.  * @return: 0 = all flag bits are zero, 1 = there is at least one non-zero flag bit
  921.  */
  922. static int get_subband_flags(BitstreamContext *bc, uint8_t *out, int num_flags)
       ^
  923. {
  924.     int i, result;

libavcodec/atrac3plus.c:928:14: Call
  926.     memset(out, 0, num_flags);
  927. 
  928.     result = bitstream_read_bit(bc);
                    ^
  929.     if (result) {
  930.         if (bitstream_read_bit(bc))

libavcodec/bitstream.h:145:1: Parameter `bc->bits_left`
    143. 
    144. /* Return one bit from the buffer. */
    145. static inline unsigned bitstream_read_bit(BitstreamContext *bc)
         ^
    146. {
    147.     if (!bc->bits_left)

libavcodec/bitstream.h:150:12: Call
    148.         refill_64(bc);
    149. 
    150.     return get_val(bc, 1);
                    ^
    151. }
    152. 

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: ([0, 92+max(65, bc->bits_left)] - 1):unsigned32 by call to `get_subband_flags` 
      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 int decode_tones_info(BitstreamContext *bc, Atrac3pChanUnitCtx *ctx,\n                             int num_channels, AVCodecContext *avctx)\n{\n    int ch_num, i, ret;\n    int band_has_tones[16];\n    for (ch_num = 0; ch_num < num_channels; ch_num++)\n        memset(ctx->channels[ch_num].tones_info, 0,\n               sizeof(*ctx->channels[ch_num].tones_info) * ATRAC3P_SUBBANDS);\n    ctx->waves_info->tones_present = bitstream_read_bit(bc);\n    if (!ctx->waves_info->tones_present)\n        return 0;\n    memset(ctx->waves_info->waves, 0, sizeof(ctx->waves_info->waves));\n    ctx->waves_info->amplitude_mode = bitstream_read_bit(bc);\n    if (!ctx->waves_info->amplitude_mode) {\n        avpriv_report_missing_feature(avctx, "GHA amplitude mode 0");\n        return AVERROR_PATCHWELCOME;\n    }\n    ctx->waves_info->num_tone_bands =\n        bitstream_read_vlc(bc, tone_vlc_tabs[0].table,\n                           tone_vlc_tabs[0].bits, 1) + 1;\n    if (num_channels == 2) {\n        get_subband_flags(bc, ctx->waves_info->tone_sharing, ctx->waves_info->num_tone_bands);\n        get_subband_flags(bc, ctx->waves_info->tone_master,  ctx->waves_info->num_tone_bands);\n        if (get_subband_flags(bc, ctx->waves_info->phase_shift,\n                              ctx->waves_info->num_tone_bands)) {\n            avpriv_report_missing_feature(avctx, "GHA Phase shifting");\n            return AVERROR_PATCHWELCOME;\n        }\n    }\n    ctx->waves_info->tones_index = 0;\n    for (ch_num = 0; ch_num < num_channels; ch_num++) {\n        for (i = 0; i < ctx->waves_info->num_tone_bands; i++)\n            band_has_tones[i] = !ch_num ? 1 : !ctx->waves_info->tone_sharing[i];\n        decode_tones_envelope(bc, ctx, ch_num, band_has_tones);\n        if ((ret = decode_band_numwavs(bc, ctx, ch_num, band_has_tones,\n                                       avctx)) < 0)\n            return ret;\n        decode_tones_frequency(bc, ctx, ch_num, band_has_tones);\n        decode_tones_amplitude(bc, ctx, ch_num, band_has_tones);\n        decode_tones_phase(bc, ctx, ch_num, band_has_tones);\n    }\n    if (num_channels == 2) {\n        for (i = 0; i < ctx->waves_info->num_tone_bands; i++) {\n            if (ctx->waves_info->tone_sharing[i])\n                ctx->channels[1].tones_info[i] = ctx->channels[0].tones_info[i];\n            if (ctx->waves_info->tone_master[i])\n                FFSWAP(Atrac3pWavesData, ctx->channels[0].tones_info[i],\n                       ctx->channels[1].tones_info[i]);\n        }\n    }\n    return 0;\n}', 'static inline unsigned bitstream_read_bit(BitstreamContext *bc)\n{\n    if (!bc->bits_left)\n        refill_64(bc);\n    return get_val(bc, 1);\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}', 'static inline int bitstream_read_vlc(BitstreamContext *bc, VLC_TYPE (*table)[2],\n                                     int bits, int max_depth)\n{\n    int nb_bits;\n    unsigned idx = bitstream_peek(bc, bits);\n    int code = table[idx][0];\n    int n    = table[idx][1];\n    if (max_depth > 1 && n < 0) {\n        skip_remaining(bc, bits);\n        code = set_idx(bc, code, &n, &nb_bits, table);\n        if (max_depth > 2 && n < 0) {\n            skip_remaining(bc, nb_bits);\n            code = set_idx(bc, code, &n, &nb_bits, table);\n        }\n    }\n    skip_remaining(bc, n);\n    return code;\n}', 'static inline void skip_remaining(BitstreamContext *bc, unsigned n)\n{\n#ifdef BITSTREAM_READER_LE\n    bc->bits >>= n;\n#else\n    bc->bits <<= n;\n#endif\n    bc->bits_left -= n;\n}', 'static int get_subband_flags(BitstreamContext *bc, uint8_t *out, int num_flags)\n{\n    int i, result;\n    memset(out, 0, num_flags);\n    result = bitstream_read_bit(bc);\n    if (result) {\n        if (bitstream_read_bit(bc))\n            for (i = 0; i < num_flags; i++)\n                out[i] = bitstream_read_bit(bc);\n        else\n            memset(out, 1, num_flags);\n    }\n    return result;\n}']