_E = t1;
E_ = t1;
void vp3_idct_c(int16_t *input_data, int16_t *dequant_matrix,     int16_t *output_data){    int32_t intermediate_data[64];    int32_t *ip = intermediate_data;    int16_t *op = output_data;    int32_t _A, _B, _C, _D, _Ad, _Bd, _Cd, _Dd, _E, _F, _G, _H;    int32_t _Ed, _Gd, _Add, _Bdd, _Fd, _Hd;    int32_t t1, t2;    int i, j;    debug_idct("raw coefficient block:\n");    for (i = 0; i < 8; i++) {        for (j = 0; j < 8; j++) {            debug_idct(" %5d", input_data[i * 8 + j]);        }        debug_idct("\n");    }    debug_idct("\n");    for (i = 0; i < 64; i++) {        j = dezigzag_index[i];        intermediate_data[j] = dequant_matrix[i] * input_data[i];    }    debug_idct("dequantized block:\n");    for (i = 0; i < 8; i++) {        for (j = 0; j < 8; j++) {            debug_idct(" %5d", intermediate_data[i * 8 + j]);        }        debug_idct("\n");    }    debug_idct("\n");    /* Inverse DCT on the rows now */    for (i = 0; i < 8; i++) {        /* Check for non-zero values */        if ( ip[0] | ip[1] | ip[2] | ip[3] | ip[4] | ip[5] | ip[6] | ip[7] ) {            t1 = (int32_t)(xC1S7 * ip[1]);            t2 = (int32_t)(xC7S1 * ip[7]);            t1 >>= 16;            t2 >>= 16;            _A = t1 + t2;            t1 = (int32_t)(xC7S1 * ip[1]);            t2 = (int32_t)(xC1S7 * ip[7]);            t1 >>= 16;            t2 >>= 16;            _B = t1 - t2;            t1 = (int32_t)(xC3S5 * ip[3]);            t2 = (int32_t)(xC5S3 * ip[5]);            t1 >>= 16;            t2 >>= 16;            _C = t1 + t2;            t1 = (int32_t)(xC3S5 * ip[5]);            t2 = (int32_t)(xC5S3 * ip[3]);            t1 >>= 16;            t2 >>= 16;            _D = t1 - t2;            t1 = (int32_t)(xC4S4 * (_A - _C));            t1 >>= 16;            _Ad = t1;            t1 = (int32_t)(xC4S4 * (_B - _D));            t1 >>= 16;            _Bd = t1;            _Cd = _A + _C;            _Dd = _B + _D;            t1 = (int32_t)(xC4S4 * (ip[0] + ip[4]));            t1 >>= 16;            _E = t1;            t1 = (int32_t)(xC4S4 * (ip[0] - ip[4]));            t1 >>= 16;            _F = t1;            t1 = (int32_t)(xC2S6 * ip[2]);            t2 = (int32_t)(xC6S2 * ip[6]);            t1 >>= 16;            t2 >>= 16;            _G = t1 + t2;            t1 = (int32_t)(xC6S2 * ip[2]);            t2 = (int32_t)(xC2S6 * ip[6]);            t1 >>= 16;            t2 >>= 16;            _H = t1 - t2;            _Ed = _E - _G;            _Gd = _E + _G;            _Add = _F + _Ad;            _Bdd = _Bd - _H;            _Fd = _F - _Ad;            _Hd = _Bd + _H;            /*  Final sequence of operations over-write original inputs. */            ip[0] = (int16_t)((_Gd + _Cd )   >> 0);            ip[7] = (int16_t)((_Gd - _Cd )   >> 0);            ip[1] = (int16_t)((_Add + _Hd )  >> 0);            ip[2] = (int16_t)((_Add - _Hd )  >> 0);            ip[3] = (int16_t)((_Ed + _Dd )   >> 0);            ip[4] = (int16_t)((_Ed - _Dd )   >> 0);            ip[5] = (int16_t)((_Fd + _Bdd )  >> 0);            ip[6] = (int16_t)((_Fd - _Bdd )  >> 0);        }        ip += 8;            /* next row */    }    ip = intermediate_data;    for ( i = 0; i < 8; i++) {        /* Check for non-zero values (bitwise or faster than ||) */        if ( ip[0 * 8] | ip[1 * 8] | ip[2 * 8] | ip[3 * 8] |             ip[4 * 8] | ip[5 * 8] | ip[6 * 8] | ip[7 * 8] ) {            t1 = (int32_t)(xC1S7 * ip[1*8]);            t2 = (int32_t)(xC7S1 * ip[7*8]);            t1 >>= 16;            t2 >>= 16;            _A = t1 + t2;            t1 = (int32_t)(xC7S1 * ip[1*8]);            t2 = (int32_t)(xC1S7 * ip[7*8]);            t1 >>= 16;            t2 >>= 16;            _B = t1 - t2;            t1 = (int32_t)(xC3S5 * ip[3*8]);            t2 = (int32_t)(xC5S3 * ip[5*8]);            t1 >>= 16;            t2 >>= 16;            _C = t1 + t2;            t1 = (int32_t)(xC3S5 * ip[5*8]);            t2 = (int32_t)(xC5S3 * ip[3*8]);            t1 >>= 16;            t2 >>= 16;            _D = t1 - t2;            t1 = (int32_t)(xC4S4 * (_A - _C));            t1 >>= 16;            _Ad = t1;            t1 = (int32_t)(xC4S4 * (_B - _D));            t1 >>= 16;            _Bd = t1;            _Cd = _A + _C;            _Dd = _B + _D;            t1 = (int32_t)(xC4S4 * (ip[0*8] + ip[4*8]));            t1 >>= 16;            _E = t1;            t1 = (int32_t)(xC4S4 * (ip[0*8] - ip[4*8]));            t1 >>= 16;            _F = t1;            t1 = (int32_t)(xC2S6 * ip[2*8]);            t2 = (int32_t)(xC6S2 * ip[6*8]);            t1 >>= 16;            t2 >>= 16;            _G = t1 + t2;            t1 = (int32_t)(xC6S2 * ip[2*8]);            t2 = (int32_t)(xC2S6 * ip[6*8]);            t1 >>= 16;            t2 >>= 16;            _H = t1 - t2;            _Ed = _E - _G;            _Gd = _E + _G;            _Add = _F + _Ad;            _Bdd = _Bd - _H;            _Fd = _F - _Ad;            _Hd = _Bd + _H;            _Gd += IdctAdjustBeforeShift;            _Add += IdctAdjustBeforeShift;            _Ed += IdctAdjustBeforeShift;            _Fd += IdctAdjustBeforeShift;            /* Final sequence of operations over-write original inputs. */            op[0*8] = (int16_t)((_Gd + _Cd )   >> 4);            op[7*8] = (int16_t)((_Gd - _Cd )   >> 4);            op[1*8] = (int16_t)((_Add + _Hd )  >> 4);            op[2*8] = (int16_t)((_Add - _Hd )  >> 4);            op[3*8] = (int16_t)((_Ed + _Dd )   >> 4);            op[4*8] = (int16_t)((_Ed - _Dd )   >> 4);            op[5*8] = (int16_t)((_Fd + _Bdd )  >> 4);            op[6*8] = (int16_t)((_Fd - _Bdd )  >> 4);        } else {            op[0*8] = 0;            op[7*8] = 0;            op[1*8] = 0;            op[2*8] = 0;            op[3*8] = 0;            op[4*8] = 0;            op[5*8] = 0;            op[6*8] = 0;        }        ip++;            /* next column */        op++;    }}