MiDbgUnTranslatePhysicalAddress
void __fastcall MiDbgUnTranslatePhysicalAddress(int *a1){
signed __int64 v2;
__int64 v3;
int v4;
unsigned __int64 v5;
if( (*a1 & 0x20) != 0 )
{
v2 = (qword_140C4E5C8 << 25) - ((_QWORD)MmGetPteBase() << 25);
_InterlockedExchange64((volatile __int64 *)qword_140C4E5C8, ZeroPte);
v3 = v2 >> 16;
if( (*a1 & 0x12) != 0 )
KeFlushSingleTb(v3, 0i64, 1i64);
else
KeFlushSingleCurrentTb((PVOID)v3);
}
v4 = *a1;
if( (*a1 & 4) == 0 )
{
if( (v4 & 1) != 0 || (v4 & 2) != 0 )
{
_InterlockedAnd64((volatile signed __int64 *)(*((_QWORD *)a1 + 1) + 24i64), 0x7FFFFFFFFFFFFFFFui64);
}
else if( (v4 & 8) != 0 || (v4 & 0x10) != 0 )
{
ExReleaseSpinLockExclusiveFromDpcLevel((INT64 *)&dword_140C4E980);
}
}
v5 = *((unsigned __int8 *)a1 + 4);
if( (_BYTE)v5 != 17 )
__writecr8(v5);
}Referenced by:
MiDbgCopyMemory
MiDbgTranslatePhysicalAddress