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