MxZeroBootMappings

VOID __stdcall MxZeroBootMappings(_MMPTE *PointerPxe, _MMPTE *EndPxe, UINT64 PagingLevel){
  int v3; 
  unsigned __int64 v5; 
  UINT64 v6; 
  UINT64 v7; 
  unsigned __int64 Long; 
  int v9; 
  _MMPTE *v10; 
  UINT64 v11; 

  if( PointerPxe < EndPxe )
  {
    v3 = PagingLevel;
    v5 = (unsigned __int64)PointerPxe;
    do
    {
      LODWORD(v6) = MI_READ_PTE_LOCK_FREE(v5);
      v11 = v6;
      v7 = v6;
      if( v6 )
      {
        if( (v6 & 1) != 0 && (v6 & 0x80u) == 0i64 )
        {
          if( v3 > 1 )
          {
            v10 = (_MMPTE *)((__int64)((v5 << 25) - ((_QWORD)MmGetPteBase() << 25)) >> 16);
            MxZeroBootMappings(v10, v10 + 512, (unsigned int)(v3 - 1));
          }
          MiPteInShadowRange((UINT64)&v11);
          MiFreeBootPageTable((v7 >> 12) & 0xFFFFFFFFFi64);
        }
        Long = ZeroPte.u.Long;
        LOBYTE(v9) = MiPteInShadowRange(v5);
        if( v9 && (KeGetCurrentThread()->ApcState.Process->Flags3 & 0x1000) != 0 && (ZeroPte.u.Long & 1) != 0 )
          Long = ZeroPte.u.Long | 0x8000000000000000ui64;
        *(_QWORD *)v5 = Long;
      }
      v5 += 8i64;
    }
    while( v5 < (unsigned __int64)EndPxe );
  }
}

Referenced by:

MiZeroBootMappings
MxZeroBootMappings