static void dwt_encode97_int(DWTContext *s, int *t)

{

    int lev,

        w = s->linelen[s->ndeclevels-1][0];

    int *line = s->i_linebuf;

    line += 5;



    for (lev = s->ndeclevels-1; lev >= 0; lev--){

        int lh = s->linelen[lev][0],

            lv = s->linelen[lev][1],

            mh = s->mod[lev][0],

            mv = s->mod[lev][1],

            lp;

        int *l;



        // VER_SD

        l = line + mv;

        for (lp = 0; lp < lh; lp++) {

            int i, j = 0;



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

                l[i] = t[w*i + lp];



            sd_1d97_int(line, mv, mv + lv);



            // copy back and deinterleave

            for (i =   mv; i < lv; i+=2, j++)

                t[w*j + lp] = ((l[i] * I_LFTG_X) + (1 << 16)) >> 17;

            for (i = 1-mv; i < lv; i+=2, j++)

                t[w*j + lp] = ((l[i] * I_LFTG_K) + (1 << 16)) >> 17;

        }



        // HOR_SD

        l = line + mh;

        for (lp = 0; lp < lv; lp++){

            int i, j = 0;



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

                l[i] = t[w*lp + i];



            sd_1d97_int(line, mh, mh + lh);



            // copy back and deinterleave

            for (i =   mh; i < lh; i+=2, j++)

                t[w*lp + j] = ((l[i] * I_LFTG_X) + (1 << 16)) >> 17;

            for (i = 1-mh; i < lh; i+=2, j++)

                t[w*lp + j] = ((l[i] * I_LFTG_K) + (1 << 16)) >> 17;

        }



    }

}

static void dwt_encode97_int(DWTContext *s, int *t)

{

    int lev,

        w = s->linelen[s->ndeclevels-1][0];

    int *line = s->i_linebuf;

    line += 5;



    for (lev = s->ndeclevels-1; lev >= 0; lev--){

        int lh = s->linelen[lev][0],

            lv = s->linelen[lev][1],

            mh = s->mod[lev][0],

            mv = s->mod[lev][1],

            lp;

        int *l;



        

        l = line + mv;

        for (lp = 0; lp < lh; lp++) {

            int i, j = 0;



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

                l[i] = t[w*i + lp];



            sd_1d97_int(line, mv, mv + lv);



            

            for (i =   mv; i < lv; i+=2, j++)

                t[w*j + lp] = ((l[i] * I_LFTG_X) + (1 << 16)) >> 17;

            for (i = 1-mv; i < lv; i+=2, j++)

                t[w*j + lp] = ((l[i] * I_LFTG_K) + (1 << 16)) >> 17;

        }



        

        l = line + mh;

        for (lp = 0; lp < lv; lp++){

            int i, j = 0;



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

                l[i] = t[w*lp + i];



            sd_1d97_int(line, mh, mh + lh);



            

            for (i =   mh; i < lh; i+=2, j++)

                t[w*lp + j] = ((l[i] * I_LFTG_X) + (1 << 16)) >> 17;

            for (i = 1-mh; i < lh; i+=2, j++)

                t[w*lp + j] = ((l[i] * I_LFTG_K) + (1 << 16)) >> 17;

        }



    }

}

                t[w*j + lp] = ((l[i] * I_LFTG_X) + (1 << 16)) >> 17;                 t[w*j + lp] = ((l[i] * I_LFTG_K) + (1 << 16)) >> 17;                 t[w*lp + j] = ((l[i] * I_LFTG_X) + (1 << 16)) >> 17;                 t[w*lp + j] = ((l[i] * I_LFTG_K) + (1 << 16)) >> 17;
static void FUNC_0(DWTContext *VAR_0, int *VAR_1)

