ExfTryAcquirePushLockShared
CHAR __fastcall ExfTryAcquirePushLockShared(UINT64 *a1){
CHAR v2;
unsigned __int64 v3;
__int64 v4;
__int64 v5;
unsigned __int64 v6;
v2 = 0;
_m_prefetchw(a1);
v3 = *a1;
while( 1 )
{
v4 = (v3 >> 1) & 1;
if( (v3 & 1) != 0 && (v4 || (v3 & 0xFFFFFFFFFFFFFFF0ui64) == 0) )
break;
v5 = (v3 | 1) + 16;
if( v4 )
v5 = v3 | 1;
v6 = v3;
v3 = _InterlockedCompareExchange64((volatile signed __int64 *)a1, v5, v3);
if( v6 == v3 )
return 1;
}
return v2;
}Referenced by:
ExAcquireCacheAwarePushLockSharedEx
ExTryAcquireAutoExpandPushLockShared
ExTryAcquireCacheAwarePushLockSharedEx
ExTryAcquirePushLockSharedEx
ExpTryAcquireFannedOutPushLockShared
IopProcessIoTracking
MiCoalesceFreePages
MiProcessTransitionHeatBatch
PfLockSharedTryAcquire
TryLockShutdownShared