static void idct32(int *out, int *tab)

{

    int i, j;

    int *t, *t1, xr;

    const int *xp = costab32;



    for(j=31;j>=3;j-=2) tab[j] += tab[j - 2];



    t = tab + 30;

    t1 = tab + 2;

    do {

        t[0] += t[-4];

        t[1] += t[1 - 4];

        t -= 4;

    } while (t != t1);



    t = tab + 28;

    t1 = tab + 4;

    do {

        t[0] += t[-8];

        t[1] += t[1-8];

        t[2] += t[2-8];

        t[3] += t[3-8];

        t -= 8;

    } while (t != t1);



    t = tab;

    t1 = tab + 32;

    do {

        t[ 3] = -t[ 3];

        t[ 6] = -t[ 6];



        t[11] = -t[11];

        t[12] = -t[12];

        t[13] = -t[13];

        t[15] = -t[15];

        t += 16;

    } while (t != t1);





    t = tab;

    t1 = tab + 8;

    do {

        int x1, x2, x3, x4;



        x3 = MUL(t[16], FIX(SQRT2*0.5));

        x4 = t[0] - x3;

        x3 = t[0] + x3;



        x2 = MUL(-(t[24] + t[8]), FIX(SQRT2*0.5));

        x1 = MUL((t[8] - x2), xp[0]);

        x2 = MUL((t[8] + x2), xp[1]);



        t[ 0] = x3 + x1;

        t[ 8] = x4 - x2;

        t[16] = x4 + x2;

        t[24] = x3 - x1;

        t++;

    } while (t != t1);



    xp += 2;

    t = tab;

    t1 = tab + 4;

    do {

        xr = MUL(t[28],xp[0]);

        t[28] = (t[0] - xr);

        t[0] = (t[0] + xr);



        xr = MUL(t[4],xp[1]);

        t[ 4] = (t[24] - xr);

        t[24] = (t[24] + xr);



        xr = MUL(t[20],xp[2]);

        t[20] = (t[8] - xr);

        t[ 8] = (t[8] + xr);



        xr = MUL(t[12],xp[3]);

        t[12] = (t[16] - xr);

        t[16] = (t[16] + xr);

        t++;

    } while (t != t1);

    xp += 4;



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

        xr = MUL(tab[30-i*4],xp[0]);

        tab[30-i*4] = (tab[i*4] - xr);

        tab[   i*4] = (tab[i*4] + xr);



        xr = MUL(tab[ 2+i*4],xp[1]);

        tab[ 2+i*4] = (tab[28-i*4] - xr);

        tab[28-i*4] = (tab[28-i*4] + xr);



        xr = MUL(tab[31-i*4],xp[0]);

        tab[31-i*4] = (tab[1+i*4] - xr);

        tab[ 1+i*4] = (tab[1+i*4] + xr);



        xr = MUL(tab[ 3+i*4],xp[1]);

        tab[ 3+i*4] = (tab[29-i*4] - xr);

        tab[29-i*4] = (tab[29-i*4] + xr);



        xp += 2;

    }



    t = tab + 30;

    t1 = tab + 1;

    do {

        xr = MUL(t1[0], *xp);

        t1[0] = (t[0] - xr);

        t[0] = (t[0] + xr);

        t -= 2;

        t1 += 2;

        xp++;

    } while (t >= tab);



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

        out[i] = tab[bitinv32[i]];

    }

}

static void idct32(int *out, int *tab)

