CcPostDeferredWrites

VOID __stdcall CcPostDeferredWrites(){
  __int64 v0; 
  UINT8 *v1; 
  _QWORD *v2; 
  unsigned int v3; 
  UINT64 *v4; 
  _QWORD *v5; 
  unsigned __int8 v6; 
  _QWORD *v7; 
  unsigned __int64 v8; 
  UINT64 v9; 
  unsigned int v10; 
  __int64 v11; 
  _QWORD *v12; 
  _KEVENT *v13; 

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

Referenced by:

CcCanIWrite
CcDeductDirtyPagesFromExternalCache
CcDeferWrite
CcExitPartition
CcFlushCachePriv
CcLazyWriteScan
CcNotifyOfMappedWriteComplete
CcUnpinRepinnedBcb