PopBatteryUpdateAlarms

NTSTATUS __stdcall PopBatteryUpdateAlarms(
        UINT8 AcDcTransition,
        UINT64 PolicyIndex,
        INT64 a3,
        INT64 a4,
        INT64 a5,
        INT64 a6,
        INT64 a7){
  unsigned int v7; 
  UINT8 v8; 
  __int128 v9; 
  __int128 v10; 
  __int128 v11; 
  __int128 v12; 
  __int128 v13; 
  __int128 v14; 
  __int128 v15; 
  __int128 v16; 
  __int128 v17; 
  __int128 v18; 
  __int128 v19; 
  __int128 v20; 
  __int64 v21; 
  unsigned int v22; 
  __int64 v23; 
  unsigned int *p_BatteryLevel; 
  __int64 v25; 
  _SYSTEM_POWER_CONDITION v26; 
  unsigned int v27; 
  _SYSTEM_POWER_CONDITION v28; 
  unsigned int v29; 
  UINT64 v31; 
  UINT64 v32; 
  UINT64 v33; 
  unsigned int ReturnedLength; 
  UINT64 ReturnedLengtha; 
  _SYSTEM_POWER_POLICY NewPolicy; 

  v7 = *(&stru_140C23628 + 441);
  v8 = AcDcTransition;
  LODWORD(ReturnedLengtha) = 0;
  v9 = **(&stru_140C23628 + 232);
  ReturnedLength = 0;
  v10 = *(_OWORD *)(*(&stru_140C23628 + 232) + 16i64);
  *(_OWORD *)&NewPolicy.Revision = v9;
  v11 = *(_OWORD *)(*(&stru_140C23628 + 232) + 32i64);
  *(_OWORD *)&NewPolicy.SleepButton.Action = v10;
  v12 = *(_OWORD *)(*(&stru_140C23628 + 232) + 48i64);
  *(_OWORD *)&NewPolicy.LidClose.Flags = v11;
  v13 = *(_OWORD *)(*(&stru_140C23628 + 232) + 64i64);
  *(_OWORD *)&NewPolicy.Idle.Action = v12;
  v14 = *(_OWORD *)(*(&stru_140C23628 + 232) + 80i64);
  *(_OWORD *)&NewPolicy.IdleSensitivity = v13;
  v15 = *(_OWORD *)(*(&stru_140C23628 + 232) + 96i64);
  *(_OWORD *)&NewPolicy.WinLogonFlags = v14;
  *(_OWORD *)&NewPolicy.DischargePolicy[0].Enable = v15;
  *(_OWORD *)&NewPolicy.DischargePolicy[0].PowerPolicy.EventCode = *(_OWORD *)(*(&stru_140C23628 + 232) + 112i64);
  v16 = *(_OWORD *)(*(&stru_140C23628 + 232) + 144i64);
  *(_OWORD *)&NewPolicy.DischargePolicy[1].PowerPolicy.Action = *(_OWORD *)(*(&stru_140C23628 + 232) + 128i64);
  v17 = *(_OWORD *)(*(&stru_140C23628 + 232) + 160i64);
  *(_OWORD *)&NewPolicy.DischargePolicy[2].Enable = v16;
  v18 = *(_OWORD *)(*(&stru_140C23628 + 232) + 176i64);
  *(_OWORD *)&NewPolicy.DischargePolicy[2].PowerPolicy.EventCode = v17;
  v19 = *(_OWORD *)(*(&stru_140C23628 + 232) + 192i64);
  *(_OWORD *)&NewPolicy.DischargePolicy[3].PowerPolicy.Action = v18;
  v20 = *(_OWORD *)(*(&stru_140C23628 + 232) + 208i64);
  v21 = *(_QWORD *)(*(&stru_140C23628 + 232) + 224i64);
  *(_OWORD *)&NewPolicy.VideoTimeout = v19;
  *(_OWORD *)&NewPolicy.VideoReserved[2] = v20;
  *(_QWORD *)&NewPolicy.OverThrottled.Flags = v21;
  v22 = PolicyIndex + 1;
  if( AcDcTransition )
    v22 = 4;
  if( AcDcTransition )
    PolicyIndex = 0i64;
  if( (unsigned int)PolicyIndex < v22 )
  {
    v23 = 8i64 * (unsigned int)PolicyIndex;
    p_BatteryLevel = &NewPolicy.DischargePolicy[PolicyIndex].BatteryLevel;
    v25 = v22 - (unsigned int)PolicyIndex;
    do
    {
      if( PopGetPowerSettingValue(
             *(_GUID **)((char *)&GUIDS_BATTERY_DISCHARGE_ACTION + v23),
             PolicyIndex,
             (VOID *)v7,
             &ReturnedLength,
             v31,
             &ReturnedLengtha) >= 0 )
      {
        v27 = ReturnedLength;
        if( ReturnedLength <= 6 )
        {
          p_BatteryLevel[1] = ReturnedLength;
          *((_BYTE *)p_BatteryLevel - 4) = v27 != 0;
        }
      }
      if( PopGetPowerSettingValue(
             *(_GUID **)((char *)&GUIDS_BATTERY_DISCHARGE_LEVEL + v23),
             v26,
             (VOID *)v7,
             &ReturnedLength,
             v32,
             &ReturnedLengtha) >= 0 )
      {
        v29 = ReturnedLength;
        if( ReturnedLength > 0x64 )
          v29 = 100;
        *p_BatteryLevel = v29;
      }
      if( PopGetPowerSettingValue(
             *(_GUID **)((char *)&GUIDS_BATTERY_DISCHARGE_FLAGS + v23),
             v28,
             (VOID *)v7,
             &ReturnedLength,
             v33,
             &ReturnedLengtha) >= 0 )
        p_BatteryLevel[3] = ReturnedLength & 7;
      p_BatteryLevel += 6;
      v23 += 8i64;
      --v25;
    }
    while( v25 );
    v8 = AcDcTransition;
  }
  return PopApplyPolicy(1u, v8, &NewPolicy, 0xE8ui64);
}

Referenced by:

PopBatteryApplyCompositeState