ExAcquireRundownProtectionCacheAwareEx

INT8 __fastcall ExAcquireRundownProtectionCacheAwareEx(INT64 a1, INT64 a2){
  signed __int64 *v2; 
  signed __int64 v3; 
  signed __int64 v4; 

  v2 = (signed __int64 *)(*(_QWORD *)a1 + *(_DWORD *)(a1 + 16) * (KeGetPcr()->Prcb.Number % *(_DWORD *)(a1 + 20)));
  _m_prefetchw(v2);
  v3 = *v2;
  if( (*v2 & 1) != 0 )
    return 0;
  while( 1 )
  {
    v4 = v3;
    v3 = _InterlockedCompareExchange64(v2, (unsigned int)(2 * a2) + v3, v3);
    if( v4 == v3 )
      break;
    if( (v3 & 1) != 0 )
      return 0;
  }
  return 1;
}

Referenced by:

EtwInitialize
EtwpAcquireLoggerContextByLoggerId
EtwpCompressionDpc
EtwpEventWriteFull
EtwpFailLogging
EtwpLogKernelEvent
EtwpOpenLogger
EtwpQueueStackWalkApc
EtwpQueueStackWalkDpc
EtwpStartLogger
EtwpStopTrace
EtwpWriteUserEvent
PeriodicCaptureStateTimerCallback
RawBeginOperation