ExpAcquireFannedOutPushLockShared
_EX_PUSH_LOCK *__stdcall ExpAcquireFannedOutPushLockShared(
VOID *FannedOutPushLock,
VOID *LockHandle,
VOID *LockPointer){
unsigned int v3;
unsigned __int64 v4;
unsigned int v5;
_EX_PUSH_LOCK *v6;
v3 = ((unsigned int)FannedOutPushLock >> 13) & 0x3FFFF;
v4 = (unsigned __int64)(unsigned int)FannedOutPushLock >> 4;
_BitScanReverse(&v5, v3);
v6 = (_EX_PUSH_LOCK *)(*(_QWORD *)(*((_QWORD *)KeGetCurrentPrcb()->ExSaPageArray + v5 - 2)
+ 8i64 * (v3 ^ (1 << v5))
+ 8)
+ 8 * (v4 & 0x1FF));
if( _InterlockedCompareExchange64(&v6->_bf_0, 17i64, 0i64) )
ExfAcquirePushLockSharedEx(v6, LockHandle, LockPointer);
return v6;
}Referenced by:
ExAcquireAutoExpandPushLockShared