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.