static void mc_block(uint8_t *dst, uint8_t *src, uint8_t *tmp, int stride, int b_w, int b_h, int dx, int dy){

    int x, y;

START_TIMER

    for(y=0; y < b_h+5; y++){

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

            int a0= src[x    ];

            int a1= src[x + 1];

            int a2= src[x + 2];

            int a3= src[x + 3];

            int a4= src[x + 4];

            int a5= src[x + 5];

//            int am= 9*(a1+a2) - (a0+a3);

            int am= 20*(a2+a3) - 5*(a1+a4) + (a0+a5);

//            int am= 18*(a2+a3) - 2*(a1+a4);

//             int aL= (-7*a0 + 105*a1 + 35*a2 - 5*a3)>>3;

//             int aR= (-7*a3 + 105*a2 + 35*a1 - 5*a0)>>3;



//            if(b_w==16) am= 8*(a1+a2);



            if(dx<8) tmp[x]= (32*a2*( 8-dx) +    am* dx    + 128)>>8;

            else     tmp[x]= (   am*(16-dx) + 32*a3*(dx-8) + 128)>>8;



/*            if     (dx< 4) tmp[x + y*stride]= (16*a1*( 4-dx) +    aL* dx     + 32)>>6;

            else if(dx< 8) tmp[x + y*stride]= (   aL*( 8-dx) +    am*(dx- 4) + 32)>>6;

            else if(dx<12) tmp[x + y*stride]= (   am*(12-dx) +    aR*(dx- 8) + 32)>>6;

            else           tmp[x + y*stride]= (   aR*(16-dx) + 16*a2*(dx-12) + 32)>>6;*/

        }

        tmp += stride;

        src += stride;

    }

    tmp -= (b_h+5)*stride;

    

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

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

            int a0= tmp[x + 0*stride];

            int a1= tmp[x + 1*stride];

            int a2= tmp[x + 2*stride];

            int a3= tmp[x + 3*stride];

            int a4= tmp[x + 4*stride];

            int a5= tmp[x + 5*stride];

            int am= 20*(a2+a3) - 5*(a1+a4) + (a0+a5);

//            int am= 18*(a2+a3) - 2*(a1+a4);

/*            int aL= (-7*a0 + 105*a1 + 35*a2 - 5*a3)>>3;

            int aR= (-7*a3 + 105*a2 + 35*a1 - 5*a0)>>3;*/

            

//            if(b_w==16) am= 8*(a1+a2);



            if(dy<8) dst[x]= (32*a2*( 8-dy) +    am* dy    + 128)>>8;

            else     dst[x]= (   am*(16-dy) + 32*a3*(dy-8) + 128)>>8;



/*            if     (dy< 4) tmp[x + y*stride]= (16*a1*( 4-dy) +    aL* dy     + 32)>>6;

            else if(dy< 8) tmp[x + y*stride]= (   aL*( 8-dy) +    am*(dy- 4) + 32)>>6;

            else if(dy<12) tmp[x + y*stride]= (   am*(12-dy) +    aR*(dy- 8) + 32)>>6;

            else           tmp[x + y*stride]= (   aR*(16-dy) + 16*a2*(dy-12) + 32)>>6;*/

        }

        dst += stride;

        tmp += stride;

    }

STOP_TIMER("mc_block")

}

static void mc_block(uint8_t *dst, uint8_t *src, uint8_t *tmp, int stride, int b_w, int b_h, int dx, int dy){

    int x, y;

START_TIMER

    for(y=0; y < b_h+5; y++){

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

            int a0= src[x    ];

            int a1= src[x + 1];

            int a2= src[x + 2];

            int a3= src[x + 3];

            int a4= src[x + 4];

            int a5= src[x + 5];



            int am= 20*(a2+a3) - 5*(a1+a4) + (a0+a5);













            if(dx<8) tmp[x]= (32*a2*( 8-dx) +    am* dx    + 128)>>8;

            else     tmp[x]= (   am*(16-dx) + 32*a3*(dx-8) + 128)>>8;











        }

        tmp += stride;

        src += stride;

    }

    tmp -= (b_h+5)*stride;

    

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

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

            int a0= tmp[x + 0*stride];

            int a1= tmp[x + 1*stride];

            int a2= tmp[x + 2*stride];

            int a3= tmp[x + 3*stride];

            int a4= tmp[x + 4*stride];

            int a5= tmp[x + 5*stride];

            int am= 20*(a2+a3) - 5*(a1+a4) + (a0+a5);







            





            if(dy<8) dst[x]= (32*a2*( 8-dy) +    am* dy    + 128)>>8;

            else     dst[x]= (   am*(16-dy) + 32*a3*(dy-8) + 128)>>8;











        }

        dst += stride;

        tmp += stride;

    }

STOP_TIMER("mc_block")

}

            if(dx<8) tmp[x]= (32*a2*( 8-dx) +    am* dx    + 128)>>8;             else     tmp[x]= (   am*(16-dx) + 32*a3*(dx-8) + 128)>>8;             if(dy<8) dst[x]= (32*a2*( 8-dy) +    am* dy    + 128)>>8;             else     dst[x]= (   am*(16-dy) + 32*a3*(dy-8) + 128)>>8;
