static void dequantize_slice_buffered(SnowContext *s, slice_buffer * sb, SubBand *b, IDWTELEM *src, int stride, int start_y, int end_y){

    const int w= b->width;

    const int qlog= av_clip(s->qlog + b->qlog, 0, QROOT*16);

    const int qmul= ff_qexp[qlog&(QROOT-1)]<<(qlog>>QSHIFT);

    const int qadd= (s->qbias*qmul)>>QBIAS_SHIFT;

    int x,y;



    if(s->qlog == LOSSLESS_QLOG) return;



    for(y=start_y; y<end_y; y++){

//        DWTELEM * line = slice_buffer_get_line_from_address(sb, src + (y * stride));

        IDWTELEM * line = slice_buffer_get_line(sb, (y * b->stride_line) + b->buf_y_offset) + b->buf_x_offset;

        for(x=0; x<w; x++){

            int i= line[x];

            if(i<0){

                line[x]= -((-i*qmul + qadd)>>(QEXPSHIFT)); //FIXME try different bias

            }else if(i>0){

                line[x]=  (( i*qmul + qadd)>>(QEXPSHIFT));

            }

        }

    }

}

static void dequantize_slice_buffered(SnowContext *s, slice_buffer * sb, SubBand *b, IDWTELEM *src, int stride, int start_y, int end_y){

    const int w= b->width;

    const int qlog= av_clip(s->qlog + b->qlog, 0, QROOT*16);

    const int qmul= ff_qexp[qlog&(QROOT-1)]<<(qlog>>QSHIFT);

    const int qadd= (s->qbias*qmul)>>QBIAS_SHIFT;

    int x,y;



    if(s->qlog == LOSSLESS_QLOG) return;



    for(y=start_y; y<end_y; y++){



        IDWTELEM * line = slice_buffer_get_line(sb, (y * b->stride_line) + b->buf_y_offset) + b->buf_x_offset;

        for(x=0; x<w; x++){

            int i= line[x];

            if(i<0){

                line[x]= -((-i*qmul + qadd)>>(QEXPSHIFT)); 

            }else if(i>0){

                line[x]=  (( i*qmul + qadd)>>(QEXPSHIFT));

            }

        }

    }

}

                line[x]=  (( i*qmul + qadd)>>(QEXPSHIFT));
static void FUNC_0(SnowContext *VAR_0, slice_buffer * VAR_1, SubBand *VAR_2, IDWTELEM *VAR_3, int VAR_4, int VAR_5, int VAR_6){

    const int VAR_7= VAR_2->width;

    const int VAR_8= av_clip(VAR_0->VAR_8 + VAR_2->VAR_8, 0, QROOT*16);

    const int VAR_9= ff_qexp[VAR_8&(QROOT-1)]<<(VAR_8>>QSHIFT);

    const int VAR_10= (VAR_0->qbias*VAR_9)>>QBIAS_SHIFT;

    int VAR_11,VAR_12;



    if(VAR_0->VAR_8 == LOSSLESS_QLOG) return;



    for(VAR_12=VAR_5; VAR_12<VAR_6; VAR_12++){



        IDWTELEM * line = slice_buffer_get_line(VAR_1, (VAR_12 * VAR_2->stride_line) + VAR_2->buf_y_offset) + VAR_2->buf_x_offset;

        for(VAR_11=0; VAR_11<VAR_7; VAR_11++){

            int VAR_13= line[VAR_11];

            if(VAR_13<0){

                line[VAR_11]= -((-VAR_13*VAR_9 + VAR_10)>>(QEXPSHIFT)); 

            }else if(VAR_13>0){

                line[VAR_11]=  (( VAR_13*VAR_9 + VAR_10)>>(QEXPSHIFT));

            }

        }

    }

}

static void FUNC_0(SnowContext *VAR_0, slice_buffer * VAR_1, SubBand *VAR_2, IDWTELEM *VAR_3, int VAR_4, int VAR_5, int VAR_6){ const int VAR_7= VAR_2->width; const int VAR_8= av_clip(VAR_0->VAR_8 + VAR_2->VAR_8, 0, QROOT*16); const int VAR_9= ff_qexp[VAR_8&(QROOT-1)]<<(VAR_8>>QSHIFT); const int VAR_10= (VAR_0->qbias*VAR_9)>>QBIAS_SHIFT; int VAR_11,VAR_12; if(VAR_0->VAR_8 == LOSSLESS_QLOG) return; for(VAR_12=VAR_5; VAR_12<VAR_6; VAR_12++){ IDWTELEM * line = slice_buffer_get_line(VAR_1, (VAR_12 * VAR_2->stride_line) + VAR_2->buf_y_offset) + VAR_2->buf_x_offset; for(VAR_11=0; VAR_11<VAR_7; VAR_11++){ int VAR_13= line[VAR_11]; if(VAR_13<0){ line[VAR_11]= -((-VAR_13*VAR_9 + VAR_10)>>(QEXPSHIFT)); }else if(VAR_13>0){ line[VAR_11]=  (( VAR_13*VAR_9 + VAR_10)>>(QEXPSHIFT)); } } } }