MiImagePageOk

NTSTATUS __stdcall MiImagePageOk(VOID *FaultingAddress, _MMPFN *Pfn1){
  UINT8 v2; 
  wchar_t *v3; 
  int v5; 
  __int64 v6; 
  _MMVAD *Address; 
  __int64 v8; 
  __int64 v9; 
  __int64 v10; 
  __int64 v11; 
  union {unsigned int LongFlags;_MMVAD_FLAGS VadFlags;_MM_PRIVATE_VAD_FLAGS PrivateVadFlags;_MM_GRAPHICS_VAD_FLAGS GraphicsVadFlags;_MM_SHARED_VAD_FLAGS SharedVadFlags;volatile unsigned int VolatileVadLong;} v13; 

  LOBYTE(v5) = MI_PFN_IS_PROTO((_UNICODE_STRING *)Pfn1, (_UNICODE_STRING *)Pfn1, 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( *(&stru_140C4DB30 + 42) && (v8 & 0x10) == 0 )
    v9 = ~*(&stru_140C4DB30 + 42) & 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( (unsigned __int64)FaultingAddress >= 0xFFFF800000000000ui64 )
  {
    if( (MiFlags & 0x10000) == 0 || (v8 & 0x40) == 0 )
      return 1;
LABEL_17:
    if( !Address )
      return 0;
    goto LABEL_18;
  }
  if( !Address )
  {
    Address = MiLocateAddress(FaultingAddress);
    goto LABEL_17;
  }
LABEL_18:
  v13.LongFlags = (unsigned int)Address->Core.u;
  return(v13.LongFlags & 0x70) == 32
      && ((v13.LongFlags & 0xF80) == 128
       || (Address->u2.LongFlags2 & 0x8000000) != 0 && (v11 & 4) == 0
       || (MiFlags & 0x400) != 0 && (*(_BYTE *)(v10 + 34) & 2) != 0);
}

Referenced by:

MiSoftFaultMappedView
MiWaitForCollidedFaultComplete