MiStoreCheckCandidatePage

NTSTATUS __stdcall MiStoreCheckCandidatePage(
        PVOID Pfn1,
        UINT64 StorePageFileOffset,
        _MM_STORE_KEY *StoreKeyOut,
        _MM_STORE_KEY_DESCRIPTOR *StoreKeyDescriptorOut,
        VOID **OpaqueContext){
  NTSTATUS v5; 
  __int64 v9; 
  int v10; 
  unsigned __int64 v11; 
  __int64 v12; 
  unsigned __int64 v13; 
  UINT64 *v14; 
  int v15; 
  _MMPFN *TopLevelPfn; 
  _EPROCESS *v17; 
  char PfnPriority; 
  char v19; 
  int v20; 
  _QWORD *v21; 
  __int128 v23; 
  VOID *v24; 

  v5 = 0;
  *(_QWORD *)&v23 = 0i64;
  v9 = (unsigned int)StorePageFileOffset | ((unsigned __int64)*(unsigned int *)(*(_QWORD *)(*(&stru_140C4DB30 + 267)
                                                                                          + 8
                                                                                          * ((*((_QWORD *)Pfn1 + 5) >> 39) & 0x3FFi64))
                                                                              + 1156i64) << 60);
  LOBYTE(v10) = MI_PFN_IS_PROTO(
                  (_UNICODE_STRING *)Pfn1,
                  (_UNICODE_STRING *)StorePageFileOffset,
                  (UINT8)StoreKeyOut,
                  (PWCHAR)StoreKeyDescriptorOut);
  if( v10 )
  {
    *(_QWORD *)&v23 = *((_QWORD *)Pfn1 + 1) | 0x8000000000000000ui64;
    *((_QWORD *)&v23 + 1) = 3i64;
    goto LABEL_22;
  }
  v11 = *((_QWORD *)Pfn1 + 1) | 0x8000000000000000ui64;
  v12 = (_QWORD)MmGetPteBase() << 25;
  if( MiGetSystemRegionType(v11) == 5 )
  {
    *(_QWORD *)&v23 = v11 - 1432;
    *((_QWORD *)&v23 + 1) = ((((_QWORD)MmGetPxeSelfRef() << 25) - v12) >> 16) & 0xFFFFFFFFFFFFFFFCui64;
LABEL_22:
    v24 = *OpaqueContext;
    PfnPriority = MiGetPfnPriority((_MMPFN *)Pfn1);
    v19 = (*((_BYTE *)Pfn1 + 34) & 0xC0) - 64;
    StoreKeyOut->_bf_0 = v9;
    LODWORD(v24) = v20 | (unsigned int)v24 & 0xFFF90C00 | (v19 != 0 ? 0x20000 : 0) | ((PfnPriority & 7) << 13) | 0xC00;
    *v21 = v24;
    *(_OWORD *)StoreKeyDescriptorOut = v23;
    return v5;
  }
  v13 = (__int64)((v11 << 25) - v12) >> 16;
  HIDWORD(v23) = HIDWORD(v13);
  if( MiGetSystemRegionType(v13) != 1
    && v13 > 0x7FFFFFFEFFFFi64
    && (v13 < *(&stru_140C4DB30 + 937) || v13 > *(&stru_140C4DB30 + 175))
    && (v13 < (unsigned __int64)MmGetPteBase() || v13 > (unsigned __int64)MmGetPteLimit()) )
  {
    v15 = v13 & 0xFFFFFFFC | 2;
    goto LABEL_21;
  }
  TopLevelPfn = MiGetTopLevelPfn((_MMPFN *)Pfn1, v14);
  if( TopLevelPfn != Pfn1 )
  {
    v17 = (_EPROCESS *)(((unsigned __int64)TopLevelPfn->u1.$976DF529DAC3D73085C9E386D94B91E6::$E228DCF3D8940E384DBC5EFCA756D8B6::_bf_0 >> 13) & 0x7FFFFFFFFFF0i64 | 0xFFFF800000000000ui64);
    *(_QWORD *)&v23 = v17;
    _InterlockedAnd64(&TopLevelPfn->u2.Lock, 0x7FFFFFFFFFFFFFFFui64);
    if( MiGetSystemRegionType(v13) == 1 )
    {
      v15 = v13 & 0xFFFFFFFC | 1;
    }
    else
    {
      if( MiIsStoreProcess(v17) )
        return -1073741401;
      v15 = v13 & 0xFFFFFFFC;
    }
LABEL_21:
    DWORD2(v23) = v15;
    goto LABEL_22;
  }
  return -1073741253;
}

Referenced by:

MiStoreWriteModifiedPages