ExpReleaseFannedOutPushLockExclusive
VOID __stdcall ExpReleaseFannedOutPushLockExclusive(VOID *FannedOutPushLock){
unsigned int v2;
__int64 v3;
unsigned int v4;
unsigned __int64 v5;
__int64 v6;
unsigned int v7;
_EX_PUSH_LOCK *v8;
KeQueryMaximumProcessorCountEx(0xFFFFu);
if( v2 )
{
v3 = v2;
v4 = ((unsigned int)FannedOutPushLock >> 13) & 0x3FFFF;
v5 = ((unsigned __int64)FannedOutPushLock >> 4) & 0x1FF;
v6 = 0i64;
do
{
_BitScanReverse(&v7, v4);
v8 = (_EX_PUSH_LOCK *)(*(_QWORD *)(*(_QWORD *)(*(_QWORD *)(v6 + *(&WheapDeferredInternalLogsEventLock + 52))
+ 8i64 * (v7 - 2))
+ 8i64 * (v4 ^ (1 << v7))
+ 8)
+ 8 * v5);
if( (_InterlockedExchangeAdd64(&v8->_bf_0, 0xFFFFFFFFFFFFFFFFui64) & 6) == 2 )
ExfTryToWakePushLock(v8);
v6 += 8i64;
--v3;
}
while( v3 );
}
}Referenced by:
ExReleaseAutoExpandPushLockExclusive