TtmiWriteEventToSingleQueue

__int64 __fastcall TtmiWriteEventToSingleQueue(__int64 a1, _OWORD *a2, INT64 a3){
  _ETHREAD *CurrentThread; 
  unsigned int v6; 
  UINT64 v7; 
  VOID **PoolWithTag; 
  VOID **v9; 
  __int64 v10; 
  _OWORD *v11; 
  __int128 v12; 
  VOID ***v13; 

  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  --CurrentThread->Tcb.KernelApcDisable;
  ExAcquireResourceExclusiveLite(a1 + 24, 1, a3);
  v6 = 0;
  if( !*(_BYTE *)(a1 + 168) )
  {
    v6 = -1073740032;
    v7 = 412i64;
LABEL_3:
    TtmiLogError((INT8 *)"TtmiWriteEventToSingleQueue", v7, 0xFFFFFFFFi64, v6);
    goto LABEL_11;
  }
  PoolWithTag = ExAllocatePoolWithTag(1ui64, 0x230ui64, 1902998612i64);
  v9 = PoolWithTag;
  if( !PoolWithTag )
  {
    v6 = -1073741670;
    v7 = 425i64;
    goto LABEL_3;
  }
  memset(PoolWithTag, 0i64, 0x230u);
  v10 = 4i64;
  v11 = v9 + 2;
  do
  {
    *v11 = *a2;
    v11[1] = a2[1];
    v11[2] = a2[2];
    v11[3] = a2[3];
    v11[4] = a2[4];
    v11[5] = a2[5];
    v11[6] = a2[6];
    v11 += 8;
    v12 = a2[7];
    a2 += 8;
    *(v11 - 1) = v12;
    --v10;
  }
  while( v10 );
  *v11 = *a2;
  v11[1] = a2[1];
  TtmiLogQueueEnqueueEvent();
  v13 = *(VOID ****)(a1 + 160);
  if( *v13 != (VOID **)(a1 + 152) )
    __fastfail(3u);
  v9[1] = v13;
  *v9 = (VOID *)(a1 + 152);
  *v13 = v9;
  *(_QWORD *)(a1 + 160) = v9;
  KeSetEvent((PRKEVENT)(a1 + 128), 0, 0);
LABEL_11:
  ExReleaseResourceLite((PERESOURCE)(a1 + 24));
  KeLeaveCriticalRegionThread(KeGetCurrentThread());
  return v6;
}

Referenced by:

TtmiWriteEnumerationEventsToQueue
TtmiWriteEventToAllQueues
TtmpPublishDeviceEvent
TtmpWriteDisplayRequiredPowerRequestUpdatedEvent