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; 
  _FILE_OBJECT *v14; 
  __int128 v15; 
  __int64 v16; 
  __int128 *v17; 
  int v18; 
  int v19; 

  v4 = (_LIST_ENTRY *)*((_QWORD *)WorkEntry + 16);
  v16 = 0i64;
  v15 = 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(v16) = 2;
      if( MasterLockHeld )
      {
        *((_QWORD *)&v15 + 1) = *(_QWORD *)((*(_QWORD *)(v10 + 96) & 0xFFFFFFFFFFFFFFF0ui64) + 0x18);
      }
      else
      {
        v14 = CcReferenceSharedCacheMapFileObject((_SHARED_CACHE_MAP *)v10);
        *((_QWORD *)&v15 + 1) = v14->FsContext;
        CcDereferenceSharedCacheMapFileObject((_SHARED_CACHE_MAP *)v10, v14);
      }
      break;
    case 1:
      v9 = *((_QWORD *)WorkEntry + 2);
      BYTE1(v16) = 1;
      *((_QWORD *)&v15 + 1) = *(_QWORD *)(v9 + 24);
      break;
    case 3:
      BYTE1(v16) = 3;
      break;
    default:
      v12 = BYTE1(v16);
      if( v8 == 4 )
        v12 = 4;
      BYTE1(v16) = v12;
      break;
  }
  LOBYTE(v16) = v7;
  *(_QWORD *)&v15 = WorkEntry;
  BYTE2(v16) = Requeue;
  CurrentIrql = KeGetCurrentIrql();
  v19 = 0;
  v18 = 24;
  v17 = &v15;
  if( CurrentIrql >= 2u )
    EtwTraceKernelEvent((__int64)&v17, 1u, 0x80020000, 0x1600u, 0x400102u);
  else
    EtwTraceKernelEvent((__int64)&v17, 1u, 0x80020000, 0x1600u, 0x401902u);
}

Referenced by:

CcPostWorkQueueAsyncRead
CcPostWorkQueueCachemapUninit
CcPostWorkQueueRegular
CcWaitForCurrentLazyWriterActivityInternal
CcWorkerThread