{

    int i, j;

    int *t, *t1, xr;

    const int *xp = costab32;



    for(j=31;j>=3;j-=2) tab[j] += tab[j - 2];



    t = tab + 30;

    t1 = tab + 2;

    do {

        t[0] += t[-4];

        t[1] += t[1 - 4];

        t -= 4;

    } while (t != t1);



    t = tab + 28;

    t1 = tab + 4;

    do {

        t[0] += t[-8];

        t[1] += t[1-8];

        t[2] += t[2-8];

        t[3] += t[3-8];

        t -= 8;

    } while (t != t1);



    t = tab;

    t1 = tab + 32;

    do {

        t[ 3] = -t[ 3];

        t[ 6] = -t[ 6];



        t[11] = -t[11];

        t[12] = -t[12];

        t[13] = -t[13];

        t[15] = -t[15];

        t += 16;

    } while (t != t1);





    t = tab;

    t1 = tab + 8;

    do {

        int x1, x2, x3, x4;



        x3 = MUL(t[16], FIX(SQRT2*0.5));

        x4 = t[0] - x3;

        x3 = t[0] + x3;



        x2 = MUL(-(t[24] + t[8]), FIX(SQRT2*0.5));

        x1 = MUL((t[8] - x2), xp[0]);

        x2 = MUL((t[8] + x2), xp[1]);



        t[ 0] = x3 + x1;

        t[ 8] = x4 - x2;

        t[16] = x4 + x2;

        t[24] = x3 - x1;

        t++;

    } while (t != t1);



    xp += 2;

    t = tab;

    t1 = tab + 4;

    do {

        xr = MUL(t[28],xp[0]);

        t[28] = (t[0] - xr);

        t[0] = (t[0] + xr);



        xr = MUL(t[4],xp[1]);

        t[ 4] = (t[24] - xr);

        t[24] = (t[24] + xr);



        xr = MUL(t[20],xp[2]);

        t[20] = (t[8] - xr);

        t[ 8] = (t[8] + xr);



        xr = MUL(t[12],xp[3]);

        t[12] = (t[16] - xr);

        t[16] = (t[16] + xr);

        t++;

    } while (t != t1);

    xp += 4;



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

        xr = MUL(tab[30-i*4],xp[0]);

        tab[30-i*4] = (tab[i*4] - xr);

        tab[   i*4] = (tab[i*4] + xr);



        xr = MUL(tab[ 2+i*4],xp[1]);

        tab[ 2+i*4] = (tab[28-i*4] - xr);

        tab[28-i*4] = (tab[28-i*4] + xr);



        xr = MUL(tab[31-i*4],xp[0]);

        tab[31-i*4] = (tab[1+i*4] - xr);

        tab[ 1+i*4] = (tab[1+i*4] + xr);



        xr = MUL(tab[ 3+i*4],xp[1]);

        tab[ 3+i*4] = (tab[29-i*4] - xr);

        tab[29-i*4] = (tab[29-i*4] + xr);



        xp += 2;

    }



    t = tab + 30;

    t1 = tab + 1;

    do {

        xr = MUL(t1[0], *xp);

        t1[0] = (t[0] - xr);

        t[0] = (t[0] + xr);

        t -= 2;

        t1 += 2;

        xp++;

    } while (t >= tab);



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

        out[i] = tab[bitinv32[i]];

    }

}

static void FUNC_0(int *VAR_0, int *VAR_1)

