PopSetSystemAwayMode

INT64 __stdcall PopSetSystemAwayMode(UINT64 Enter){
  UINT64 v1; 
  UINT8 v2; 
  UINT8 v3; 
  unsigned int v4; 
  UINT8 v5; 
  IRP *Timeout; 
  v4 = 0;
  if( (_DWORD)Enter )
  {
    if( !byte_140C23D11 )
    {
      if( byte_140C23D10 )
      {
        KeResetEvent(&PopUserPresentCompletedEvent, v1, v2, v3, Timeout);
        _InterlockedExchange(&dword_140C23D14, 1);
        if( _InterlockedCompareExchange(&PopUserPresentSetStatus, 0, 0) )
          KeWaitForSingleObject(&PopUserPresentCompletedEvent, Executive, 0, 0, 0i64);
        KeInitializeDpc(&PopAwayModeUserPresenceDpcObject, PopAwayModeUserPresenceDpc, &dword_140C23D14);
        KiSetTimerEx(
          (_KTIMER *)&PopAwayModeUserPresenceTimer,
          (_LARGE_INTEGER)-30000000i64,
          0i64,
          0,
          &PopAwayModeUserPresenceDpcObject);
        PopDiagTraceEventNoPayload((EVENT_DESCRIPTOR *)&POP_ETW_EVENT_AWAYMODE);
        PopSetAwayModeStatus(1u);
      }
      else
      {
        return(unsigned int)-1073741811;
      }
    }
  }
  else if( byte_140C23D11 )
  {
    PopSetAwayModeStatus(0);
    PopNotifyConsoleUserPresent(0, v5, PopAwaymodeExitReason);
  }
  return v4;
}

Referenced by:

PopIssueActionRequest