static void updateMMXDitherTables(SwsContext *c, int dstY, int lumBufIndex, int chrBufIndex,

                                  int lastInLumBuf, int lastInChrBuf)

{

    const int dstH= c->dstH;

    const int flags= c->flags;

    int16_t **lumPixBuf= c->lumPixBuf;

    int16_t **chrUPixBuf= c->chrUPixBuf;

    int16_t **chrVPixBuf= c->chrVPixBuf;

    int16_t **alpPixBuf= c->alpPixBuf;

    const int vLumBufSize= c->vLumBufSize;

    const int vChrBufSize= c->vChrBufSize;

    int16_t *vLumFilterPos= c->vLumFilterPos;

    int16_t *vChrFilterPos= c->vChrFilterPos;

    int16_t *vLumFilter= c->vLumFilter;

    int16_t *vChrFilter= c->vChrFilter;

    int32_t *lumMmxFilter= c->lumMmxFilter;

    int32_t *chrMmxFilter= c->chrMmxFilter;

    int32_t av_unused *alpMmxFilter= c->alpMmxFilter;

    const int vLumFilterSize= c->vLumFilterSize;

    const int vChrFilterSize= c->vChrFilterSize;

    const int chrDstY= dstY>>c->chrDstVSubSample;

    const int firstLumSrcY= vLumFilterPos[dstY]; //First line needed as input

    const int firstChrSrcY= vChrFilterPos[chrDstY]; //First line needed as input



    c->blueDither= ff_dither8[dstY&1];

    if (c->dstFormat == PIX_FMT_RGB555 || c->dstFormat == PIX_FMT_BGR555)

        c->greenDither= ff_dither8[dstY&1];

    else

        c->greenDither= ff_dither4[dstY&1];

    c->redDither= ff_dither8[(dstY+1)&1];

    if (dstY < dstH - 2) {

        const int16_t **lumSrcPtr= (const int16_t **) lumPixBuf + lumBufIndex + firstLumSrcY - lastInLumBuf + vLumBufSize;

        const int16_t **chrUSrcPtr= (const int16_t **) chrUPixBuf + chrBufIndex + firstChrSrcY - lastInChrBuf + vChrBufSize;

        const int16_t **chrVSrcPtr= (const int16_t **) chrVPixBuf + chrBufIndex + firstChrSrcY - lastInChrBuf + vChrBufSize;

        const int16_t **alpSrcPtr= (CONFIG_SWSCALE_ALPHA && alpPixBuf) ? (const int16_t **) alpPixBuf + lumBufIndex + firstLumSrcY - lastInLumBuf + vLumBufSize : NULL;

        int i;

        if (flags & SWS_ACCURATE_RND) {

            int s= APCK_SIZE / 8;

            for (i=0; i<vLumFilterSize; i+=2) {

                *(const void**)&lumMmxFilter[s*i              ]= lumSrcPtr[i  ];

                *(const void**)&lumMmxFilter[s*i+APCK_PTR2/4  ]= lumSrcPtr[i+(vLumFilterSize>1)];

                lumMmxFilter[s*i+APCK_COEF/4  ]=

                lumMmxFilter[s*i+APCK_COEF/4+1]= vLumFilter[dstY*vLumFilterSize + i    ]

                           + (vLumFilterSize>1 ? vLumFilter[dstY*vLumFilterSize + i + 1]<<16 : 0);

                if (CONFIG_SWSCALE_ALPHA && alpPixBuf) {

                    *(const void**)&alpMmxFilter[s*i              ]= alpSrcPtr[i  ];

                    *(const void**)&alpMmxFilter[s*i+APCK_PTR2/4  ]= alpSrcPtr[i+(vLumFilterSize>1)];

                    alpMmxFilter[s*i+APCK_COEF/4  ]=

                    alpMmxFilter[s*i+APCK_COEF/4+1]= lumMmxFilter[s*i+APCK_COEF/4  ];

                }

            }

            for (i=0; i<vChrFilterSize; i+=2) {

                *(const void**)&chrMmxFilter[s*i              ]= chrUSrcPtr[i  ];

                *(const void**)&chrMmxFilter[s*i+APCK_PTR2/4  ]= chrUSrcPtr[i+(vChrFilterSize>1)];

                chrMmxFilter[s*i+APCK_COEF/4  ]=

                chrMmxFilter[s*i+APCK_COEF/4+1]= vChrFilter[chrDstY*vChrFilterSize + i    ]

                           + (vChrFilterSize>1 ? vChrFilter[chrDstY*vChrFilterSize + i + 1]<<16 : 0);

            }

        } else {

            for (i=0; i<vLumFilterSize; i++) {

                *(const void**)&lumMmxFilter[4*i+0]= lumSrcPtr[i];

                lumMmxFilter[4*i+2]=

                lumMmxFilter[4*i+3]=

                    ((uint16_t)vLumFilter[dstY*vLumFilterSize + i])*0x10001;

                if (CONFIG_SWSCALE_ALPHA && alpPixBuf) {

                    *(const void**)&alpMmxFilter[4*i+0]= alpSrcPtr[i];

                    alpMmxFilter[4*i+2]=

                    alpMmxFilter[4*i+3]= lumMmxFilter[4*i+2];

                }

            }

            for (i=0; i<vChrFilterSize; i++) {

                *(const void**)&chrMmxFilter[4*i+0]= chrUSrcPtr[i];

                chrMmxFilter[4*i+2]=

                chrMmxFilter[4*i+3]=

                    ((uint16_t)vChrFilter[chrDstY*vChrFilterSize + i])*0x10001;

            }

        }

    }

}

