static void encode_subband_c0run(SnowContext *s, SubBand *b, DWTELEM *src, DWTELEM *parent, int stride, int orientation){

    const int w= b->width;

    const int h= b->height;

    int x, y;



    if(1){

        int run=0;

        int runs[w*h];

        int run_index=0;

                

        for(y=0; y<h; y++){

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

                int v, p=0;

                int /*ll=0, */l=0, lt=0, t=0, rt=0;

                v= src[x + y*stride];



                if(y){

                    t= src[x + (y-1)*stride];

                    if(x){

                        lt= src[x - 1 + (y-1)*stride];

                    }

                    if(x + 1 < w){

                        rt= src[x + 1 + (y-1)*stride];

                    }

                }

                if(x){

                    l= src[x - 1 + y*stride];

                    /*if(x > 1){

                        if(orientation==1) ll= src[y + (x-2)*stride];

                        else               ll= src[x - 2 + y*stride];

                    }*/

                }

                if(parent){

                    int px= x>>1;

                    int py= y>>1;

                    if(px<b->parent->width && py<b->parent->height) 

                        p= parent[px + py*2*stride];

                }

                if(!(/*ll|*/l|lt|t|rt|p)){

                    if(v){

                        runs[run_index++]= run;

                        run=0;

                    }else{

                        run++;

                    }

                }

            }

        }

        runs[run_index++]= run;

        run_index=0;

        run= runs[run_index++];



        put_symbol2(&s->c, b->state[1], run, 3);

        

        for(y=0; y<h; y++){

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

                int v, p=0;

                int /*ll=0, */l=0, lt=0, t=0, rt=0;

                v= src[x + y*stride];



                if(y){

                    t= src[x + (y-1)*stride];

                    if(x){

                        lt= src[x - 1 + (y-1)*stride];

                    }

                    if(x + 1 < w){

                        rt= src[x + 1 + (y-1)*stride];

                    }

                }

                if(x){

                    l= src[x - 1 + y*stride];

                    /*if(x > 1){

                        if(orientation==1) ll= src[y + (x-2)*stride];

                        else               ll= src[x - 2 + y*stride];

                    }*/

                }

                if(parent){

                    int px= x>>1;

                    int py= y>>1;

                    if(px<b->parent->width && py<b->parent->height) 

                        p= parent[px + py*2*stride];

                }

                if(/*ll|*/l|lt|t|rt|p){

                    int context= av_log2(/*ABS(ll) + */3*ABS(l) + ABS(lt) + 2*ABS(t) + ABS(rt) + ABS(p));



                    put_rac(&s->c, &b->state[0][context], !!v);

                }else{

                    if(!run){

                        run= runs[run_index++];



                        put_symbol2(&s->c, b->state[1], run, 3);

                        assert(v);

                    }else{

                        run--;

                        assert(!v);

                    }

                }

                if(v){

                    int context= av_log2(/*ABS(ll) + */3*ABS(l) + ABS(lt) + 2*ABS(t) + ABS(rt) + ABS(p));



                    put_symbol2(&s->c, b->state[context + 2], ABS(v)-1, context-4);

                    put_rac(&s->c, &b->state[0][16 + 1 + 3 + quant3b[l&0xFF] + 3*quant3b[t&0xFF]], v<0);

                }

            }

        }

    }

}

static void encode_subband_c0run(SnowContext *s, SubBand *b, DWTELEM *src, DWTELEM *parent, int stride, int orientation){

    const int w= b->width;

    const int h= b->height;

    int x, y;



    if(1){

        int run=0;

        int runs[w*h];

        int run_index=0;

                

        for(y=0; y<h; y++){

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

                int v, p=0;

                int l=0, lt=0, t=0, rt=0;

                v= src[x + y*stride];



                if(y){

                    t= src[x + (y-1)*stride];

                    if(x){

                        lt= src[x - 1 + (y-1)*stride];

                    }

                    if(x + 1 < w){

                        rt= src[x + 1 + (y-1)*stride];

                    }

                }

                if(x){

                    l= src[x - 1 + y*stride];

                    







                }

                if(parent){

                    int px= x>>1;

                    int py= y>>1;

                    if(px<b->parent->width && py<b->parent->height) 

                        p= parent[px + py*2*stride];

                }

                if(!(l|lt|t|rt|p)){

                    if(v){

                        runs[run_index++]= run;

                        run=0;

                    }else{

                        run++;

                    }

                }

            }

        }

        runs[run_index++]= run;

        run_index=0;

        run= runs[run_index++];



        put_symbol2(&s->c, b->state[1], run, 3);

        

        for(y=0; y<h; y++){

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

                int v, p=0;

                int l=0, lt=0, t=0, rt=0;

                v= src[x + y*stride];



                if(y){

                    t= src[x + (y-1)*stride];

                    if(x){

                        lt= src[x - 1 + (y-1)*stride];

                    }

                    if(x + 1 < w){

                        rt= src[x + 1 + (y-1)*stride];

                    }

                }

                if(x){

                    l= src[x - 1 + y*stride];

                    







                }

                if(parent){

                    int px= x>>1;

                    int py= y>>1;

                    if(px<b->parent->width && py<b->parent->height) 

                        p= parent[px + py*2*stride];

                }

                if(l|lt|t|rt|p){

                    int context= av_log2(3*ABS(l) + ABS(lt) + 2*ABS(t) + ABS(rt) + ABS(p));



                    put_rac(&s->c, &b->state[0][context], !!v);

                }else{

                    if(!run){

                        run= runs[run_index++];



                        put_symbol2(&s->c, b->state[1], run, 3);

                        assert(v);

                    }else{

                        run--;

                        assert(!v);

                    }

                }

                if(v){

                    int context= av_log2(3*ABS(l) + ABS(lt) + 2*ABS(t) + ABS(rt) + ABS(p));



                    put_symbol2(&s->c, b->state[context + 2], ABS(v)-1, context-4);

                    put_rac(&s->c, &b->state[0][16 + 1 + 3 + quant3b[l&0xFF] + 3*quant3b[t&0xFF]], v<0);

                }

            }

        }

    }

}

