MiMakePartitionMemoryBlock

VOID __stdcall MiMakePartitionMemoryBlock(_MI_PARTITION *Partition){
  _RTL_BALANCED_NODE *Root; 
  _QWORD *Children; 
  _QWORD **v4; 
  __int64 v5; 
  _QWORD *v6; 
  _QWORD *v7; 
  unsigned __int64 v8; 
  unsigned int v9; 
  PHYSICAL_MEMORY_DESCRIPTOR *Pool; 
  PHYSICAL_MEMORY_DESCRIPTOR *v11; 
  _QWORD *j; 
  _RTL_BALANCED_NODE *i; 
  _QWORD **v14; 
  __int64 v15; 
  _QWORD *v16; 
  _QWORD *v17; 
  _MI_INSERT_PAGES InsertInfo[2]; 
  __int128 v19; 
  __int64 v20; 
  __int128 v21[2]; 
  __int128 v22; 
  __int64 v23; 
  __int128 v24[3]; 
  PHYSICAL_MEMORY_DESCRIPTOR *v25; 

  *(_QWORD *)InsertInfo = 0i64;
  v20 = 0i64;
  v25 = 0i64;
  v23 = 0i64;
  Root = Partition->Core.PageRoot.Root;
  Children = 0i64;
  memset(v24, 0, sizeof(v24));
  memset(v21, 0, sizeof(v21));
  v22 = 0i64;
  while( Root )
  {
    Children = Root->Children;
    Root = Root->Children[0];
  }
  while( Children )
  {
    v4 = (_QWORD **)Children[1];
    v5 = (__int64)Children;
    v6 = Children;
    if( v4 )
    {
      v7 = *v4;
      for( Children = (_QWORD *)Children[1]; v7; v7 = (_QWORD *)*v7 )
        Children = v7;
    }
    else
    {
      while( 1 )
      {
        Children = (_QWORD *)(Children[2] & 0xFFFFFFFFFFFFFFFCui64);
        if( !Children || (_QWORD *)*Children == v6 )
          break;
        v6 = Children;
      }
    }
    MiActOnPartitionNodePages(v5, 5u, (_RTL_AVL_TREE **)v21);
  }
  v8 = *((_QWORD *)&v22 + 1);
  v19 = 0i64;
  if( *((_QWORD *)&v22 + 1) )
  {
    v9 = v22;
    if( (unsigned __int64)v22 <= 0x7FFFFFFFFFFFFFFi64 )
    {
      Pool = (PHYSICAL_MEMORY_DESCRIPTOR *)MiAllocatePool(64i64, 16 * (v22 + 1), 0x6C4D6D4Dui64);
      v11 = Pool;
      if( Pool )
      {
        Pool->NumberOfRuns = v9;
        j = 0i64;
        v25 = Pool;
        Pool->NumberOfPages = v8;
        for( i = Partition->Core.PageRoot.Root; i; i = i->Children[0] )
          j = i->Children;
        while( j )
        {
          v14 = (_QWORD **)j[1];
          v15 = (__int64)j;
          v16 = j;
          if( v14 )
          {
            v17 = *v14;
            for( j = (_QWORD *)j[1]; v17; v17 = (_QWORD *)*v17 )
              j = v17;
          }
          else
          {
            while( 1 )
            {
              j = (_QWORD *)(j[2] & 0xFFFFFFFFFFFFFFFCui64);
              if( !j || (_QWORD *)*j == v16 )
                break;
              v16 = j;
            }
          }
          MiActOnPartitionNodePages(v15, 6u, (_RTL_AVL_TREE **)v24);
        }
        *(_QWORD *)&v19 = MiConvertInitialMemoryBlock(Partition, v11);
        ExFreePoolWithTag(v11, 0);
        if( (_QWORD)v19 )
        {
          *((_QWORD *)&v19 + 1) = MiCreateNodeLists(Partition, (PHYSICAL_MEMORY_DESCRIPTOR *)v19);
          if( !*((_QWORD *)&v19 + 1) )
          {
            MiDereferencePageRunsEx(v19, 0i64);
            v19 = 0ui64;
          }
        }
      }
    }
  }
  MiUpdatePartitionMemory(Partition, InsertInfo);
}

Referenced by:

MiDeletePartitionResources
MiGetPhysicalMemoryRanges
MiInsertPartitionPages