MiInitializeSystemChannelOrdering

VOID __stdcall MiInitializeSystemChannelOrdering(_MI_PARTITION *Partition, UINT64 NodeNumber){
  int v2; 
  _MI_NODE_INFORMATION *v3; 
  UINT64 *v4; 
  __int64 i; 
  __int64 v6; 
  unsigned int v7; 
  __int64 v8; 
  unsigned int v9; 
  unsigned __int8 *PowerAttribute; 
  unsigned int v11; 
  unsigned __int8 *v12; 
  unsigned int v13; 
  unsigned __int8 *v14; 

  v2 = NodeNumber;
  v3 = &Partition->Core.NodeInformation[(unsigned int)NodeNumber];
  v4 = (UINT64 *)MxFreeDescriptor[(unsigned int)NodeNumber];
  if( v4[1] )
    v3->PowerAttribute[MiPageToChannel(*v4)] = 2;
  for( i = *(&stru_140C4DB30 + 28); *(_QWORD *)i != -1i64; i += 16i64 )
  {
    if( *(unsigned __int16 *)(i + 10) == v2 )
    {
      v6 = *(unsigned __int16 *)(i + 12);
      if( *(_BYTE *)(i + 14) )
      {
        if( v3->PowerAttribute[v6] != 2 )
          v3->PowerAttribute[v6] = 1;
      }
      else
      {
        v3->PowerAttribute[v6] = 2;
      }
    }
  }
  v7 = MmNumberOfChannels;
  v8 = 0i64;
  v9 = 0;
  if( MmNumberOfChannels )
  {
    PowerAttribute = v3->PowerAttribute;
    do
    {
      if( *PowerAttribute == 2 )
      {
        v3->ChannelOrdering[v8] = v9;
        v3->LockedChannelOrdering[v8] = v9;
        v8 = (unsigned int)(v8 + 1);
      }
      ++v9;
      ++PowerAttribute;
    }
    while( v9 < v7 );
  }
  v11 = 0;
  if( v7 )
  {
    v12 = v3->PowerAttribute;
    do
    {
      if( *v12 == 1 )
      {
        v3->ChannelOrdering[v8] = v11;
        v3->LockedChannelOrdering[v8] = v11;
        v8 = (unsigned int)(v8 + 1);
      }
      ++v11;
      ++v12;
    }
    while( v11 < v7 );
  }
  v13 = 0;
  if( v7 )
  {
    v14 = v3->PowerAttribute;
    do
    {
      if( !*v14 )
      {
        v3->ChannelOrdering[v8] = v13;
        v3->LockedChannelOrdering[v8] = v13;
        v8 = (unsigned int)(v8 + 1);
      }
      ++v13;
      ++v14;
    }
    while( v13 < v7 );
  }
}

Referenced by:

MiInitializeChannelOrdering