TtmpCommitTerminalDisplayStateUpdateWorker
VOID __fastcall TtmpCommitTerminalDisplayStateUpdateWorker(INT64 a1, INT64 a2){
__int64 v2;
_QWORD **v4;
char v5;
_QWORD *v6;
__int64 v7;
__int64 v8;
_QWORD *v9;
INT64 result[2];
int v11;
__int64 v12;
int v13;
__int64 v14;
int v15;
v2 = (int)a2;
memset((INT64)result, 0i64);
v4 = (_QWORD **)(a1 + 16 * (v2 + 8));
v13 = -1;
v5 = 0;
v12 = 0xFFFFFFFFi64;
v6 = *v4;
if( *v4 != v4 )
{
do
{
if( (unsigned __int8)TtmpFindDeviceByDeviceId(a1) )
{
v7 = v14;
if( !v14 && MEMORY[0x38] )
{
v5 = 1;
v11 = MEMORY[0x10];
v15 = MEMORY[0x48];
v7 = MEMORY[0x38];
v14 = MEMORY[0x38];
}
if( v5 && MEMORY[0x38] && MEMORY[0x38] != v7 )
{
TtmpPushTerminalDisplayStateOntoDevice(a1, (INT64)result, (unsigned int)v2);
v11 = MEMORY[0x10];
v15 = MEMORY[0x48];
v14 = MEMORY[0x38];
}
TtmpPushTerminalDisplayStateOntoDevice(a1, 0i64, (unsigned int)v2);
}
else
{
TtmiLogError((PSTR)"TtmpCommitTerminalDisplayStateUpdateWorker", 2982i64, 3221226021i64, 0xFFFFFFFFi64);
}
v8 = *v6;
v9 = (_QWORD *)v6[1];
if( *(_QWORD **)(*v6 + 8i64) != v6 || (_QWORD *)*v9 != v6 )
__fastfail(3u);
*v9 = v8;
*(_QWORD *)(v8 + 8) = v9;
ExFreePoolWithTag(v6, 0x446D7454u);
v6 = (_QWORD *)*v9;
}
while( (_QWORD **)*v9 != v4 );
if( v5 )
TtmpPushTerminalDisplayStateOntoDevice(a1, (INT64)result, (unsigned int)v2);
}
}Referenced by:
TtmiSessionDeviceListWorker