EtwpReferenceLoggerSecurityDescriptor

VOID *__stdcall EtwpReferenceLoggerSecurityDescriptor(_WMI_LOGGER_CONTEXT *LoggerContext){
  signed __int64 Object; 
  signed __int64 v3; 
  int v4; 
  volatile signed __int64 *v5; 
  signed __int64 v7; 
  signed __int64 v8; 
  _ETHREAD *CurrentThread; 

  _m_prefetchw(&LoggerContext->SecurityDescriptor);
  Object = (signed __int64)LoggerContext->SecurityDescriptor.Object;
  if( (Object & 0xF) != 0 )
  {
    do
    {
      v3 = _InterlockedCompareExchange64(
             (volatile signed __int64 *)&LoggerContext->SecurityDescriptor,
             Object - 1,
             Object);
      if( Object == v3 )
        break;
      Object = v3;
    }
    while( (v3 & 0xF) != 0 );
  }
  v4 = Object & 0xF;
  if( (Object & 0xF) != 0 )
  {
    v5 = (volatile signed __int64 *)(Object & 0xFFFFFFFFFFFFFFF0ui64);
    if( v4 == 1 )
    {
      if( _InterlockedExchangeAdd64(v5 - 3, 0xFui64) <= 0 )
        __fastfail(0xEu);
      _m_prefetchw(&LoggerContext->SecurityDescriptor);
      v7 = (signed __int64)LoggerContext->SecurityDescriptor.Object;
      while( (unsigned __int64)(v7 & 0xF) + 15 <= 0xF && v5 == (volatile signed __int64 *)(v7 & 0xFFFFFFFFFFFFFFF0ui64) )
      {
        v8 = v7;
        v7 = _InterlockedCompareExchange64((volatile signed __int64 *)&LoggerContext->SecurityDescriptor, v7 + 15, v7);
        if( v8 == v7 )
          return(VOID *)v5;
      }
      ObDereferenceSecurityDescriptor((VOID *)v5, 0xFui64);
    }
  }
  else
  {
    CurrentThread = (_ETHREAD *)KeGetCurrentThread();
    --CurrentThread->Tcb.KernelApcDisable;
    ExAcquirePushLockSharedEx((_EX_PUSH_LOCK *)&ExBootDevicesRemovedEvent + 263, 0i64);
    v5 = (volatile signed __int64 *)(LoggerContext->SecurityDescriptor.Value & 0xFFFFFFFFFFFFFFF0ui64);
    if( _InterlockedExchangeAdd64(v5 - 3, 1ui64) <= 0 )
      __fastfail(0xEu);
    if( _InterlockedCompareExchange64((_QWORD *)&ExBootDevicesRemovedEvent + 263, 0i64, 17i64) != 17 )
      ExfReleasePushLockShared((_EX_PUSH_LOCK *)&ExBootDevicesRemovedEvent + 263);
    KeAbPostRelease((char *)&ExBootDevicesRemovedEvent + 2104);
    KeLeaveCriticalRegion();
  }
  return(VOID *)v5;
}

Referenced by:

EtwQueryPerformanceTraceInformation
EtwpCheckLoggerControlAccess