static void spatial_compose53i_dy_buffered(dwt_compose_t *cs, slice_buffer * sb, int width, int height, int stride_line){

    int y= cs->y;

    int mirror0 = mirror(y-1, height-1);

    int mirror1 = mirror(y  , height-1);

    int mirror2 = mirror(y+1, height-1);

    int mirror3 = mirror(y+2, height-1);



    DWTELEM *b0= cs->b0;

    DWTELEM *b1= cs->b1;

    DWTELEM *b2= slice_buffer_get_line(sb, mirror2 * stride_line);

    DWTELEM *b3= slice_buffer_get_line(sb, mirror3 * stride_line);



{START_TIMER

        if(mirror1 <= mirror3) vertical_compose53iL0(b1, b2, b3, width);

        if(mirror0 <= mirror2) vertical_compose53iH0(b0, b1, b2, width);

STOP_TIMER("vertical_compose53i*")}



{START_TIMER

        if(y-1 >= 0) horizontal_compose53i(b0, width);

        if(mirror0 <= mirror2) horizontal_compose53i(b1, width);

STOP_TIMER("horizontal_compose53i")}



    cs->b0 = b2;

    cs->b1 = b3;

    cs->y += 2;

}

static void spatial_compose53i_dy_buffered(dwt_compose_t *cs, slice_buffer * sb, int width, int height, int stride_line){

    int y= cs->y;

    int mirror0 = mirror(y-1, height-1);

    int mirror1 = mirror(y  , height-1);

    int mirror2 = mirror(y+1, height-1);

    int mirror3 = mirror(y+2, height-1);



    DWTELEM *b0= cs->b0;

    DWTELEM *b1= cs->b1;

    DWTELEM *b2= slice_buffer_get_line(sb, mirror2 * stride_line);

    DWTELEM *b3= slice_buffer_get_line(sb, mirror3 * stride_line);



{START_TIMER

        if(mirror1 <= mirror3) vertical_compose53iL0(b1, b2, b3, width);

        if(mirror0 <= mirror2) vertical_compose53iH0(b0, b1, b2, width);

STOP_TIMER("vertical_compose53i*")}



{START_TIMER

        if(y-1 >= 0) horizontal_compose53i(b0, width);

        if(mirror0 <= mirror2) horizontal_compose53i(b1, width);

STOP_TIMER("horizontal_compose53i")}



    cs->b0 = b2;

    cs->b1 = b3;

    cs->y += 2;

}

        if(mirror1 <= mirror3) vertical_compose53iL0(b1, b2, b3, width);         if(mirror0 <= mirror2) vertical_compose53iH0(b0, b1, b2, width);         if(y-1 >= 0) horizontal_compose53i(b0, width);         if(mirror0 <= mirror2) horizontal_compose53i(b1, width);         if(y-1 >= 0) horizontal_compose53i(b0, width);
static void FUNC_0(dwt_compose_t *VAR_0, slice_buffer * VAR_1, int VAR_2, int VAR_3, int VAR_4){

    int VAR_5= VAR_0->VAR_5;

    int VAR_6 = mirror(VAR_5-1, VAR_3-1);

    int VAR_7 = mirror(VAR_5  , VAR_3-1);

    int VAR_8 = mirror(VAR_5+1, VAR_3-1);

    int VAR_9 = mirror(VAR_5+2, VAR_3-1);



    DWTELEM *b0= VAR_0->b0;

    DWTELEM *b1= VAR_0->b1;

    DWTELEM *b2= slice_buffer_get_line(VAR_1, VAR_8 * VAR_4);

    DWTELEM *b3= slice_buffer_get_line(VAR_1, VAR_9 * VAR_4);



{START_TIMER

        if(VAR_7 <= VAR_9) vertical_compose53iL0(b1, b2, b3, VAR_2);

        if(VAR_6 <= VAR_8) vertical_compose53iH0(b0, b1, b2, VAR_2);

STOP_TIMER("vertical_compose53i*")}



{START_TIMER

        if(VAR_5-1 >= 0) horizontal_compose53i(b0, VAR_2);

        if(VAR_6 <= VAR_8) horizontal_compose53i(b1, VAR_2);

STOP_TIMER("horizontal_compose53i")}



    VAR_0->b0 = b2;

    VAR_0->b1 = b3;

    VAR_0->VAR_5 += 2;

}

static void FUNC_0(dwt_compose_t *VAR_0, slice_buffer * VAR_1, int VAR_2, int VAR_3, int VAR_4){ int VAR_5= VAR_0->VAR_5; int VAR_6 = mirror(VAR_5-1, VAR_3-1); int VAR_7 = mirror(VAR_5  , VAR_3-1); int VAR_8 = mirror(VAR_5+1, VAR_3-1); int VAR_9 = mirror(VAR_5+2, VAR_3-1); DWTELEM *b0= VAR_0->b0; DWTELEM *b1= VAR_0->b1; DWTELEM *b2= slice_buffer_get_line(VAR_1, VAR_8 * VAR_4); DWTELEM *b3= slice_buffer_get_line(VAR_1, VAR_9 * VAR_4); {START_TIMER if(VAR_7 <= VAR_9) vertical_compose53iL0(b1, b2, b3, VAR_2); if(VAR_6 <= VAR_8) vertical_compose53iH0(b0, b1, b2, VAR_2); STOP_TIMER("vertical_compose53i*")} {START_TIMER if(VAR_5-1 >= 0) horizontal_compose53i(b0, VAR_2); if(VAR_6 <= VAR_8) horizontal_compose53i(b1, VAR_2); STOP_TIMER("horizontal_compose53i")} VAR_0->b0 = b2; VAR_0->b1 = b3; VAR_0->VAR_5 += 2; }