{

    int VAR_2,

        VAR_3 = VAR_0->linelen[VAR_0->ndeclevels-1][0];

    int *VAR_4 = VAR_0->i_linebuf;

    VAR_4 += 5;



    for (VAR_2 = VAR_0->ndeclevels-1; VAR_2 >= 0; VAR_2--){

        int VAR_5 = VAR_0->linelen[VAR_2][0],

            VAR_6 = VAR_0->linelen[VAR_2][1],

            VAR_7 = VAR_0->mod[VAR_2][0],

            VAR_8 = VAR_0->mod[VAR_2][1],

            VAR_9;

        int *VAR_10;



        

        VAR_10 = VAR_4 + VAR_8;

        for (VAR_9 = 0; VAR_9 < VAR_5; VAR_9++) {

            int VAR_13, VAR_13 = 0;



            for (VAR_13 = 0; VAR_13 < VAR_6; VAR_13++)

                VAR_10[VAR_13] = VAR_1[VAR_3*VAR_13 + VAR_9];



            sd_1d97_int(VAR_4, VAR_8, VAR_8 + VAR_6);



            

            for (VAR_13 =   VAR_8; VAR_13 < VAR_6; VAR_13+=2, VAR_13++)

                VAR_1[VAR_3*VAR_13 + VAR_9] = ((VAR_10[VAR_13] * I_LFTG_X) + (1 << 16)) >> 17;

            for (VAR_13 = 1-VAR_8; VAR_13 < VAR_6; VAR_13+=2, VAR_13++)

                VAR_1[VAR_3*VAR_13 + VAR_9] = ((VAR_10[VAR_13] * I_LFTG_K) + (1 << 16)) >> 17;

        }



        

        VAR_10 = VAR_4 + VAR_7;

        for (VAR_9 = 0; VAR_9 < VAR_6; VAR_9++){

            int VAR_13, VAR_13 = 0;



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

                VAR_10[VAR_13] = VAR_1[VAR_3*VAR_9 + VAR_13];



            sd_1d97_int(VAR_4, VAR_7, VAR_7 + VAR_5);



            

            for (VAR_13 =   VAR_7; VAR_13 < VAR_5; VAR_13+=2, VAR_13++)

                VAR_1[VAR_3*VAR_9 + VAR_13] = ((VAR_10[VAR_13] * I_LFTG_X) + (1 << 16)) >> 17;

            for (VAR_13 = 1-VAR_7; VAR_13 < VAR_5; VAR_13+=2, VAR_13++)

                VAR_1[VAR_3*VAR_9 + VAR_13] = ((VAR_10[VAR_13] * I_LFTG_K) + (1 << 16)) >> 17;

        }



    }

}

static void FUNC_0(DWTContext *VAR_0, int *VAR_1)
{ int VAR_2,
VAR_3 = VAR_0->linelen[VAR_0->ndeclevels-1][0]; int *VAR_4 = VAR_0->i_linebuf; VAR_4 += 5; for (VAR_2 = VAR_0->ndeclevels-1; VAR_2 >= 0; VAR_2--){ int VAR_5 = VAR_0->linelen[VAR_2][0],
VAR_6 = VAR_0->linelen[VAR_2][1],
VAR_7 = VAR_0->mod[VAR_2][0],
VAR_8 = VAR_0->mod[VAR_2][1],
VAR_9; int *VAR_10; VAR_10 = VAR_4 + VAR_8; for (VAR_9 = 0; VAR_9 < VAR_5; VAR_9++) { int VAR_13, VAR_13 = 0; for (VAR_13 = 0; VAR_13 < VAR_6; VAR_13++) VAR_10[VAR_13] = VAR_1[VAR_3*VAR_13 + VAR_9]; sd_1d97_int(VAR_4, VAR_8, VAR_8 + VAR_6); for (VAR_13 =   VAR_8; VAR_13 < VAR_6; VAR_13+=2, VAR_13++) VAR_1[VAR_3*VAR_13 + VAR_9] = ((VAR_10[VAR_13] * I_LFTG_X) + (1 << 16)) >> 17; for (VAR_13 = 1-VAR_8; VAR_13 < VAR_6; VAR_13+=2, VAR_13++) VAR_1[VAR_3*VAR_13 + VAR_9] = ((VAR_10[VAR_13] * I_LFTG_K) + (1 << 16)) >> 17; } VAR_10 = VAR_4 + VAR_7; for (VAR_9 = 0; VAR_9 < VAR_6; VAR_9++){ int VAR_13, VAR_13 = 0; for (VAR_13 = 0; VAR_13 < VAR_5; VAR_13++) VAR_10[VAR_13] = VAR_1[VAR_3*VAR_9 + VAR_13]; sd_1d97_int(VAR_4, VAR_7, VAR_7 + VAR_5); for (VAR_13 =   VAR_7; VAR_13 < VAR_5; VAR_13+=2, VAR_13++) VAR_1[VAR_3*VAR_9 + VAR_13] = ((VAR_10[VAR_13] * I_LFTG_X) + (1 << 16)) >> 17; for (VAR_13 = 1-VAR_7; VAR_13 < VAR_5; VAR_13+=2, VAR_13++) VAR_1[VAR_3*VAR_9 + VAR_13] = ((VAR_10[VAR_13] * I_LFTG_K) + (1 << 16)) >> 17; } } }