PspIncrementJobChainProcessCounts

VOID __fastcall PspIncrementJobChainProcessCounts(INT64 a1, INT64 a2, INT64 a3, INT16 a4){
  _EJOB *v6; 
  int v7; 
  int v8; 
  v6 = (_EJOB *)a1;
  if( a1 != a2 )
  {
    v7 = a4 & 0x8000;
    do
    {
      v8 = *(_DWORD *)(a1 + 212);
      if( v8 != -1 )
        *(_DWORD *)(a1 + 212) = v8 + 1;
      ++*(_DWORD *)(a1 + 216);
      ++*(_DWORD *)(a1 + 1224);
      if( v7 || (*(_DWORD *)(a3 + 2172) & 0x20) != 0 )
        ++*(_DWORD *)(a1 + 1228);
      a1 = *(_QWORD *)(a1 + 1072);
    }
    while( a1 != a2 );
  }
  while( v6 != (_EJOB *)a2 )
  {
    _InterlockedAnd((volatile signed __int32 *)&v6->1320, 0xFFDFFFFF);
    if( v6->CompletionPort )
    {
      if( (v6->CompletionFilter & 0x40) != 0 )
        PspSendJobNotification(v6, 6ui64, *(PVOID *)(a3 + 1088), 0);
    }
    v6 = v6->ParentJob;
  }
}

Referenced by:

PspAssignProcessToJob
PspImplicitAssignProcessToJob