TtmpUpdateTerminalState

VOID __stdcall TtmpUpdateTerminalState(
        _TTMI_SESSION *LockedSession,
        _TTMI_TERMINAL *Terminal,
        UINT8 *ActiveChanged,
        UINT8 *DisplayStateChanged){
  _TTMI_TERMINAL v7; 
  _TTMI_TERMINAL v8; 
  _TTMI_TERMINAL v9; 
  unsigned int v10; 
  _BOOL8 v11; 
  UINT8 v12; 
  _TTMI_TERMINAL v13; 
  _TTMI_TERMINAL v14; 
  _TTMI_TERMINAL v15; 
  UINT8 v16; 
  __int128 v17; 
  UINT64 NextEvaluationSpanIntTime[2]; 
  int v19[2]; 
  __int64 v20; 
  __int64 v21; 
  __int64 v22; 
  __int64 v23; 
  char v24; 
  bool v25; 
  __int16 v26; 
  _TTMI_TERMINAL v27; 
  _TTMI_TERMINAL v28; 
  int v29; 

  v19[0] = Terminal[10];
  v20 = *((_QWORD *)Terminal + 10);
  v19[1] = 0;
  v26 = 0;
  v29 = 0;
  v17 = 0i64;
  v21 = *(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart;
  v22 = *((_QWORD *)Terminal + 8);
  v23 = *((_QWORD *)Terminal + 9);
  v7 = Terminal[9];
  *(_OWORD *)NextEvaluationSpanIntTime = 0i64;
  if( Terminal[8] || (v24 = 0, (v7 & 8) != 0) )
    v24 = 1;
  v25 = (v7 & 0x60) != 0;
  Terminal[9] = v7 & 0xFFFFFF9F;
  v27 = Terminal[13];
  v8 = Terminal[14];
  *(_QWORD *)(Terminal + 13) = 0i64;
  v28 = v8;
  TtmpTsmIterate((__int64)v19, (__int64)&v17);
  TtmiLogTerminalStateMachine(Terminal[7], (__int64)v19, (int *)&v17);
  v9 = v17;
  *((_QWORD *)Terminal + 10) = NextEvaluationSpanIntTime[0];
  Terminal[10] = v9;
  if( !BYTE4(v17) || (v10 = Terminal[9], Terminal[11] = DWORD2(v17), v11 = v9 != 1, ((v10 >> 4) & 1) == v11) )
  {
    v12 = 0;
  }
  else
  {
    v12 = 1;
    Terminal[9] = v10 & 0xFFFFFFEF | (16 * v11);
  }
  *ActiveChanged = v12;
  v13 = Terminal[11];
  if( (Terminal[9] & 8) != 0 )
    v14 = 0;
  else
    v14 = Terminal[10];
  v15 = Terminal[69];
  if( v15 == v14 )
  {
    v16 = 0;
  }
  else
  {
    if( !v15 || !v14 )
      v13 = 22;
    Terminal[70] = v13;
    v15 = v14;
    Terminal[69] = v14;
    v16 = 1;
  }
  *DisplayStateChanged = v16;
  if( v15 )
  {
    if( v15 == 1 )
      Terminal[12] = 2;
    else
      Terminal[12] = 0;
  }
  else
  {
    Terminal[12] = 1;
  }
  TtmpResetEvaluationTimer(Terminal, NextEvaluationSpanIntTime[1]);
}

Referenced by:

TtmiSessionTerminalListWorker