static void wmv2_idct_row(short * b)

{

    int s1, s2;

    int a0, a1, a2, a3, a4, a5, a6, a7;



    /* step 1 */

    a1 = W1 * b[1] + W7 * b[7];

    a7 = W7 * b[1] - W1 * b[7];

    a5 = W5 * b[5] + W3 * b[3];

    a3 = W3 * b[5] - W5 * b[3];

    a2 = W2 * b[2] + W6 * b[6];

    a6 = W6 * b[2] - W2 * b[6];

    a0 = W0 * b[0] + W0 * b[4];

    a4 = W0 * b[0] - W0 * b[4];



    /* step 2 */

    s1 = (181 * (a1 - a5 + a7 - a3) + 128) >> 8; // 1, 3, 5, 7

    s2 = (181 * (a1 - a5 - a7 + a3) + 128) >> 8;



    /* step 3 */

    b[0] = (a0 + a2 + a1 + a5 + (1 << 7)) >> 8;

    b[1] = (a4 + a6 + s1      + (1 << 7)) >> 8;

    b[2] = (a4 - a6 + s2      + (1 << 7)) >> 8;

    b[3] = (a0 - a2 + a7 + a3 + (1 << 7)) >> 8;

    b[4] = (a0 - a2 - a7 - a3 + (1 << 7)) >> 8;

    b[5] = (a4 - a6 - s2      + (1 << 7)) >> 8;

    b[6] = (a4 + a6 - s1      + (1 << 7)) >> 8;

    b[7] = (a0 + a2 - a1 - a5 + (1 << 7)) >> 8;

}

static void wmv2_idct_row(short * b)

{

    int s1, s2;

    int a0, a1, a2, a3, a4, a5, a6, a7;



    

    a1 = W1 * b[1] + W7 * b[7];

    a7 = W7 * b[1] - W1 * b[7];

    a5 = W5 * b[5] + W3 * b[3];

    a3 = W3 * b[5] - W5 * b[3];

    a2 = W2 * b[2] + W6 * b[6];

    a6 = W6 * b[2] - W2 * b[6];

    a0 = W0 * b[0] + W0 * b[4];

    a4 = W0 * b[0] - W0 * b[4];



    

    s1 = (181 * (a1 - a5 + a7 - a3) + 128) >> 8; 

    s2 = (181 * (a1 - a5 - a7 + a3) + 128) >> 8;



    

    b[0] = (a0 + a2 + a1 + a5 + (1 << 7)) >> 8;

    b[1] = (a4 + a6 + s1      + (1 << 7)) >> 8;

    b[2] = (a4 - a6 + s2      + (1 << 7)) >> 8;

    b[3] = (a0 - a2 + a7 + a3 + (1 << 7)) >> 8;

    b[4] = (a0 - a2 - a7 - a3 + (1 << 7)) >> 8;

    b[5] = (a4 - a6 - s2      + (1 << 7)) >> 8;

    b[6] = (a4 + a6 - s1      + (1 << 7)) >> 8;

    b[7] = (a0 + a2 - a1 - a5 + (1 << 7)) >> 8;

}

    s2 = (181 * (a1 - a5 - a7 + a3) + 128) >> 8;
static void FUNC_0(short * VAR_0)

{

    int VAR_1, VAR_2;

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



    

    VAR_4 = W1 * VAR_0[1] + W7 * VAR_0[7];

    VAR_10 = W7 * VAR_0[1] - W1 * VAR_0[7];

    VAR_8 = W5 * VAR_0[5] + W3 * VAR_0[3];

    VAR_6 = W3 * VAR_0[5] - W5 * VAR_0[3];

    VAR_5 = W2 * VAR_0[2] + W6 * VAR_0[6];

    VAR_9 = W6 * VAR_0[2] - W2 * VAR_0[6];

    VAR_3 = W0 * VAR_0[0] + W0 * VAR_0[4];

    VAR_7 = W0 * VAR_0[0] - W0 * VAR_0[4];



    

    VAR_1 = (181 * (VAR_4 - VAR_8 + VAR_10 - VAR_6) + 128) >> 8; 

    VAR_2 = (181 * (VAR_4 - VAR_8 - VAR_10 + VAR_6) + 128) >> 8;



    

    VAR_0[0] = (VAR_3 + VAR_5 + VAR_4 + VAR_8 + (1 << 7)) >> 8;

    VAR_0[1] = (VAR_7 + VAR_9 + VAR_1      + (1 << 7)) >> 8;

    VAR_0[2] = (VAR_7 - VAR_9 + VAR_2      + (1 << 7)) >> 8;

    VAR_0[3] = (VAR_3 - VAR_5 + VAR_10 + VAR_6 + (1 << 7)) >> 8;

    VAR_0[4] = (VAR_3 - VAR_5 - VAR_10 - VAR_6 + (1 << 7)) >> 8;

    VAR_0[5] = (VAR_7 - VAR_9 - VAR_2      + (1 << 7)) >> 8;

    VAR_0[6] = (VAR_7 + VAR_9 - VAR_1      + (1 << 7)) >> 8;

    VAR_0[7] = (VAR_3 + VAR_5 - VAR_4 - VAR_8 + (1 << 7)) >> 8;

}

static void FUNC_0(short * VAR_0)
{ int VAR_1, VAR_2; int VAR_3, VAR_4, VAR_5, VAR_6, VAR_7, VAR_8, VAR_9, VAR_10; VAR_4 = W1 * VAR_0[1] + W7 * VAR_0[7]; VAR_10 = W7 * VAR_0[1] - W1 * VAR_0[7]; VAR_8 = W5 * VAR_0[5] + W3 * VAR_0[3]; VAR_6 = W3 * VAR_0[5] - W5 * VAR_0[3]; VAR_5 = W2 * VAR_0[2] + W6 * VAR_0[6]; VAR_9 = W6 * VAR_0[2] - W2 * VAR_0[6]; VAR_3 = W0 * VAR_0[0] + W0 * VAR_0[4]; VAR_7 = W0 * VAR_0[0] - W0 * VAR_0[4]; VAR_1 = (181 * (VAR_4 - VAR_8 + VAR_10 - VAR_6) + 128) >> 8; VAR_2 = (181 * (VAR_4 - VAR_8 - VAR_10 + VAR_6) + 128) >> 8; VAR_0[0] = (VAR_3 + VAR_5 + VAR_4 + VAR_8 + (1 << 7)) >> 8; VAR_0[1] = (VAR_7 + VAR_9 + VAR_1      + (1 << 7)) >> 8; VAR_0[2] = (VAR_7 - VAR_9 + VAR_2      + (1 << 7)) >> 8; VAR_0[3] = (VAR_3 - VAR_5 + VAR_10 + VAR_6 + (1 << 7)) >> 8; VAR_0[4] = (VAR_3 - VAR_5 - VAR_10 - VAR_6 + (1 << 7)) >> 8; VAR_0[5] = (VAR_7 - VAR_9 - VAR_2      + (1 << 7)) >> 8; VAR_0[6] = (VAR_7 + VAR_9 - VAR_1      + (1 << 7)) >> 8; VAR_0[7] = (VAR_3 + VAR_5 - VAR_4 - VAR_8 + (1 << 7)) >> 8; }