PopFilterCapabilities

VOID __stdcall PopFilterCapabilities(
        _SYSTEM_POWER_CAPABILITIES *SourceCapabilities,
        _SYSTEM_POWER_CAPABILITIES *FilteredCapabilities){
  __int128 v2; 
  char v4; 
  char v5; 
  char v6; 
  BOOLEAN SystemS3; 
  __int64 v8; 
  char *v9; 
  __int64 v10; 
  _PNP_VETO_TYPE VetoType; 
  int v12; 
  PVOID P; 
  v2 = *(_OWORD *)&SourceCapabilities->PowerButtonPresent;
  VetoType = PNP_VetoTypeUnknown;
  v4 = 0;
  *(_OWORD *)&FilteredCapabilities->PowerButtonPresent = v2;
  P = 0i64;
  *(_OWORD *)&FilteredCapabilities->ProcessorMaxThrottle = *(_OWORD *)&SourceCapabilities->ProcessorMaxThrottle;
  *(_OWORD *)&FilteredCapabilities->BatteryScale[0].Granularity = *(_OWORD *)&SourceCapabilities->BatteryScale[0].Granularity;
  *(_OWORD *)&FilteredCapabilities->BatteryScale[2].Granularity = *(_OWORD *)&SourceCapabilities->BatteryScale[2].Granularity;
  *(_QWORD *)&FilteredCapabilities->RtcWake = *(_QWORD *)&SourceCapabilities->RtcWake;
  FilteredCapabilities->DefaultLowLatencyWake = SourceCapabilities->DefaultLowLatencyWake;
  if( (int)IoGetLegacyVetoList((WCHAR **)&P, &VetoType) < 0 )
    goto LABEL_6;
  if( VetoType )
  {
    v4 = 1;
    v8 = 0i64;
    v9 = (char *)P;
    if( *(_WORD *)P )
    {
      do
      {
        v10 = -1i64;
        do
          ++v10;
        while( *(_WORD *)&v9[2 * v10] );
        v8 += 2 * v10 + 2;
        v9 = (char *)P + v8;
      }
      while( *(_WORD *)((char *)P + v8) );
    }
    PopLogSleepDisabled(4ui64, 0x1Fui64, P, v8 + 2);
  }
  if( P )
    ExFreePoolWithTag(P, 0);
  if( !v4 )
LABEL_6:
    PopRemoveReasonRecordByReasonCode(4ui64);
  v12 = 1;
  EmClientQueryRuleState(EM_RULE_DISABLE_FASTS4_GUID, &v12);
  if( v12 == 2 )
    PopLogSleepDisabled(7ui64, 0x10ui64, 0i64, 0i64);
  else
    PopRemoveReasonRecordByReasonCode(7ui64);
  if( byte_140C23D1D )
    PopLogSleepDisabled(0xEui64, 7ui64, 0i64, 0i64);
  else
    PopRemoveReasonRecordByReasonCode(0xEui64);
  PopLogDisabledSleepReason();
  if( PopCheckDisabledState(0) )
    FilteredCapabilities->SystemS1 = 0;
  if( PopCheckDisabledState(1) )
    FilteredCapabilities->SystemS2 = 0;
  if( PopCheckDisabledState(2) )
    FilteredCapabilities->SystemS3 = 0;
  if( PopCheckDisabledState(3) )
    FilteredCapabilities->SystemS4 = 0;
  if( PopCheckDisabledState(6) )
    FilteredCapabilities->FastSystemS4 = 0;
  SystemS3 = FilteredCapabilities->SystemS3;
  if( !SystemS3 || !v5 )
  {
    if( !SystemS3 )
      v5 = v6;
    FilteredCapabilities->FastSystemS4 = 0;
    if( !v5 )
      FilteredCapabilities->spare2[0] = 0;
  }
}

Referenced by:

NtPowerInformation
PoTtmInitiatePowerStateTransition
PopCaptureSleepStudyStatistics
PopIdleArmAoAcDozeS4Timer
PopInitSIdle
PopPolicySystemIdle
PopTransitionSystemPowerStateEx
PopUpdateSystemIdleContext
PopVerifyPowerActionPolicy