static void encode_subband_c0run(SnowContext *s, SubBand *b, DWTELEM *src, DWTELEM *parent, int stride, int orientation){
static void FUNC_0(SnowContext *VAR_0, SubBand *VAR_1, DWTELEM *VAR_2, DWTELEM *VAR_3, int VAR_4, int VAR_5){

    const int VAR_6= VAR_1->width;

    const int VAR_7= VAR_1->height;

    int VAR_8, VAR_9;



    if(1){

        int VAR_10=0;

        int VAR_11[VAR_6*VAR_7];

        int VAR_12=0;

                

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

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

                int VAR_21, VAR_21=0;

                int VAR_21=0, VAR_21=0, VAR_21=0, VAR_21=0;

                VAR_21= VAR_2[VAR_8 + VAR_9*VAR_4];



                if(VAR_9){

                    VAR_21= VAR_2[VAR_8 + (VAR_9-1)*VAR_4];

                    if(VAR_8){

                        VAR_21= VAR_2[VAR_8 - 1 + (VAR_9-1)*VAR_4];

                    }

                    if(VAR_8 + 1 < VAR_6){

                        VAR_21= VAR_2[VAR_8 + 1 + (VAR_9-1)*VAR_4];

                    }

                }

                if(VAR_8){

                    VAR_21= VAR_2[VAR_8 - 1 + VAR_9*VAR_4];

                    







                }

                if(VAR_3){

                    int VAR_21= VAR_8>>1;

                    int VAR_21= VAR_9>>1;

                    if(VAR_21<VAR_1->VAR_3->width && VAR_21<VAR_1->VAR_3->height) 

                        VAR_21= VAR_3[VAR_21 + VAR_21*2*VAR_4];

                }

                if(!(VAR_21|VAR_21|VAR_21|VAR_21|VAR_21)){

                    if(VAR_21){

                        VAR_11[VAR_12++]= VAR_10;

                        VAR_10=0;

                    }else{

                        VAR_10++;

                    }

                }

            }

        }

        VAR_11[VAR_12++]= VAR_10;

        VAR_12=0;

        VAR_10= VAR_11[VAR_12++];



        put_symbol2(&VAR_0->c, VAR_1->state[1], VAR_10, 3);

        

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

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

                int VAR_21, VAR_21=0;

                int VAR_21=0, VAR_21=0, VAR_21=0, VAR_21=0;

                VAR_21= VAR_2[VAR_8 + VAR_9*VAR_4];



                if(VAR_9){

                    VAR_21= VAR_2[VAR_8 + (VAR_9-1)*VAR_4];

                    if(VAR_8){

                        VAR_21= VAR_2[VAR_8 - 1 + (VAR_9-1)*VAR_4];

                    }

                    if(VAR_8 + 1 < VAR_6){

                        VAR_21= VAR_2[VAR_8 + 1 + (VAR_9-1)*VAR_4];

                    }

                }

                if(VAR_8){

                    VAR_21= VAR_2[VAR_8 - 1 + VAR_9*VAR_4];

                    







                }

                if(VAR_3){

                    int VAR_21= VAR_8>>1;

                    int VAR_21= VAR_9>>1;

                    if(VAR_21<VAR_1->VAR_3->width && VAR_21<VAR_1->VAR_3->height) 

                        VAR_21= VAR_3[VAR_21 + VAR_21*2*VAR_4];

                }

                if(VAR_21|VAR_21|VAR_21|VAR_21|VAR_21){

                    int VAR_22= av_log2(3*ABS(VAR_21) + ABS(VAR_21) + 2*ABS(VAR_21) + ABS(VAR_21) + ABS(VAR_21));



                    put_rac(&VAR_0->c, &VAR_1->state[0][VAR_22], !!VAR_21);

                }else{

                    if(!VAR_10){

                        VAR_10= VAR_11[VAR_12++];



                        put_symbol2(&VAR_0->c, VAR_1->state[1], VAR_10, 3);

                        assert(VAR_21);

                    }else{

                        VAR_10--;

                        assert(!VAR_21);

                    }

                }

                if(VAR_21){

                    int VAR_22= av_log2(3*ABS(VAR_21) + ABS(VAR_21) + 2*ABS(VAR_21) + ABS(VAR_21) + ABS(VAR_21));



                    put_symbol2(&VAR_0->c, VAR_1->state[VAR_22 + 2], ABS(VAR_21)-1, VAR_22-4);

                    put_rac(&VAR_0->c, &VAR_1->state[0][16 + 1 + 3 + quant3b[VAR_21&0xFF] + 3*quant3b[VAR_21&0xFF]], VAR_21<0);

                }

            }

        }

    }

}

