EtwpDisableKernelTrace

__int64 __fastcall EtwpDisableKernelTrace(_DWORD *a1, int *a2, UINT64 *a3, UINT64 TraceClass){
  int v4; 
  int v8; 
  int v9; 
  int v10; 
  int v11; 
  int v12; 
  unsigned int i; 
  _ETHREAD *CurrentThread; 
  UINT64 TraceClassa; 

  v4 = TraceClass;
  if( a2 )
  {
    v8 = *a2;
    if( (*a2 & 0x20000) != 0 )
    {
      *(BOOLEAN **)((char *)&NlsMbCodePageTag + 7) = 0i64;
      CmpTraceTxrRoutine = 0i64;
    }
    if( (v8 & 0x100000) != 0 )
    {
      AlpcUnregisterLogRoutine();
      v8 = *a2;
    }
    if( (v8 & 0x2000000) != 0 )
    {
      qword_140C00EF8 = 0i64;
      v8 = *a2;
    }
    if( (v8 & 0x4000000) != 0 )
    {
      qword_140C00EF0 = 0i64;
      v8 = *a2;
    }
    if( (v8 & 0x200) != 0 )
    {
      qword_140C00EE8 = 0i64;
      v8 = *a2;
    }
    if( (v8 & 0x100) != 0 )
    {
      EtwpDiskIoNotifyRoutines = 0i64;
      qword_140C00ED8 = 0i64;
      v8 = *a2;
    }
    if( (v8 & 0x400) != 0 )
      qword_140C544A8 = 0i64;
    v9 = a2[4];
    if( (v9 & 1) != 0 )
    {
      qword_140C544B0 = 0i64;
      v9 = a2[4];
    }
    if( (v9 & 2) != 0 )
      qword_140C544B8 = 0i64;
    v10 = *a2;
    if( (*a2 & 0x200000) != 0 )
    {
      qword_140CED0D8 = 0i64;
      v10 = *a2;
    }
    if( (v10 & 0x10000) != 0 )
      WmiSetNetworkNotify(0i64);
    if( (a2[1] & 0x10) != 0 )
      IoPerfReset(1ui64);
    v11 = a2[4];
    if( (v11 & 0x400000) != 0 )
    {
      qword_140C00EB8 = 0i64;
      v11 = a2[4];
    }
    if( (v11 & 0x80000) != 0 )
    {
      qword_140C00EC0 = 0i64;
      v11 = a2[4];
    }
    if( (v11 & 0x100000) != 0 )
    {
      qword_140C00EC8 = 0i64;
      v11 = a2[4];
    }
    if( (v11 & 0x200000) != 0 )
    {
      qword_140C00ED0 = 0i64;
      v11 = a2[4];
    }
    if( (v11 & 0x1000000) != 0 )
    {
      qword_140C11ED0 = 0i64;
      v11 = a2[4];
    }
    if( (v11 & 0x2000000) != 0 )
      qword_140C11ED8 = 0i64;
    if( (a2[2] & 0x8000000) != 0 )
      qword_140C11EE0 = 0i64;
    if( (*a2 & 0x40000) != 0 )
      DbgSetDebugPrintCallback(EtwpTraceDebugPrint, 0);
    v12 = a2[1];
    if( (v12 & 2) != 0 )
    {
      KeStopProfile((_KPROFILE *)&ExBootDevicesRemovedEvent + 528);
      v12 = a2[1];
    }
    if( (v12 & 0x400) != 0 )
    {
      for( i = 0; i < *(&ExBootDevicesRemovedEvent + 648); ++i )
        KeStopProfile((_KPROFILE *)(*(&ExBootDevicesRemovedEvent + 325) + 248i64 * i));
    }
    if( (a2[4] & 0x80u) != 0 )
    {
      CurrentThread = (_ETHREAD *)KeGetCurrentThread();
      --CurrentThread->Tcb.SpecialApcDisable;
      ExAcquirePushLockExclusiveEx(&stru_140C25A40, 0i64);
      ObpTraceFlags &= ~4u;
      if( (_InterlockedExchangeAdd64(&stru_140C25A40._bf_0, 0xFFFFFFFFFFFFFFFFui64) & 6) == 2 )
        ExfTryToWakePushLock(&stru_140C25A40);
      KeAbPostRelease(&stru_140C25A40);
      KiLeaveGuardedRegionUnsafe((__int64)KeGetCurrentThread());
    }
    if( (a2[1] & 0x880000) != 0 && (!a1 || (a1[1] & 0x880000) == 0) )
      KeCancelTimer2((INT64)&ExBootDevicesRemovedEvent + 2880);
  }
  LODWORD(TraceClassa) = v4;
  return EtwpUpdateFileInfoDriverState(a1, a2, 0, a3, TraceClassa);
}

Referenced by:

EtwpUpdateGlobalGroupMasks