static void png_filter_row(DSPContext *dsp, uint8_t *dst, int filter_type,

                           uint8_t *src, uint8_t *top, int size, int bpp)

{

    int i;



    switch(filter_type) {

    case PNG_FILTER_VALUE_NONE:

        memcpy(dst, src, size);

        break;

    case PNG_FILTER_VALUE_SUB:

        dsp->diff_bytes(dst, src, src-bpp, size);

        memcpy(dst, src, bpp);

        break;

    case PNG_FILTER_VALUE_UP:

        dsp->diff_bytes(dst, src, top, size);

        break;

    case PNG_FILTER_VALUE_AVG:

        for(i = 0; i < bpp; i++)

            dst[i] = src[i] - (top[i] >> 1);

        for(; i < size; i++)

            dst[i] = src[i] - ((src[i-bpp] + top[i]) >> 1);

        break;

    case PNG_FILTER_VALUE_PAETH:

        for(i = 0; i < bpp; i++)

            dst[i] = src[i] - top[i];

        sub_png_paeth_prediction(dst+i, src+i, top+i, size-i, bpp);

        break;

    }

}

static void png_filter_row(DSPContext *dsp, uint8_t *dst, int filter_type,

                           uint8_t *src, uint8_t *top, int size, int bpp)

{

    int i;



    switch(filter_type) {

    case PNG_FILTER_VALUE_NONE:

        memcpy(dst, src, size);

        break;

    case PNG_FILTER_VALUE_SUB:

        dsp->diff_bytes(dst, src, src-bpp, size);

        memcpy(dst, src, bpp);

        break;

    case PNG_FILTER_VALUE_UP:

        dsp->diff_bytes(dst, src, top, size);

        break;

    case PNG_FILTER_VALUE_AVG:

        for(i = 0; i < bpp; i++)

            dst[i] = src[i] - (top[i] >> 1);

        for(; i < size; i++)

            dst[i] = src[i] - ((src[i-bpp] + top[i]) >> 1);

        break;

    case PNG_FILTER_VALUE_PAETH:

        for(i = 0; i < bpp; i++)

            dst[i] = src[i] - top[i];

        sub_png_paeth_prediction(dst+i, src+i, top+i, size-i, bpp);

        break;

    }

}

        dsp->diff_bytes(dst, src, src-bpp, size);         memcpy(dst, src, bpp);
static void FUNC_0(DSPContext *VAR_0, uint8_t *VAR_1, int VAR_2,

                           uint8_t *VAR_3, uint8_t *VAR_4, int VAR_5, int VAR_6)

{

    int VAR_7;



    switch(VAR_2) {

    case PNG_FILTER_VALUE_NONE:

        memcpy(VAR_1, VAR_3, VAR_5);

        break;

    case PNG_FILTER_VALUE_SUB:

        VAR_0->diff_bytes(VAR_1, VAR_3, VAR_3-VAR_6, VAR_5);

        memcpy(VAR_1, VAR_3, VAR_6);

        break;

    case PNG_FILTER_VALUE_UP:

        VAR_0->diff_bytes(VAR_1, VAR_3, VAR_4, VAR_5);

        break;

    case PNG_FILTER_VALUE_AVG:

        for(VAR_7 = 0; VAR_7 < VAR_6; VAR_7++)

            VAR_1[VAR_7] = VAR_3[VAR_7] - (VAR_4[VAR_7] >> 1);

        for(; VAR_7 < VAR_5; VAR_7++)

            VAR_1[VAR_7] = VAR_3[VAR_7] - ((VAR_3[VAR_7-VAR_6] + VAR_4[VAR_7]) >> 1);

        break;

    case PNG_FILTER_VALUE_PAETH:

        for(VAR_7 = 0; VAR_7 < VAR_6; VAR_7++)

            VAR_1[VAR_7] = VAR_3[VAR_7] - VAR_4[VAR_7];

        sub_png_paeth_prediction(VAR_1+VAR_7, VAR_3+VAR_7, VAR_4+VAR_7, VAR_5-VAR_7, VAR_6);

        break;

    }

}

static void FUNC_0(DSPContext *VAR_0, uint8_t *VAR_1, int VAR_2,
uint8_t *VAR_3, uint8_t *VAR_4, int VAR_5, int VAR_6)
{ int VAR_7; switch(VAR_2) { case PNG_FILTER_VALUE_NONE:
memcpy(VAR_1, VAR_3, VAR_5); break; case PNG_FILTER_VALUE_SUB:
VAR_0->diff_bytes(VAR_1, VAR_3, VAR_3-VAR_6, VAR_5); memcpy(VAR_1, VAR_3, VAR_6); break; case PNG_FILTER_VALUE_UP:
VAR_0->diff_bytes(VAR_1, VAR_3, VAR_4, VAR_5); break; case PNG_FILTER_VALUE_AVG:
for(VAR_7 = 0; VAR_7 < VAR_6; VAR_7++) VAR_1[VAR_7] = VAR_3[VAR_7] - (VAR_4[VAR_7] >> 1); for(; VAR_7 < VAR_5; VAR_7++) VAR_1[VAR_7] = VAR_3[VAR_7] - ((VAR_3[VAR_7-VAR_6] + VAR_4[VAR_7]) >> 1); break; case PNG_FILTER_VALUE_PAETH:
for(VAR_7 = 0; VAR_7 < VAR_6; VAR_7++) VAR_1[VAR_7] = VAR_3[VAR_7] - VAR_4[VAR_7]; sub_png_paeth_prediction(VAR_1+VAR_7, VAR_3+VAR_7, VAR_4+VAR_7, VAR_5-VAR_7, VAR_6); break; } }