static void unpack_alpha(GetBitContext *gb, uint16_t *dst, int num_coeffs,

                         const int num_bits)

{

    const int mask = (1 << num_bits) - 1;

    int i, idx, val, alpha_val;



    idx       = 0;

    alpha_val = mask;

    do {

        do {

            if (get_bits1(gb))

                val = get_bits(gb, num_bits);

            else {

                int sign;

                val  = get_bits(gb, num_bits == 16 ? 7 : 4);

                sign = val & 1;

                val  = (val + 2) >> 1;

                if (sign)

                    val = -val;

            }

            alpha_val = (alpha_val + val) & mask;

            if (num_bits == 16)

                dst[idx++] = alpha_val >> 6;

            else

                dst[idx++] = (alpha_val << 2) | (alpha_val >> 6);

            if (idx == num_coeffs - 1)

                break;

        } while (get_bits1(gb));

        val = get_bits(gb, 4);

        if (!val)

            val = get_bits(gb, 11);

        if (idx + val > num_coeffs)

            val = num_coeffs - idx;

        if (num_bits == 16)

            for (i = 0; i < val; i++)

                dst[idx++] = alpha_val >> 6;

        else

            for (i = 0; i < val; i++)

                dst[idx++] = (alpha_val << 2) | (alpha_val >> 6);

    } while (idx < num_coeffs);

}

static void unpack_alpha(GetBitContext *gb, uint16_t *dst, int num_coeffs,

                         const int num_bits)

{

    const int mask = (1 << num_bits) - 1;

    int i, idx, val, alpha_val;



    idx       = 0;

    alpha_val = mask;

    do {

        do {

            if (get_bits1(gb))

                val = get_bits(gb, num_bits);

            else {

                int sign;

                val  = get_bits(gb, num_bits == 16 ? 7 : 4);

                sign = val & 1;

                val  = (val + 2) >> 1;

                if (sign)

                    val = -val;

            }

            alpha_val = (alpha_val + val) & mask;

            if (num_bits == 16)

                dst[idx++] = alpha_val >> 6;

            else

                dst[idx++] = (alpha_val << 2) | (alpha_val >> 6);

            if (idx == num_coeffs - 1)

                break;

        } while (get_bits1(gb));

        val = get_bits(gb, 4);

        if (!val)

            val = get_bits(gb, 11);

        if (idx + val > num_coeffs)

            val = num_coeffs - idx;

        if (num_bits == 16)

            for (i = 0; i < val; i++)

                dst[idx++] = alpha_val >> 6;

        else

            for (i = 0; i < val; i++)

                dst[idx++] = (alpha_val << 2) | (alpha_val >> 6);

    } while (idx < num_coeffs);

}

            if (idx == num_coeffs - 1)
static void FUNC_0(GetBitContext *VAR_0, uint16_t *VAR_1, int VAR_2,

                         const int VAR_3)

{

    const int VAR_4 = (1 << VAR_3) - 1;

    int VAR_5, VAR_6, VAR_7, VAR_8;



    VAR_6       = 0;

    VAR_8 = VAR_4;

    do {

        do {

            if (get_bits1(VAR_0))

                VAR_7 = get_bits(VAR_0, VAR_3);

            else {

                int VAR_9;

                VAR_7  = get_bits(VAR_0, VAR_3 == 16 ? 7 : 4);

                VAR_9 = VAR_7 & 1;

                VAR_7  = (VAR_7 + 2) >> 1;

                if (VAR_9)

                    VAR_7 = -VAR_7;

            }

            VAR_8 = (VAR_8 + VAR_7) & VAR_4;

            if (VAR_3 == 16)

                VAR_1[VAR_6++] = VAR_8 >> 6;

            else

                VAR_1[VAR_6++] = (VAR_8 << 2) | (VAR_8 >> 6);

            if (VAR_6 == VAR_2 - 1)

                break;

        } while (get_bits1(VAR_0));

        VAR_7 = get_bits(VAR_0, 4);

        if (!VAR_7)

            VAR_7 = get_bits(VAR_0, 11);

        if (VAR_6 + VAR_7 > VAR_2)

            VAR_7 = VAR_2 - VAR_6;

        if (VAR_3 == 16)

            for (VAR_5 = 0; VAR_5 < VAR_7; VAR_5++)

                VAR_1[VAR_6++] = VAR_8 >> 6;

        else

            for (VAR_5 = 0; VAR_5 < VAR_7; VAR_5++)

                VAR_1[VAR_6++] = (VAR_8 << 2) | (VAR_8 >> 6);

    } while (VAR_6 < VAR_2);

}

static void FUNC_0(GetBitContext *VAR_0, uint16_t *VAR_1, int VAR_2,
const int VAR_3)
{ const int VAR_4 = (1 << VAR_3) - 1; int VAR_5, VAR_6, VAR_7, VAR_8; VAR_6       = 0; VAR_8 = VAR_4; do { do { if (get_bits1(VAR_0))
VAR_7 = get_bits(VAR_0, VAR_3); else { int VAR_9; VAR_7  = get_bits(VAR_0, VAR_3 == 16 ? 7 : 4); VAR_9 = VAR_7 & 1; VAR_7  = (VAR_7 + 2) >> 1; if (VAR_9)
VAR_7 = -VAR_7; } VAR_8 = (VAR_8 + VAR_7) & VAR_4; if (VAR_3 == 16)
VAR_1[VAR_6++] = VAR_8 >> 6; else
VAR_1[VAR_6++] = (VAR_8 << 2) | (VAR_8 >> 6); if (VAR_6 == VAR_2 - 1)
break; } while (get_bits1(VAR_0)); VAR_7 = get_bits(VAR_0, 4); if (!VAR_7)
VAR_7 = get_bits(VAR_0, 11); if (VAR_6 + VAR_7 > VAR_2)
VAR_7 = VAR_2 - VAR_6; if (VAR_3 == 16)
for (VAR_5 = 0; VAR_5 < VAR_7; VAR_5++) VAR_1[VAR_6++] = VAR_8 >> 6; else
for (VAR_5 = 0; VAR_5 < VAR_7; VAR_5++) VAR_1[VAR_6++] = (VAR_8 << 2) | (VAR_8 >> 6); } while (VAR_6 < VAR_2); }