MiFindActualFaultingPte

MMPTE *__stdcall MiFindActualFaultingPte(PVOID FaultingAddress){
  UINT64 v1; 
  UINT64 v2; 
  _MMPTE *PdeBase; 
  MMPTE *ActualFaultingPte; 
  MMPTE *v6; 
  INT64 v7; 
  __int64 v8; 
  unsigned __int64 v9; 
  __int64 v10; 
  MMPTE *v11; 
  char v12; 
  UINT64 ProtectCode; 
  _MMVAD *VadOut; 
  UINT64 v15[2]; 
  __int128 v16; 
  INT64 result[8]; 
  __int16 v18; 
  char v19; 
  char v20; 
  __int64 v21; 
  v2 = v1;
  VadOut = 0i64;
  LODWORD(ProtectCode) = 0;
  *(_OWORD *)v15 = 0i64;
  v16 = 0i64;
  memset((INT64)result, 0i64);
  PdeBase = MmGetPdeBase();
  if( (*((_BYTE *)FaultingAddress + 69) & 1) == 0 )
  {
    ActualFaultingPte = (MMPTE *)*((_QWORD *)FaultingAddress + 9);
    if( ActualFaultingPte != (_MMPTE *)((char *)PdeBase + ((v2 >> 18) & 0x3FFFFFF8)) )
      return ActualFaultingPte;
    v6 = (_MMPTE *)((char *)MmGetPteBase() + ((v2 >> 9) & 0x7FFFFFFFF8i64));
LABEL_4:
    v7 = MI_READ_PTE_LOCK_FREE((INT64)v6);
    if( (v7 & 1) == 0 )
    {
      if( (v7 & 0x400) == 0 )
        return v6;
      if( !MiIsPrototypePteVadLookup(v7) )
      {
        if( qword_140C4DC80 )
        {
          if( (v8 & 0x10) != 0 )
            v8 &= ~0x10ui64;
          else
            v8 &= ~qword_140C4DC80;
        }
        v9 = v8 >> 16;
LABEL_11:
        v20 &= ~1u;
        result[0] = v9;
        v19 = 17;
        v18 = 0;
        v21 = (__int64)PdeBase + ((v9 >> 18) & 0x3FFFFFF8);
        ActualFaultingPte = MiFindActualFaultingPte(result);
        if( ActualFaultingPte )
          return ActualFaultingPte;
        return v6;
      }
      v9 = (unsigned __int64)MiCheckVirtualAddress((VOID *)v2, &ProtectCode, &VadOut);
      if( v9 )
        goto LABEL_11;
    }
    return 0i64;
  }
  MiFillPteHierarchy(v2, v15);
  v10 = 4i64;
  while( 1 )
  {
    v11 = (MMPTE *)v15[--v10];
    v12 = MI_READ_PTE_LOCK_FREE((INT64)v11);
    if( (v12 & 1) == 0 )
      return v11;
    if( v12 < 0 )
      return 0i64;
    if( v10 == 1 )
    {
      v6 = (MMPTE *)v15[0];
      goto LABEL_4;
    }
  }
}

Referenced by:

MiFindActualFaultingPte
MiIsFaultPteIntact