MiFreeUltraMapping

NTSTATUS __stdcall MiFreeUltraMapping(UINT64 a1){
  unsigned __int64 *v1; 
  unsigned __int64 v2; 
  unsigned __int64 Long; 
  int v4; 
  NTSTATUS result; 
  _KLOCK_QUEUE_HANDLE LockHandle; 

  memset(&LockHandle, 0, sizeof(LockHandle));
  v1 = (unsigned __int64 *)((char *)&MmGetPdpteBase()->u.Long + ((a1 >> 27) & 0x1FFFF8));
  v2 = (a1 - *(&stru_140C4DB30 + 449)) >> 30;
  KeAcquireInStackQueuedSpinLock((PKSPIN_LOCK)&stru_140C4DB30 + 448, &LockHandle);
  _bittestandset64(*(&stru_140C4DB30 + 454), v2);
  Long = ZeroPte.u.Long;
  LOBYTE(v4) = MiPteInShadowRange((UINT64)v1);
  if( v4 && (KeGetCurrentThread()->ApcState.Process->Flags3 & 0x1000) != 0 && (ZeroPte.u.Long & 1) != 0 )
    Long = ZeroPte.u.Long | 0x8000000000000000ui64;
  *v1 = Long;
  KeReleaseInStackQueuedSpinLockFromDpcLevel(&LockHandle);
  result = KiIrqlFlags;
  __writecr8(LockHandle.OldIrql);
  return result;
}

Referenced by:

MiReleaseLargeZeroingVa
MiZeroPage