XmDivOp
_WORD *__fastcall XmDivOp(INT64 a1, INT64 a2, VOID *a3){
unsigned __int64 v3;
int v4;
_DWORD *v5;
unsigned __int64 v6;
unsigned __int64 v7;
unsigned __int64 v8;
INT64 v9;
__int64 v10;
unsigned __int64 v12;
v3 = *(unsigned int *)(a1 + 108);
if( !(_DWORD)v3 )
longjmp((unsigned __int64 *)(a1 + 160), (VOID *)2, a3);
v4 = *(_DWORD *)(a1 + 120);
if( v4 )
{
v5 = (_DWORD *)(a1 + 32);
if( v4 == 1 )
{
LODWORD(v7) = (*(unsigned __int16 *)(a1 + 24) | (unsigned __int64)(*(unsigned __int16 *)v5 << 16))
/ (unsigned int)v3;
v6 = (unsigned int)(*(unsigned __int16 *)(a1 + 24) | (*(unsigned __int16 *)v5 << 16)) >> 16;
LODWORD(v8) = (*(unsigned __int16 *)(a1 + 24) | (unsigned __int64)(*(unsigned __int16 *)v5 << 16))
% (unsigned int)v3;
}
else
{
v6 = (unsigned int)*v5;
LODWORD(v12) = *(_DWORD *)(a1 + 24);
HIDWORD(v12) = *v5;
v7 = v12 / v3;
v8 = v12 % v3;
}
}
else
{
LODWORD(v7) = *(unsigned __int16 *)(a1 + 24) / (unsigned int)v3;
v6 = HIBYTE(*(unsigned __int16 *)(a1 + 24));
LODWORD(v8) = *(unsigned __int16 *)(a1 + 24) % (unsigned int)v3;
}
if( (unsigned int)v6 >= (unsigned int)v3 )
longjmp((unsigned __int64 *)(a1 + 160), (VOID *)3, (VOID *)v6);
XmStoreResult(a1, (unsigned int)v7);
*(_QWORD *)(v9 + 88) = v10;
return XmStoreResult(v9, (unsigned int)v8);
}Referenced by:
No references.