MiMarkLargePageRanges

VOID __stdcall MiMarkLargePageRanges(){
  unsigned int NumberOfRuns; 
  _MMPFN *PfnDb; 
  __int64 v2; 
  unsigned __int64 BasePage; 
  unsigned __int64 v4; 
  unsigned __int64 v5; 
  __int64 v6; 
  UINT64 v7; 
  unsigned __int64 v8; 
  unsigned __int64 v9; 
  UINT64 v10; 
  unsigned __int64 v11; 
  UINT64 BitsMustBeChanged; 

  MiMarkLargePageMappings();
  NumberOfRuns = MmPhysicalMemoryBlock->NumberOfRuns;
  if( MmPhysicalMemoryBlock->NumberOfRuns )
  {
    PfnDb = MmGetPfnDb();
    v2 = NumberOfRuns;
    do
    {
      --v2;
      --NumberOfRuns;
      BasePage = MmPhysicalMemoryBlock->Run[v2].BasePage;
      v4 = (BasePage + MmPhysicalMemoryBlock->Run[v2].PageCount) & 0xFFFFFFFFFFFFFE00ui64;
      v5 = (BasePage + 511) & 0xFFFFFFFFFFFFFE00ui64;
      if( v5 )
      {
        if( v5 < v4 )
        {
          v6 = -1i64;
          v7 = 0i64;
          v8 = (unsigned __int64)&PfnDb[v5];
          v9 = v8 + 48 * (v4 - v5);
          if( v8 < v9 )
          {
            do
            {
              if( (*(_QWORD *)(v8 + 24) & 0x3FFFFFFFFFFFFFFFi64) != 0
                && (*(_BYTE *)(v8 + 34) & 7) == 6
                && (*(_QWORD *)(v8 + 40) & 0xFFFFFFFFFi64) == 0xFFFFFFFFDi64 )
              {
                if( !v7 )
                  v6 = (__int64)(v8 - (_QWORD)PfnDb) / 48;
                ++v7;
              }
              else
              {
                if( v7 >= 0x200 )
                {
                  v7 &= 0xFFFFFFFFFFFFFE00ui64;
                  LODWORD(BitsMustBeChanged) = 1;
                  MiUpdateLargePageBitMap((UINT64)&Irp, v6, v7, 1ui64, BitsMustBeChanged);
                  PfnDb = MmGetPfnDb();
                }
                if( !v7 )
                  v6 = (__int64)(v8 - (_QWORD)PfnDb) / 48;
                v10 = v7 + 512;
                v7 = 0i64;
                v11 = (v6 + v10) & 0xFFFFFFFFFFFFFE00ui64;
                if( !v11 )
                  goto LABEL_16;
                v8 = (unsigned __int64)&PfnDb[v11 - 1];
              }
              v8 += 48i64;
            }
            while( v8 < v9 );
            if( v7 >= 0x200 )
            {
              LODWORD(BitsMustBeChanged) = 1;
              MiUpdateLargePageBitMap((UINT64)&Irp, v6, v7 & 0xFFFFFFFFFFFFFE00ui64, 1ui64, BitsMustBeChanged);
            }
          }
        }
      }
LABEL_16:
      PfnDb = MmGetPfnDb();
    }
    while( NumberOfRuns );
  }
}

Referenced by:

MiInitNucleus