MiFaultInPagedPool

CHAR __fastcall MiFaultInPagedPool(UINT64 a1){
  UINT64 v2; 
  _MMPTE *PteBase; 
  unsigned __int64 v4; 
  UINT64 v5; 
  CHAR *AnyMultiplexedVm; 
  UINT8 v7; 
  __int16 v8; 
  v2 = (a1 >> 9) & 0x7FFFFFFFF8i64;
  PteBase = MmGetPteBase();
  v4 = (unsigned __int64)PteBase + v2;
  v5 = (UINT64)PteBase + ((v4 >> 9) & 0x7FFFFFFFF8i64);
  AnyMultiplexedVm = MiGetAnyMultiplexedVm(2i64);
  v7 = MiLockWorkingSetShared((INT64)AnyMultiplexedVm);
  MiLockPageTableInternal((INT64)AnyMultiplexedVm, v5, 0i64);
  v8 = MI_READ_PTE_LOCK_FREE(v4);
  if( (v8 & 1) != 0 && (v8 & 0x200) != 0 )
    MiCopyOnWrite(a1, (UINT64 *)v4, -1i64, 4i64);
  MiUnlockPageTableInternal((INT64)AnyMultiplexedVm, v5);
  MiUnlockWorkingSetShared((INT64)AnyMultiplexedVm, v7);
  return *(_BYTE *)a1;
}

Referenced by:

MiProtectPrivateMemory
MiQueryAddressState