TtmpDispatchGetTerminalEvent

INT64 __fastcall TtmpDispatchGetTerminalEvent(INT64 a1, INT64 a2, const UNICODE_STRING **a3){
  void *v4; 
  KPROCESSOR_MODE v5; 
  NTSTATUS v6; 
  unsigned int v7; 
  INT64 v8; 
  INT64 v9; 
  INT64 v10; 
  int EventFromQueue; 
  PADAPTER_OBJECT DmaAdapter; 
  v4 = *(void **)(a1 + 8);
  v5 = *((_BYTE *)KeGetCurrentThread() + 562);
  DmaAdapter = 0i64;
  v6 = ObReferenceObjectByHandle(v4, 0xF0000u, TtmpQueueObjectType, v5, (PVOID *)&DmaAdapter, 0i64);
  v7 = v6;
  if( v6 < 0 )
    TtmiLogError((PSTR)"TtmiReferenceQueueByHandle", 310i64, (unsigned int)v6, (unsigned int)v6);
  if( (v7 & 0x80000000) != 0 )
  {
    v8 = v7;
    v9 = v7;
    v10 = 410i64;
LABEL_5:
    TtmiLogError((PSTR)"TtmpDispatchGetTerminalEvent", v10, v9, v8);
    goto LABEL_9;
  }
  EventFromQueue = TtmiRetrieveEventFromQueue((__int64)DmaAdapter, (_OWORD *)a2);
  v7 = EventFromQueue;
  if( EventFromQueue < 0 )
  {
    v8 = (unsigned int)EventFromQueue;
    v9 = (unsigned int)EventFromQueue;
    v10 = 418i64;
    goto LABEL_5;
  }
  v7 = 0;
LABEL_9:
  if( DmaAdapter )
    HalPutDmaAdapter(DmaAdapter);
  return v7;
}

Referenced by:

TtmDispatchApi