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