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