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.