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

{

    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]] << left_shift;

    }

}

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

{

    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]] << left_shift;

    }

}

static void idct32(int *out, int *tab, int sblimit, int left_shift)         out[i] = tab[bitinv32[i]] << left_shift;
static void FUNC_0(int *VAR_0, int *VAR_1, int VAR_2, int VAR_3)

{

    int VAR_4, VAR_5;

    int *VAR_6, *VAR_7, VAR_8;

    const int *VAR_9 = costab32;



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

    

    VAR_6 = VAR_1 + 30;

    VAR_7 = VAR_1 + 2;

    do {

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

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

        VAR_6 -= 4;

    } while (VAR_6 != VAR_7);



    VAR_6 = VAR_1 + 28;

    VAR_7 = VAR_1 + 4;

    do {

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

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

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

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

        VAR_6 -= 8;

    } while (VAR_6 != VAR_7);

    

    VAR_6 = VAR_1;

    VAR_7 = VAR_1 + 32;

    do {

        VAR_6[ 3] = -VAR_6[ 3];    

        VAR_6[ 6] = -VAR_6[ 6];    

        

        VAR_6[11] = -VAR_6[11];    

        VAR_6[12] = -VAR_6[12];    

        VAR_6[13] = -VAR_6[13];    

        VAR_6[15] = -VAR_6[15]; 

        VAR_6 += 16;

    } while (VAR_6 != VAR_7);



    

    VAR_6 = VAR_1;

    VAR_7 = VAR_1 + 8;

    do {

        int VAR_10, VAR_11, VAR_12, VAR_13;

        

        VAR_12 = MUL(VAR_6[16], FIX(SQRT2*0.5));

        VAR_13 = VAR_6[0] - VAR_12;

        VAR_12 = VAR_6[0] + VAR_12;

        

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

        VAR_10 = MUL((VAR_6[8] - VAR_11), VAR_9[0]);

        VAR_11 = MUL((VAR_6[8] + VAR_11), VAR_9[1]);



        VAR_6[ 0] = VAR_12 + VAR_10;

        VAR_6[ 8] = VAR_13 - VAR_11;

        VAR_6[16] = VAR_13 + VAR_11;

        VAR_6[24] = VAR_12 - VAR_10;

        VAR_6++;

    } while (VAR_6 != VAR_7);



    VAR_9 += 2;

    VAR_6 = VAR_1;

    VAR_7 = VAR_1 + 4;

    do {

        VAR_8 = MUL(VAR_6[28],VAR_9[0]);

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

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



        VAR_8 = MUL(VAR_6[4],VAR_9[1]);

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

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

        

        VAR_8 = MUL(VAR_6[20],VAR_9[2]);

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

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

            

        VAR_8 = MUL(VAR_6[12],VAR_9[3]);

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

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

        VAR_6++;

    } while (VAR_6 != VAR_7);

    VAR_9 += 4;



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

        VAR_8 = MUL(VAR_1[30-VAR_4*4],VAR_9[0]);

        VAR_1[30-VAR_4*4] = (VAR_1[VAR_4*4] - VAR_8);

        VAR_1[   VAR_4*4] = (VAR_1[VAR_4*4] + VAR_8);

        

        VAR_8 = MUL(VAR_1[ 2+VAR_4*4],VAR_9[1]);

        VAR_1[ 2+VAR_4*4] = (VAR_1[28-VAR_4*4] - VAR_8);

        VAR_1[28-VAR_4*4] = (VAR_1[28-VAR_4*4] + VAR_8);

        

        VAR_8 = MUL(VAR_1[31-VAR_4*4],VAR_9[0]);

        VAR_1[31-VAR_4*4] = (VAR_1[1+VAR_4*4] - VAR_8);

        VAR_1[ 1+VAR_4*4] = (VAR_1[1+VAR_4*4] + VAR_8);

        

        VAR_8 = MUL(VAR_1[ 3+VAR_4*4],VAR_9[1]);

        VAR_1[ 3+VAR_4*4] = (VAR_1[29-VAR_4*4] - VAR_8);

        VAR_1[29-VAR_4*4] = (VAR_1[29-VAR_4*4] + VAR_8);

        

        VAR_9 += 2;

    }



    VAR_6 = VAR_1 + 30;

    VAR_7 = VAR_1 + 1;

    do {

        VAR_8 = MUL(VAR_7[0], *VAR_9);

        VAR_7[0] = (VAR_6[0] - VAR_8);

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

        VAR_6 -= 2;

        VAR_7 += 2;

        VAR_9++;

    } while (VAR_6 >= VAR_1);



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

        VAR_0[VAR_4] = VAR_1[bitinv32[VAR_4]] << VAR_3;

    }

}

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