RtlpHpVsContextMultiAlloc
NTSTATUS __stdcall RtlpHpVsContextMultiAlloc(INT64 *SpinLock, UINT64 a2, UINT64 a3, UINT64 a4, INT64 a5, INT64 a6){
char *v6;
char *v7;
unsigned int v8;
unsigned int v9;
unsigned int v10;
size_t v11;
char *Internal;
NTSTATUS result;
INT64 v15[2];
__int64 v16;
__int64 v17;
LODWORD(v17) = 0;
v6 = 0i64;
v7 = 0i64;
v8 = 0;
v16 = 0i64;
v9 = a4;
v10 = a3;
v11 = a2;
*(_OWORD *)v15 = 0i64;
if( (_DWORD)a3 )
{
do
{
Internal = RtlpHpVsContextAllocateInternal((INT64)SpinLock, v11, v11, v9, (INT64)v15, (__int64)&v17);
if( !Internal )
break;
*(_QWORD *)Internal = v6;
v6 = Internal;
if( !v7 )
v7 = Internal;
++v8;
}
while( v8 < v10 );
if( (_DWORD)v17 && (v9 & 1) == 0 )
RtlpHpReleaseQueuedLockExclusive(*((unsigned int *)SpinLock + 2), (INT64)v15);
}
result = v8;
*(_QWORD *)a5 = v6;
*(_QWORD *)a6 = v7;
return result;
}Referenced by:
ExAllocateHeapPool