MiStoreMarkLockedPagesModified

VOID __stdcall MiStoreMarkLockedPagesModified(_MDL *MemoryDescriptorList){
  _MDL *v1; 
  _MDL *v2; 
  _MMPFN *v3; 
  unsigned __int64 v4; 
  _MMPTE v5; 
  char v6; 
  _MI_PARTITION *v7; 

  v1 = MemoryDescriptorList + 1;
  v2 = (_MDL *)((char *)MemoryDescriptorList
              + 8
              * ((MemoryDescriptorList->ByteCount
                + 4095i64
                + (unsigned __int64)((LODWORD(MemoryDescriptorList->StartVa) + MemoryDescriptorList->ByteOffset) & 0xFFF)) >> 12)
              + 48);
  while( v1 < v2 )
  {
    v3 = &MmGetPfnDb()[(__int64)v1->Next];
    v4 = MiLockPageInline(v3);
    v5.u.Long = MiCapturePageFileInfoInline(&v3->OriginalPte, 1ui64, 0i64).u.Long;
    v6 = *((_BYTE *)&v3->u3 + 2);
    if( (v6 & 0x10) == 0 )
      *((_BYTE *)&v3->u3 + 2) = v6 | 0x10;
    v7 = *(_MI_PARTITION **)(*(&stru_140C4DB30 + 267) + 8 * (((unsigned __int64)v3->u4._bf_0 >> 39) & 0x3FF));
    _InterlockedAnd64(&v3->u2.Lock, 0x7FFFFFFFFFFFFFFFui64);
    __writecr8(v4);
    if( v5.u.Long )
      MiReleasePageFileInfo(v7, v5, 0i64);
    v1 = (_MDL *)((char *)v1 + 8);
  }
}

Referenced by:

MmStoreProbeAndLockPages