PopDirectedDripsSendSuspendResumeNotification

int __fastcall PopDirectedDripsSendSuspendResumeNotification(char a1, __int64 a2, __int64 a3, __int64 a4){
  unsigned __int8 v4; 
  _EPROCESS *NextSession; 
  _EPROCESS *i; 
  _EPROCESS *v7; 
  __int128 v9; 
  POWER_SUSPEND_RESUME SuspendResumeInput; 

  v4 = a2;
  if( a1 )
  {
    for( i = 0i64; ; i = v7 )
    {
      NextSession = (_EPROCESS *)MmGetNextSession(i);
      v7 = NextSession;
      if( !NextSession )
        break;
      SuspendResumeInput = 0i64;
      SuspendResumeInput.SessionId = MmGetSessionId(NextSession);
      SuspendResumeInput.Suspend = v4;
      *(_WORD *)&SuspendResumeInput.Apps = 1;
      PopSuspendResumeInvocation(&SuspendResumeInput);
    }
  }
  else
  {
    SuspendResumeInput = 0i64;
    SuspendResumeInput.Suspend = a2;
    PopSuspendResumeInvocation(&SuspendResumeInput);
    v9 = 0i64;
    if( v4 )
    {
      *(_QWORD *)&v9 = 0x400000000i64;
      WORD6(v9) = 256;
    }
    else
    {
      *(_QWORD *)&v9 = 0x1200000003i64;
      WORD6(v9) = 1;
      PopUmpoSendLegacyEvent(&v9);
      DWORD1(v9) = 7;
    }
    LODWORD(NextSession) = PopUmpoSendLegacyEvent(&v9);
  }
  return(int)NextSession;
}

Referenced by:

PopDirectedDripsNotifyAppsAndServices