MmAssignProcessToJob

VOID __stdcall MmAssignProcessToJob(_EPROCESS *Process, VOID *Context){
  int v2; 
  int v3; 
  int v4; 
  _ETHREAD *CurrentThread; 
  UINT64 v8; 
  UINT64 v9; 
  INT64 CommitCharge; 
  _KAPC_STATE ApcState; 

  v3 = 0;
  memset(&ApcState, 0, sizeof(ApcState));
  v4 = v2;
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  if( CurrentThread->Tcb.ApcState.Process != Process )
  {
    v3 = 1;
    KiStackAttachProcess(Process, 0i64, &ApcState);
  }
  LODWORD(v8) = MiLockVadRange(Process, (VOID *)0xFFFFFFFFFFFFFFFFi64, (VOID *)0xFFFFFFFFFFFFFFFFi64);
  v9 = v8;
  if( v8 || (Process->Flags3 & 1) != 0 )
  {
    LOCK_PAGE_TABLE_COMMITMENT(CurrentThread, Process);
    CommitCharge = Process->CommitCharge;
    Process->CommitChargeJob = Process->Job;
    PspChangeJobMemoryUsageByProcess(v4 | 3u, CommitCharge, Process, (_EJOB *)Context);
    _InterlockedOr((volatile signed __int32 *)&Process->1120, 0x10u);
    UNLOCK_PAGE_TABLE_COMMITMENT(CurrentThread, Process);
  }
  MiUnlockVadRange(Process, (VOID *)0xFFFFFFFFFFFFFFFFi64, v9);
  if( v3 )
    KiUnstackDetachProcess(&ApcState, 0i64);
}

Referenced by:

PspAssignProcessToJob
PspImplicitAssignProcessToJob