PspIncrementJobChainProcessCounts

VOID __fastcall PspIncrementJobChainProcessCounts(_EJOB *Job, _EJOB *a2, INT64 a3, INT16 a4){
  _EJOB *v6; 
  int v7; 
  int v8; 

  v6 = Job;
  if( Job != a2 )
  {
    v7 = a4 & 0x8000;
    do
    {
      v8 = *((_DWORD *)Job + 53);
      if( v8 != -1 )
        *((_DWORD *)Job + 53) = v8 + 1;
      ++*((_DWORD *)Job + 54);
      ++*((_DWORD *)Job + 306);
      if( v7 || (*(_DWORD *)(a3 + 2172) & 0x20) != 0 )
        ++*((_DWORD *)Job + 307);
      Job = (_EJOB *)*((_QWORD *)Job + 134);
    }
    while( Job != a2 );
  }
  while( v6 != a2 )
  {
    _InterlockedAnd((volatile signed __int32 *)v6 + 330, 0xFFDFFFFF);
    if( *((_QWORD *)v6 + 57) )
    {
      if( (*((_DWORD *)v6 + 219) & 0x40) != 0 )
        PspSendJobNotification(v6, 6ui64, *(VOID **)(a3 + 1088), 0);
    }
    v6 = (_EJOB *)*((_QWORD *)v6 + 134);
  }
}

Referenced by:

PspAssignProcessToJob
PspImplicitAssignProcessToJob