static void updateMMXDitherTables(SwsContext *c, int dstY, int lumBufIndex, int chrBufIndex,

                                  int lastInLumBuf, int lastInChrBuf)

{

    const int dstH= c->dstH;

    const int flags= c->flags;

    int16_t **lumPixBuf= c->lumPixBuf;

    int16_t **chrUPixBuf= c->chrUPixBuf;

    int16_t **chrVPixBuf= c->chrVPixBuf;

    int16_t **alpPixBuf= c->alpPixBuf;

    const int vLumBufSize= c->vLumBufSize;

    const int vChrBufSize= c->vChrBufSize;

    int16_t *vLumFilterPos= c->vLumFilterPos;

    int16_t *vChrFilterPos= c->vChrFilterPos;

    int16_t *vLumFilter= c->vLumFilter;

    int16_t *vChrFilter= c->vChrFilter;

    int32_t *lumMmxFilter= c->lumMmxFilter;

    int32_t *chrMmxFilter= c->chrMmxFilter;

    int32_t av_unused *alpMmxFilter= c->alpMmxFilter;

    const int vLumFilterSize= c->vLumFilterSize;

    const int vChrFilterSize= c->vChrFilterSize;

    const int chrDstY= dstY>>c->chrDstVSubSample;

    const int firstLumSrcY= vLumFilterPos[dstY]; 

    const int firstChrSrcY= vChrFilterPos[chrDstY]; 



    c->blueDither= ff_dither8[dstY&1];

    if (c->dstFormat == PIX_FMT_RGB555 || c->dstFormat == PIX_FMT_BGR555)

        c->greenDither= ff_dither8[dstY&1];

    else

        c->greenDither= ff_dither4[dstY&1];

    c->redDither= ff_dither8[(dstY+1)&1];

    if (dstY < dstH - 2) {

        const int16_t **lumSrcPtr= (const int16_t **) lumPixBuf + lumBufIndex + firstLumSrcY - lastInLumBuf + vLumBufSize;

        const int16_t **chrUSrcPtr= (const int16_t **) chrUPixBuf + chrBufIndex + firstChrSrcY - lastInChrBuf + vChrBufSize;

        const int16_t **chrVSrcPtr= (const int16_t **) chrVPixBuf + chrBufIndex + firstChrSrcY - lastInChrBuf + vChrBufSize;

        const int16_t **alpSrcPtr= (CONFIG_SWSCALE_ALPHA && alpPixBuf) ? (const int16_t **) alpPixBuf + lumBufIndex + firstLumSrcY - lastInLumBuf + vLumBufSize : NULL;

        int i;

        if (flags & SWS_ACCURATE_RND) {

            int s= APCK_SIZE / 8;

            for (i=0; i<vLumFilterSize; i+=2) {

                *(const void**)&lumMmxFilter[s*i              ]= lumSrcPtr[i  ];

                *(const void**)&lumMmxFilter[s*i+APCK_PTR2/4  ]= lumSrcPtr[i+(vLumFilterSize>1)];

                lumMmxFilter[s*i+APCK_COEF/4  ]=

                lumMmxFilter[s*i+APCK_COEF/4+1]= vLumFilter[dstY*vLumFilterSize + i    ]

                           + (vLumFilterSize>1 ? vLumFilter[dstY*vLumFilterSize + i + 1]<<16 : 0);

                if (CONFIG_SWSCALE_ALPHA && alpPixBuf) {

                    *(const void**)&alpMmxFilter[s*i              ]= alpSrcPtr[i  ];

                    *(const void**)&alpMmxFilter[s*i+APCK_PTR2/4  ]= alpSrcPtr[i+(vLumFilterSize>1)];

                    alpMmxFilter[s*i+APCK_COEF/4  ]=

                    alpMmxFilter[s*i+APCK_COEF/4+1]= lumMmxFilter[s*i+APCK_COEF/4  ];

                }

            }

            for (i=0; i<vChrFilterSize; i+=2) {

                *(const void**)&chrMmxFilter[s*i              ]= chrUSrcPtr[i  ];

                *(const void**)&chrMmxFilter[s*i+APCK_PTR2/4  ]= chrUSrcPtr[i+(vChrFilterSize>1)];

                chrMmxFilter[s*i+APCK_COEF/4  ]=

                chrMmxFilter[s*i+APCK_COEF/4+1]= vChrFilter[chrDstY*vChrFilterSize + i    ]

                           + (vChrFilterSize>1 ? vChrFilter[chrDstY*vChrFilterSize + i + 1]<<16 : 0);

            }

        } else {

            for (i=0; i<vLumFilterSize; i++) {

                *(const void**)&lumMmxFilter[4*i+0]= lumSrcPtr[i];

                lumMmxFilter[4*i+2]=

                lumMmxFilter[4*i+3]=

                    ((uint16_t)vLumFilter[dstY*vLumFilterSize + i])*0x10001;

                if (CONFIG_SWSCALE_ALPHA && alpPixBuf) {

                    *(const void**)&alpMmxFilter[4*i+0]= alpSrcPtr[i];

                    alpMmxFilter[4*i+2]=

                    alpMmxFilter[4*i+3]= lumMmxFilter[4*i+2];

                }

            }

            for (i=0; i<vChrFilterSize; i++) {

                *(const void**)&chrMmxFilter[4*i+0]= chrUSrcPtr[i];

                chrMmxFilter[4*i+2]=

                chrMmxFilter[4*i+3]=

                    ((uint16_t)vChrFilter[chrDstY*vChrFilterSize + i])*0x10001;

            }

        }

    }

}

    int16_t **chrVPixBuf= c->chrVPixBuf;         const int16_t **chrVSrcPtr= (const int16_t **) chrVPixBuf + chrBufIndex + firstChrSrcY - lastInChrBuf + vChrBufSize;
