ExAcquireRundownProtectionCacheAware

UINT8 __stdcall ExAcquireRundownProtectionCacheAware(_EX_RUNDOWN_REF_CACHE_AWARE *RunRefCacheAware){
  _EX_RUNDOWN_REF *v1; 
  signed __int64 v2; 

  v1 = (_EX_RUNDOWN_REF *)((char *)RunRefCacheAware->RunRefs
                         + RunRefCacheAware->RunRefSize * (KeGetPcr()->Prcb.Number % RunRefCacheAware->Number));
  _m_prefetchw(v1);
  v2 = v1->Count & 0xFFFFFFFFFFFFFFFEui64;
  if( v2 == _InterlockedCompareExchange64((volatile signed __int64 *)v1, v2 + 2, v2) )
    return 1;
  else
    return ExfAcquireRundownProtection(v1);
}

Referenced by:

MiProbeLockFrame
MiSwitchToTransition