static void get_tree_codes(uint32_t *bits, int16_t *lens, uint8_t *xlat,

                           Node *nodes, int node,

                           uint32_t pfx, int pl, int *pos)

{

    int s;



    s = nodes[node].sym;

    if (s != -1) {

        bits[*pos] = (~pfx) & ((1U << FFMAX(pl, 1)) - 1);

        lens[*pos] = FFMAX(pl, 1);

        xlat[*pos] = s + (pl == 0);

        (*pos)++;

    } else {

        pfx <<= 1;

        pl++;

        get_tree_codes(bits, lens, xlat, nodes, nodes[node].l, pfx, pl,

                       pos);

        pfx |= 1;

        get_tree_codes(bits, lens, xlat, nodes, nodes[node].r, pfx, pl,

                       pos);

    }

}

static void get_tree_codes(uint32_t *bits, int16_t *lens, uint8_t *xlat,

                           Node *nodes, int node,

                           uint32_t pfx, int pl, int *pos)

{

    int s;



    s = nodes[node].sym;

    if (s != -1) {

        bits[*pos] = (~pfx) & ((1U << FFMAX(pl, 1)) - 1);

        lens[*pos] = FFMAX(pl, 1);

        xlat[*pos] = s + (pl == 0);

        (*pos)++;

    } else {

        pfx <<= 1;

        pl++;

        get_tree_codes(bits, lens, xlat, nodes, nodes[node].l, pfx, pl,

                       pos);

        pfx |= 1;

        get_tree_codes(bits, lens, xlat, nodes, nodes[node].r, pfx, pl,

                       pos);

    }

}

        bits[*pos] = (~pfx) & ((1U << FFMAX(pl, 1)) - 1);
static void FUNC_0(uint32_t *VAR_0, int16_t *VAR_1, uint8_t *VAR_2,

                           Node *VAR_3, int VAR_4,

                           uint32_t VAR_5, int VAR_6, int *VAR_7)

{

    int VAR_8;



    VAR_8 = VAR_3[VAR_4].sym;

    if (VAR_8 != -1) {

        VAR_0[*VAR_7] = (~VAR_5) & ((1U << FFMAX(VAR_6, 1)) - 1);

        VAR_1[*VAR_7] = FFMAX(VAR_6, 1);

        VAR_2[*VAR_7] = VAR_8 + (VAR_6 == 0);

        (*VAR_7)++;

    } else {

        VAR_5 <<= 1;

        VAR_6++;

        FUNC_0(VAR_0, VAR_1, VAR_2, VAR_3, VAR_3[VAR_4].l, VAR_5, VAR_6,

                       VAR_7);

        VAR_5 |= 1;

        FUNC_0(VAR_0, VAR_1, VAR_2, VAR_3, VAR_3[VAR_4].r, VAR_5, VAR_6,

                       VAR_7);

    }

}

static void FUNC_0(uint32_t *VAR_0, int16_t *VAR_1, uint8_t *VAR_2,
Node *VAR_3, int VAR_4,
uint32_t VAR_5, int VAR_6, int *VAR_7)
{ int VAR_8; VAR_8 = VAR_3[VAR_4].sym; if (VAR_8 != -1) { VAR_0[*VAR_7] = (~VAR_5) & ((1U << FFMAX(VAR_6, 1)) - 1); VAR_1[*VAR_7] = FFMAX(VAR_6, 1); VAR_2[*VAR_7] = VAR_8 + (VAR_6 == 0); (*VAR_7)++; } else { VAR_5 <<= 1; VAR_6++; FUNC_0(VAR_0, VAR_1, VAR_2, VAR_3, VAR_3[VAR_4].l, VAR_5, VAR_6,
VAR_7); VAR_5 |= 1; FUNC_0(VAR_0, VAR_1, VAR_2, VAR_3, VAR_3[VAR_4].r, VAR_5, VAR_6,
VAR_7); } }