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