PspSendReliableJobNotification

VOID __stdcall PspSendReliableJobNotification(_EJOB *Job, UINT64 NotificationId){
  UINT64 IoStatusInformation; 
  int v4; 
  int v5; 
  signed __int32 JobFlags; 
  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;
  }
  JobFlags = Job->JobFlags;
  do
  {
    v7 = v5;
    v8 = JobFlags & 8;
    if( (JobFlags & 8) == 0 )
      v7 = v4;
    v9 = JobFlags;
    JobFlags = _InterlockedCompareExchange((volatile signed __int32 *)&Job->1320, JobFlags | v7, JobFlags);
  }
  while( v9 != JobFlags );
  if( !v8 )
  {
    ObfReferenceObjectWithTag(Job, 0x624A7350u);
    IoSetIoCompletionEx(
      Job->CompletionPort,
      Job->CompletionKey,
      0i64,
      0i64,
      IoStatusInformation,
      0,
      Job->NotificationPacket);
    _InterlockedIncrement64((volatile signed __int64 *)&Job->CompletionCount);
  }
}

Referenced by:

PspEnforceLimitsJobPostCallback
PspEvaluateAndNotifyEmptyJob
PspJobNotificationWorker