static void FUNC_0(SwsContext *VAR_0, int VAR_1, int VAR_2, int VAR_3,

                                  int VAR_4, int VAR_5)

{

    const int VAR_6= VAR_0->VAR_6;

    const int VAR_7= VAR_0->VAR_7;

    int16_t **lumPixBuf= VAR_0->lumPixBuf;

    int16_t **chrUPixBuf= VAR_0->chrUPixBuf;

    int16_t **chrVPixBuf= VAR_0->chrVPixBuf;

    int16_t **alpPixBuf= VAR_0->alpPixBuf;

    const int VAR_8= VAR_0->VAR_8;

    const int VAR_9= VAR_0->VAR_9;

    int16_t *vLumFilterPos= VAR_0->vLumFilterPos;

    int16_t *vChrFilterPos= VAR_0->vChrFilterPos;

    int16_t *vLumFilter= VAR_0->vLumFilter;

    int16_t *vChrFilter= VAR_0->vChrFilter;

    int32_t *lumMmxFilter= VAR_0->lumMmxFilter;

    int32_t *chrMmxFilter= VAR_0->chrMmxFilter;

    int32_t av_unused *alpMmxFilter= VAR_0->alpMmxFilter;

    const int VAR_10= VAR_0->VAR_10;

    const int VAR_11= VAR_0->VAR_11;

    const int VAR_12= VAR_1>>VAR_0->chrDstVSubSample;

    const int VAR_13= vLumFilterPos[VAR_1]; 

    const int VAR_14= vChrFilterPos[VAR_12]; 



    VAR_0->blueDither= ff_dither8[VAR_1&1];

    if (VAR_0->dstFormat == PIX_FMT_RGB555 || VAR_0->dstFormat == PIX_FMT_BGR555)

        VAR_0->greenDither= ff_dither8[VAR_1&1];

    else

        VAR_0->greenDither= ff_dither4[VAR_1&1];

    VAR_0->redDither= ff_dither8[(VAR_1+1)&1];

    if (VAR_1 < VAR_6 - 2) {

        const int16_t **VAR_15= (const int16_t **) lumPixBuf + VAR_2 + VAR_13 - VAR_4 + VAR_8;

        const int16_t **VAR_16= (const int16_t **) chrUPixBuf + VAR_3 + VAR_14 - VAR_5 + VAR_9;

        const int16_t **VAR_17= (const int16_t **) chrVPixBuf + VAR_3 + VAR_14 - VAR_5 + VAR_9;

        const int16_t **VAR_18= (CONFIG_SWSCALE_ALPHA && alpPixBuf) ? (const int16_t **) alpPixBuf + VAR_2 + VAR_13 - VAR_4 + VAR_8 : NULL;

        int VAR_19;

        if (VAR_7 & SWS_ACCURATE_RND) {

            int VAR_20= APCK_SIZE / 8;

            for (VAR_19=0; VAR_19<VAR_10; VAR_19+=2) {

                *(const void**)&lumMmxFilter[VAR_20*VAR_19              ]= VAR_15[VAR_19  ];

                *(const void**)&lumMmxFilter[VAR_20*VAR_19+APCK_PTR2/4  ]= VAR_15[VAR_19+(VAR_10>1)];

                lumMmxFilter[VAR_20*VAR_19+APCK_COEF/4  ]=

                lumMmxFilter[VAR_20*VAR_19+APCK_COEF/4+1]= vLumFilter[VAR_1*VAR_10 + VAR_19    ]

                           + (VAR_10>1 ? vLumFilter[VAR_1*VAR_10 + VAR_19 + 1]<<16 : 0);

                if (CONFIG_SWSCALE_ALPHA && alpPixBuf) {

                    *(const void**)&alpMmxFilter[VAR_20*VAR_19              ]= VAR_18[VAR_19  ];

                    *(const void**)&alpMmxFilter[VAR_20*VAR_19+APCK_PTR2/4  ]= VAR_18[VAR_19+(VAR_10>1)];

                    alpMmxFilter[VAR_20*VAR_19+APCK_COEF/4  ]=

                    alpMmxFilter[VAR_20*VAR_19+APCK_COEF/4+1]= lumMmxFilter[VAR_20*VAR_19+APCK_COEF/4  ];

                }

            }

            for (VAR_19=0; VAR_19<VAR_11; VAR_19+=2) {

                *(const void**)&chrMmxFilter[VAR_20*VAR_19              ]= VAR_16[VAR_19  ];

                *(const void**)&chrMmxFilter[VAR_20*VAR_19+APCK_PTR2/4  ]= VAR_16[VAR_19+(VAR_11>1)];

                chrMmxFilter[VAR_20*VAR_19+APCK_COEF/4  ]=

                chrMmxFilter[VAR_20*VAR_19+APCK_COEF/4+1]= vChrFilter[VAR_12*VAR_11 + VAR_19    ]

                           + (VAR_11>1 ? vChrFilter[VAR_12*VAR_11 + VAR_19 + 1]<<16 : 0);

            }

        } else {

            for (VAR_19=0; VAR_19<VAR_10; VAR_19++) {

                *(const void**)&lumMmxFilter[4*VAR_19+0]= VAR_15[VAR_19];

                lumMmxFilter[4*VAR_19+2]=

                lumMmxFilter[4*VAR_19+3]=

                    ((uint16_t)vLumFilter[VAR_1*VAR_10 + VAR_19])*0x10001;

                if (CONFIG_SWSCALE_ALPHA && alpPixBuf) {

                    *(const void**)&alpMmxFilter[4*VAR_19+0]= VAR_18[VAR_19];

                    alpMmxFilter[4*VAR_19+2]=

                    alpMmxFilter[4*VAR_19+3]= lumMmxFilter[4*VAR_19+2];

                }

            }

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

                *(const void**)&chrMmxFilter[4*VAR_19+0]= VAR_16[VAR_19];

                chrMmxFilter[4*VAR_19+2]=

                chrMmxFilter[4*VAR_19+3]=

                    ((uint16_t)vChrFilter[VAR_12*VAR_11 + VAR_19])*0x10001;

            }

        }

    }

}

