MiStoreCheckCandidatePage

INT64 __fastcall MiStoreCheckCandidatePage(UINT64 a1, UINT64 a2, UINT64 *a3, _OWORD *a4, INT64 a5){
  unsigned int v5; 
  unsigned __int64 v9; 
  int v10; 
  unsigned __int64 v11; 
  __int64 v12; 
  unsigned __int64 v13; 
  int v14; 
  UINT64 TopLevelPfn; 
  __int64 v16; 
  char PfnPriority; 
  char v18; 
  int v19; 
  _QWORD *v20; 
  __int128 v22; 
  __int64 v23; 
  v5 = 0;
  *(_QWORD *)&v22 = 0i64;
  v9 = (unsigned int)a2 | ((unsigned __int64)*(unsigned int *)(*(_QWORD *)(qword_140C4E388
                                                                         + 8 * ((*(_QWORD *)(a1 + 40) >> 39) & 0x3FFi64))
                                                             + 1156i64) << 60);
  LOBYTE(v10) = MI_PFN_IS_PROTO((UNICODE_STRING *)a1, (UNICODE_STRING *)a2, (UINT8)a3, (PWCHAR)a4);
  if( v10 )
  {
    *(_QWORD *)&v22 = *(_QWORD *)(a1 + 8) | 0x8000000000000000ui64;
    *((_QWORD *)&v22 + 1) = 3i64;
    goto LABEL_22;
  }
  v11 = *(_QWORD *)(a1 + 8) | 0x8000000000000000ui64;
  v12 = (_QWORD)MmGetPteBase() << 25;
  if( (unsigned int)MiGetSystemRegionType(v11) == 5 )
  {
    *(_QWORD *)&v22 = v11 - 1432;
    *((_QWORD *)&v22 + 1) = ((((_QWORD)MmGetPxeSelfRef() << 25) - v12) >> 16) & 0xFFFFFFFFFFFFFFFCui64;
LABEL_22:
    v23 = *(_QWORD *)a5;
    PfnPriority = MiGetPfnPriority(a1);
    v18 = (*(_BYTE *)(a1 + 34) & 0xC0) - 64;
    *a3 = v9;
    LODWORD(v23) = v19 | v23 & 0xFFF90C00 | (v18 != 0 ? 0x20000 : 0) | ((PfnPriority & 7) << 13) | 0xC00;
    *v20 = v23;
    *a4 = v22;
    return v5;
  }
  v13 = (__int64)((v11 << 25) - v12) >> 16;
  HIDWORD(v22) = HIDWORD(v13);
  if( (unsigned int)MiGetSystemRegionType(v13) != 1
    && v13 > 0x7FFFFFFEFFFFi64
    && (v13 < qword_140C4F878 || v13 > qword_140C4E0A8)
    && (v13 < (unsigned __int64)MmGetPteBase() || v13 > (unsigned __int64)MmGetPteLimit()) )
  {
    v14 = v13 & 0xFFFFFFFC | 2;
    goto LABEL_21;
  }
  TopLevelPfn = MiGetTopLevelPfn(a1);
  if( TopLevelPfn != a1 )
  {
    v16 = (*(_QWORD *)TopLevelPfn >> 13) & 0x7FFFFFFFFFF0i64 | 0xFFFF800000000000ui64;
    *(_QWORD *)&v22 = v16;
    _InterlockedAnd64((volatile signed __int64 *)(TopLevelPfn + 24), 0x7FFFFFFFFFFFFFFFui64);
    if( (unsigned int)MiGetSystemRegionType(v13) == 1 )
    {
      v14 = v13 & 0xFFFFFFFC | 1;
    }
    else
    {
      if( (unsigned int)MiIsStoreProcess(v16) )
        return(unsigned int)-1073741401;
      v14 = v13 & 0xFFFFFFFC;
    }
LABEL_21:
    DWORD2(v22) = v14;
    goto LABEL_22;
  }
  return(unsigned int)-1073741253;
}

Referenced by:

MiStoreWriteModifiedPages