_EJOB *__stdcall PspGetNextChildJob(_EJOB *ParentJob, _EJOB *ChildJob){
_ETHREAD *CurrentThread;
_EJOB *v5;
_EJOB *Flink;
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
v5 = 0i64;
PspLockJobShared((__int64)ParentJob, (__int64)CurrentThread);
if( ChildJob )
Flink = (_EJOB *)ChildJob->SiblingJobLinks.Flink;
else
Flink = (_EJOB *)ParentJob->ChildJobListHead.Flink;
while( Flink != (_EJOB *)&ParentJob->ChildJobListHead )
{
if( ObReferenceObjectSafeWithTag(&Flink[-1].DiskIoInfo.WriteOperationCount, 0x6E457350ui64) )
{
v5 = (_EJOB *)((char *)Flink - 1040);
break;
}
Flink = *(_EJOB **)&Flink->Event.Header.Lock;
}
PspUnlockJob((__int64)ParentJob, (__int64)CurrentThread);
if( ChildJob )
ObfDereferenceObjectWithTag(ChildJob, 0x6E457350ui64);
return v5;
}