PspUnlockJobsAndProcessExclusive

INT64 __fastcall PspUnlockJobsAndProcessExclusive(INT64 *a1, INT64 a2, INT64 a3){
  unsigned int v3; 
  __int64 v7; 
  v3 = *(_DWORD *)a1;
  while( v3 )
  {
    v7 = a1[2 * --v3 + 1];
    if( LOBYTE(a1[2 * v3 + 2]) )
      PspUnlockJobChain(v7, 0i64, 0);
    else
      ExReleaseResourceLite((PERESOURCE)(v7 + 56));
  }
  if( a2 )
  {
    if( (_InterlockedExchangeAdd64((volatile signed __int64 *)(a2 + 1080), 0xFFFFFFFFFFFFFFFFui64) & 6) == 2 )
      ExfTryToWakePushLock((volatile INT64 *)(a2 + 1080));
    KeAbPostRelease((PVOID)(a2 + 1080));
  }
  return KiLeaveGuardedRegionUnsafe(a3);
}

Referenced by:

PspAssignProcessToJob
PspJobDelete