void ff_ivi_inverse_haar_8x8(const int32_t *in, int16_t *out, ptrdiff_t pitch,

                             const uint8_t *flags)

{

    int     i, shift, sp1, sp2, sp3, sp4;

    const int32_t *src;

    int32_t *dst;

    int     tmp[64];

    int     t0, t1, t2, t3, t4, t5, t6, t7, t8;



    /* apply the InvHaar8 to all columns */

#define COMPENSATE(x) (x)

    src = in;

    dst = tmp;

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

        if (flags[i]) {

            /* pre-scaling */

            shift = !(i & 4);

            sp1 = src[ 0] << shift;

            sp2 = src[ 8] << shift;

            sp3 = src[16] << shift;

            sp4 = src[24] << shift;

            INV_HAAR8(    sp1,     sp2,     sp3,     sp4,

                      src[32], src[40], src[48], src[56],

                      dst[ 0], dst[ 8], dst[16], dst[24],

                      dst[32], dst[40], dst[48], dst[56],

                      t0, t1, t2, t3, t4, t5, t6, t7, t8);

        } else

            dst[ 0] = dst[ 8] = dst[16] = dst[24] =

            dst[32] = dst[40] = dst[48] = dst[56] = 0;



        src++;

        dst++;

    }

#undef  COMPENSATE



    /* apply the InvHaar8 to all rows */

#define COMPENSATE(x) (x)

    src = tmp;

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

        if (   !src[0] && !src[1] && !src[2] && !src[3]

            && !src[4] && !src[5] && !src[6] && !src[7]) {

            memset(out, 0, 8 * sizeof(out[0]));

        } else {

            INV_HAAR8(src[0], src[1], src[2], src[3],

                      src[4], src[5], src[6], src[7],

                      out[0], out[1], out[2], out[3],

                      out[4], out[5], out[6], out[7],

                      t0, t1, t2, t3, t4, t5, t6, t7, t8);

        }

        src += 8;

        out += pitch;

    }

#undef  COMPENSATE

}

void ff_ivi_inverse_haar_8x8(const int32_t *in, int16_t *out, ptrdiff_t pitch,

                             const uint8_t *flags)

{

    int     i, shift, sp1, sp2, sp3, sp4;

    const int32_t *src;

    int32_t *dst;

    int     tmp[64];

    int     t0, t1, t2, t3, t4, t5, t6, t7, t8;



    

#define COMPENSATE(x) (x)

    src = in;

    dst = tmp;

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

        if (flags[i]) {

            

            shift = !(i & 4);

            sp1 = src[ 0] << shift;

            sp2 = src[ 8] << shift;

            sp3 = src[16] << shift;

            sp4 = src[24] << shift;

            INV_HAAR8(    sp1,     sp2,     sp3,     sp4,

                      src[32], src[40], src[48], src[56],

                      dst[ 0], dst[ 8], dst[16], dst[24],

                      dst[32], dst[40], dst[48], dst[56],

                      t0, t1, t2, t3, t4, t5, t6, t7, t8);

        } else

            dst[ 0] = dst[ 8] = dst[16] = dst[24] =

            dst[32] = dst[40] = dst[48] = dst[56] = 0;



        src++;

        dst++;

    }

#undef  COMPENSATE



    

#define COMPENSATE(x) (x)

    src = tmp;

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

        if (   !src[0] && !src[1] && !src[2] && !src[3]

            && !src[4] && !src[5] && !src[6] && !src[7]) {

            memset(out, 0, 8 * sizeof(out[0]));

        } else {

            INV_HAAR8(src[0], src[1], src[2], src[3],

                      src[4], src[5], src[6], src[7],

                      out[0], out[1], out[2], out[3],

                      out[4], out[5], out[6], out[7],

                      t0, t1, t2, t3, t4, t5, t6, t7, t8);

        }

        src += 8;

        out += pitch;

    }

#undef  COMPENSATE

}

            sp1 = src[ 0] << shift;             sp2 = src[ 8] << shift;             sp3 = src[16] << shift;             sp4 = src[24] << shift;
void FUNC_0(const int32_t *VAR_0, int16_t *VAR_1, ptrdiff_t VAR_2,

                             const uint8_t *VAR_3)

