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