PopSetNewPolicyValue

NTSTATUS __stdcall PopSetNewPolicyValue(POWER_SETTING_UPDATE *PolicyChange){
  _GUID *v1; 
  NTSTATUS v3; 
  __int64 v4; 
  __int64 v6; 
  UINT64 ValueLength; 
  _UNICODE_STRING UnicodeString; 

  v1 = (_GUID *)(PolicyChange + 5);
  v3 = 0;
  UnicodeString = 0i64;
  if( RtlStringFromGUIDEx((_GUID *)(PolicyChange + 5), &UnicodeString, 1u) >= 0 )
    RtlFreeAnsiString(&UnicodeString);
  if( !PopStateIsSessionSpecific(v1) )
  {
    v4 = *(_QWORD *)(PolicyChange + 9) - *(_QWORD *)&GUID_PROCESSOR_SETTINGS_SUBGROUP.Data1;
    if( !v4 )
      v4 = *(_QWORD *)(PolicyChange + 11) - *(_QWORD *)GUID_PROCESSOR_SETTINGS_SUBGROUP.Data4;
    if( v4 )
      return PopSetPowerSettingValue((_LPCGUID)v1, (VOID *)0xFFFFFFFFi64);
    LODWORD(ValueLength) = PolicyChange[14];
    v3 = PpmSetProfilePolicySetting(
           (_GUID *)(PolicyChange + 1),
           v1,
           PolicyChange[13],
           (UINT8 *)PolicyChange + 60,
           ValueLength);
    if( v3 == -1073741275 )
      v3 = 0;
    v6 = *(_QWORD *)(PolicyChange + 1) - *(_QWORD *)&NullGuid.Data1;
    if( !v6 )
      v6 = *(_QWORD *)(PolicyChange + 3) - *(_QWORD *)NullGuid.Data4;
    if( !v6 )
      return PopSetPowerSettingValue((_LPCGUID)v1, (VOID *)0xFFFFFFFFi64);
  }
  return v3;
}

Referenced by:

PopUmpoProcessPowerMessage