{

    int VAR_2, VAR_3;

    int *VAR_4, *VAR_5, VAR_6;

    const int *VAR_7 = costab32;



    for(VAR_3=31;VAR_3>=3;VAR_3-=2) VAR_1[VAR_3] += VAR_1[VAR_3 - 2];



    VAR_4 = VAR_1 + 30;

    VAR_5 = VAR_1 + 2;

    do {

        VAR_4[0] += VAR_4[-4];

        VAR_4[1] += VAR_4[1 - 4];

        VAR_4 -= 4;

    } while (VAR_4 != VAR_5);



    VAR_4 = VAR_1 + 28;

    VAR_5 = VAR_1 + 4;

    do {

        VAR_4[0] += VAR_4[-8];

        VAR_4[1] += VAR_4[1-8];

        VAR_4[2] += VAR_4[2-8];

        VAR_4[3] += VAR_4[3-8];

        VAR_4 -= 8;

    } while (VAR_4 != VAR_5);



    VAR_4 = VAR_1;

    VAR_5 = VAR_1 + 32;

    do {

        VAR_4[ 3] = -VAR_4[ 3];

        VAR_4[ 6] = -VAR_4[ 6];



        VAR_4[11] = -VAR_4[11];

        VAR_4[12] = -VAR_4[12];

        VAR_4[13] = -VAR_4[13];

        VAR_4[15] = -VAR_4[15];

        VAR_4 += 16;

    } while (VAR_4 != VAR_5);





    VAR_4 = VAR_1;

    VAR_5 = VAR_1 + 8;

    do {

        int VAR_8, VAR_9, VAR_10, VAR_11;



        VAR_10 = MUL(VAR_4[16], FIX(SQRT2*0.5));

        VAR_11 = VAR_4[0] - VAR_10;

        VAR_10 = VAR_4[0] + VAR_10;



        VAR_9 = MUL(-(VAR_4[24] + VAR_4[8]), FIX(SQRT2*0.5));

        VAR_8 = MUL((VAR_4[8] - VAR_9), VAR_7[0]);

        VAR_9 = MUL((VAR_4[8] + VAR_9), VAR_7[1]);



        VAR_4[ 0] = VAR_10 + VAR_8;

        VAR_4[ 8] = VAR_11 - VAR_9;

        VAR_4[16] = VAR_11 + VAR_9;

        VAR_4[24] = VAR_10 - VAR_8;

        VAR_4++;

    } while (VAR_4 != VAR_5);



    VAR_7 += 2;

    VAR_4 = VAR_1;

    VAR_5 = VAR_1 + 4;

    do {

        VAR_6 = MUL(VAR_4[28],VAR_7[0]);

        VAR_4[28] = (VAR_4[0] - VAR_6);

        VAR_4[0] = (VAR_4[0] + VAR_6);



        VAR_6 = MUL(VAR_4[4],VAR_7[1]);

        VAR_4[ 4] = (VAR_4[24] - VAR_6);

        VAR_4[24] = (VAR_4[24] + VAR_6);



        VAR_6 = MUL(VAR_4[20],VAR_7[2]);

        VAR_4[20] = (VAR_4[8] - VAR_6);

        VAR_4[ 8] = (VAR_4[8] + VAR_6);



        VAR_6 = MUL(VAR_4[12],VAR_7[3]);

        VAR_4[12] = (VAR_4[16] - VAR_6);

        VAR_4[16] = (VAR_4[16] + VAR_6);

        VAR_4++;

    } while (VAR_4 != VAR_5);

    VAR_7 += 4;



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

        VAR_6 = MUL(VAR_1[30-VAR_2*4],VAR_7[0]);

        VAR_1[30-VAR_2*4] = (VAR_1[VAR_2*4] - VAR_6);

        VAR_1[   VAR_2*4] = (VAR_1[VAR_2*4] + VAR_6);



        VAR_6 = MUL(VAR_1[ 2+VAR_2*4],VAR_7[1]);

        VAR_1[ 2+VAR_2*4] = (VAR_1[28-VAR_2*4] - VAR_6);

        VAR_1[28-VAR_2*4] = (VAR_1[28-VAR_2*4] + VAR_6);



        VAR_6 = MUL(VAR_1[31-VAR_2*4],VAR_7[0]);

        VAR_1[31-VAR_2*4] = (VAR_1[1+VAR_2*4] - VAR_6);

        VAR_1[ 1+VAR_2*4] = (VAR_1[1+VAR_2*4] + VAR_6);



        VAR_6 = MUL(VAR_1[ 3+VAR_2*4],VAR_7[1]);

        VAR_1[ 3+VAR_2*4] = (VAR_1[29-VAR_2*4] - VAR_6);

        VAR_1[29-VAR_2*4] = (VAR_1[29-VAR_2*4] + VAR_6);



        VAR_7 += 2;

    }



    VAR_4 = VAR_1 + 30;

    VAR_5 = VAR_1 + 1;

    do {

        VAR_6 = MUL(VAR_5[0], *VAR_7);

        VAR_5[0] = (VAR_4[0] - VAR_6);

        VAR_4[0] = (VAR_4[0] + VAR_6);

        VAR_4 -= 2;

        VAR_5 += 2;

        VAR_7++;

    } while (VAR_4 >= VAR_1);



    for(VAR_2=0;VAR_2<32;VAR_2++) {

        VAR_0[VAR_2] = VAR_1[bitinv32[VAR_2]];

    }

}

