MiFreeInitializationCode

void __fastcall MiFreeInitializationCode(_QWORD *a1, unsigned __int64 a2, __int64 a3, int a4){
  _QWORD *v6; 
  _QWORD *v7; 
  _QWORD *v8; 
  __int64 v9; 
  unsigned __int64 v10; 
  MMPTE *PteAddress; 
  _MI_PARTITION *ControlAreaPartition; 
  _SECTION *v13; 
  _CONTROL_AREA *v14; 
  CHAR *AnyMultiplexedVm; 
  __int64 v16; 
  UINT64 v17; 
  INT64 v18; 
  _MMPFN *PfnDb; 
  INT64 v20; 
  UINT64 v21; 
  __int128 v22; 
  __int128 v23; 
  __int128 v24; 
  v6 = a1;
  v22 = 0i64;
  v23 = 0i64;
  v24 = 0i64;
  if( a4 )
  {
    v8 = 0i64;
    v7 = 0i64;
  }
  else
  {
    v6 = (_QWORD *)a1[6];
    v7 = a1 + 20;
    v8 = a1;
  }
  v9 = (__int64)((a2 << 25) - ((_QWORD)MmGetPteBase() << 25)) >> 16;
  v10 = (__int64)(a3 - a2 + 8) >> 3;
  if( !a4 )
  {
    MiLockLoaderEntry((INT64)v7, 0i64);
    PteAddress = MiGetPteAddress(v6);
    RtlClearBits((RTL_BITMAP *)v7[14], (__int64)(a2 - (_QWORD)PteAddress) >> 3, (unsigned int)v10);
    MiUnlockLoaderEntry((INT64)v7, 0i64);
  }
  ControlAreaPartition = (_MI_PARTITION *)&MiSystemPartition;
  if( (unsigned int)MI_IS_PHYSICAL_ADDRESS((PVOID)v9) )
  {
    for( ; v10; v10 -= v21 )
    {
      v18 = MiVaToPfn((PVOID)v9);
      PfnDb = MmGetPfnDb();
      v20 = (INT64)PfnDb + 48 * v18;
      if( *(_WORD *)(v20 + 32) != 1 )
        MiBadRefCount((_MMPFN *)v20, (UINT64)PfnDb);
      v21 = v10;
      if( 512 - (unsigned __int64)(v18 & 0x1FF) <= v10 )
        v21 = 512 - (v18 & 0x1FF);
      MiFreeLargeInitializationCodePages(v20, v18, v21);
      v9 += v21 << 12;
    }
  }
  else if( a4 )
  {
    MiFreeBootDriverPages((_DWORD)v6, a2, v10, 1, 0i64);
    if( v6 == (_QWORD *)PsNtosImageBase )
      MxKernelFreedGapCharges += v10;
    else
      MxHalFreedGapCharges += v10;
  }
  else
  {
    v13 = (_SECTION *)v8[14];
    if( v13 )
    {
      v14 = MiSectionControlArea(v13);
      ControlAreaPartition = MiGetControlAreaPartition(v14);
    }
    AnyMultiplexedVm = MiGetAnyMultiplexedVm(1i64);
    MiDeleteSystemPagableVm((__int64)AnyMultiplexedVm, v16, a2, v10, 1, &v22);
  }
  v17 = *((_QWORD *)&v23 + 1);
  if( *((_QWORD *)&v23 + 1) )
  {
    v7[5] -= *((_QWORD *)&v23 + 1);
    v7[6] -= v17;
    if( v6 == PsHalImageBase || v6 == (_QWORD *)PsNtosImageBase )
      qword_140C4ECF0 -= *((_QWORD *)&v23 + 1);
    else
      _InterlockedExchangeAdd(&dword_140C4ED10, -(int)v17);
    MiReturnResident((INT64)ControlAreaPartition, v17);
    MiReturnCommit(ControlAreaPartition, v17 - *((_QWORD *)&v22 + 1));
  }
}

Referenced by:

MiFreeDriverInitialization
MiFreeKernelPadSections
MmDiscardDriverSection