EtwpKernelTraceRundown

VOID __stdcall EtwpKernelTraceRundown(PERFINFO_GROUPMASK *GroupMasks, UINT64 LoggerId, UINT8 Start){
  char v3; 
  char v5; 
  unsigned int v6; 
  char v8; 
  char v9; 
  _WMI_LOGGER_CONTEXT *v10; 
  UINT8 v11; 
  INT16 v12; 
  INT64 v13; 
  INT64 v14; 
  UINT64 v15; 
  PERFINFO_GROUPMASK v16; 
  int v17; 
  PERFINFO_GROUPMASK v18; 
  PERFINFO_GROUPMASK v19; 
  PERFINFO_GROUPMASK v20; 
  UINT64 a5; 
  UINT64 v22; 
  __int64 LoggerHandle[7]; 
  unsigned int v24; 
  int v25; 

  v24 = Start;
  v5 = v3;
  LOBYTE(LoggerHandle[0]) = 0;
  v6 = Start;
  IoSetThreadHardErrorMode(0);
  v9 = v8;
  v10 = EtwpOpenLogger(v6, (_ETW_SILODRIVERSTATE *)LoggerId, 0, (_ETW_LOGGER_HANDLE *)LoggerHandle);
  v15 = (UINT64)v10;
  if( v10 )
  {
    if( GroupMasks )
    {
      if( (GroupMasks[1] & 0x20) != 0 && !v5 )
        EtwpLogRefSetAutoMark(0, (UINT64)v10, v13, v14, a5, v22, LoggerHandle[0]);
      v16 = *GroupMasks;
      if( (*GroupMasks & 0xC004) != 0
        || (GroupMasks[4] & 0x40) != 0
        || (v16 & 1) != 0
        || (v16 & 2) != 0
        || (GroupMasks[1] & 0x8000000) != 0 )
      {
        LODWORD(a5) = v25;
        EtwpProcessThreadImageRundown(GroupMasks, v15, v5);
        v16 = *GroupMasks;
      }
      v17 = v16 & 0x20000;
      if( v17 || (GroupMasks[2] & 0x1000000) != 0 )
        CmEtwRunDown((PFN_WDFREGISTRYQUERYULONG *)LoggerId, v6, v17 != 0, *((_BYTE *)GroupMasks + 11) & 1, v5);
      v18 = GroupMasks[1];
      if( (v18 & 2) != 0 )
      {
        EtwpSampledProfileRunDown(v15, v5, 1u);
        v18 = GroupMasks[1];
      }
      if( (v18 & 0x400) != 0 )
      {
        EtwpSampledProfileRunDown(v15, v5, 0);
        v18 = GroupMasks[1];
      }
      if( (v18 & 0x10000) != 0 )
      {
        EtwpSpinLockConfigRunDown(v15, v5);
        v18 = GroupMasks[1];
      }
      if( (v18 & 0x20000) != 0 )
      {
        EtwpExecutiveResourceConfigRunDown(v15, v5);
        v18 = GroupMasks[1];
      }
      if( (v18 & 0x400008) != 0 )
      {
        MmPerfLogSessionRundown(LoggerId, v6);
        v18 = GroupMasks[1];
      }
      if( (v18 & 0x8000049) != 0 )
        EtwpPoolRunDown(v15, v5);
      if( (GroupMasks[2] & 0x100000) != 0 )
        EtwpClockSourceRunDown(v15, v5);
      v19 = GroupMasks[1];
      if( v5 )
      {
        if( (v19 & 0x8000000) != 0 )
        {
          MmIdentifyPhysicalMemory(LoggerId, v6, 0x285ui64);
          MmLogSystemShareablePfnInfo(LoggerId, (VOID *)v6);
          v19 = GroupMasks[1];
        }
        if( (v19 & 0x20) != 0 )
          EtwpLogRefSetAutoMark(v5, v15, v13, v14, a5, v22, LoggerHandle[0]);
      }
      else
      {
        if( (v19 & 0x8000000) != 0 )
        {
          MmLogSystemShareablePfnInfo(LoggerId, (VOID *)v6);
          MmIdentifyPhysicalMemory(LoggerId, v6, 0x285ui64);
          v19 = GroupMasks[1];
        }
        if( (v19 & 9) != 0 )
        {
          EtwpLogMemInfoRundown(v15);
          MmIdentifyPhysicalMemory(LoggerId, v6, 0x223ui64);
          v19 = GroupMasks[1];
        }
        if( (v19 & 0x80000) != 0 )
        {
          MmLogQueryCombineStats((UINT64 *)LoggerId, (_PERFINFO_PAGECOMBINE_AGGREGATE_STAT *)&v24);
          v6 = v24;
        }
        if( (*GroupMasks & 0x200) != 0 )
          WmiTraceRundownNotify(**(_QWORD **)(v15 + 1080), v6);
        v20 = GroupMasks[4];
        if( (v20 & 0x8000) != 0 )
        {
          PopExecuteOnTargetProcessors(
            &KeActiveProcessors,
            (INT64 *)PpmTracePerfIdleRundown,
            0i64,
            0i64,
            a5,
            v22,
            LoggerHandle[0]);
          v20 = GroupMasks[4];
        }
        if( (v20 & 0x40) != 0 || (v20 & 0x80u) != 0 )
          EtwpObjectTypeRundown(v15, 0);
        if( (GroupMasks[2] & 0x10000) != 0 )
          EtwpProcessorRundown(v15, v11);
      }
    }
    EtwpCloseLogger(v6, (_ETW_SILODRIVERSTATE *)LoggerId, (_ETW_LOGGER_HANDLE)LoggerHandle[0]);
  }
  LOBYTE(v12) = v9;
  IoSetThreadHardErrorMode(v12);
}

Referenced by:

EtwKernelMemoryRundown
EtwpLogKernelTraceRundown
EtwpUpdateGroupMasks