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