PpmInfoTraceProfileSettings

VOID __stdcall PpmInfoTraceProfileSettings(){
  _POP_PPM_PROFILE *v0; 
  char i; 
  char *v2; 
  _PPM_ENGINE_SETTINGS *Settings; 
  _PPM_ENGINE_SETTINGS *v4; 
  __int64 v5; 
  unsigned int v6; 
  unsigned int v7; 
  __int64 v8; 
  UINT64 SettingValueSize; 
  _SYSTEM_POWER_CONDITION v10; 
  INT64 v11; 
  _GUID SettingGuid; 

  v0 = &PpmDefaultProfile;
  SettingGuid = 0i64;
  for( i = 0; ; i = v10 + 1 )
  {
    LOBYTE(v10) = i;
    v2 = (char *)&unk_140CFAB58;
    Settings = v0->Settings;
    v11 = 53i64;
    do
    {
      v4 = &v0->Settings[1];
      v5 = 1i64 << v2[12];
      v6 = 0;
      v7 = ((v2[13] & 4) != 0) + 1;
      v8 = 0i64;
      SettingGuid = *(_GUID *)*((_QWORD *)v2 - 2);
      do
      {
        if( (v5 & Settings->ExplicitSetting[v8].Value) != 0 )
        {
          LODWORD(SettingValueSize) = *((_DWORD *)v2 + 2);
          PpmEventTraceProfileSetting(
            v0->Id,
            *((INT8 **)v2 - 3),
            &SettingGuid,
            v6,
            (UINT8 *)Settings + v6 * (unsigned int)SettingValueSize + *(_QWORD *)v2,
            SettingValueSize,
            0,
            1u,
            v10,
            v11);
        }
        if( (v5 & v4->ExplicitSetting[v8].Value) != 0 )
        {
          LODWORD(SettingValueSize) = *((_DWORD *)v2 + 2);
          PpmEventTraceProfileSetting(
            v0->Id,
            *((INT8 **)v2 - 3),
            &SettingGuid,
            v6,
            (UINT8 *)v4 + v6 * (unsigned int)SettingValueSize + *(_QWORD *)v2,
            SettingValueSize,
            1,
            1u,
            v10,
            v11);
        }
        ++SettingGuid.Data4[7];
        ++v6;
        ++v8;
      }
      while( v6 < v7 );
      v2 += 40;
      --v11;
    }
    while( v11 );
    if( (_BYTE)v10 == PpmProfileCount )
      break;
    v0 = (_POP_PPM_PROFILE *)(PpmProfiles + 5552i64 * (unsigned __int8)v10);
  }
}

Referenced by:

PpmEventTraceControlCallback