{

    int     VAR_4, VAR_5, VAR_6, VAR_7, VAR_8, VAR_9;

    const int32_t *VAR_10;

    int32_t *dst;

    int     VAR_11[64];

    int     VAR_12, VAR_13, VAR_14, VAR_15, VAR_16, VAR_17, VAR_18, VAR_19, VAR_20;



    

#define COMPENSATE(x) (x)

    VAR_10 = VAR_0;

    dst = VAR_11;

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

        if (VAR_3[VAR_4]) {

            

            VAR_5 = !(VAR_4 & 4);

            VAR_6 = VAR_10[ 0] << VAR_5;

            VAR_7 = VAR_10[ 8] << VAR_5;

            VAR_8 = VAR_10[16] << VAR_5;

            VAR_9 = VAR_10[24] << VAR_5;

            INV_HAAR8(    VAR_6,     VAR_7,     VAR_8,     VAR_9,

                      VAR_10[32], VAR_10[40], VAR_10[48], VAR_10[56],

                      dst[ 0], dst[ 8], dst[16], dst[24],

                      dst[32], dst[40], dst[48], dst[56],

                      VAR_12, VAR_13, VAR_14, VAR_15, VAR_16, VAR_17, VAR_18, VAR_19, VAR_20);

        } else

            dst[ 0] = dst[ 8] = dst[16] = dst[24] =

            dst[32] = dst[40] = dst[48] = dst[56] = 0;



        VAR_10++;

        dst++;

    }

#undef  COMPENSATE



    

#define COMPENSATE(x) (x)

    VAR_10 = VAR_11;

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

        if (   !VAR_10[0] && !VAR_10[1] && !VAR_10[2] && !VAR_10[3]

            && !VAR_10[4] && !VAR_10[5] && !VAR_10[6] && !VAR_10[7]) {

            memset(VAR_1, 0, 8 * sizeof(VAR_1[0]));

        } else {

            INV_HAAR8(VAR_10[0], VAR_10[1], VAR_10[2], VAR_10[3],

                      VAR_10[4], VAR_10[5], VAR_10[6], VAR_10[7],

                      VAR_1[0], VAR_1[1], VAR_1[2], VAR_1[3],

                      VAR_1[4], VAR_1[5], VAR_1[6], VAR_1[7],

                      VAR_12, VAR_13, VAR_14, VAR_15, VAR_16, VAR_17, VAR_18, VAR_19, VAR_20);

        }

        VAR_10 += 8;

        VAR_1 += VAR_2;

    }

#undef  COMPENSATE

}

void FUNC_0(const int32_t *VAR_0, int16_t *VAR_1, ptrdiff_t VAR_2,
const uint8_t *VAR_3)
{ int     VAR_4, VAR_5, VAR_6, VAR_7, VAR_8, VAR_9; const int32_t *VAR_10; int32_t *dst; int     VAR_11[64]; int     VAR_12, VAR_13, VAR_14, VAR_15, VAR_16, VAR_17, VAR_18, VAR_19, VAR_20; #define COMPENSATE(x) (x)
VAR_10 = VAR_0; dst = VAR_11; for (VAR_4 = 0; VAR_4 < 8; VAR_4++) { if (VAR_3[VAR_4]) { VAR_5 = !(VAR_4 & 4); VAR_6 = VAR_10[ 0] << VAR_5; VAR_7 = VAR_10[ 8] << VAR_5; VAR_8 = VAR_10[16] << VAR_5; VAR_9 = VAR_10[24] << VAR_5; INV_HAAR8(    VAR_6,     VAR_7,     VAR_8,     VAR_9,
VAR_10[32], VAR_10[40], VAR_10[48], VAR_10[56],
dst[ 0], dst[ 8], dst[16], dst[24],
dst[32], dst[40], dst[48], dst[56],
VAR_12, VAR_13, VAR_14, VAR_15, VAR_16, VAR_17, VAR_18, VAR_19, VAR_20); } else dst[ 0] = dst[ 8] = dst[16] = dst[24] =
dst[32] = dst[40] = dst[48] = dst[56] = 0; VAR_10++; dst++; } #undef  COMPENSATE
#define COMPENSATE(x) (x)
VAR_10 = VAR_11; for (VAR_4 = 0; VAR_4 < 8; VAR_4++) { if (   !VAR_10[0] && !VAR_10[1] && !VAR_10[2] && !VAR_10[3]
&& !VAR_10[4] && !VAR_10[5] && !VAR_10[6] && !VAR_10[7]) { memset(VAR_1, 0, 8 * sizeof(VAR_1[0])); } else { INV_HAAR8(VAR_10[0], VAR_10[1], VAR_10[2], VAR_10[3],
VAR_10[4], VAR_10[5], VAR_10[6], VAR_10[7],
VAR_1[0], VAR_1[1], VAR_1[2], VAR_1[3],
VAR_1[4], VAR_1[5], VAR_1[6], VAR_1[7],
VAR_12, VAR_13, VAR_14, VAR_15, VAR_16, VAR_17, VAR_18, VAR_19, VAR_20); } VAR_10 += 8; VAR_1 += VAR_2; } #undef  COMPENSATE
}