MiMakeSystemRangeAvailable

NTSTATUS __stdcall MiMakeSystemRangeAvailable(PVOID BugCheckParameter2, PVOID BugCheckParameter3){
  unsigned int v2; 
  ULONG_PTR BugCheckParameter4; 
  unsigned __int64 v4; 
  INT64 *v7; 
  __int128 *v8; 
  unsigned __int64 v9; 
  unsigned __int8 v10; 
  NTSTATUS result; 
  __int64 v12; 
  __int64 *v13; 
  __int64 v14; 
  __int64 *v15; 
  INT64 v16; 
  bool i; 
  __int128 v18; 
  struct _KLOCK_QUEUE_HANDLE LockHandle; 
  BugCheckParameter4 = (int)v2;
  v4 = (unsigned __int64)BugCheckParameter3 >> 21;
  memset(&LockHandle, 0, sizeof(LockHandle));
  v18 = 0i64;
  if( v2 == 1 )
  {
    MiReleaseSessionVa(BugCheckParameter2, (unsigned int)v4);
    return result;
  }
  if( v2 == 5 )
    v7 = (INT64 *)((char *)SListHead + 176 * (unsigned int)MiNonPagedPoolToNode(BugCheckParameter2) + 64);
  else
    v7 = MiSystemVaToDynamicBitmap(v2);
  v8 = (__int128 *)v7;
  v9 = ((unsigned __int64)BugCheckParameter2 - v7[4]) >> 21;
  if( (_DWORD)BugCheckParameter4 == 13 )
  {
    v8 = &v18;
    v16 = v7[2];
    *((_QWORD *)&v18 + 1) = v7[1];
    *(_QWORD *)&v18 = v16;
  }
  KeAcquireInStackQueuedSpinLock((UINT64 *)v7 + 8, &LockHandle);
  if( v9 >= *(_QWORD *)v8 )
    goto LABEL_31;
  if( v4 > 1 )
  {
    if( *(_QWORD *)v8 - v9 >= v4 )
    {
      v12 = *((_QWORD *)v8 + 1);
      v13 = (__int64 *)(v12 + 8 * (v9 >> 6));
      v14 = *v13;
      v15 = (__int64 *)(v12 + 8 * ((v9 + v4 - 1) >> 6));
      if( v13 != v15 )
      {
        for( i = ((-1i64 << v9) & v14) == -1i64 << v9; ; i = *v13 == -1 )
        {
          if( !i )
            goto LABEL_31;
          if( ++v13 == v15 )
            break;
        }
        if( ((0xFFFFFFFFFFFFFFFFui64 >> ~((unsigned __int8)v9 + (unsigned __int8)v4 - 1)) & *v13) == 0xFFFFFFFFFFFFFFFFui64 >> ~((unsigned __int8)v9 + (unsigned __int8)v4 - 1) )
          goto LABEL_11;
        v10 = 0;
        goto LABEL_10;
      }
      if( ((0xFFFFFFFFFFFFFFFFui64 >> (64 - (unsigned __int8)v4) << v9) & v14) == 0xFFFFFFFFFFFFFFFFui64 >> (64 - (unsigned __int8)v4) << v9 )
        goto LABEL_11;
    }
LABEL_31:
    KeBugCheckEx(0x1Au, 0x2104ui64, (ULONG_PTR)BugCheckParameter2, (ULONG_PTR)BugCheckParameter3, BugCheckParameter4);
  }
  if( v4 != 1 )
    goto LABEL_31;
  v10 = _bittest64(*((const signed __int64 **)v8 + 1), v9);
LABEL_10:
  if( !v10 )
    goto LABEL_31;
LABEL_11:
  RtlClearBitsEx((INT64)v8, v9, v4);
  if( (_DWORD)BugCheckParameter4 == 13 )
  {
    LODWORD(BugCheckParameter4) = 9;
    if( v9 < v7[6] )
      v7[6] = v9;
  }
  else if( v9 < v7[3] )
  {
    v7[3] = v9;
  }
  _InterlockedExchangeAdd64(&qword_140C4F688[(int)BugCheckParameter4], -(__int64)v4);
  if( (_DWORD)BugCheckParameter4 == 8 )
    qword_140C4DD88 += (__int64)BugCheckParameter3;
  KeReleaseInStackQueuedSpinLockFromDpcLevel(&LockHandle);
  result = KiIrqlFlags;
  __writecr8(LockHandle.OldIrql);
  return result;
}

Referenced by:

MiReturnSystemVa