static int qdm2_get_vlc (GetBitContext *gb, VLC *vlc, int flag, int depth)

{

    int value;



    value = get_vlc2(gb, vlc->table, vlc->bits, depth);



    /* stage-2, 3 bits exponent escape sequence */

    if (value-- == 0)

        value = get_bits (gb, get_bits (gb, 3) + 1);



    /* stage-3, optional */

    if (flag) {

        int tmp = vlc_stage3_values[value];



        if ((value & ~3) > 0)

            tmp += get_bits (gb, (value >> 2));

        value = tmp;

    }



    return value;

}

static int qdm2_get_vlc (GetBitContext *gb, VLC *vlc, int flag, int depth)

{

    int value;



    value = get_vlc2(gb, vlc->table, vlc->bits, depth);



    

    if (value-- == 0)

        value = get_bits (gb, get_bits (gb, 3) + 1);



    

    if (flag) {

        int tmp = vlc_stage3_values[value];



        if ((value & ~3) > 0)

            tmp += get_bits (gb, (value >> 2));

        value = tmp;

    }



    return value;

}

static int FUNC_0 (GetBitContext *VAR_0, VLC *VAR_1, int VAR_2, int VAR_3)

{

    int VAR_4;



    VAR_4 = get_vlc2(VAR_0, VAR_1->table, VAR_1->bits, VAR_3);



    

    if (VAR_4-- == 0)

        VAR_4 = get_bits (VAR_0, get_bits (VAR_0, 3) + 1);



    

    if (VAR_2) {

        int VAR_5 = vlc_stage3_values[VAR_4];



        if ((VAR_4 & ~3) > 0)

            VAR_5 += get_bits (VAR_0, (VAR_4 >> 2));

        VAR_4 = VAR_5;

    }



    return VAR_4;

}

static int FUNC_0 (GetBitContext *VAR_0, VLC *VAR_1, int VAR_2, int VAR_3)
{ int VAR_4; VAR_4 = get_vlc2(VAR_0, VAR_1->table, VAR_1->bits, VAR_3); if (VAR_4-- == 0)
VAR_4 = get_bits (VAR_0, get_bits (VAR_0, 3) + 1); if (VAR_2) { int VAR_5 = vlc_stage3_values[VAR_4]; if ((VAR_4 & ~3) > 0)
VAR_5 += get_bits (VAR_0, (VAR_4 >> 2)); VAR_4 = VAR_5; } return VAR_4; }