CcPerfLogWorkItemEnqueue

VOID __stdcall CcPerfLogWorkItemEnqueue(
        _LIST_ENTRY *WorkQueue,
        _WORK_QUEUE_ENTRY *WorkEntry,
        UINT8 Requeue,
        UINT8 MasterLockHeld){
  _LIST_ENTRY *v4; 
  char v7; 
  char v8; 
  __int64 v9; 
  INT64 v10; 
  unsigned __int8 CurrentIrql; 
  char v12; 
  _LIST_ENTRY *Flink; 
  CHAR *v14; 
  UINT64 Flag; 
  __int128 v16; 
  __int64 v17; 
  EVENT_DATA_DESCRIPTOR EventData; 
  v4 = (_LIST_ENTRY *)*((_QWORD *)WorkEntry + 16);
  v17 = 0i64;
  v16 = 0i64;
  if( WorkQueue == &v4[14] )
  {
    v7 = 1;
  }
  else if( WorkQueue == &v4[18] )
  {
    v7 = 7;
  }
  else if( WorkQueue == &v4[15] )
  {
    v7 = 2;
  }
  else if( WorkQueue == &v4[16] )
  {
    v7 = 3;
  }
  else if( WorkQueue == &v4[17] )
  {
    v7 = 4;
  }
  else
  {
    Flink = v4[54].Flink;
    if( WorkQueue == Flink || WorkQueue == &Flink[1] || WorkQueue == &Flink[2] )
      v7 = 5;
    else
      v7 = WorkQueue == 0i64 ? 6 : 0;
  }
  v8 = *((_BYTE *)WorkEntry + 120);
  switch( v8 )
  {
    case 2:
      v10 = *((_QWORD *)WorkEntry + 2);
      BYTE1(v17) = 2;
      if( MasterLockHeld )
      {
        *((_QWORD *)&v16 + 1) = *(_QWORD *)((*(_QWORD *)(v10 + 96) & 0xFFFFFFFFFFFFFFF0ui64) + 0x18);
      }
      else
      {
        v14 = CcReferenceSharedCacheMapFileObject(v10);
        *((_QWORD *)&v16 + 1) = *((_QWORD *)v14 + 3);
        CcDereferenceSharedCacheMapFileObject(v10, (UINT64)v14);
      }
      break;
    case 1:
      v9 = *((_QWORD *)WorkEntry + 2);
      BYTE1(v17) = 1;
      *((_QWORD *)&v16 + 1) = *(_QWORD *)(v9 + 24);
      break;
    case 3:
      BYTE1(v17) = 3;
      break;
    default:
      v12 = BYTE1(v17);
      if( v8 == 4 )
        v12 = 4;
      BYTE1(v17) = v12;
      break;
  }
  LOBYTE(v17) = v7;
  *(_QWORD *)&v16 = WorkEntry;
  BYTE2(v17) = Requeue;
  CurrentIrql = KeGetCurrentIrql();
  EventData.Reserved = 0;
  EventData.Size = 24;
  EventData.Ptr = (unsigned __int64)&v16;
  if( CurrentIrql >= 2u )
    LODWORD(Flag) = 4194562;
  else
    LODWORD(Flag) = 4200706;
  EtwTraceKernelEvent(&EventData, 1ui64, 0x80020000ui64, 0x1600u, Flag);
}

Referenced by:

CcPostWorkQueueAsyncRead
CcPostWorkQueueCachemapUninit
CcPostWorkQueueRegular
CcWaitForCurrentLazyWriterActivityInternal
CcWorkerThread