MiFaultInPagedPool

CHAR __stdcall MiFaultInPagedPool(UINT64 a1){
  VOID *v1; 
  UINT64 v3; 
  _MMPTE *PteBase; 
  unsigned __int64 v5; 
  UINT64 v6; 
  _MMSUPPORT_INSTANCE *AnyMultiplexedVm; 
  char v8; 
  char v9; 
  __int16 v10; 
  UINT64 v11; 

  v3 = (a1 >> 9) & 0x7FFFFFFFF8i64;
  PteBase = MmGetPteBase();
  v5 = (unsigned __int64)PteBase + v3;
  v6 = (UINT64)PteBase + ((v5 >> 9) & 0x7FFFFFFFF8i64);
  AnyMultiplexedVm = MiGetAnyMultiplexedVm(MiWorkingSetTypePagedPool, v1);
  MiLockWorkingSetShared();
  v9 = v8;
  MiLockPageTableInternal((INT64)AnyMultiplexedVm, v6, 0i64);
  v10 = MI_READ_PTE_LOCK_FREE(v5);
  if( (v10 & 1) != 0 && (v10 & 0x200) != 0 )
    MiCopyOnWrite(a1, (INT64 *)v5, 0xFFFFFFFFFFFFFFFFui64, 4i64);
  MiUnlockPageTableInternal((INT64)AnyMultiplexedVm, v6);
  LOBYTE(v11) = v9;
  MiUnlockWorkingSetShared(AnyMultiplexedVm, v11);
  return *(_BYTE *)a1;
}

Referenced by:

MiProtectPrivateMemory
MiQueryAddressState