PopUserPresentSet

VOID __stdcall PopUserPresentSet(POWER_MONITOR_REQUEST_REASON MonitorOnReason){
  void *v1; 
  __int32 v2; 
  INT64 v3; 
  v1 = (void *)(int)MonitorOnReason;
  if( (*(_DWORD *)PopSimulate & 0x40000) != 0 )
  {
    LODWORD(v3) = 0;
    DbgkWerCaptureLiveKernelDump(
      (WCHAR *)L"UserPresenceSet",
      160i64,
      273i64,
      PopUserPresentSetStatus,
      PopFullWake,
      0i64,
      0i64,
      0i64,
      v3);
  }
  if( byte_140C23261 == 3 )
  {
    _InterlockedOr(&PopPendingUserPresenceDuringSystemSleep, 1u);
    _InterlockedExchange((volatile __int32 *)&PopPendingUserPresenceMonitorOnReason, (__int32)v1);
  }
  else
  {
    v2 = _InterlockedExchange(&PopUserPresentSetStatus, 1);
    if( _InterlockedCompareExchange(&dword_140C23D14, 0, 0) )
    {
      if( !v2 )
      {
        _InterlockedExchange(&PopUserPresentSetStatus, 0);
        KeSetEvent(&PopUserPresentCompletedEvent, 0);
      }
    }
    else
    {
      if( (PopFullWake & 3) == 0 )
      {
        _InterlockedOr(&PopFullWake, 2u);
        PopSetNotificationWork(1ui64);
      }
      PopResetIdleTime(2i64);
      if( !v2 )
      {
        PopUserPresentWorkItem.Parameter = v1;
        PopUserPresentWorkItem.WorkerRoutine = (void(__fastcall *)(void *))PopUserPresentSetWorker;
        PopUserPresentWorkItem.List.Flink = 0i64;
        ExQueueWorkItem(&PopUserPresentWorkItem, DelayedWorkQueue);
      }
    }
  }
}

Referenced by:

PopSetSystemState