NtWaitForMultipleObjects32

INT64 __fastcall NtWaitForMultipleObjects32(
        UINT64 Count,
        INT64 *Handles,
        _WAIT_TYPE WaitType,
        UINT8 Alertable,
        _LARGE_INTEGER *Timeout){
  __int64 v8; 
  unsigned int v9; 
  INT8 WaitMode; 
  __int64 v11; 
  char *v12; 
  _LARGE_INTEGER *v14; 
  LONGLONG v15; 
  __int64 result[64]; 
  v8 = (unsigned int)Count;
  v14 = Timeout;
  memset((INT64)result, 0i64);
  v9 = 0;
  v15 = 0i64;
  if( (unsigned int)(v8 - 1) > 0x3F )
    return 3221225711i64;
  if( (unsigned int)WaitType > WaitAny )
    return 3221225713i64;
  WaitMode = *((_BYTE *)KeGetCurrentThread() + 562);
  if( WaitMode )
  {
    v11 = (__int64)Timeout;
    if( Timeout )
    {
      if( (unsigned __int64)Timeout >= 0x7FFFFFFF0000i64 )
        v11 = 0x7FFFFFFF0000i64;
      v15 = *(_QWORD *)v11;
      v14 = (_LARGE_INTEGER *)&v15;
    }
    if( 4 * v8 )
    {
      v12 = (char *)Handles + 4 * v8;
      if( (unsigned __int64)v12 > 0x7FFFFFFF0000i64 || v12 < (char *)Handles )
        MEMORY[0x7FFFFFFF0000] = 0;
    }
  }
  while( v9 < (unsigned int)v8 )
  {
    result[v9] = *((int *)Handles + v9);
    ++v9;
  }
  return ObWaitForMultipleObjects((unsigned int)v8, (VOID **)result, WaitMode, WaitType, WaitMode, Alertable, v14);
}

Referenced by:

No references.