PspUnlockJobChain

VOID __stdcall PspUnlockJobChain(_EJOB *BaseJob, _ETHREAD *CurrentThread){
  char v2; 
  unsigned __int64 v3; 
  char v4; 
  unsigned __int64 v7; 

  v3 = *((_QWORD *)BaseJob + 138);
  v4 = v2;
  if( v3 > 1 )
  {
    ExReleaseResourceLite((PERESOURCE)(*((_QWORD *)BaseJob + 135) + 56i64));
    v3 = *((_QWORD *)BaseJob + 138);
  }
  if( v3 > 2 )
  {
    v7 = v3 - 2;
    do
      ExReleaseResourceLite((PERESOURCE)(*(_QWORD *)(*((_QWORD *)BaseJob + 139) + 8 * v7-- - 8) + 56i64));
    while( v7 );
    v3 = *((_QWORD *)BaseJob + 138);
  }
  if( v3 )
    ExReleaseResourceLite((PERESOURCE)(*((_QWORD *)BaseJob + 134) + 56i64));
  if( (v4 & 1) == 0 )
  {
    ExReleaseResourceLite((PERESOURCE)((char *)BaseJob + 56));
    if( CurrentThread )
      KiLeaveGuardedRegionUnsafe((__int64)CurrentThread);
  }
}

Referenced by:

NtSetInformationJobObject
PspGetMemoryPartitionImplicit
PspImplicitAssignProcessToJob
PspUnlockJobsAndProcessExclusive