PspUnlinkJobProcess

VOID __stdcall PspUnlinkJobProcess(_EJOB *Job, _EPROCESS *Process){
  char *v2; 
  char *i; 
  _LIST_ENTRY *p_JobLinks; 
  _LIST_ENTRY *Flink; 
  _LIST_ENTRY *Blink; 

  v2 = (char *)Job + 1088;
  for( i = (char *)*((_QWORD *)Job + 136); i != v2; i = *(char **)i )
  {
    if( *((_EPROCESS **)i + 2) == (_EPROCESS *)&Process->JobLinks )
      *((_QWORD *)i + 2) = Process->JobLinks.Blink;
  }
  p_JobLinks = &Process->JobLinks;
  Flink = Process->JobLinks.Flink;
  if( Flink->Blink != p_JobLinks || (Blink = p_JobLinks->Blink, Blink->Flink != p_JobLinks) )
    __fastfail(3u);
  Blink->Flink = Flink;
  Flink->Blink = Blink;
}

Referenced by:

PspEstablishJobHierarchy
PspRemoveProcessFromJobChain