PspSendReliableJobNotification

VOID __stdcall PspSendReliableJobNotification(_EJOB *Job, UINT64 NotificationId){
  UINT64 IoStatusInformation; 
  int v4; 
  int v5; 
  signed __int32 v6; 
  int v7; 
  int v8; 
  signed __int32 v9; 

  IoStatusInformation = (unsigned int)NotificationId;
  v4 = 12;
  if( (_DWORD)NotificationId == 11 )
  {
    v5 = 16396;
  }
  else
  {
    v5 = 65544;
    v4 = 8;
    if( (_DWORD)IoStatusInformation != 12 )
      v5 = 32776;
  }
  v6 = *((_DWORD *)Job + 330);
  do
  {
    v7 = v5;
    v8 = v6 & 8;
    if( (v6 & 8) == 0 )
      v7 = v4;
    v9 = v6;
    v6 = _InterlockedCompareExchange((volatile signed __int32 *)Job + 330, v6 | v7, v6);
  }
  while( v9 != v6 );
  if( !v8 )
  {
    ObfReferenceObjectWithTag(Job, 0x624A7350ui64);
    IoSetIoCompletionEx(
      *((PVOID *)Job + 57),
      *((PVOID *)Job + 58),
      0i64,
      0i64,
      IoStatusInformation,
      0,
      *((_IO_MINI_COMPLETION_PACKET_USER **)Job + 125));
    _InterlockedIncrement64((volatile signed __int64 *)Job + 59);
  }
}

Referenced by:

PspEnforceLimitsJobPostCallback
PspEvaluateAndNotifyEmptyJob
PspJobNotificationWorker