MiGetPhysicalAddress

UINT64 __stdcall MiGetPhysicalAddress(PVOID BaseAddress, LARGE_INTEGER *ReturnedPhysicalAddress, UINT64 *Writable){
  int v6; 
  __int64 v7; 
  UINT64 v8; 
  bool v9; 
  UINT64 v10; 
  UINT64 result; 
  __int64 v12; 
  _MMPTE *v13; 
  _MMPTE *v14; 
  UINT64 v15; 
  UINT64 v16; 
  int SystemRegionType; 
  _MMPTE *PointerPte[2]; 
  __int128 v20; 
  UINT64 v21; 
  *(_DWORD *)Writable = 0;
  *(_OWORD *)PointerPte = 0i64;
  v20 = 0i64;
  MiFillPteHierarchy((UINT64)BaseAddress, (UINT64 *)PointerPte);
  v6 = MI_IS_PHYSICAL_ADDRESS(BaseAddress);
  v7 = v6;
  if( v6 )
  {
    v8 = MiVaToPfn(BaseAddress);
    v9 = (MI_READ_PTE_LOCK_FREE((INT64)PointerPte[v7]) & 0x800) == 0;
  }
  else
  {
    v12 = 4i64;
    do
    {
      v13 = PointerPte[--v12];
      if( (MI_READ_PTE_LOCK_FREE((INT64)v13) & 1) == 0 )
        return 0i64;
    }
    while( v12 != 1 );
    v14 = PointerPte[0];
    v21 = MI_READ_PTE_LOCK_FREE((INT64)PointerPte[0]);
    v15 = v21;
    SystemRegionType = MiGetSystemRegionType((UINT64)BaseAddress);
    if( SystemRegionType == 12 )
      MiQueuePinDriverAddressLog((INT64)BaseAddress, v15, 0i64);
    if( (v15 & 1) == 0 )
      return 0i64;
    if( SystemRegionType == 5 )
    {
      MiSetNonPagedPoolNoSteal(v14, v16);
      v15 = MI_READ_PTE_LOCK_FREE((INT64)v14);
      v21 = v15;
    }
    MiPteInShadowRange((UINT64)&v21);
    v8 = (v15 >> 12) & 0xFFFFFFFFFi64;
    v9 = (v21 & 0x800) == 0;
  }
  if( !v9 )
    *(_DWORD *)Writable = 1;
  v10 = v8 << 12;
  HIDWORD(v21) = HIDWORD(v10);
  result = 1i64;
  LODWORD(v21) = ((unsigned __int16)BaseAddress & 0xFFF) + v10;
  ReturnedPhysicalAddress->QuadPart = v21;
  return result;
}

Referenced by:

MmGetPhysicalAddress
RtlMarkHiberPhase