MiInitializeNumaGraph

VOID __stdcall MiInitializeNumaGraph(_LOADER_PARAMETER_BLOCK *LoaderBlock){
  unsigned int v1; 
  unsigned int *v2; 
  unsigned int v3; 
  unsigned int j; 
  __int64 v5; 
  unsigned int v6; 
  unsigned int v7; 
  unsigned int v8; 
  unsigned int v9; 
  unsigned int *v10; 
  __int64 *v11; 
  unsigned int i; 
  unsigned __int16 v13; 
  __int64 v14; 
  __int64 *v15; 
  size_t v16; 
  unsigned int v17; 
  int *p_Base; 
  int v19; 
  __int64 v20; 
  int Base; 
  __int64 v22[127]; 
  v1 = 0;
  v2 = *(unsigned int **)(*((_QWORD *)LoaderBlock + 30) + 296i64);
  if( v2 )
  {
    v7 = *v2;
    v8 = (unsigned __int16)KeNumberNodes;
    v9 = (unsigned __int16)KeNumberNodes;
    if( *v2 <= (unsigned __int16)KeNumberNodes )
      v9 = *v2;
    v10 = &v2[v7 + 1];
    if( v9 > 0x40 )
      v9 = 64;
    if( v9 )
    {
      v11 = v22;
      do
      {
        for( i = 0; i < v7; v22[v14] = v13 )
        {
          if( i >= 0x40 )
            break;
          v13 = *((_WORD *)v10 + v1 * v7 + i);
          if( !v13 )
            v13 = 1;
          v14 = 2i64 * i;
          LODWORD(v22[v14]) = i++;
        }
        if( i < v8 )
        {
          v15 = &v22[2 * i];
          do
          {
            if( i >= 0x40 )
              break;
            *v15 = -1i64;
            *((_DWORD *)v15 - 2) = i++;
            v15 += 2;
          }
          while( i < v8 );
        }
        v16 = (unsigned __int16)KeNumberNodes;
        *v11 = 0i64;
        qsort((WCHAR *)&Base, v16, (const WCHAR *)0x10, MiNodeCostSort);
        v8 = (unsigned __int16)KeNumberNodes;
        v17 = 0;
        if( KeNumberNodes )
        {
          p_Base = &Base;
          do
          {
            v19 = *p_Base;
            v20 = v1 * v8 + v17;
            p_Base += 4;
            ++v17;
            *(_DWORD *)(qword_140C4DBD8 + 4 * v20) = v19;
          }
          while( v17 < v8 );
        }
        ++v1;
        v11 += 2;
      }
      while( v1 < v9 );
    }
  }
  v3 = (unsigned __int16)KeNumberNodes;
  while( v1 < v3 )
  {
    for( j = v1; j < v3 + v1; *(_DWORD *)(qword_140C4DBD8 + 4 * v5) = (v6 % v3) & 0x3F )
    {
      v5 = v1 * (v3 - 1) + j;
      v6 = j++;
    }
    ++v1;
  }
}

Referenced by:

MiCreatePfnDatabase