static void FUNC_0(SnowContext *VAR_0, SubBand *VAR_1, DWTELEM *VAR_2, DWTELEM *VAR_3, int VAR_4, int VAR_5){ const int VAR_6= VAR_1->width; const int VAR_7= VAR_1->height; int VAR_8, VAR_9; if(1){ int VAR_10=0; int VAR_11[VAR_6*VAR_7]; int VAR_12=0; for(VAR_9=0; VAR_9<VAR_7; VAR_9++){ for(VAR_8=0; VAR_8<VAR_6; VAR_8++){ int VAR_21, VAR_21=0; int VAR_21=0, VAR_21=0, VAR_21=0, VAR_21=0; VAR_21= VAR_2[VAR_8 + VAR_9*VAR_4]; if(VAR_9){ VAR_21= VAR_2[VAR_8 + (VAR_9-1)*VAR_4]; if(VAR_8){ VAR_21= VAR_2[VAR_8 - 1 + (VAR_9-1)*VAR_4]; } if(VAR_8 + 1 < VAR_6){ VAR_21= VAR_2[VAR_8 + 1 + (VAR_9-1)*VAR_4]; } } if(VAR_8){ VAR_21= VAR_2[VAR_8 - 1 + VAR_9*VAR_4]; } if(VAR_3){ int VAR_21= VAR_8>>1; int VAR_21= VAR_9>>1; if(VAR_21<VAR_1->VAR_3->width && VAR_21<VAR_1->VAR_3->height)
VAR_21= VAR_3[VAR_21 + VAR_21*2*VAR_4]; } if(!(VAR_21|VAR_21|VAR_21|VAR_21|VAR_21)){ if(VAR_21){ VAR_11[VAR_12++]= VAR_10; VAR_10=0; }else{ VAR_10++; } } } } VAR_11[VAR_12++]= VAR_10; VAR_12=0; VAR_10= VAR_11[VAR_12++]; put_symbol2(&VAR_0->c, VAR_1->state[1], VAR_10, 3); for(VAR_9=0; VAR_9<VAR_7; VAR_9++){ for(VAR_8=0; VAR_8<VAR_6; VAR_8++){ int VAR_21, VAR_21=0; int VAR_21=0, VAR_21=0, VAR_21=0, VAR_21=0; VAR_21= VAR_2[VAR_8 + VAR_9*VAR_4]; if(VAR_9){ VAR_21= VAR_2[VAR_8 + (VAR_9-1)*VAR_4]; if(VAR_8){ VAR_21= VAR_2[VAR_8 - 1 + (VAR_9-1)*VAR_4]; } if(VAR_8 + 1 < VAR_6){ VAR_21= VAR_2[VAR_8 + 1 + (VAR_9-1)*VAR_4]; } } if(VAR_8){ VAR_21= VAR_2[VAR_8 - 1 + VAR_9*VAR_4]; } if(VAR_3){ int VAR_21= VAR_8>>1; int VAR_21= VAR_9>>1; if(VAR_21<VAR_1->VAR_3->width && VAR_21<VAR_1->VAR_3->height)
VAR_21= VAR_3[VAR_21 + VAR_21*2*VAR_4]; } if(VAR_21|VAR_21|VAR_21|VAR_21|VAR_21){ int VAR_22= av_log2(3*ABS(VAR_21) + ABS(VAR_21) + 2*ABS(VAR_21) + ABS(VAR_21) + ABS(VAR_21)); put_rac(&VAR_0->c, &VAR_1->state[0][VAR_22], !!VAR_21); }else{ if(!VAR_10){ VAR_10= VAR_11[VAR_12++]; put_symbol2(&VAR_0->c, VAR_1->state[1], VAR_10, 3); assert(VAR_21); }else{ VAR_10--; assert(!VAR_21); } } if(VAR_21){ int VAR_22= av_log2(3*ABS(VAR_21) + ABS(VAR_21) + 2*ABS(VAR_21) + ABS(VAR_21) + ABS(VAR_21)); put_symbol2(&VAR_0->c, VAR_1->state[VAR_22 + 2], ABS(VAR_21)-1, VAR_22-4); put_rac(&VAR_0->c, &VAR_1->state[0][16 + 1 + 3 + quant3b[VAR_21&0xFF] + 3*quant3b[VAR_21&0xFF]], VAR_21<0); } } } } }