MiInsertHugeRangeInList

UINT64 __fastcall MiInsertHugeRangeInList(INT64 a1, CHAR a2, _QWORD *a3){
  unsigned __int64 v3; 
  unsigned __int64 *v6; 
  _QWORD *v7; 
  __int64 v8; 
  __int64 v9; 
  unsigned __int64 v10; 
  __int64 v11; 
  unsigned __int64 v12; 
  int v13; 
  __int64 v14; 
  __int64 v15; 
  unsigned __int64 *v16; 
  unsigned __int64 v17; 
  unsigned __int64 v18; 
  UINT64 result; 
  __int64 v20; 
  unsigned __int64 v21; 
  unsigned __int64 v22; 
  struct _KLOCK_QUEUE_HANDLE LockHandle; 
  v3 = a1 & 0x3FFFF;
  memset(&LockHandle, 0, sizeof(LockHandle));
  v6 = (unsigned __int64 *)(qword_140C4E3B0 + 8 * v3);
  if( a3 )
    v7 = a3;
  else
    v7 = (_QWORD *)MiHugePfnPartition((_QWORD *)(qword_140C4E3B0 + 8 * v3));
  v8 = v7[770];
  LODWORD(v9) = MiSearchNumaNodeTable((PVOID)(v3 << 18));
  v10 = (unsigned int)dword_140C4DCC0[0];
  v11 = *(unsigned int *)(v9 + 8);
  if( a2 >= 0 )
    KeAcquireInStackQueuedSpinLock(v7 + 516, &LockHandle);
  v12 = *v6;
  if( (*v6 & 0x10000000000i64) != 0 )
    a2 = a2 & 0xDE | 0x20;
  if( (a2 & 1) != 0 )
  {
    v13 = 0;
    v14 = 0i64;
    v15 = (unsigned int)(2 * v10 * v11);
LABEL_12:
    v16 = (unsigned __int64 *)(v8 + 8 * (v15 + v3 % v10));
    goto LABEL_14;
  }
  if( (a2 & 0x20) == 0 )
  {
    v13 = 1;
    v14 = 1i64;
    v15 = v10 + (unsigned int)(2 * v10 * v11);
    goto LABEL_12;
  }
  v13 = 5;
  v14 = 5i64;
  v16 = (unsigned __int64 *)(v8 + 16i64 * (unsigned int)v10 * (unsigned __int16)KeNumberNodes);
LABEL_14:
  if( a3 )
  {
    v12 ^= (v12 ^ ((unsigned __int64)*(unsigned __int16 *)v7 << 41)) & 0xFFE0000000000i64;
    ++v7[53];
  }
  if( v13 )
  {
    if( v13 == 1 )
      v17 = v12 & 0xFFFFFFFFFFE3FFFFui64 | 0x80000;
    else
      v17 = v12 & 0xFFFFFFFFFFE3FFFFui64 | 0x100000;
  }
  else
  {
    v17 = v12 & 0xFFFFFFFFFFE3FFFFui64 | 0x40000;
  }
  v18 = *v16;
  result = 0xFFFFFF80001C0000ui64;
  v20 = *v16 & 0x3FFFF;
  v21 = v3 << 21;
  v22 = v17 & 0xFFFFFF80001C0000ui64;
  if( v20 )
  {
    *v6 = v22 | v20;
    result = v21 | *(_QWORD *)(qword_140C4E3B0 + 8 * v20) & 0xFFFFFF80001FFFFFui64;
    *(_QWORD *)(qword_140C4E3B0 + 8 * v20) = result;
  }
  else
  {
    *v6 = v22;
    v18 = v21 | v18 & 0xFFFFFF80001FFFFFui64;
  }
  *v16 = v3 | v18 & 0xFFFFFFFFFFFC0000ui64;
  if( v13 != 5 )
  {
    ++*(_QWORD *)(v7[2] + 4544 * v11 + 8 * v14 + 4192);
    ++v7[771];
  }
  if( a2 >= 0 )
  {
    KeReleaseInStackQueuedSpinLockFromDpcLevel(&LockHandle);
    result = (unsigned int)KiIrqlFlags;
    __writecr8(LockHandle.OldIrql);
  }
  return result;
}

Referenced by:

MiAddPartitionHugeRange
MiAllocatePartitionPhysicalPages
MiFreePartitionPageRun
MiMarkHugePfnBad
MiMarkHugePfnGood