PopPowerButtonSettingCallback
NTSTATUS __stdcall PopPowerButtonSettingCallback(
const _GUID *SettingGuid,
UINT64 *NewValue,
UINT64 ValueLength,
PVOID Context){
int v4;
__int128 v7;
__int128 v8;
__int128 v9;
__int128 v10;
__int128 v11;
__int128 v12;
__int128 v13;
__int128 v14;
__int128 v15;
__int128 v16;
__int128 v17;
__int64 v18;
__int64 v19;
__int64 v20;
__int64 v21;
__int64 v22;
__int64 v23;
_SYSTEM_POWER_STATE LidOpenWake;
POWER_ACTION_POLICY *p_LidClose;
unsigned int v26;
int v27;
NTSTATUS v28;
_SYSTEM_POWER_POLICY NewPolicy;
v4 = ValueLength;
PopAcquirePolicyLock();
v7 = *(_OWORD *)(*(&stru_140C23628 + 232) + 16i64);
*(_OWORD *)&NewPolicy.Revision = **(&stru_140C23628 + 232);
v8 = *(_OWORD *)(*(&stru_140C23628 + 232) + 32i64);
*(_OWORD *)&NewPolicy.SleepButton.Action = v7;
v9 = *(_OWORD *)(*(&stru_140C23628 + 232) + 48i64);
*(_OWORD *)&NewPolicy.LidClose.Flags = v8;
v10 = *(_OWORD *)(*(&stru_140C23628 + 232) + 64i64);
*(_OWORD *)&NewPolicy.Idle.Action = v9;
v11 = *(_OWORD *)(*(&stru_140C23628 + 232) + 80i64);
*(_OWORD *)&NewPolicy.IdleSensitivity = v10;
v12 = *(_OWORD *)(*(&stru_140C23628 + 232) + 96i64);
*(_OWORD *)&NewPolicy.WinLogonFlags = v11;
*(_OWORD *)&NewPolicy.DischargePolicy[0].Enable = v12;
*(_OWORD *)&NewPolicy.DischargePolicy[0].PowerPolicy.EventCode = *(_OWORD *)(*(&stru_140C23628 + 232) + 112i64);
v13 = *(_OWORD *)(*(&stru_140C23628 + 232) + 144i64);
*(_OWORD *)&NewPolicy.DischargePolicy[1].PowerPolicy.Action = *(_OWORD *)(*(&stru_140C23628 + 232) + 128i64);
v14 = *(_OWORD *)(*(&stru_140C23628 + 232) + 160i64);
*(_OWORD *)&NewPolicy.DischargePolicy[2].Enable = v13;
v15 = *(_OWORD *)(*(&stru_140C23628 + 232) + 176i64);
*(_OWORD *)&NewPolicy.DischargePolicy[2].PowerPolicy.EventCode = v14;
v16 = *(_OWORD *)(*(&stru_140C23628 + 232) + 192i64);
*(_OWORD *)&NewPolicy.DischargePolicy[3].PowerPolicy.Action = v15;
v17 = *(_OWORD *)(*(&stru_140C23628 + 232) + 208i64);
v18 = *(_QWORD *)(*(&stru_140C23628 + 232) + 224i64);
*(_OWORD *)&NewPolicy.VideoTimeout = v16;
*(_OWORD *)&NewPolicy.VideoReserved[2] = v17;
*(_QWORD *)&NewPolicy.OverThrottled.Flags = v18;
v19 = *(_QWORD *)&SettingGuid->Data1;
v20 = *(_QWORD *)&GUID_POWERBUTTON_ACTION.Data1 - *(_QWORD *)&SettingGuid->Data1;
if( *(_QWORD *)&GUID_POWERBUTTON_ACTION.Data1 == *(_QWORD *)&SettingGuid->Data1 )
v20 = *(_QWORD *)GUID_POWERBUTTON_ACTION.Data4 - *(_QWORD *)SettingGuid->Data4;
if( v20 )
{
v21 = *(_QWORD *)&GUID_SLEEPBUTTON_ACTION.Data1 - v19;
if( *(_QWORD *)&GUID_SLEEPBUTTON_ACTION.Data1 == v19 )
v21 = *(_QWORD *)GUID_SLEEPBUTTON_ACTION.Data4 - *(_QWORD *)SettingGuid->Data4;
if( v21 )
{
v22 = *(_QWORD *)&GUID_LIDCLOSE_ACTION.Data1 - v19;
if( *(_QWORD *)&GUID_LIDCLOSE_ACTION.Data1 == v19 )
v22 = *(_QWORD *)GUID_LIDCLOSE_ACTION.Data4 - *(_QWORD *)SettingGuid->Data4;
if( v22 )
{
v23 = *(_QWORD *)&GUID_LIDOPEN_POWERSTATE.Data1 - v19;
if( *(_QWORD *)&GUID_LIDOPEN_POWERSTATE.Data1 == v19 )
v23 = *(_QWORD *)GUID_LIDOPEN_POWERSTATE.Data4 - *(_QWORD *)SettingGuid->Data4;
if( !v23 && v4 == 4 && NewValue )
{
LidOpenWake = NewPolicy.LidOpenWake;
if( *(_DWORD *)NewValue <= 7u )
LidOpenWake = *(_DWORD *)NewValue;
NewPolicy.LidOpenWake = LidOpenWake;
}
goto LABEL_24;
}
p_LidClose = &NewPolicy.LidClose;
}
else
{
p_LidClose = &NewPolicy.SleepButton;
}
}
else
{
p_LidClose = &NewPolicy.PowerButton;
}
if( v4 != 4
|| !NewValue
|| (v26 = *(_DWORD *)NewValue, *(_DWORD *)NewValue > 8u)
|| (v27 = 333, !_bittest(&v27, v26)) )
{
v28 = -1073741811;
goto LABEL_25;
}
*(_QWORD *)&p_LidClose->Flags = 0i64;
p_LidClose->Action = v26;
LABEL_24:
v28 = PopApplyPolicy(1u, 0, &NewPolicy, 0xE8ui64);
LABEL_25:
PopReleasePolicyLock();
return v28;
}Referenced by:
No references.