static int _decode_exponents(int expstr, int ngrps, uint8_t absexp, uint8_t *gexps, uint8_t *dexps)

{

    int exps;

    int i = 0;



    while (ngrps--) {

        exps = gexps[i++];



        absexp += exp_1[exps];

        assert(absexp <= 24);

        switch (expstr) {

            case AC3_EXPSTR_D45:

                *(dexps++) = absexp;

                *(dexps++) = absexp;

            case AC3_EXPSTR_D25:

                *(dexps++) = absexp;

            case AC3_EXPSTR_D15:

                *(dexps++) = absexp;

        }

        absexp += exp_2[exps];

        assert(absexp <= 24);

        switch (expstr) {

            case AC3_EXPSTR_D45:

                *(dexps++) = absexp;

                *(dexps++) = absexp;

            case AC3_EXPSTR_D25:

                *(dexps++) = absexp;

            case AC3_EXPSTR_D15:

                *(dexps++) = absexp;

        }



        absexp += exp_3[exps];

        assert(absexp <= 24);

        switch (expstr) {

            case AC3_EXPSTR_D45:

                *(dexps++) = absexp;

                *(dexps++) = absexp;

            case AC3_EXPSTR_D25:

                *(dexps++) = absexp;

            case AC3_EXPSTR_D15:

                *(dexps++) = absexp;

        }

    }



    return 0;

}

static int _decode_exponents(int expstr, int ngrps, uint8_t absexp, uint8_t *gexps, uint8_t *dexps)

{

    int exps;

    int i = 0;



    while (ngrps--) {

        exps = gexps[i++];



        absexp += exp_1[exps];

        assert(absexp <= 24);

        switch (expstr) {

            case AC3_EXPSTR_D45:

                *(dexps++) = absexp;

                *(dexps++) = absexp;

            case AC3_EXPSTR_D25:

                *(dexps++) = absexp;

            case AC3_EXPSTR_D15:

                *(dexps++) = absexp;

        }

        absexp += exp_2[exps];

        assert(absexp <= 24);

        switch (expstr) {

            case AC3_EXPSTR_D45:

                *(dexps++) = absexp;

                *(dexps++) = absexp;

            case AC3_EXPSTR_D25:

                *(dexps++) = absexp;

            case AC3_EXPSTR_D15:

                *(dexps++) = absexp;

        }



        absexp += exp_3[exps];

        assert(absexp <= 24);

        switch (expstr) {

            case AC3_EXPSTR_D45:

                *(dexps++) = absexp;

                *(dexps++) = absexp;

            case AC3_EXPSTR_D25:

                *(dexps++) = absexp;

            case AC3_EXPSTR_D15:

                *(dexps++) = absexp;

        }

    }



    return 0;

}

static int FUNC_0(int VAR_0, int VAR_1, uint8_t VAR_2, uint8_t *VAR_3, uint8_t *VAR_4)

{

    int VAR_5;

    int VAR_6 = 0;



    while (VAR_1--) {

        VAR_5 = VAR_3[VAR_6++];



        VAR_2 += exp_1[VAR_5];

        assert(VAR_2 <= 24);

        switch (VAR_0) {

            case AC3_EXPSTR_D45:

                *(VAR_4++) = VAR_2;

                *(VAR_4++) = VAR_2;

            case AC3_EXPSTR_D25:

                *(VAR_4++) = VAR_2;

            case AC3_EXPSTR_D15:

                *(VAR_4++) = VAR_2;

        }

        VAR_2 += exp_2[VAR_5];

        assert(VAR_2 <= 24);

        switch (VAR_0) {

            case AC3_EXPSTR_D45:

                *(VAR_4++) = VAR_2;

                *(VAR_4++) = VAR_2;

            case AC3_EXPSTR_D25:

                *(VAR_4++) = VAR_2;

            case AC3_EXPSTR_D15:

                *(VAR_4++) = VAR_2;

        }



        VAR_2 += exp_3[VAR_5];

        assert(VAR_2 <= 24);

        switch (VAR_0) {

            case AC3_EXPSTR_D45:

                *(VAR_4++) = VAR_2;

                *(VAR_4++) = VAR_2;

            case AC3_EXPSTR_D25:

                *(VAR_4++) = VAR_2;

            case AC3_EXPSTR_D15:

                *(VAR_4++) = VAR_2;

        }

    }



    return 0;

}

static int FUNC_0(int VAR_0, int VAR_1, uint8_t VAR_2, uint8_t *VAR_3, uint8_t *VAR_4)
{ int VAR_5; int VAR_6 = 0; while (VAR_1--) { VAR_5 = VAR_3[VAR_6++]; VAR_2 += exp_1[VAR_5]; assert(VAR_2 <= 24); switch (VAR_0) { case AC3_EXPSTR_D45:
*(VAR_4++) = VAR_2; *(VAR_4++) = VAR_2; case AC3_EXPSTR_D25:
*(VAR_4++) = VAR_2; case AC3_EXPSTR_D15:
*(VAR_4++) = VAR_2; } VAR_2 += exp_2[VAR_5]; assert(VAR_2 <= 24); switch (VAR_0) { case AC3_EXPSTR_D45:
*(VAR_4++) = VAR_2; *(VAR_4++) = VAR_2; case AC3_EXPSTR_D25:
*(VAR_4++) = VAR_2; case AC3_EXPSTR_D15:
*(VAR_4++) = VAR_2; } VAR_2 += exp_3[VAR_5]; assert(VAR_2 <= 24); switch (VAR_0) { case AC3_EXPSTR_D45:
*(VAR_4++) = VAR_2; *(VAR_4++) = VAR_2; case AC3_EXPSTR_D25:
*(VAR_4++) = VAR_2; case AC3_EXPSTR_D15:
*(VAR_4++) = VAR_2; } } return 0; }