EtwpTraceProcessorTrace

VOID *__stdcall EtwpTraceProcessorTrace(VOID **a1, UINT64 a2){
  _ETHREAD *v2; 
  int v3; 
  _ETHREAD *CurrentThread; 
  VOID *result; 
  _QWORD *v6; 
  _QWORD v7[2]; 
  int UniqueProcess; 
  int UniqueThread; 
  __int64 v10; 
  __int128 v11; 
  int v12; 
  int v13; 

  v13 = 0;
  v11 = 0i64;
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  result = KeGetCurrentPrcb();
  if( *((_ETHREAD **)result + 3) != CurrentThread && (v3 & 0x1800) != 0 )
  {
    v7[0] = a1;
    v6 = a1[127];
    v12 = v3;
    if( !v2 )
      v2 = CurrentThread;
    UniqueProcess = (int)v2->Cid.UniqueProcess;
    UniqueThread = (int)v2->Cid.UniqueThread;
    v7[1] = *(_QWORD *)a2;
    v10 = v6[1];
    return(VOID *)(*(__int64(__fastcall **)(_QWORD, _QWORD *))(v6[2] + 16i64))(*v6, v7);
  }
  return result;
}

Referenced by:

EtwpLogContextSwapEvent
EtwpLogKernelEvent
EtwpLogSystemEventUnsafe