static void FUNC_0(uint8_t *VAR_0, uint8_t *VAR_1, uint8_t *VAR_2, int VAR_3, int VAR_4, int VAR_5, int VAR_6, int VAR_7){

    int VAR_8, VAR_9;

START_TIMER

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

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

            int VAR_10= VAR_1[VAR_8    ];

            int VAR_11= VAR_1[VAR_8 + 1];

            int VAR_12= VAR_1[VAR_8 + 2];

            int VAR_13= VAR_1[VAR_8 + 3];

            int VAR_14= VAR_1[VAR_8 + 4];

            int VAR_15= VAR_1[VAR_8 + 5];



            int VAR_16= 20*(VAR_12+VAR_13) - 5*(VAR_11+VAR_14) + (VAR_10+VAR_15);













            if(VAR_6<8) VAR_2[VAR_8]= (32*VAR_12*( 8-VAR_6) +    VAR_16* VAR_6    + 128)>>8;

            else     VAR_2[VAR_8]= (   VAR_16*(16-VAR_6) + 32*VAR_13*(VAR_6-8) + 128)>>8;











        }

        VAR_2 += VAR_3;

        VAR_1 += VAR_3;

    }

    VAR_2 -= (VAR_5+5)*VAR_3;

    

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

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

            int VAR_10= VAR_2[VAR_8 + 0*VAR_3];

            int VAR_11= VAR_2[VAR_8 + 1*VAR_3];

            int VAR_12= VAR_2[VAR_8 + 2*VAR_3];

            int VAR_13= VAR_2[VAR_8 + 3*VAR_3];

            int VAR_14= VAR_2[VAR_8 + 4*VAR_3];

            int VAR_15= VAR_2[VAR_8 + 5*VAR_3];

            int VAR_16= 20*(VAR_12+VAR_13) - 5*(VAR_11+VAR_14) + (VAR_10+VAR_15);







            





            if(VAR_7<8) VAR_0[VAR_8]= (32*VAR_12*( 8-VAR_7) +    VAR_16* VAR_7    + 128)>>8;

            else     VAR_0[VAR_8]= (   VAR_16*(16-VAR_7) + 32*VAR_13*(VAR_7-8) + 128)>>8;











        }

        VAR_0 += VAR_3;

        VAR_2 += VAR_3;

    }

STOP_TIMER("FUNC_0")

}

static void FUNC_0(uint8_t *VAR_0, uint8_t *VAR_1, uint8_t *VAR_2, int VAR_3, int VAR_4, int VAR_5, int VAR_6, int VAR_7){ int VAR_8, VAR_9; START_TIMER
for(VAR_9=0; VAR_9 < VAR_5+5; VAR_9++){ for(VAR_8=0; VAR_8 < VAR_4; VAR_8++){ int VAR_10= VAR_1[VAR_8    ]; int VAR_11= VAR_1[VAR_8 + 1]; int VAR_12= VAR_1[VAR_8 + 2]; int VAR_13= VAR_1[VAR_8 + 3]; int VAR_14= VAR_1[VAR_8 + 4]; int VAR_15= VAR_1[VAR_8 + 5]; int VAR_16= 20*(VAR_12+VAR_13) - 5*(VAR_11+VAR_14) + (VAR_10+VAR_15); if(VAR_6<8) VAR_2[VAR_8]= (32*VAR_12*( 8-VAR_6) +    VAR_16* VAR_6    + 128)>>8; else     VAR_2[VAR_8]= (   VAR_16*(16-VAR_6) + 32*VAR_13*(VAR_6-8) + 128)>>8; } VAR_2 += VAR_3; VAR_1 += VAR_3; } VAR_2 -= (VAR_5+5)*VAR_3; for(VAR_9=0; VAR_9 < VAR_5; VAR_9++){ for(VAR_8=0; VAR_8 < VAR_4; VAR_8++){ int VAR_10= VAR_2[VAR_8 + 0*VAR_3]; int VAR_11= VAR_2[VAR_8 + 1*VAR_3]; int VAR_12= VAR_2[VAR_8 + 2*VAR_3]; int VAR_13= VAR_2[VAR_8 + 3*VAR_3]; int VAR_14= VAR_2[VAR_8 + 4*VAR_3]; int VAR_15= VAR_2[VAR_8 + 5*VAR_3]; int VAR_16= 20*(VAR_12+VAR_13) - 5*(VAR_11+VAR_14) + (VAR_10+VAR_15); if(VAR_7<8) VAR_0[VAR_8]= (32*VAR_12*( 8-VAR_7) +    VAR_16* VAR_7    + 128)>>8; else     VAR_0[VAR_8]= (   VAR_16*(16-VAR_7) + 32*VAR_13*(VAR_7-8) + 128)>>8; } VAR_0 += VAR_3; VAR_2 += VAR_3; } STOP_TIMER("FUNC_0")
}