EtwpDereferenceLoggerSecurityDescriptor

VOID __stdcall EtwpDereferenceLoggerSecurityDescriptor(_WMI_LOGGER_CONTEXT *LoggerContext, VOID *SecurityDescriptor){
  signed __int64 Object; 
  signed __int64 v3; 

  _m_prefetchw(&LoggerContext->SecurityDescriptor);
  Object = (signed __int64)LoggerContext->SecurityDescriptor.Object;
  if( ((unsigned __int64)SecurityDescriptor ^ Object) >= 0xF )
  {
LABEL_4:
    ObDereferenceSecurityDescriptor(SecurityDescriptor, 1ui64);
  }
  else
  {
    while( 1 )
    {
      v3 = Object;
      Object = _InterlockedCompareExchange64(
                 (volatile signed __int64 *)&LoggerContext->SecurityDescriptor,
                 Object + 1,
                 Object);
      if( v3 == Object )
        break;
      if( ((unsigned __int64)SecurityDescriptor ^ Object) >= 0xF )
        goto LABEL_4;
    }
  }
}

Referenced by:

EtwQueryPerformanceTraceInformation
EtwpCheckLoggerControlAccess