PopDirectedDripsNotifyAppsAndServices

CHAR __stdcall PopDirectedDripsNotifyAppsAndServices(INT64 a1, INT64 a2, UINT8 a3){
  __int64 v3; 
  __int64 v7; 
  int v8; 
  __int64 v9; 
  __int64 v10; 
  __int64 v11; 
  __int64 v12; 
  __int64 v13; 
  __int64 v14; 
  __int64 v15; 
  __int64 v16; 
  UINT64 SessionId; 

  _InterlockedOr((volatile signed __int32 *)a1, 0);
  v7 = *(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart;
  if( a3 )
  {
    MiLockPagableImageSection(ExPageLockHandle, 1u);
    *(_DWORD *)(a2 + 48) = *(_DWORD *)a2;
    *(_DWORD *)(a2 + 40) = 2;
    *(_DWORD *)(a2 + 44) = 5;
    *(_DWORD *)(a2 + 56) = 21;
    v8 = PoBlockConsoleSwitch((_WIN32_POWERSTATE_PARAMETERS *)(a2 + 36));
    LOBYTE(v9) = 1;
    *(_DWORD *)(a2 + 32) = v8;
    PopDirectedDripsSendSuspendResumeNotification(1, v9, v10, v11);
    LOBYTE(v12) = 1;
    PopDirectedDripsSendSuspendResumeNotification(0, v12, v13, v14);
    _InterlockedOr((volatile signed __int32 *)a1, 8u);
    *(_DWORD *)(a1 + 116) = 0;
  }
  else
  {
    PopDirectedDripsSendSuspendResumeNotification(0, 0i64, a3, v3);
    PopDirectedDripsSendSuspendResumeNotification(1, 0i64, v15, v16);
    LODWORD(SessionId) = *(_DWORD *)(a2 + 32);
    *(_DWORD *)(a2 + 52) = 7;
    PopDispatchStateCallout((VOID *)(a2 + 36), &SessionId);
    MmUnlockPagableImageSection(ExPageLockHandle);
    _InterlockedAnd((volatile signed __int32 *)a1, 0xFFFFFFF7);
  }
  return PopDiagTraceDirectedDripsNotifyAppsAndServices(
           a3,
           (*(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart - v7) / 0x2710ui64,
           (NPTEXTMETRIC *)((*(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart - v7) / 0x2710ui64));
}

Referenced by:

PopDirectedDripsEngage
PopDirectedDripsNotify