XmImulxOp
INT64 __fastcall XmImulxOp(INT64 *a1){
int v1;
unsigned __int16 v2;
__int64 v3;
int v4;
__int64 v5;
bool v6;
INT64 *v7;
INT64 v8;
int v9;
int v10;
unsigned int v11;
INT64 v12;
__int64 v13;
INT64 result;
INT64 v15;
v1 = *((_DWORD *)a1 + 30);
if( v1 )
{
v7 = a1 + 4;
if( v1 == 3 )
{
v15 = *((int *)a1 + 26) * (__int64)*((int *)a1 + 27);
XmStoreResult((INT64)a1, (unsigned int)(*((_DWORD *)a1 + 26) * *((_DWORD *)a1 + 27)));
*(_QWORD *)(v8 + 88) = v7;
XmStoreResult(v8, HIDWORD(v15));
v6 = v10 == v9 >> 31;
}
else
{
XmStoreResult((INT64)a1, (unsigned __int16)(*((_WORD *)a1 + 52) * *((_WORD *)a1 + 54)));
*(_QWORD *)(v12 + 88) = v7;
XmStoreResult(v12, HIWORD(v11));
v6 = *(_WORD *)v7 == (unsigned __int16)(*(__int16 *)(v13 + 24) >> 15);
}
}
else
{
v2 = *((char *)a1 + 104) * *((char *)a1 + 108);
*((_DWORD *)a1 + 30) = 1;
XmStoreResult((INT64)a1, v2);
v6 = *(_BYTE *)(v3 + 25) == (unsigned __int8)(*(char *)(v5 + 24) >> 7);
}
LOBYTE(v4) = !v6;
result = (v4 << 11) | v4 & 0xFFFFF7FF | *(_DWORD *)(v3 + 16) & 0xFFFFF7FE;
*(_DWORD *)(v3 + 16) = result;
return result;
}Referenced by:
No references.