MiLockWorkingSetForLargeMapping

UINT8 __stdcall MiLockWorkingSetForLargeMapping(_MMSUPPORT_INSTANCE *Vm, INT64 a2, INT64 a3){
  _MMPTE *v4; 
  _MMWSL_INSTANCE *VmWorkingSetList; 
  _MMPTE *PoolMm; 
  _MMSUPPORT_SHARED *v7; 
  UINT8 v8; 
  UINT8 v9; 
  _MMSUPPORT_SHARED *SharedVm; 

  if( (Vm->Flags._bf_0 & 7) != 0 )
  {
    SharedVm = MiGetSharedVm(Vm);
    v9 = ExAcquireSpinLockExclusive((INT64 *)&SharedVm->WorkingSetLock);
    goto LABEL_10;
  }
  v4 = 0i64;
  VmWorkingSetList = KeGetCurrentThread()->ApcState.Process->Vm.Instance.VmWorkingSetList;
  if( !VmWorkingSetList[15].NextPteToAge )
  {
    PoolMm = (_MMPTE *)ExAllocatePoolMm(64i64, 0x800ui64, 0x6C53694Dui64, (unsigned int)a3 | 0x80000000);
    v4 = PoolMm;
    if( PoolMm )
      memset(PoolMm, 0i64, 0x800u);
  }
  v7 = MiGetSharedVm(Vm);
  v8 = ExAcquireSpinLockExclusive((INT64 *)&v7->WorkingSetLock);
  v7->GoodCitizenWaiting = 0;
  v9 = v8;
  if( v4 )
  {
    if( !VmWorkingSetList[15].NextPteToAge )
    {
      VmWorkingSetList[15].NextPteToAge = v4;
      return v9;
    }
    MiUnlockWorkingSetExclusive(Vm, v8);
    ExFreePoolWithTag(v4, 0);
    SharedVm = MiGetSharedVm(Vm);
    ExAcquireSpinLockExclusive((INT64 *)&SharedVm->WorkingSetLock);
LABEL_10:
    SharedVm->GoodCitizenWaiting = 0;
  }
  return v9;
}

Referenced by:

MiCommitExistingVad
MiMapUserLargePages