ExpAllocateFannedOutPushLock
VOID *__stdcall ExpAllocateFannedOutPushLock(VOID *ParentLock, UINT64 Flags, UINT64 a3){
VOID *v4;
unsigned int v5;
__int64 *v6;
unsigned int v7;
__int64 v8;
__int64 v9;
unsigned int v10;
__int64 v11;
__int64 v12;
v4 = ExSaAllocate(0x10ui64);
if( v4 != (VOID *)-1i64 )
{
KeQueryMaximumProcessorCountEx(0xFFFFu);
if( v5 )
{
v6 = (__int64 *)*(&WheapDeferredInternalLogsEventLock + 52);
v7 = ((unsigned int)v4 >> 13) & 0x3FFFF;
v8 = ((unsigned int)v4 >> 4) & 0x1FF;
v9 = v5;
do
{
_BitScanReverse(&v10, v7);
v11 = *v6++;
v12 = *(_QWORD *)(*(_QWORD *)(v11 + 8i64 * (v10 - 2)) + 8 * (v7 ^ (unsigned __int64)(unsigned int)(1 << v10)) + 8);
*(_QWORD *)(v12 + 8 * v8) = 0i64;
*(_QWORD *)(v12 + 8 * v8 + 8) = ParentLock;
--v9;
}
while( v9 );
}
}
return v4;
}Referenced by:
ExpTryExpandAutoExpandPushLock