MiSetHugeRangePartitionId

NTSTATUS __stdcall MiSetHugeRangePartitionId(UINT64 *a1, UINT64 a2, UINT64 a3, UINT64 a4){
  __int16 v4; 
  unsigned __int64 *v5; 
  unsigned __int64 *v6; 
  UINT64 v7; 
  unsigned __int64 *v10; 
  NTSTATUS result; 
  _KLOCK_QUEUE_HANDLE LockQueue; 
  _KLOCK_QUEUE_HANDLE LockHandle; 

  v4 = *(_WORD *)a1;
  v5 = (unsigned __int64 *)(a2 + 4128);
  *(_QWORD *)&LockQueue.OldIrql = 0i64;
  v6 = a1 + 516;
  v7 = a4 >> 18;
  v10 = (unsigned __int64 *)(*(&stru_140C4DB30 + 272) + 8 * ((a3 >> 18) & 0x3FFFF));
  memset(&LockHandle, 0, sizeof(LockHandle));
  if( (unsigned __int64)a1 >= a2 )
  {
    KeAcquireInStackQueuedSpinLock(v5, &LockHandle);
    v5 = v6;
    LockQueue.LockQueue.Lock = v6;
  }
  else
  {
    KeAcquireInStackQueuedSpinLock(a1 + 516, &LockHandle);
    LockQueue.LockQueue.Lock = v5;
  }
  LockQueue.LockQueue.Next = 0i64;
  KxAcquireQueuedSpinLock(&LockQueue.LockQueue, v5);
  *(_QWORD *)(a2 + 424) -= v7;
  for( a1[53] += v7; v7; --v7 )
  {
    *v10 = ((unsigned __int64)(v4 & 0x7FF) << 41) | *v10 & 0xFFF001FFFFEFFFFFui64 | 0xC0000;
    ++v10;
  }
  KeReleaseInStackQueuedSpinLockFromDpcLevel(&LockQueue);
  KeReleaseInStackQueuedSpinLockFromDpcLevel(&LockHandle);
  result = KiIrqlFlags;
  __writecr8(LockHandle.OldIrql);
  return result;
}

Referenced by:

MiActOnPartitionNodePages