MiFreeKernelPadSections

VOID __fastcall MiFreeKernelPadSections(_KLDR_DATA_TABLE_ENTRY *DataTableEntry, INT64 a2){
  int v2; 
  __int64 v4; 
  int v5; 
  _MMPTE *PteBase; 
  __int64 v7; 
  int v8; 
  _DWORD *v9; 
  _MMPTE *v10; 
  int v11; 
  unsigned int v12; 
  __int64 v13; 
  unsigned int v14; 
  unsigned int v15; 
  int v16; 

  v16 = a2;
  v2 = a2;
  if( dword_140CFA1D8 != 2 )
  {
    LODWORD(v4) = RtlImageNtHeader((UINT64)DataTableEntry);
    v5 = 0;
    PteBase = MmGetPteBase();
    v7 = 0x7FFFFFFFF8i64;
    v8 = *(unsigned __int16 *)(v4 + 6);
    v9 = (_DWORD *)(*(unsigned __int16 *)(v4 + 20) + v4 + 24);
    if( *(_WORD *)(v4 + 6) )
    {
      v10 = PteBase;
      do
      {
        LOBYTE(v11) = MiIsKernelHalPadSection((INT64)v9);
        if( v11 )
        {
          v12 = v9[4];
          v13 = (unsigned int)v9[3];
          if( v12 < v9[2] )
            v12 = v9[2];
          ++v5;
          v14 = (v12 + 4095) & 0xFFFFF000;
          v15 = v14 + v13;
          if( v5 != 1 || dword_140CFA1D8 != 1 )
          {
            if( (MiFlags & 0x8000) != 0 )
            {
              VslReserveProtectedPages(0i64, (INT64)DataTableEntry + v13, v14 >> 12, 2ui64);
              v7 = 0x7FFFFFFFF8i64;
            }
            MiFreeInitializationCode(
              DataTableEntry,
              (char *)v10 + (v7 & (((unsigned __int64)DataTableEntry + v13) >> 9)),
              (char *)v10 + (v7 & (((unsigned __int64)&DataTableEntry[-1].TimeDateStamp + v15 + 3) >> 9)));
            v7 = 0x7FFFFFFFF8i64;
          }
        }
        v9 += 10;
        --v8;
      }
      while( v8 );
      v2 = v16;
      PteBase = MmGetPteBase();
    }
    if( (MiFlags & 4) != 0 && (*(_QWORD *)&v2 & 0x1FFFFFi64) != 0 )
      MiFreeInitializationCode(
        DataTableEntry,
        (char *)PteBase + (v7 & (((unsigned __int64)DataTableEntry + (unsigned int)(v2 - (_DWORD)DataTableEntry)) >> 9)),
        (char *)PteBase
      + (v7 & (((unsigned __int64)&DataTableEntry[-1].TimeDateStamp
              + ((v2 - (_DWORD)DataTableEntry + 0x1FFFFF) & 0xFFE00000)
              + 3) >> 9)));
  }
}

Referenced by:

MiInitializeDriverImages