MiImagePageOk

BOOL __fastcall MiImagePageOk(UINT64 a1, INT64 a2){
  UINT8 v2; 
  WCHAR *v3; 
  int v5; 
  __int64 v6; 
  RTL_BALANCED_NODE *Address; 
  __int64 v8; 
  __int64 v9; 
  __int64 v10; 
  __int64 v11; 
  int v13; 
  LOBYTE(v5) = MI_PFN_IS_PROTO((UNICODE_STRING *)a2, (UNICODE_STRING *)a2, v2, v3);
  if( !v5 )
    return 1;
  v8 = *(_QWORD *)(v6 + 16);
  if( (v8 & 0x400) == 0 || ((*(_QWORD *)(v6 + 40) >> 60) & 7) == 3 )
    return 1;
  v9 = *(_QWORD *)(v6 + 16);
  if( qword_140C4DC80 && (v8 & 0x10) == 0 )
    v9 = ~qword_140C4DC80 & v8;
  v10 = v9 >> 16;
  if( (*(_DWORD *)(*(_QWORD *)v10 + 56i64) & 0x20) == 0 )
    return 1;
  v11 = *(_QWORD *)(*(_QWORD *)(*(_QWORD *)v10 + 96i64) + 40i64);
  if( !v11 || (v11 & 0xFFFFFFFFFFFFFFF8ui64) == 8 || (v11 & 3) == 2 )
    return 1;
  if( a1 >= 0xFFFF800000000000ui64 )
  {
    if( (MiFlags & 0x10000) == 0 || (v8 & 0x40) == 0 )
      return 1;
LABEL_17:
    if( !Address )
      return 0;
    goto LABEL_18;
  }
  if( !Address )
  {
    Address = MiLocateAddress(a1);
    goto LABEL_17;
  }
LABEL_18:
  v13 = (int)Address[2].Children[0];
  return(v13 & 0x70) == 32
      && ((v13 & 0xF80) == 128
       || (*(_DWORD *)&Address[2].0 & 0x8000000) != 0 && (v11 & 4) == 0
       || (MiFlags & 0x400) != 0 && (*(_BYTE *)(v10 + 34) & 2) != 0);
}

Referenced by:

MiSoftFaultMappedView
MiWaitForCollidedFaultComplete