PpmProcessSettingsFromQueryTable

char __fastcall PpmProcessSettingsFromQueryTable(_QWORD *a1, int a2, __int64 a3){
  __int64 v3; 
  int **v4; 
  __int64 v5; 
  char v6; 
  __int64 v7; 
  const wchar_t *v8; 
  wchar_t **v9; 
  unsigned int v10; 
  __int64 v11; 
  __int64 v12; 
  __int64 v13; 
  VOID **phkResult; 
  VOID *v16; 
  int DesiredAccess; 
  unsigned int DesiredAccess_4; 
  VOID *hKey; 
  WCHAR SubKey[8]; 
  DesiredAccess_4 = a2;
  *(_OWORD *)SubKey = 0i64;
  v3 = 0i64;
  v4 = (int **)(a3 + 24);
  v5 = 0i64;
  v6 = 0;
  hKey = a1;
  v7 = 20i64;
  do
  {
    v8 = (const wchar_t *)*(v4 - 1);
    v9 = &PpmPolicyAliasList;
    v10 = 0;
    while( wcsicmp(v8, *v9) )
    {
      ++v10;
      v9 += 2;
      if( v10 >= 0x14 )
        goto LABEL_7;
    }
    *(_OWORD *)SubKey = *(_OWORD *)v9[1];
    v3 = *(_QWORD *)&SubKey[4];
    v5 = *(_QWORD *)SubKey;
LABEL_7:
    DesiredAccess = **v4;
    if( DesiredAccess != -1 )
    {
      v11 = v5 - *(_QWORD *)&GUID_PROCESSOR_PERF_INCREASE_HISTORY.Data1;
      if( v5 == *(_QWORD *)&GUID_PROCESSOR_PERF_INCREASE_HISTORY.Data1 )
        v11 = v3 - *(_QWORD *)GUID_PROCESSOR_PERF_INCREASE_HISTORY.Data4;
      if( v11 )
      {
        v12 = v5 - *(_QWORD *)&GUID_PROCESSOR_PERF_DECREASE_HISTORY.Data1;
        if( v5 == *(_QWORD *)&GUID_PROCESSOR_PERF_DECREASE_HISTORY.Data1 )
          v12 = v3 - *(_QWORD *)GUID_PROCESSOR_PERF_DECREASE_HISTORY.Data4;
        if( v12 )
        {
          v13 = v5 - *(_QWORD *)&GUID_PROCESSOR_PERF_CORE_PARKING_HISTORY.Data1;
          if( v5 == *(_QWORD *)&GUID_PROCESSOR_PERF_CORE_PARKING_HISTORY.Data1 )
            v13 = v3 - *(_QWORD *)GUID_PROCESSOR_PERF_CORE_PARKING_HISTORY.Data4;
          if( v13 )
          {
            v6 = 1;
            LODWORD(phkResult) = 4;
            PpmSetProfilePolicySetting(hKey, SubKey, DesiredAccess_4, (UINT64)&DesiredAccess, phkResult, v16);
            v3 = *(_QWORD *)&SubKey[4];
            v5 = *(_QWORD *)SubKey;
          }
          else
          {
            PpmProfileStatus |= 0x10u;
          }
        }
        else
        {
          PpmProfileStatus |= 8u;
        }
      }
      else
      {
        PpmProfileStatus |= 4u;
      }
    }
    v4 += 7;
    --v7;
  }
  while( v7 );
  return v6;
}

Referenced by:

PpmRegisterSpmSettings