ExfAcquireCacheAwarePushLockExclusiveEx
UINT64 *__fastcall ExfAcquireCacheAwarePushLockExclusiveEx(UINT64 **a1, VOID *a2, VOID *a3){
UINT64 *result;
UINT64 **v4;
UINT64 **v6;
result = *a1;
v4 = a1 + 1;
v6 = a1 + 32;
if( _interlockedbittestandset64((volatile signed __int32 *)*a1, 0i64) )
result = (UINT64 *)ExfAcquirePushLockExclusiveEx(*a1, a2, a3);
while( v4 < v6 )
{
result = *v4;
if( _interlockedbittestandset64((volatile signed __int32 *)*v4, 0i64) )
{
result = *--v6;
if( _interlockedbittestandset64((volatile signed __int32 *)result, 0i64) )
result = (UINT64 *)ExfAcquirePushLockExclusiveEx(*v6, a2, a3);
}
else
{
++v4;
}
}
return result;
}Referenced by:
ExAcquireCacheAwarePushLockExclusive
ExAcquireCacheAwarePushLockExclusiveEx