static inline void asv2_encode_block(ASV1Context *a, int16_t block[64])

{

    int i;

    int count = 0;



    for (count = 63; count > 3; count--) {

        const int index = ff_asv_scantab[count];

        if ((block[index] * a->q_intra_matrix[index] + (1 << 15)) >> 16)

            break;

    }



    count >>= 2;



    asv2_put_bits(&a->pb, 4, count);

    asv2_put_bits(&a->pb, 8, (block[0] + 32) >> 6);

    block[0] = 0;



    for (i = 0; i <= count; i++) {

        const int index = ff_asv_scantab[4 * i];

        int ccp         = 0;



        if ((block[index + 0] = (block[index + 0] *

                                 a->q_intra_matrix[index + 0] + (1 << 15)) >> 16))

            ccp |= 8;

        if ((block[index + 8] = (block[index + 8] *

                                 a->q_intra_matrix[index + 8] + (1 << 15)) >> 16))

            ccp |= 4;

        if ((block[index + 1] = (block[index + 1] *

                                 a->q_intra_matrix[index + 1] + (1 << 15)) >> 16))

            ccp |= 2;

        if ((block[index + 9] = (block[index + 9] *

                                 a->q_intra_matrix[index + 9] + (1 << 15)) >> 16))

            ccp |= 1;



        av_assert2(i || ccp < 8);

        if (i)

            put_bits(&a->pb, ff_asv_ac_ccp_tab[ccp][1], ff_asv_ac_ccp_tab[ccp][0]);

        else

            put_bits(&a->pb, ff_asv_dc_ccp_tab[ccp][1], ff_asv_dc_ccp_tab[ccp][0]);



        if (ccp) {

            if (ccp & 8)

                asv2_put_level(&a->pb, block[index + 0]);

            if (ccp & 4)

                asv2_put_level(&a->pb, block[index + 8]);

            if (ccp & 2)

                asv2_put_level(&a->pb, block[index + 1]);

            if (ccp & 1)

                asv2_put_level(&a->pb, block[index + 9]);

        }

    }

}

static inline void asv2_encode_block(ASV1Context *a, int16_t block[64])

{

    int i;

    int count = 0;



    for (count = 63; count > 3; count--) {

        const int index = ff_asv_scantab[count];

        if ((block[index] * a->q_intra_matrix[index] + (1 << 15)) >> 16)

            break;

    }



    count >>= 2;



    asv2_put_bits(&a->pb, 4, count);

    asv2_put_bits(&a->pb, 8, (block[0] + 32) >> 6);

    block[0] = 0;



    for (i = 0; i <= count; i++) {

        const int index = ff_asv_scantab[4 * i];

        int ccp         = 0;



        if ((block[index + 0] = (block[index + 0] *

                                 a->q_intra_matrix[index + 0] + (1 << 15)) >> 16))

            ccp |= 8;

        if ((block[index + 8] = (block[index + 8] *

                                 a->q_intra_matrix[index + 8] + (1 << 15)) >> 16))

            ccp |= 4;

        if ((block[index + 1] = (block[index + 1] *

                                 a->q_intra_matrix[index + 1] + (1 << 15)) >> 16))

            ccp |= 2;

        if ((block[index + 9] = (block[index + 9] *

                                 a->q_intra_matrix[index + 9] + (1 << 15)) >> 16))

            ccp |= 1;



        av_assert2(i || ccp < 8);

        if (i)

            put_bits(&a->pb, ff_asv_ac_ccp_tab[ccp][1], ff_asv_ac_ccp_tab[ccp][0]);

        else

            put_bits(&a->pb, ff_asv_dc_ccp_tab[ccp][1], ff_asv_dc_ccp_tab[ccp][0]);



        if (ccp) {

            if (ccp & 8)

                asv2_put_level(&a->pb, block[index + 0]);

            if (ccp & 4)

                asv2_put_level(&a->pb, block[index + 8]);

            if (ccp & 2)

                asv2_put_level(&a->pb, block[index + 1]);

            if (ccp & 1)

                asv2_put_level(&a->pb, block[index + 9]);

        }

    }

}

                asv2_put_level(&a->pb, block[index + 0]);                 asv2_put_level(&a->pb, block[index + 8]);                 asv2_put_level(&a->pb, block[index + 1]);                 asv2_put_level(&a->pb, block[index + 9]);
static inline void FUNC_0(ASV1Context *VAR_0, int16_t VAR_1[64])

