MiHotRemoveHugeRange

VOID __stdcall MiHotRemoveHugeRange(UINT64 a1, UINT64 a2){
  UINT64 v2; 
  INT64 v3; 
  UINT64 v4; 
  unsigned __int64 *v5; 
  INT64 v6; 
  UINT64 v7; 
  RTL_BALANCED_NODE *EntireHugePfnGood; 
  _QWORD *v9; 
  bool v10; 
  RTL_BALANCED_NODE *v11; 
  unsigned int v12; 
  _QWORD *v13; 
  INT64 v14; 
  PVOID *v15; 
  struct _KLOCK_QUEUE_HANDLE LockHandle; 
  PVOID P; 
  P = 0i64;
  v2 = (a1 >> 18) & 0x3FFFF;
  v3 = v2;
  memset(&LockHandle, 0, sizeof(LockHandle));
  v4 = a2 >> 18;
  v5 = (unsigned __int64 *)(qword_140C4E3B0 + 8 * v2);
  v6 = MiHugePfnPartition(v5);
  KeAcquireInStackQueuedSpinLock((UINT64 *)(v6 + 4128), &LockHandle);
  if( !v4 )
    goto LABEL_14;
  v7 = v4;
  do
  {
    if( (*v5 & 0x10000000000i64) == 0 )
      goto LABEL_13;
    EntireHugePfnGood = MiMakeEntireHugePfnGood(v3);
    v9 = P;
    v10 = 0;
    v11 = EntireHugePfnGood;
    if( !P )
      goto LABEL_12;
    v12 = (__int64)EntireHugePfnGood[1].Children[0] & 0x3FFFF;
    while( v12 < (v9[3] & 0x3FFFFui64) )
    {
      v13 = (_QWORD *)*v9;
      if( !*v9 )
      {
        v10 = 0;
        goto LABEL_12;
      }
LABEL_10:
      v9 = v13;
    }
    v13 = (_QWORD *)v9[1];
    if( v13 )
      goto LABEL_10;
    v10 = 1;
LABEL_12:
    RtlAvlInsertNodeEx((unsigned __int64 *)&P, (__int64)v9, v10, v11);
LABEL_13:
    *v5 = *v5 & 0xFFF001FFFFFFFFFFui64 | 0x8020000000000i64;
    ++v5;
    v3 = ((unsigned int)v3 ^ ((_DWORD)v3 + 1)) & 0x3FFFF ^ (unsigned __int64)v3;
    --v7;
  }
  while( v7 );
LABEL_14:
  *(_QWORD *)(v6 + 424) -= v4;
  KeReleaseInStackQueuedSpinLockFromDpcLevel(&LockHandle);
  __writecr8(LockHandle.OldIrql);
  v14 = qword_140C4E3B0 + 8 * v2;
  KeAcquireInStackQueuedSpinLock(&qword_140C4E3C0, &LockHandle);
  RtlClearBitsEx((INT64)&qword_140C4E3A0, v2, v4);
  if( v4 )
    memset(v14, 0i64);
  KeReleaseInStackQueuedSpinLockFromDpcLevel(&LockHandle);
  __writecr8(LockHandle.OldIrql);
  while( P )
  {
    v15 = (PVOID *)P;
    RtlAvlRemoveNode((unsigned __int64 *)&P, (__int64 *)P);
    ExFreePoolWithTag(v15[4], 0);
    ExFreePoolWithTag(v15, 0);
  }
}

Referenced by:

MiActOnPartitionNodePages