CcPostDeferredWrites

INT64 __stdcall CcPostDeferredWrites(){
  UINT64 v0; 
  __int64 v1; 
  UINT8 *v2; 
  _QWORD *v3; 
  unsigned int v4; 
  UINT64 *v5; 
  _QWORD *v6; 
  _QWORD *v7; 
  unsigned __int8 v8; 
  unsigned __int64 v9; 
  UINT64 v10; 
  unsigned int v11; 
  __int64 v12; 
  _QWORD *v13; 
  INT64 result; 
  struct _KEVENT *v15; 
  v2 = (UINT8 *)v1;
  v3 = (_QWORD *)(v1 + 784);
  v4 = 0;
  v5 = (UINT64 *)(v1 + 832);
  while( 2 )
  {
    v6 = 0i64;
    KeAcquireSpinLockRaiseToDpc(v5, v0);
    v7 = (_QWORD *)*v3;
    v9 = v8;
    while( v7 != v3 )
    {
      v6 = v7 - 3;
      if( v2[966] > 1u )
        goto LABEL_11;
      v10 = *((unsigned int *)v6 + 4);
      v11 = v10 + v4;
      if( CcCanIWriteStreamEx(v2, v6[1], v10, v4, 2, 0i64)
        && (!*((_BYTE *)v6 + 80)
         || (__int64)KUSER_SHARED_DATA.TickCountQuad >= (__int64)((unsigned int)(10000 * CcSoftThrottleDelay)
                                                                / (unsigned __int64)KeMaximumIncrement
                                                                + v6[11])) )
      {
        v4 = v11;
LABEL_11:
        v12 = *v7;
        v13 = (_QWORD *)v6[4];
        if( *(_QWORD **)(*v7 + 8i64) != v7 || (_QWORD *)*v13 != v7 )
          __fastfail(3u);
        *v13 = v12;
        *(_QWORD *)(v12 + 8) = v13;
        break;
      }
      v7 = (_QWORD *)*v7;
      v6 = 0i64;
    }
    KxReleaseSpinLock(v5);
    result = (unsigned int)KiIrqlFlags;
    __writecr8(v9);
    if( v6 )
    {
      v15 = (struct _KEVENT *)v6[5];
      if( v15 )
      {
        KeSetEvent(v15, 0);
      }
      else
      {
        ((void(__fastcall *)(_QWORD, _QWORD))v6[6])(v6[7], v6[8]);
        ExFreePoolWithTag(v6, 0x77446343u);
        CcDereferencePartition((INT64)v2);
      }
      continue;
    }
    return result;
  }
}

Referenced by:

CcCanIWrite
CcDeductDirtyPagesFromExternalCache
CcDeferWrite
CcExitPartition
CcFlushCachePriv
CcLazyWriteScan
CcNotifyOfMappedWriteComplete
CcUnpinRepinnedBcb