MiMakePartitionMemoryBlock

VOID __fastcall MiMakePartitionMemoryBlock(_MI_PARTITION *Partition){
  _QWORD *v2; 
  _QWORD *i; 
  _QWORD **v4; 
  __int64 v5; 
  _QWORD *v6; 
  _QWORD *v7; 
  __int64 v8; 
  int v9; 
  int v10; 
  __int64 v11; 
  PHYSICAL_MEMORY_DESCRIPTOR *v12; 
  _QWORD *k; 
  _QWORD *j; 
  _QWORD **v15; 
  __int64 v16; 
  _QWORD *v17; 
  _QWORD *v18; 
  __int64 v19; 
  __int64 v20; 
  __int128 v21; 
  __int64 v22; 
  __int128 v23[2]; 
  __int128 v24; 
  __int64 v25; 
  __int128 v26[3]; 
  __int64 v27; 
  v20 = 0i64;
  v22 = 0i64;
  v27 = 0i64;
  v25 = 0i64;
  v2 = (_QWORD *)*((_QWORD *)Partition + 3);
  i = 0i64;
  memset(v26, 0, sizeof(v26));
  memset(v23, 0, sizeof(v23));
  v24 = 0i64;
  while( v2 )
  {
    i = v2;
    v2 = (_QWORD *)*v2;
  }
  while( i )
  {
    v4 = (_QWORD **)i[1];
    v5 = (__int64)i;
    v6 = i;
    if( v4 )
    {
      v7 = *v4;
      for( i = (_QWORD *)i[1]; v7; v7 = (_QWORD *)*v7 )
        i = v7;
    }
    else
    {
      while( 1 )
      {
        i = (_QWORD *)(i[2] & 0xFFFFFFFFFFFFFFFCui64);
        if( !i || (_QWORD *)*i == v6 )
          break;
        v6 = i;
      }
    }
    MiActOnPartitionNodePages(v5, 5u, (__int16 **)v23);
  }
  v8 = *((_QWORD *)&v24 + 1);
  v9 = 1;
  v21 = 0i64;
  if( *((_QWORD *)&v24 + 1) )
  {
    v10 = v24;
    if( (unsigned __int64)v24 > 0x7FFFFFFFFFFFFFFi64 )
      goto LABEL_33;
    LODWORD(v11) = MiAllocatePool((struct _SLIST_ENTRY *)0x40);
    v12 = (PHYSICAL_MEMORY_DESCRIPTOR *)v11;
    if( !v11 )
      goto LABEL_33;
    *(_DWORD *)v11 = v10;
    k = 0i64;
    v27 = v11;
    *(_QWORD *)(v11 + 8) = v8;
    for( j = (_QWORD *)*((_QWORD *)Partition + 3); j; j = (_QWORD *)*j )
      k = j;
    while( k )
    {
      v15 = (_QWORD **)k[1];
      v16 = (__int64)k;
      v17 = k;
      if( v15 )
      {
        v18 = *v15;
        for( k = (_QWORD *)k[1]; v18; v18 = (_QWORD *)*v18 )
          k = v18;
      }
      else
      {
        while( 1 )
        {
          k = (_QWORD *)(k[2] & 0xFFFFFFFFFFFFFFFCui64);
          if( !k || (_QWORD *)*k == v17 )
            break;
          v17 = k;
        }
      }
      MiActOnPartitionNodePages(v16, 6u, (__int16 **)v26);
    }
    *(_QWORD *)&v21 = MiConvertInitialMemoryBlock(Partition, v12);
    ExFreePoolWithTag(v12, 0);
    if( !(_QWORD)v21 )
      goto LABEL_33;
    MiCreateNodeLists(Partition, (_PHYSICAL_MEMORY_DESCRIPTOR *)v21);
    *((_QWORD *)&v21 + 1) = v19;
    if( !v19 )
    {
      MiDereferencePageRunsEx(v21, 0i64);
      v21 = 0ui64;
LABEL_33:
      v9 = 0;
    }
  }
  MiUpdatePartitionMemory((__int64)Partition, (__int64)&v20, v9);
}

Referenced by:

MiDeletePartitionResources
MiGetPhysicalMemoryRanges
MiInsertPartitionPages