EtwpSynchronizeWithLogger

__int64 __fastcall EtwpSynchronizeWithLogger(__int64 a1, UINT64 a2, UINT8 a3, UINT8 a4){
  void *v4; 
  unsigned int v6; 
  unsigned int v7; 
  UINT64 v8; 
  UINT8 v9; 
  UINT8 v10; 
  IRP *v12; 
  IRP *v13; 
  v4 = (void *)(a1 + 472);
  v6 = a2;
  KeResetEvent((VOID *)(a1 + 472), a2, a3, a4, v12);
  _InterlockedOr((volatile signed __int32 *)(a1 + 836), v6);
  if( ObGetCurrentIrql() > 2u )
  {
    if( !_interlockedbittestandset((volatile signed __int32 *)(a1 + 836), 8u) )
      KeInsertQueueDpc((PRKDPC)(a1 + 584), 0i64, 0i64);
  }
  else
  {
    KeSetEvent((PRKEVENT)(a1 + 496), 0);
  }
  KeWaitForSingleObject(v4, Executive, 0, 0, 0i64);
  v7 = *(_DWORD *)(a1 + 56);
  KeResetEvent(v4, v8, v9, v10, v13);
  *(_DWORD *)(a1 + 56) = 0;
  return v7;
}

Referenced by:

EtwpFlushTrace
EtwpRealtimeConnect
EtwpRealtimeDisconnectConsumer
EtwpUpdateTrace