ExpTryAcquireFannedOutPushLockShared
UINT64 __fastcall ExpTryAcquireFannedOutPushLockShared(UINT64 a1){
unsigned int v1;
unsigned __int64 v2;
unsigned int v3;
UINT64 v4;
v1 = ((unsigned int)a1 >> 13) & 0x3FFFF;
v2 = (unsigned __int64)(unsigned int)a1 >> 4;
_BitScanReverse(&v3, v1);
v4 = *(_QWORD *)(*(_QWORD *)(*((_QWORD *)KeGetCurrentPrcb() + 4198) + 8i64 * (v3 - 2)) + 8i64 * (v1 ^ (1 << v3)) + 8)
+ 8 * (v2 & 0x1FF);
if( _InterlockedCompareExchange64((volatile signed __int64 *)v4, 17i64, 0i64) )
v4 &= -(__int64)(ExfTryAcquirePushLockShared((UINT64 *)v4) != 0);
return v4;
}Referenced by:
ExTryAcquireAutoExpandPushLockShared