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