{

    int VAR_2;

    int VAR_3 = 0;



    for (VAR_3 = 63; VAR_3 > 3; VAR_3--) {

        const int VAR_5 = ff_asv_scantab[VAR_3];

        if ((VAR_1[VAR_5] * VAR_0->q_intra_matrix[VAR_5] + (1 << 15)) >> 16)

            break;

    }



    VAR_3 >>= 2;



    asv2_put_bits(&VAR_0->pb, 4, VAR_3);

    asv2_put_bits(&VAR_0->pb, 8, (VAR_1[0] + 32) >> 6);

    VAR_1[0] = 0;



    for (VAR_2 = 0; VAR_2 <= VAR_3; VAR_2++) {

        const int VAR_5 = ff_asv_scantab[4 * VAR_2];

        int VAR_5         = 0;



        if ((VAR_1[VAR_5 + 0] = (VAR_1[VAR_5 + 0] *

                                 VAR_0->q_intra_matrix[VAR_5 + 0] + (1 << 15)) >> 16))

            VAR_5 |= 8;

        if ((VAR_1[VAR_5 + 8] = (VAR_1[VAR_5 + 8] *

                                 VAR_0->q_intra_matrix[VAR_5 + 8] + (1 << 15)) >> 16))

            VAR_5 |= 4;

        if ((VAR_1[VAR_5 + 1] = (VAR_1[VAR_5 + 1] *

                                 VAR_0->q_intra_matrix[VAR_5 + 1] + (1 << 15)) >> 16))

            VAR_5 |= 2;

        if ((VAR_1[VAR_5 + 9] = (VAR_1[VAR_5 + 9] *

                                 VAR_0->q_intra_matrix[VAR_5 + 9] + (1 << 15)) >> 16))

            VAR_5 |= 1;



        av_assert2(VAR_2 || VAR_5 < 8);

        if (VAR_2)

            put_bits(&VAR_0->pb, ff_asv_ac_ccp_tab[VAR_5][1], ff_asv_ac_ccp_tab[VAR_5][0]);

        else

            put_bits(&VAR_0->pb, ff_asv_dc_ccp_tab[VAR_5][1], ff_asv_dc_ccp_tab[VAR_5][0]);



        if (VAR_5) {

            if (VAR_5 & 8)

                asv2_put_level(&VAR_0->pb, VAR_1[VAR_5 + 0]);

            if (VAR_5 & 4)

                asv2_put_level(&VAR_0->pb, VAR_1[VAR_5 + 8]);

            if (VAR_5 & 2)

                asv2_put_level(&VAR_0->pb, VAR_1[VAR_5 + 1]);

            if (VAR_5 & 1)

                asv2_put_level(&VAR_0->pb, VAR_1[VAR_5 + 9]);

        }

    }

}

static inline void FUNC_0(ASV1Context *VAR_0, int16_t VAR_1[64])
{ int VAR_2; int VAR_3 = 0; for (VAR_3 = 63; VAR_3 > 3; VAR_3--) { const int VAR_5 = ff_asv_scantab[VAR_3]; if ((VAR_1[VAR_5] * VAR_0->q_intra_matrix[VAR_5] + (1 << 15)) >> 16)
break; } VAR_3 >>= 2; asv2_put_bits(&VAR_0->pb, 4, VAR_3); asv2_put_bits(&VAR_0->pb, 8, (VAR_1[0] + 32) >> 6); VAR_1[0] = 0; for (VAR_2 = 0; VAR_2 <= VAR_3; VAR_2++) { const int VAR_5 = ff_asv_scantab[4 * VAR_2]; int VAR_5         = 0; if ((VAR_1[VAR_5 + 0] = (VAR_1[VAR_5 + 0] *
VAR_0->q_intra_matrix[VAR_5 + 0] + (1 << 15)) >> 16))
VAR_5 |= 8; if ((VAR_1[VAR_5 + 8] = (VAR_1[VAR_5 + 8] *
VAR_0->q_intra_matrix[VAR_5 + 8] + (1 << 15)) >> 16))
VAR_5 |= 4; if ((VAR_1[VAR_5 + 1] = (VAR_1[VAR_5 + 1] *
VAR_0->q_intra_matrix[VAR_5 + 1] + (1 << 15)) >> 16))
VAR_5 |= 2; if ((VAR_1[VAR_5 + 9] = (VAR_1[VAR_5 + 9] *
VAR_0->q_intra_matrix[VAR_5 + 9] + (1 << 15)) >> 16))
VAR_5 |= 1; av_assert2(VAR_2 || VAR_5 < 8); if (VAR_2)
put_bits(&VAR_0->pb, ff_asv_ac_ccp_tab[VAR_5][1], ff_asv_ac_ccp_tab[VAR_5][0]); else
put_bits(&VAR_0->pb, ff_asv_dc_ccp_tab[VAR_5][1], ff_asv_dc_ccp_tab[VAR_5][0]); if (VAR_5) { if (VAR_5 & 8)
asv2_put_level(&VAR_0->pb, VAR_1[VAR_5 + 0]); if (VAR_5 & 4)
asv2_put_level(&VAR_0->pb, VAR_1[VAR_5 + 8]); if (VAR_5 & 2)
asv2_put_level(&VAR_0->pb, VAR_1[VAR_5 + 1]); if (VAR_5 & 1)
asv2_put_level(&VAR_0->pb, VAR_1[VAR_5 + 9]); } } }