static void dwt_decode97_float(DWTContext *s, float *t)

{

    int lev;

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

    float *line = s->f_linebuf;

    float *data = t;

    /* position at index O of line range [0-5,w+5] cf. extend function */

    line += 5;



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

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

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

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

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

            lp;

        float *l;

        // HOR_SD

        l = line + mh;

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

            int i, j = 0;

            // copy with interleaving

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

                l[i] = data[w * lp + j] * F_LFTG_K;

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

                l[i] = data[w * lp + j];



            sr_1d97_float(line, mh, mh + lh);



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

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

        }



        // VER_SD

        l = line + mv;

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

            int i, j = 0;

            // copy with interleaving

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

                l[i] = data[w * j + lp] * F_LFTG_K;

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

                l[i] = data[w * j + lp];



            sr_1d97_float(line, mv, mv + lv);



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

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

        }

    }

}

static void dwt_decode97_float(DWTContext *s, float *t)

{

    int lev;

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

    float *line = s->f_linebuf;

    float *data = t;

    

    line += 5;



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

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

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

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

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

            lp;

        float *l;

        

        l = line + mh;

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

            int i, j = 0;

            

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

                l[i] = data[w * lp + j] * F_LFTG_K;

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

                l[i] = data[w * lp + j];



            sr_1d97_float(line, mh, mh + lh);



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

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

        }



        

        l = line + mv;

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

            int i, j = 0;

            

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

                l[i] = data[w * j + lp] * F_LFTG_K;

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

                l[i] = data[w * j + lp];



            sr_1d97_float(line, mv, mv + lv);



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

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

        }

    }

}

                l[i] = data[w * lp + j] * F_LFTG_K;                 l[i] = data[w * j + lp] * F_LFTG_K;
static void FUNC_0(DWTContext *VAR_0, float *VAR_1)

{

    int VAR_2;

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

    float *VAR_4 = VAR_0->f_linebuf;

    float *VAR_5 = VAR_1;

    

    VAR_4 += 5;



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

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

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

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

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

            lp;

        float *l;

        

        l = VAR_4 + mh;

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

            int i, j = 0;

            

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

                l[i] = VAR_5[VAR_3 * lp + j] * F_LFTG_K;

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

                l[i] = VAR_5[VAR_3 * lp + j];



            sr_1d97_float(VAR_4, mh, mh + lh);



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

                VAR_5[VAR_3 * lp + i] = l[i];

        }



        

        l = VAR_4 + mv;

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

            int i, j = 0;

            

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

                l[i] = VAR_5[VAR_3 * j + lp] * F_LFTG_K;

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

                l[i] = VAR_5[VAR_3 * j + lp];



            sr_1d97_float(VAR_4, mv, mv + lv);



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

                VAR_5[VAR_3 * i + lp] = l[i];

        }

    }

}

static void FUNC_0(DWTContext *VAR_0, float *VAR_1)
{ int VAR_2; int VAR_3       = VAR_0->linelen[VAR_0->ndeclevels - 1][0]; float *VAR_4 = VAR_0->f_linebuf; float *VAR_5 = VAR_1; VAR_4 += 5; for (VAR_2 = 0; VAR_2 < VAR_0->ndeclevels; VAR_2++) { int lh = VAR_0->linelen[VAR_2][0],
lv = VAR_0->linelen[VAR_2][1],
mh = VAR_0->mod[VAR_2][0],
mv = VAR_0->mod[VAR_2][1],
lp; float *l; l = VAR_4 + mh; for (lp = 0; lp < lv; lp++) { int i, j = 0; for (i = mh; i < lh; i += 2, j++) l[i] = VAR_5[VAR_3 * lp + j] * F_LFTG_K; for (i = 1 - mh; i < lh; i += 2, j++) l[i] = VAR_5[VAR_3 * lp + j]; sr_1d97_float(VAR_4, mh, mh + lh); for (i = 0; i < lh; i++) VAR_5[VAR_3 * lp + i] = l[i]; } l = VAR_4 + mv; for (lp = 0; lp < lh; lp++) { int i, j = 0; for (i = mv; i < lv; i += 2, j++) l[i] = VAR_5[VAR_3 * j + lp] * F_LFTG_K; for (i = 1 - mv; i < lv; i += 2, j++) l[i] = VAR_5[VAR_3 * j + lp]; sr_1d97_float(VAR_4, mv, mv + lv); for (i = 0; i < lv; i++) VAR_5[VAR_3 * i + lp] = l[i]; } } }