EtwpLogPmcCounterRundown

VOID __stdcall EtwpLogPmcCounterRundown(_WMI_LOGGER_CONTEXT *LoggerContext, UINT64 TargetLoggerId){
  unsigned int v2; 
  VOID **PoolWithTag; 
  VOID **v5; 
  VOID **v6; 
  _ETW_PMC_SUPPORT *PmcData; 
  unsigned int v8; 
  unsigned int v9; 
  __int64 v10; 
  VOID **v11; 
  const wchar_t *v12; 
  __int64 v13; 
  __int64 v14; 
  unsigned int CountersCount; 
  int v16; 

  v2 = TargetLoggerId;
  v16 = 0;
  PoolWithTag = ExAllocatePoolWithTag(0x200ui64, (unsigned int)(16 * (EtwpMaxPmcCounter + 1)), 1953985605i64);
  if( PoolWithTag )
  {
    v5 = ExAllocatePoolWithTag(0x200ui64, (unsigned int)(24 * EtwpMaxPmcCounter), 1953985605i64);
    if( v5 )
    {
      PmcData = LoggerContext->PmcData;
      if( !PmcData->CountersCount )
        return;
      v8 = 0;
      CountersCount = PmcData->CountersCount;
      *PoolWithTag = &CountersCount;
      PoolWithTag[1] = (VOID *)4;
      v9 = CountersCount;
      if( CountersCount )
      {
        do
        {
          v16 = 0;
          v10 = v8;
          v11 = &v5[3 * v8];
          *(_DWORD *)v11 = PmcData->Source[v8];
          if( ((int(__fastcall *)(__int64, __int64, VOID **, int *))off_140C00A68[0])(1i64, 24i64, v11, &v16) < 0 )
            v12 = L"Unknown";
          else
            v12 = (const wchar_t *)v11[2];
          v13 = -1i64;
          do
            ++v13;
          while( v12[v13] );
          ++v8;
          v14 = 2 * (v10 + 1);
          PoolWithTag[v14] = (VOID *)v12;
          PoolWithTag[v14 + 1] = (VOID *)(unsigned int)(2 * v13 + 2);
          v9 = CountersCount;
        }
        while( v8 < CountersCount );
      }
      EtwpLogKernelEvent((__int64)PoolWithTag, (_ETW_SILODRIVERSTATE *)EtwpHostSiloState, v2, v9 + 1, 0xF30u, 0x401802u);
      ExFreePoolWithTag(PoolWithTag, 0);
      v6 = v5;
    }
    else
    {
      v6 = PoolWithTag;
    }
    ExFreePoolWithTag(v6, 0);
  }
}

Referenced by:

EtwpCheckLoggerAccessAndDoRundown
EtwpStopLoggerInstance