TtmNotifyDeviceInput

VOID __fastcall TtmNotifyDeviceInput(INT64 rcx0, INT64 a2, INT64 a3){
  unsigned int v3; 
  CHAR DeviceByToken; 
  CHAR a5; 
  CHAR a6; 
  unsigned int v7; 
  int v9; 
  INT64 v10; 
  INT64 v11; 
  INT64 v12; 
  __int64 v13; 
  INT64 v14; 
  int TerminalById; 
  __int64 v16; 
  __int64 a4; 
  INT64 v18; 
  INT64 a1; 
  v3 = rcx0;
  a4 = 0i64;
  a1 = 0i64;
  DeviceByToken = 0;
  v18 = 0i64;
  a5 = 0;
  a6 = 0;
  v7 = a3;
  v9 = TtmiAcquireCurrentSession(&a1);
  if( v9 < 0 )
  {
    TtmiLogError((PSTR)"TtmNotifyDeviceInput", 761i64, (unsigned int)v9, 0xFFFFFFFFi64);
LABEL_3:
    v10 = a1;
    goto LABEL_4;
  }
  v10 = a1;
  if( (*(_DWORD *)(a1 + 4) & 4) != 0 )
  {
    v11 = 769i64;
    v12 = 3221226581i64;
LABEL_9:
    TtmiLogError((PSTR)"TtmNotifyDeviceInput", v11, v12, 0xFFFFFFFFi64);
    goto LABEL_4;
  }
  DeviceByToken = TtmpFindDeviceByToken(a1, v3, a2, &a4);
  if( !DeviceByToken )
  {
    v11 = 786i64;
    v12 = 3221226021i64;
    goto LABEL_9;
  }
  v13 = a4;
  *(_QWORD *)(a4 + 608) = *(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart;
  v14 = *(unsigned int *)(v13 + 596);
  if( (_DWORD)v14 == -1 )
    goto LABEL_3;
  v10 = a1;
  TerminalById = TtmiGetTerminalById(&v18, a1, v14);
  if( TerminalById < 0 )
  {
    v12 = (unsigned int)TerminalById;
    v11 = 805i64;
    goto LABEL_9;
  }
  if( (v7 & 1) != 0 && *(char *)(v16 + 600) < 0 )
    a6 = 1;
  a5 = TtmiResetTerminalTimeouts(v10, v18, MonitorRequestReasonUserInput, 0x54544941ui64, a6);
LABEL_4:
  TtmiLogDeviceInputNotified(v3, a2, v7, DeviceByToken, a5, a6);
  if( v10 )
  {
    ExReleaseResourceLite(&TtmpSessionLock);
    KeLeaveCriticalRegion();
  }
}

Referenced by:

No references.