CcSerializeWithLazyWriter

CHAR __stdcall CcSerializeWithLazyWriter(INT64 a1, INT64 a2, UINT8 *a3){
  CHAR v4; 
  __int64 v5; 
  _WORK_QUEUE_ENTRY *v7; 
  __int64 v8; 
  _WORK_QUEUE_ENTRY **v9; 
  _KLOCK_QUEUE_HANDLE LockHandle; 

  memset(&LockHandle, 0, sizeof(LockHandle));
  v4 = 1;
  if( (*(_DWORD *)(a2 + 152) & 0x20) != 0 )
  {
    KeAcquireInStackQueuedSpinLockAtDpcLevel((PKSPIN_LOCK)(a1 + 192), &LockHandle);
    v5 = *(_QWORD *)(a2 + 496);
    if( v5 )
    {
      v7 = (_WORK_QUEUE_ENTRY *)(v5 & 0xFFFFFFFFFFFFFFFEui64);
      v8 = *(_QWORD *)v7;
      if( *(_WORK_QUEUE_ENTRY **)(*(_QWORD *)v7 + 8i64) != v7
        || (v9 = (_WORK_QUEUE_ENTRY **)*((_QWORD *)v7 + 1), *v9 != v7) )
      {
        __fastfail(3u);
      }
      *v9 = (_WORK_QUEUE_ENTRY *)v8;
      *(_QWORD *)(v8 + 8) = v9;
      *((_QWORD *)v7 + 1) = 0i64;
      *(_QWORD *)v7 = 0i64;
      *(_QWORD *)(a2 + 496) = 0i64;
      *(_DWORD *)(a2 + 152) &= ~0x20u;
      KeReleaseInStackQueuedSpinLockFromDpcLevel(&LockHandle);
      CcFreeWorkQueueEntry(v7);
    }
    else
    {
      KeReleaseInStackQueuedSpinLockFromDpcLevel(&LockHandle);
      return 0;
    }
  }
  return v4;
}

Referenced by:

CcFlushCachePriv