CcIncrementWriteBehindPriority

VOID __fastcall CcIncrementWriteBehindPriority(INT64 a1, INT64 a2, UINT8 *a3){
  void *v3; 
  __int64 v4; 
  _QWORD *v5; 
  __int64 v7; 
  unsigned __int64 v8; 
  __int64 v9; 
  _QWORD *v10; 
  unsigned __int64 *v11; 
  _QWORD *v12; 
  __int64 *v13; 
  __int64 v14; 
  struct _KLOCK_QUEUE_HANDLE LockHandle; 
  v4 = *(_QWORD *)(a1 + 496);
  v5 = 0i64;
  *(_QWORD *)&LockHandle.OldIrql = 0i64;
  v7 = *(_QWORD *)(a1 + 528);
  if( v4 && (v4 & 1) == 0 )
  {
    LockHandle.LockQueue.Next = 0i64;
    LockHandle.LockQueue.Lock = (unsigned __int64 *volatile)(v7 + 192);
    KxAcquireQueuedSpinLock((PIO_WORKITEM)&LockHandle, (PIO_WORKITEM_ROUTINE)(v7 + 192), (WORK_QUEUE_TYPE)a3, v3);
    v8 = *(_QWORD *)(a1 + 496);
    if( !v8 )
    {
      KeReleaseInStackQueuedSpinLockFromDpcLevel(&LockHandle);
      return;
    }
    *(_QWORD *)(a1 + 496) = v8 | 1;
    v9 = *(_QWORD *)v8;
    if( *(_QWORD *)(*(_QWORD *)v8 + 8i64) == v8 )
    {
      v10 = *(_QWORD **)(v8 + 8);
      if( *v10 == v8 )
      {
        *v10 = v9;
        *(_QWORD *)(v9 + 8) = v10;
        *(_QWORD *)(v8 + 8) = 0i64;
        *(_QWORD *)v8 = 0i64;
        v11 = *(unsigned __int64 **)(v7 + 232);
        if( *v11 == v7 + 224 )
        {
          *(_QWORD *)v8 = v7 + 224;
          *(_QWORD *)(v8 + 8) = v11;
          *v11 = v8;
          *(_QWORD *)(v7 + 232) = v8;
          if( *(_BYTE *)(v7 + 352)
            || (v12 = (_QWORD *)(v7 + 208), v13 = *(__int64 **)(v7 + 208), v13 == (__int64 *)(v7 + 208)) )
          {
LABEL_15:
            KeReleaseInStackQueuedSpinLockFromDpcLevel(&LockHandle);
            if( v5 )
            {
              *v5 = 0i64;
              ExQueueWorkItemToPartition(v5);
            }
            return;
          }
          v5 = *(_QWORD **)(v7 + 208);
          if( (_QWORD *)v13[1] == v12 )
          {
            v14 = *v13;
            if( *(_QWORD **)(v14 + 8) == v5 )
            {
              *v12 = v14;
              *(_QWORD *)(v14 + 8) = v12;
              ++*(_DWORD *)(v7 + 204);
              if( _InterlockedIncrement64((volatile signed __int64 *)(v7 + 968)) <= 1 )
                __fastfail(0xEu);
              goto LABEL_15;
            }
          }
        }
      }
    }
    __fastfail(3u);
  }
}

Referenced by:

CcLazyWriteScan