HalpUnmapVirtualAddress

VOID __stdcall HalpUnmapVirtualAddress(PVOID VirtualAddress, INT64 NumberPages, UINT8 FlushCurrentTLB){
  char *v4; 
  __int64 v5; 
  unsigned __int64 v6; 
  _MMPTE *v7; 
  char *v8; 

  v4 = (char *)VirtualAddress + 4096 * (unsigned __int64)(unsigned int)NumberPages - 1;
  v5 = (unsigned int)NumberPages;
  if( VirtualAddress >= ::VirtualAddress && v4 >= VirtualAddress && (unsigned __int64)v4 <= qword_140C50668 )
  {
    v6 = (unsigned __int64)VirtualAddress & 0xFFFFFFFFFFFFF000ui64;
    v7 = &MmGetPteBase()[(v6 >> 12) & 0xFFFFFFFFFi64];
    v8 = (char *)v6;
    if( (_DWORD)NumberPages )
    {
      do
      {
        v7->u.Long = 0i64;
        if( FlushCurrentTLB )
          __invlpg(v8);
        v8 += 4096;
        ++v7;
        --v5;
      }
      while( v5 );
    }
    if( !FlushCurrentTLB )
      HalpFlushTLB();
    if( (unsigned __int64)qword_140C50660 > v6 )
      qword_140C50660 = (VOID *)v6;
  }
}

Referenced by:

HalUnmapIoSpace
HalpAcpiCheckAndMapTable
HalpAcpiGetRsdt
HalpAcpiGetTableWork
HalpAcpiIsCachedTableCompromised
HalpAcpiPostSleep
HalpAcpiTableCacheInit
HalpCheckLowMemoryPreSleep
HalpHpetDiscover
HalpIvtProcessDrhdEntry
HalpSfiTimerInitialize
HalpUsbLegacyStopOhciInterrupt
WdHwDestroyHardwareRegister