static void FUNC_0(SwsContext *VAR_0, int VAR_1, int VAR_2, int VAR_3,
int VAR_4, int VAR_5)
{ const int VAR_6= VAR_0->VAR_6; const int VAR_7= VAR_0->VAR_7; int16_t **lumPixBuf= VAR_0->lumPixBuf; int16_t **chrUPixBuf= VAR_0->chrUPixBuf; int16_t **chrVPixBuf= VAR_0->chrVPixBuf; int16_t **alpPixBuf= VAR_0->alpPixBuf; const int VAR_8= VAR_0->VAR_8; const int VAR_9= VAR_0->VAR_9; int16_t *vLumFilterPos= VAR_0->vLumFilterPos; int16_t *vChrFilterPos= VAR_0->vChrFilterPos; int16_t *vLumFilter= VAR_0->vLumFilter; int16_t *vChrFilter= VAR_0->vChrFilter; int32_t *lumMmxFilter= VAR_0->lumMmxFilter; int32_t *chrMmxFilter= VAR_0->chrMmxFilter; int32_t av_unused *alpMmxFilter= VAR_0->alpMmxFilter; const int VAR_10= VAR_0->VAR_10; const int VAR_11= VAR_0->VAR_11; const int VAR_12= VAR_1>>VAR_0->chrDstVSubSample; const int VAR_13= vLumFilterPos[VAR_1]; const int VAR_14= vChrFilterPos[VAR_12]; VAR_0->blueDither= ff_dither8[VAR_1&1]; if (VAR_0->dstFormat == PIX_FMT_RGB555 || VAR_0->dstFormat == PIX_FMT_BGR555)
VAR_0->greenDither= ff_dither8[VAR_1&1]; else
VAR_0->greenDither= ff_dither4[VAR_1&1]; VAR_0->redDither= ff_dither8[(VAR_1+1)&1]; if (VAR_1 < VAR_6 - 2) { const int16_t **VAR_15= (const int16_t **) lumPixBuf + VAR_2 + VAR_13 - VAR_4 + VAR_8; const int16_t **VAR_16= (const int16_t **) chrUPixBuf + VAR_3 + VAR_14 - VAR_5 + VAR_9; const int16_t **VAR_17= (const int16_t **) chrVPixBuf + VAR_3 + VAR_14 - VAR_5 + VAR_9; const int16_t **VAR_18= (CONFIG_SWSCALE_ALPHA && alpPixBuf) ? (const int16_t **) alpPixBuf + VAR_2 + VAR_13 - VAR_4 + VAR_8 : NULL; int VAR_19; if (VAR_7 & SWS_ACCURATE_RND) { int VAR_20= APCK_SIZE / 8; for (VAR_19=0; VAR_19<VAR_10; VAR_19+=2) { *(const void**)&lumMmxFilter[VAR_20*VAR_19              ]= VAR_15[VAR_19  ]; *(const void**)&lumMmxFilter[VAR_20*VAR_19+APCK_PTR2/4  ]= VAR_15[VAR_19+(VAR_10>1)]; lumMmxFilter[VAR_20*VAR_19+APCK_COEF/4  ]=
lumMmxFilter[VAR_20*VAR_19+APCK_COEF/4+1]= vLumFilter[VAR_1*VAR_10 + VAR_19    ]
+ (VAR_10>1 ? vLumFilter[VAR_1*VAR_10 + VAR_19 + 1]<<16 : 0); if (CONFIG_SWSCALE_ALPHA && alpPixBuf) { *(const void**)&alpMmxFilter[VAR_20*VAR_19              ]= VAR_18[VAR_19  ]; *(const void**)&alpMmxFilter[VAR_20*VAR_19+APCK_PTR2/4  ]= VAR_18[VAR_19+(VAR_10>1)]; alpMmxFilter[VAR_20*VAR_19+APCK_COEF/4  ]=
alpMmxFilter[VAR_20*VAR_19+APCK_COEF/4+1]= lumMmxFilter[VAR_20*VAR_19+APCK_COEF/4  ]; } } for (VAR_19=0; VAR_19<VAR_11; VAR_19+=2) { *(const void**)&chrMmxFilter[VAR_20*VAR_19              ]= VAR_16[VAR_19  ]; *(const void**)&chrMmxFilter[VAR_20*VAR_19+APCK_PTR2/4  ]= VAR_16[VAR_19+(VAR_11>1)]; chrMmxFilter[VAR_20*VAR_19+APCK_COEF/4  ]=
chrMmxFilter[VAR_20*VAR_19+APCK_COEF/4+1]= vChrFilter[VAR_12*VAR_11 + VAR_19    ]
+ (VAR_11>1 ? vChrFilter[VAR_12*VAR_11 + VAR_19 + 1]<<16 : 0); } } else { for (VAR_19=0; VAR_19<VAR_10; VAR_19++) { *(const void**)&lumMmxFilter[4*VAR_19+0]= VAR_15[VAR_19]; lumMmxFilter[4*VAR_19+2]=
lumMmxFilter[4*VAR_19+3]=
((uint16_t)vLumFilter[VAR_1*VAR_10 + VAR_19])*0x10001; if (CONFIG_SWSCALE_ALPHA && alpPixBuf) { *(const void**)&alpMmxFilter[4*VAR_19+0]= VAR_18[VAR_19]; alpMmxFilter[4*VAR_19+2]=
alpMmxFilter[4*VAR_19+3]= lumMmxFilter[4*VAR_19+2]; } } for (VAR_19=0; VAR_19<VAR_11; VAR_19++) { *(const void**)&chrMmxFilter[4*VAR_19+0]= VAR_16[VAR_19]; chrMmxFilter[4*VAR_19+2]=
chrMmxFilter[4*VAR_19+3]=
((uint16_t)vChrFilter[VAR_12*VAR_11 + VAR_19])*0x10001; } } } }