MiInitializeSystemChannelOrdering

VOID __fastcall MiInitializeSystemChannelOrdering(_MI_PARTITION *Partition, UINT64 NodeNumber){
  int v2; 
  __int64 v3; 
  UINT64 *v4; 
  UINT8 *i; 
  __int64 v6; 
  unsigned int v7; 
  __int64 v8; 
  unsigned int v9; 
  _BYTE *v10; 
  unsigned int v11; 
  _BYTE *v12; 
  unsigned int v13; 
  _BYTE *v14; 
  v2 = NodeNumber;
  v3 = *((_QWORD *)Partition + 2) + 4544i64 * (unsigned int)NodeNumber;
  v4 = (UINT64 *)MxFreeDescriptor[(unsigned int)NodeNumber];
  if( v4[1] )
    *(_BYTE *)((unsigned int)MiPageToChannel(*v4) + v3 + 4321) = 2;
  for( i = qword_140C4DC10; *(_QWORD *)i != -1i64; i += 16 )
  {
    if( *((unsigned __int16 *)i + 5) == v2 )
    {
      v6 = *((unsigned __int16 *)i + 6);
      if( i[14] )
      {
        if( *(_BYTE *)(v6 + v3 + 4321) != 2 )
          *(_BYTE *)(v6 + v3 + 4321) = 1;
      }
      else
      {
        *(_BYTE *)(v6 + v3 + 4321) = 2;
      }
    }
  }
  v7 = MmNumberOfChannels;
  v8 = 0i64;
  v9 = 0;
  if( MmNumberOfChannels )
  {
    v10 = (_BYTE *)(v3 + 4321);
    do
    {
      if( *v10 == 2 )
      {
        *(_BYTE *)(v8 + v3 + 4313) = v9;
        *(_BYTE *)(v8 + v3 + 4317) = v9;
        v8 = (unsigned int)(v8 + 1);
      }
      ++v9;
      ++v10;
    }
    while( v9 < v7 );
  }
  v11 = 0;
  if( v7 )
  {
    v12 = (_BYTE *)(v3 + 4321);
    do
    {
      if( *v12 == 1 )
      {
        *(_BYTE *)(v8 + v3 + 4313) = v11;
        *(_BYTE *)(v8 + v3 + 4317) = v11;
        v8 = (unsigned int)(v8 + 1);
      }
      ++v11;
      ++v12;
    }
    while( v11 < v7 );
  }
  v13 = 0;
  if( v7 )
  {
    v14 = (_BYTE *)(v3 + 4321);
    do
    {
      if( !*v14 )
      {
        *(_BYTE *)(v8 + v3 + 4313) = v13;
        *(_BYTE *)(v8 + v3 + 4317) = v13;
        v8 = (unsigned int)(v8 + 1);
      }
      ++v13;
      ++v14;
    }
    while( v13 < v7 );
  }
}

Referenced by:

MiInitializeChannelOrdering