XmIdivOp

_WORD *__fastcall XmIdivOp(INT64 a1){
  __int64 v2; 
  int v3; 
  int v4; 
  __int64 v5; 
  unsigned int v6; 
  __int64 v7; 
  __int64 v8; 
  INT64 v9; 
  _DWORD *v11; 
  int v12; 
  __int64 v13; 
  v2 = *(int *)(a1 + 108);
  if( !(_DWORD)v2 )
    longjmp((_JBTYPE *)(a1 + 160), 2i64);
  v3 = *(_DWORD *)(a1 + 120);
  if( v3 )
  {
    v11 = (_DWORD *)(a1 + 32);
    if( v3 == 1 )
    {
      v12 = (*(unsigned __int16 *)(a1 + 24) | (*(unsigned __int16 *)v11 << 16)) / *(__int16 *)(a1 + 108);
      if( ((v12 ^ (v12 << 16 >> 15)) & 0xFFFF0000) == 0 )
      {
        LODWORD(v5) = (unsigned __int16)v12;
        goto LABEL_6;
      }
    }
    else
    {
      HIDWORD(v13) = *v11;
      LODWORD(v13) = *(_DWORD *)(a1 + 24);
      v5 = v13 / v2;
      if( HIDWORD(v5) == (int)v5 >> 31 )
        goto LABEL_6;
    }
LABEL_11:
    longjmp((_JBTYPE *)(a1 + 160), 3i64);
  }
  v4 = *(__int16 *)(a1 + 24) / *(char *)(a1 + 108);
  if( ((v4 ^ (v4 << 24 >> 23)) & 0xFFFFFF00) != 0 )
    goto LABEL_11;
  LODWORD(v5) = (unsigned __int8)v4;
LABEL_6:
  XmStoreResult(a1, (unsigned int)v5);
  *(_QWORD *)(v7 + 88) = v8;
  return XmStoreResult(v9, v6);
}

Referenced by:

No references.