static void FUNC_0(int *VAR_0, int *VAR_1)
{ int VAR_2, VAR_3; int *VAR_4, *VAR_5, VAR_6; const int *VAR_7 = costab32; for(VAR_3=31;VAR_3>=3;VAR_3-=2) VAR_1[VAR_3] += VAR_1[VAR_3 - 2]; VAR_4 = VAR_1 + 30; VAR_5 = VAR_1 + 2; do { VAR_4[0] += VAR_4[-4]; VAR_4[1] += VAR_4[1 - 4]; VAR_4 -= 4; } while (VAR_4 != VAR_5); VAR_4 = VAR_1 + 28; VAR_5 = VAR_1 + 4; do { VAR_4[0] += VAR_4[-8]; VAR_4[1] += VAR_4[1-8]; VAR_4[2] += VAR_4[2-8]; VAR_4[3] += VAR_4[3-8]; VAR_4 -= 8; } while (VAR_4 != VAR_5); VAR_4 = VAR_1; VAR_5 = VAR_1 + 32; do { VAR_4[ 3] = -VAR_4[ 3]; VAR_4[ 6] = -VAR_4[ 6]; VAR_4[11] = -VAR_4[11]; VAR_4[12] = -VAR_4[12]; VAR_4[13] = -VAR_4[13]; VAR_4[15] = -VAR_4[15]; VAR_4 += 16; } while (VAR_4 != VAR_5); VAR_4 = VAR_1; VAR_5 = VAR_1 + 8; do { int VAR_8, VAR_9, VAR_10, VAR_11; VAR_10 = MUL(VAR_4[16], FIX(SQRT2*0.5)); VAR_11 = VAR_4[0] - VAR_10; VAR_10 = VAR_4[0] + VAR_10; VAR_9 = MUL(-(VAR_4[24] + VAR_4[8]), FIX(SQRT2*0.5)); VAR_8 = MUL((VAR_4[8] - VAR_9), VAR_7[0]); VAR_9 = MUL((VAR_4[8] + VAR_9), VAR_7[1]); VAR_4[ 0] = VAR_10 + VAR_8; VAR_4[ 8] = VAR_11 - VAR_9; VAR_4[16] = VAR_11 + VAR_9; VAR_4[24] = VAR_10 - VAR_8; VAR_4++; } while (VAR_4 != VAR_5); VAR_7 += 2; VAR_4 = VAR_1; VAR_5 = VAR_1 + 4; do { VAR_6 = MUL(VAR_4[28],VAR_7[0]); VAR_4[28] = (VAR_4[0] - VAR_6); VAR_4[0] = (VAR_4[0] + VAR_6); VAR_6 = MUL(VAR_4[4],VAR_7[1]); VAR_4[ 4] = (VAR_4[24] - VAR_6); VAR_4[24] = (VAR_4[24] + VAR_6); VAR_6 = MUL(VAR_4[20],VAR_7[2]); VAR_4[20] = (VAR_4[8] - VAR_6); VAR_4[ 8] = (VAR_4[8] + VAR_6); VAR_6 = MUL(VAR_4[12],VAR_7[3]); VAR_4[12] = (VAR_4[16] - VAR_6); VAR_4[16] = (VAR_4[16] + VAR_6); VAR_4++; } while (VAR_4 != VAR_5); VAR_7 += 4; for (VAR_2 = 0; VAR_2 < 4; VAR_2++) { VAR_6 = MUL(VAR_1[30-VAR_2*4],VAR_7[0]); VAR_1[30-VAR_2*4] = (VAR_1[VAR_2*4] - VAR_6); VAR_1[   VAR_2*4] = (VAR_1[VAR_2*4] + VAR_6); VAR_6 = MUL(VAR_1[ 2+VAR_2*4],VAR_7[1]); VAR_1[ 2+VAR_2*4] = (VAR_1[28-VAR_2*4] - VAR_6); VAR_1[28-VAR_2*4] = (VAR_1[28-VAR_2*4] + VAR_6); VAR_6 = MUL(VAR_1[31-VAR_2*4],VAR_7[0]); VAR_1[31-VAR_2*4] = (VAR_1[1+VAR_2*4] - VAR_6); VAR_1[ 1+VAR_2*4] = (VAR_1[1+VAR_2*4] + VAR_6); VAR_6 = MUL(VAR_1[ 3+VAR_2*4],VAR_7[1]); VAR_1[ 3+VAR_2*4] = (VAR_1[29-VAR_2*4] - VAR_6); VAR_1[29-VAR_2*4] = (VAR_1[29-VAR_2*4] + VAR_6); VAR_7 += 2; } VAR_4 = VAR_1 + 30; VAR_5 = VAR_1 + 1; do { VAR_6 = MUL(VAR_5[0], *VAR_7); VAR_5[0] = (VAR_4[0] - VAR_6); VAR_4[0] = (VAR_4[0] + VAR_6); VAR_4 -= 2; VAR_5 += 2; VAR_7++; } while (VAR_4 >= VAR_1); for(VAR_2=0;VAR_2<32;VAR_2++) { VAR_0[VAR_2] = VAR_1[bitinv32[VAR_2]]; } }