XmMulOp

INT64 __fastcall XmMulOp(_DWORD *a1){
  unsigned int v1; 
  int v2; 
  __int64 v3; 
  int v4; 
  bool v5; 
  INT64 result; 
  unsigned int v7; 
  INT64 v8; 
  __int64 v9; 
  _WORD *v10; 
  INT64 v11; 
  __int64 v12; 
  int v13; 
  INT64 v14; 
  v1 = a1[26] * a1[27];
  v2 = a1[30];
  v14 = (unsigned int)a1[26] * (unsigned __int64)(unsigned int)a1[27];
  if( v2 )
  {
    if( v2 == 3 )
    {
      XmStoreResult((INT64)a1, v1);
      *(_QWORD *)(v11 + 88) = v12;
      XmStoreResult(v11, HIDWORD(v14));
      v5 = v13 == 0;
    }
    else
    {
      XmStoreResult((INT64)a1, (unsigned __int16)v1);
      *(_QWORD *)(v8 + 88) = v9;
      XmStoreResult(v8, HIWORD(v7));
      v5 = *v10 == (unsigned __int16)v4;
    }
  }
  else
  {
    a1[30] = 1;
    XmStoreResult((INT64)a1, v1);
    v5 = *(_BYTE *)(v3 + 25) == (unsigned __int8)v4;
  }
  LOBYTE(v4) = !v5;
  result = (v4 << 11) | v4 & 0xFFFFF7FF | *(_DWORD *)(v3 + 16) & 0xFFFFF7FE;
  *(_DWORD *)(v3 + 16) = result;
  return result;
}

Referenced by:

No references.