MmUpdateSectionIoAttribution

VOID __fastcall MmUpdateSectionIoAttribution(
        _SECTION_OBJECT_POINTERS *SectionObjectPointers,
        VOID *IoAttributionContext){
  void *v3; 
  __int64 v4; 
  __int64 v5; 
  __int64 v6; 
  KIRQL v7; 
  v7 = 0;
  v3 = 0i64;
  v4 = MiLockSectionControlArea(SectionObjectPointers, 1, &v7);
  v5 = v4;
  if( v4 )
  {
    if( IoAttributionContext != (VOID *)(8i64 * *(_QWORD *)(v4 + 120)) )
    {
      if( _InterlockedIncrement64((volatile signed __int64 *)IoAttributionContext + 4) <= 1 )
        __fastfail(0xEu);
      v6 = *(_QWORD *)(v4 + 120);
      v3 = (void *)(8 * v6);
      *(_QWORD *)(v5 + 120) = ((unsigned __int64)IoAttributionContext >> 3) | v6 & 0xE000000000000000ui64;
    }
    ExReleaseSpinLockExclusiveFromDpcLevel((INT64 *)(v5 + 72));
    __writecr8(v7);
    if( v3 )
      IoDiskIoAttributionDereference(v3);
  }
}

Referenced by:

CcMapAndCopyInToCache