libavcodec/vc1dec.c:2623: error: Buffer Overrun L2
  Offset: [-oo, 66] (⇐ [1, 3] + [-oo, 63]) Size: 4.

libavcodec/vc1dec.c:2619:13: <Offset trace>
2617. 
2618.         while (!last) {
2619.             vc1_decode_ac_coeff(v, &last, &skip, &value, codingset);
                  ^
2620.             i += skip;
2621.             if (i > 63)

libavcodec/vc1dec.c:2619:13: Call
2617. 
2618.         while (!last) {
2619.             vc1_decode_ac_coeff(v, &last, &skip, &value, codingset);
                  ^
2620.             i += skip;
2621.             if (i > 63)

libavcodec/vc1acdata.h:34:1: Array declaration
  32. };
  33. 
  34. static const uint8_t vc1_index_decode_table[AC_MODES][185][2] = {
      ^
  35. {
  36. {  0,  1}, {  0,  2}, {  0,  3}, {  0,  4}, {  0,  5}, {  0,  6}, {  0,  7}, {  0,  8},

libavcodec/vc1dec.c:2482:9: Assignment
  2480.     index = get_vlc2(gb, ff_vc1_ac_coeff_table[codingset].table, AC_VLC_BITS, 3);
  2481.     if (index != ff_vc1_ac_sizes[codingset] - 1) {
  2482.         run   = vc1_index_decode_table[codingset][index][0];
                ^
  2483.         level = vc1_index_decode_table[codingset][index][1];
  2484.         lst   = index >= vc1_last_decode_table[codingset] || get_bits_left(gb) < 0;

libavcodec/vc1dec.c:2529:5: Assignment
  2527. 
  2528.     *last  = lst;
  2529.     *skip  = run;
            ^
  2530.     *value = level;
  2531. }

libavcodec/vc1dec.c:2620:13: Assignment
2618.         while (!last) {
2619.             vc1_decode_ac_coeff(v, &last, &skip, &value, codingset);
2620.             i += skip;
                  ^
2621.             if (i > 63)
2622.                 break;

libavcodec/vc1dec.c:2540:1: <Length trace>
2538.  * @param codingset set of VLC to decode data
2539.  */
2540. static int vc1_decode_i_block(VC1Context *v, DCTELEM block[64], int n,
      ^
2541.                               int coded, int codingset)
2542. {

libavcodec/vc1dec.c:2540:1: Parameter `v->zz_8x8[*]`
2538.  * @param codingset set of VLC to decode data
2539.  */
2540. static int vc1_decode_i_block(VC1Context *v, DCTELEM block[64], int n,
      ^
2541.                               int coded, int codingset)
2542. {

libavcodec/vc1dec.c:2605:17: Assignment
2603.         if (v->s.ac_pred) {
2604.             if (!dc_pred_dir)
2605.                 zz_table = v->zz_8x8[2];
                      ^
2606.             else
2607.                 zz_table = v->zz_8x8[3];

libavcodec/vc1dec.c:2623:19: Array access: Offset: [-oo, 66] (⇐ [1, 3] + [-oo, 63]) Size: 4
2621.             if (i > 63)
2622.                 break;
2623.             block[zz_table[i++]] = value;
                        ^
2624.         }
2625. 

static int vc1_decode_i_block(VC1Context *v, DCTELEM block[64], int n,
                              int coded, int codingset)
{
    GetBitContext *gb = &v->s.gb;
    MpegEncContext *s = &v->s;
    int dc_pred_dir = 0;
    int i;
    int16_t *dc_val;
    int16_t *ac_val, *ac_val2;
    int dcdiff;
    if (n < 4) {
        dcdiff = get_vlc2(&s->gb, ff_msmp4_dc_luma_vlc[s->dc_table_index].table, DC_VLC_BITS, 3);
    } else {
        dcdiff = get_vlc2(&s->gb, ff_msmp4_dc_chroma_vlc[s->dc_table_index].table, DC_VLC_BITS, 3);
    }
    if (dcdiff < 0) {
        av_log(s->avctx, AV_LOG_ERROR, "Illegal DC VLC\n");
        return -1;
    }
    if (dcdiff) {
        if (dcdiff == 119  ) {
            if (v->pq == 1)      dcdiff = get_bits(gb, 10);
            else if (v->pq == 2) dcdiff = get_bits(gb, 9);
            else                 dcdiff = get_bits(gb, 8);
        } else {
            if (v->pq == 1)
                dcdiff = (dcdiff << 2) + get_bits(gb, 2) - 3;
            else if (v->pq == 2)
                dcdiff = (dcdiff << 1) + get_bits1(gb)   - 1;
        }
        if (get_bits1(gb))
            dcdiff = -dcdiff;
    }
    dcdiff += vc1_i_pred_dc(&v->s, v->overlap, v->pq, n, &dc_val, &dc_pred_dir);
    *dc_val = dcdiff;
    if (n < 4) {
        block[0] = dcdiff * s->y_dc_scale;
    } else {
        block[0] = dcdiff * s->c_dc_scale;
    }
    if (!coded) {
        goto not_coded;
    }
    i = 1;
    {
        int last = 0, skip, value;
        const uint8_t *zz_table;
        int scale;
        int k;
        scale = v->pq * 2 + v->halfpq;
        if (v->s.ac_pred) {
            if (!dc_pred_dir)
                zz_table = v->zz_8x8[2];
            else
                zz_table = v->zz_8x8[3];
        } else
            zz_table = v->zz_8x8[1];
        ac_val  = s->ac_val[0][0] + s->block_index[n] * 16;
        ac_val2 = ac_val;
        if (dc_pred_dir)
            ac_val -= 16;
        else
            ac_val -= 16 * s->block_wrap[n];
        while (!last) {
            vc1_decode_ac_coeff(v, &last, &skip, &value, codingset);
            i += skip;
            if (i > 63)
                break;
            block[zz_table[i++]] = value;
        }
        if (s->ac_pred) {
            if (dc_pred_dir) {
                for (k = 1; k < 8; k++)
                    block[k << v->left_blk_sh] += ac_val[k];
            } else {
                for (k = 1; k < 8; k++)
                    block[k << v->top_blk_sh] += ac_val[k + 8];
            }
        }
        for (k = 1; k < 8; k++) {
            ac_val2[k]     = block[k << v->left_blk_sh];
            ac_val2[k + 8] = block[k << v->top_blk_sh];
        }
        for (k = 1; k < 64; k++)
            if (block[k]) {
                block[k] *= scale;
                if (!v->pquantizer)
                    block[k] += (block[k] < 0) ? -v->pq : v->pq;
            }
        if (s->ac_pred) i = 63;
    }
not_coded:
    if (!coded) {
        int k, scale;
        ac_val  = s->ac_val[0][0] + s->block_index[n] * 16;
        ac_val2 = ac_val;
        i = 0;
        scale = v->pq * 2 + v->halfpq;
        memset(ac_val2, 0, 16 * 2);
        if (dc_pred_dir) {
            ac_val -= 16;
            if (s->ac_pred)
                memcpy(ac_val2, ac_val, 8 * 2);
        } else {
            ac_val -= 16 * s->block_wrap[n];
            if (s->ac_pred)
                memcpy(ac_val2 + 8, ac_val + 8, 8 * 2);
        }
        if (s->ac_pred) {
            if (dc_pred_dir) {
                for (k = 1; k < 8; k++) {
                    block[k << v->left_blk_sh] = ac_val[k] * scale;
                    if (!v->pquantizer && block[k << v->left_blk_sh])
                        block[k << v->left_blk_sh] += (block[k << v->left_blk_sh] < 0) ? -v->pq : v->pq;
                }
            } else {
                for (k = 1; k < 8; k++) {
                    block[k << v->top_blk_sh] = ac_val[k + 8] * scale;
                    if (!v->pquantizer && block[k << v->top_blk_sh])
                        block[k << v->top_blk_sh] += (block[k << v->top_blk_sh] < 0) ? -v->pq : v->pq;
                }
            }
            i = 63;
        }
    }
    s->block_last_index[n] = i;
    return 0;
}
['static int vc1_decode_i_block(VC1Context *v, DCTELEM block[64], int n,\n                              int coded, int codingset)\n{\n    GetBitContext *gb = &v->s.gb;\n    MpegEncContext *s = &v->s;\n    int dc_pred_dir = 0;\n    int i;\n    int16_t *dc_val;\n    int16_t *ac_val, *ac_val2;\n    int dcdiff;\n    if (n < 4) {\n        dcdiff = get_vlc2(&s->gb, ff_msmp4_dc_luma_vlc[s->dc_table_index].table, DC_VLC_BITS, 3);\n    } else {\n        dcdiff = get_vlc2(&s->gb, ff_msmp4_dc_chroma_vlc[s->dc_table_index].table, DC_VLC_BITS, 3);\n    }\n    if (dcdiff < 0) {\n        av_log(s->avctx, AV_LOG_ERROR, "Illegal DC VLC\\n");\n        return -1;\n    }\n    if (dcdiff) {\n        if (dcdiff == 119  ) {\n            if (v->pq == 1)      dcdiff = get_bits(gb, 10);\n            else if (v->pq == 2) dcdiff = get_bits(gb, 9);\n            else                 dcdiff = get_bits(gb, 8);\n        } else {\n            if (v->pq == 1)\n                dcdiff = (dcdiff << 2) + get_bits(gb, 2) - 3;\n            else if (v->pq == 2)\n                dcdiff = (dcdiff << 1) + get_bits1(gb)   - 1;\n        }\n        if (get_bits1(gb))\n            dcdiff = -dcdiff;\n    }\n    dcdiff += vc1_i_pred_dc(&v->s, v->overlap, v->pq, n, &dc_val, &dc_pred_dir);\n    *dc_val = dcdiff;\n    if (n < 4) {\n        block[0] = dcdiff * s->y_dc_scale;\n    } else {\n        block[0] = dcdiff * s->c_dc_scale;\n    }\n    if (!coded) {\n        goto not_coded;\n    }\n    i = 1;\n    {\n        int last = 0, skip, value;\n        const uint8_t *zz_table;\n        int scale;\n        int k;\n        scale = v->pq * 2 + v->halfpq;\n        if (v->s.ac_pred) {\n            if (!dc_pred_dir)\n                zz_table = v->zz_8x8[2];\n            else\n                zz_table = v->zz_8x8[3];\n        } else\n            zz_table = v->zz_8x8[1];\n        ac_val  = s->ac_val[0][0] + s->block_index[n] * 16;\n        ac_val2 = ac_val;\n        if (dc_pred_dir)\n            ac_val -= 16;\n        else\n            ac_val -= 16 * s->block_wrap[n];\n        while (!last) {\n            vc1_decode_ac_coeff(v, &last, &skip, &value, codingset);\n            i += skip;\n            if (i > 63)\n                break;\n            block[zz_table[i++]] = value;\n        }\n        if (s->ac_pred) {\n            if (dc_pred_dir) {\n                for (k = 1; k < 8; k++)\n                    block[k << v->left_blk_sh] += ac_val[k];\n            } else {\n                for (k = 1; k < 8; k++)\n                    block[k << v->top_blk_sh] += ac_val[k + 8];\n            }\n        }\n        for (k = 1; k < 8; k++) {\n            ac_val2[k]     = block[k << v->left_blk_sh];\n            ac_val2[k + 8] = block[k << v->top_blk_sh];\n        }\n        for (k = 1; k < 64; k++)\n            if (block[k]) {\n                block[k] *= scale;\n                if (!v->pquantizer)\n                    block[k] += (block[k] < 0) ? -v->pq : v->pq;\n            }\n        if (s->ac_pred) i = 63;\n    }\nnot_coded:\n    if (!coded) {\n        int k, scale;\n        ac_val  = s->ac_val[0][0] + s->block_index[n] * 16;\n        ac_val2 = ac_val;\n        i = 0;\n        scale = v->pq * 2 + v->halfpq;\n        memset(ac_val2, 0, 16 * 2);\n        if (dc_pred_dir) {\n            ac_val -= 16;\n            if (s->ac_pred)\n                memcpy(ac_val2, ac_val, 8 * 2);\n        } else {\n            ac_val -= 16 * s->block_wrap[n];\n            if (s->ac_pred)\n                memcpy(ac_val2 + 8, ac_val + 8, 8 * 2);\n        }\n        if (s->ac_pred) {\n            if (dc_pred_dir) {\n                for (k = 1; k < 8; k++) {\n                    block[k << v->left_blk_sh] = ac_val[k] * scale;\n                    if (!v->pquantizer && block[k << v->left_blk_sh])\n                        block[k << v->left_blk_sh] += (block[k << v->left_blk_sh] < 0) ? -v->pq : v->pq;\n                }\n            } else {\n                for (k = 1; k < 8; k++) {\n                    block[k << v->top_blk_sh] = ac_val[k + 8] * scale;\n                    if (!v->pquantizer && block[k << v->top_blk_sh])\n                        block[k << v->top_blk_sh] += (block[k << v->top_blk_sh] < 0) ? -v->pq : v->pq;\n                }\n            }\n            i = 63;\n        }\n    }\n    s->block_last_index[n] = i;\n    return 0;\n}', 'static void vc1_decode_ac_coeff(VC1Context *v, int *last, int *skip,\n                                int *value, int codingset)\n{\n    GetBitContext *gb = &v->s.gb;\n    int index, escape, run = 0, level = 0, lst = 0;\n    index = get_vlc2(gb, ff_vc1_ac_coeff_table[codingset].table, AC_VLC_BITS, 3);\n    if (index != ff_vc1_ac_sizes[codingset] - 1) {\n        run   = vc1_index_decode_table[codingset][index][0];\n        level = vc1_index_decode_table[codingset][index][1];\n        lst   = index >= vc1_last_decode_table[codingset] || get_bits_left(gb) < 0;\n        if (get_bits1(gb))\n            level = -level;\n    } else {\n        escape = decode210(gb);\n        if (escape != 2) {\n            index = get_vlc2(gb, ff_vc1_ac_coeff_table[codingset].table, AC_VLC_BITS, 3);\n            run   = vc1_index_decode_table[codingset][index][0];\n            level = vc1_index_decode_table[codingset][index][1];\n            lst   = index >= vc1_last_decode_table[codingset];\n            if (escape == 0) {\n                if (lst)\n                    level += vc1_last_delta_level_table[codingset][run];\n                else\n                    level += vc1_delta_level_table[codingset][run];\n            } else {\n                if (lst)\n                    run += vc1_last_delta_run_table[codingset][level] + 1;\n                else\n                    run += vc1_delta_run_table[codingset][level] + 1;\n            }\n            if (get_bits1(gb))\n                level = -level;\n        } else {\n            int sign;\n            lst = get_bits1(gb);\n            if (v->s.esc3_level_length == 0) {\n                if (v->pq < 8 || v->dquantfrm) {\n                    v->s.esc3_level_length = get_bits(gb, 3);\n                    if (!v->s.esc3_level_length)\n                        v->s.esc3_level_length = get_bits(gb, 2) + 8;\n                } else {\n                    v->s.esc3_level_length = get_unary(gb, 1, 6) + 2;\n                }\n                v->s.esc3_run_length = 3 + get_bits(gb, 2);\n            }\n            run   = get_bits(gb, v->s.esc3_run_length);\n            sign  = get_bits1(gb);\n            level = get_bits(gb, v->s.esc3_level_length);\n            if (sign)\n                level = -level;\n        }\n    }\n    *last  = lst;\n    *skip  = run;\n    *value = level;\n}']