static inline int small_diamond_search(MpegEncContext * s, int *best, int dmin,

                                       UINT8 *new_pic, UINT8 *old_pic, int pic_stride,

                                       int pred_x, int pred_y, UINT16 *mv_penalty, int quant,

                                       int xmin, int ymin, int xmax, int ymax, int shift)

{

    int next_dir=-1;



    for(;;){

        int d;

        const int dir= next_dir;

        const int x= best[0];

        const int y= best[1];

        next_dir=-1;



//printf("%d", dir);

        if(dir!=2 && x>xmin) CHECK_MV_DIR(x-1, y  , 0)

        if(dir!=3 && y>ymin) CHECK_MV_DIR(x  , y-1, 1)

        if(dir!=0 && x<xmax) CHECK_MV_DIR(x+1, y  , 2)

        if(dir!=1 && y<ymax) CHECK_MV_DIR(x  , y+1, 3)



        if(next_dir==-1){

            return dmin;

        }

    }



/*    for(;;){

        int d;

        const int x= best[0];

        const int y= best[1];

        const int last_min=dmin;

        if(x>xmin) CHECK_MV(x-1, y  )

        if(y>xmin) CHECK_MV(x  , y-1)

        if(x<xmax) CHECK_MV(x+1, y  )

        if(y<xmax) CHECK_MV(x  , y+1)

        if(x>xmin && y>ymin) CHECK_MV(x-1, y-1)

        if(x>xmin && y<ymax) CHECK_MV(x-1, y+1)

        if(x<xmax && y>ymin) CHECK_MV(x+1, y-1)

        if(x<xmax && y<ymax) CHECK_MV(x+1, y+1)

        if(x-1>xmin) CHECK_MV(x-2, y  )

        if(y-1>xmin) CHECK_MV(x  , y-2)

        if(x+1<xmax) CHECK_MV(x+2, y  )

        if(y+1<xmax) CHECK_MV(x  , y+2)

        if(x-1>xmin && y-1>ymin) CHECK_MV(x-2, y-2)

        if(x-1>xmin && y+1<ymax) CHECK_MV(x-2, y+2)

        if(x+1<xmax && y-1>ymin) CHECK_MV(x+2, y-2)

        if(x+1<xmax && y+1<ymax) CHECK_MV(x+2, y+2)

        if(dmin==last_min) return dmin;

    }

    */

}

static inline int small_diamond_search(MpegEncContext * s, int *best, int dmin,

                                       UINT8 *new_pic, UINT8 *old_pic, int pic_stride,

                                       int pred_x, int pred_y, UINT16 *mv_penalty, int quant,

                                       int xmin, int ymin, int xmax, int ymax, int shift)

{

    int next_dir=-1;



    for(;;){

        int d;

        const int dir= next_dir;

        const int x= best[0];

        const int y= best[1];

        next_dir=-1;





        if(dir!=2 && x>xmin) CHECK_MV_DIR(x-1, y  , 0)

        if(dir!=3 && y>ymin) CHECK_MV_DIR(x  , y-1, 1)

        if(dir!=0 && x<xmax) CHECK_MV_DIR(x+1, y  , 2)

        if(dir!=1 && y<ymax) CHECK_MV_DIR(x  , y+1, 3)



        if(next_dir==-1){

            return dmin;

        }

    }



















































}

static inline int FUNC_0(MpegEncContext * VAR_0, int *VAR_1, int VAR_2,

                                       UINT8 *VAR_3, UINT8 *VAR_4, int VAR_5,

                                       int VAR_6, int VAR_7, UINT16 *VAR_8, int VAR_9,

                                       int VAR_10, int VAR_11, int VAR_12, int VAR_13, int VAR_14)

{

    int VAR_15=-1;



    for(;;){

        int VAR_16;

        const int VAR_17= VAR_15;

        const int VAR_18= VAR_1[0];

        const int VAR_19= VAR_1[1];

        VAR_15=-1;





        if(VAR_17!=2 && VAR_18>VAR_10) CHECK_MV_DIR(VAR_18-1, VAR_19  , 0)

        if(VAR_17!=3 && VAR_19>VAR_11) CHECK_MV_DIR(VAR_18  , VAR_19-1, 1)

        if(VAR_17!=0 && VAR_18<VAR_12) CHECK_MV_DIR(VAR_18+1, VAR_19  , 2)

        if(VAR_17!=1 && VAR_19<VAR_13) CHECK_MV_DIR(VAR_18  , VAR_19+1, 3)



        if(VAR_15==-1){

            return VAR_2;

        }

    }



















































}

static inline int FUNC_0(MpegEncContext * VAR_0, int *VAR_1, int VAR_2,
UINT8 *VAR_3, UINT8 *VAR_4, int VAR_5,
int VAR_6, int VAR_7, UINT16 *VAR_8, int VAR_9,
int VAR_10, int VAR_11, int VAR_12, int VAR_13, int VAR_14)
{ int VAR_15=-1; for(;;){ int VAR_16; const int VAR_17= VAR_15; const int VAR_18= VAR_1[0]; const int VAR_19= VAR_1[1]; VAR_15=-1; if(VAR_17!=2 && VAR_18>VAR_10) CHECK_MV_DIR(VAR_18-1, VAR_19  , 0)
if(VAR_17!=3 && VAR_19>VAR_11) CHECK_MV_DIR(VAR_18  , VAR_19-1, 1)
if(VAR_17!=0 && VAR_18<VAR_12) CHECK_MV_DIR(VAR_18+1, VAR_19  , 2)
if(VAR_17!=1 && VAR_19<VAR_13) CHECK_MV_DIR(VAR_18  , VAR_19+1, 3)
if(VAR_15==-1){ return VAR_2; } } }