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

                             const uint8_t *flags)

{

    int     i, shift, sp1, sp2;

    const int32_t *src;

    int32_t *dst;

    int     tmp[16];

    int     t0, t1, t2, t3, t4;



    /* apply the InvHaar4 to all columns */

#define COMPENSATE(x) (x)

    src = in;

    dst = tmp;

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

        if (flags[i]) {

            /* pre-scaling */

            shift = !(i & 2);

            sp1 = src[0] << shift;

            sp2 = src[4] << shift;

            INV_HAAR4(   sp1,    sp2, src[8], src[12],

                      dst[0], dst[4], dst[8], dst[12],

                      t0, t1, t2, t3, t4);

        } else

            dst[0] = dst[4] = dst[8] = dst[12] = 0;



        src++;

        dst++;

    }

#undef  COMPENSATE



    /* apply the InvHaar8 to all rows */

#define COMPENSATE(x) (x)

    src = tmp;

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

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

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

        } else {

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

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

                      t0, t1, t2, t3, t4);

        }

        src += 4;

        out += pitch;

    }

#undef  COMPENSATE

}

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

                             const uint8_t *flags)

{

    int     i, shift, sp1, sp2;

    const int32_t *src;

    int32_t *dst;

    int     tmp[16];

    int     t0, t1, t2, t3, t4;



    

#define COMPENSATE(x) (x)

    src = in;

    dst = tmp;

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

        if (flags[i]) {

            

            shift = !(i & 2);

            sp1 = src[0] << shift;

            sp2 = src[4] << shift;

            INV_HAAR4(   sp1,    sp2, src[8], src[12],

                      dst[0], dst[4], dst[8], dst[12],

                      t0, t1, t2, t3, t4);

        } else

            dst[0] = dst[4] = dst[8] = dst[12] = 0;



        src++;

        dst++;

    }

#undef  COMPENSATE



    

#define COMPENSATE(x) (x)

    src = tmp;

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

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

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

        } else {

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

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

                      t0, t1, t2, t3, t4);

        }

        src += 4;

        out += pitch;

    }

#undef  COMPENSATE

}

            sp1 = src[0] << shift;             sp2 = src[4] << 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;

    const int32_t *VAR_8;

    int32_t *dst;

    int     VAR_9[16];

    int     VAR_10, VAR_11, VAR_12, VAR_13, VAR_14;



    

#define COMPENSATE(x) (x)

    VAR_8 = VAR_0;

    dst = VAR_9;

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

        if (VAR_3[VAR_4]) {

            

            VAR_5 = !(VAR_4 & 2);

            VAR_6 = VAR_8[0] << VAR_5;

            VAR_7 = VAR_8[4] << VAR_5;

            INV_HAAR4(   VAR_6,    VAR_7, VAR_8[8], VAR_8[12],

                      dst[0], dst[4], dst[8], dst[12],

                      VAR_10, VAR_11, VAR_12, VAR_13, VAR_14);

        } else

            dst[0] = dst[4] = dst[8] = dst[12] = 0;



        VAR_8++;

        dst++;

    }

#undef  COMPENSATE



    

#define COMPENSATE(x) (x)

    VAR_8 = VAR_9;

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

        if (!VAR_8[0] && !VAR_8[1] && !VAR_8[2] && !VAR_8[3]) {

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

        } else {

            INV_HAAR4(VAR_8[0], VAR_8[1], VAR_8[2], VAR_8[3],

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

                      VAR_10, VAR_11, VAR_12, VAR_13, VAR_14);

        }

        VAR_8 += 4;

        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; const int32_t *VAR_8; int32_t *dst; int     VAR_9[16]; int     VAR_10, VAR_11, VAR_12, VAR_13, VAR_14; #define COMPENSATE(x) (x)
VAR_8 = VAR_0; dst = VAR_9; for (VAR_4 = 0; VAR_4 < 4; VAR_4++) { if (VAR_3[VAR_4]) { VAR_5 = !(VAR_4 & 2); VAR_6 = VAR_8[0] << VAR_5; VAR_7 = VAR_8[4] << VAR_5; INV_HAAR4(   VAR_6,    VAR_7, VAR_8[8], VAR_8[12],
dst[0], dst[4], dst[8], dst[12],
VAR_10, VAR_11, VAR_12, VAR_13, VAR_14); } else dst[0] = dst[4] = dst[8] = dst[12] = 0; VAR_8++; dst++; } #undef  COMPENSATE
#define COMPENSATE(x) (x)
VAR_8 = VAR_9; for (VAR_4 = 0; VAR_4 < 4; VAR_4++) { if (!VAR_8[0] && !VAR_8[1] && !VAR_8[2] && !VAR_8[3]) { memset(VAR_1, 0, 4 * sizeof(VAR_1[0])); } else { INV_HAAR4(VAR_8[0], VAR_8[1], VAR_8[2], VAR_8[3],
VAR_1[0], VAR_1[1], VAR_1[2], VAR_1[3],
VAR_10, VAR_11, VAR_12, VAR_13, VAR_14); } VAR_8 += 4; VAR_1 += VAR_2; } #undef  COMPENSATE
}