TtmpQueueTerminalDisplayStateOntoDevice
VOID __fastcall TtmpQueueTerminalDisplayStateOntoDevice(INT64 a1, INT64 a2, INT64 a3){
unsigned __int64 v3;
_QWORD *v5;
_QWORD *v6;
INT64 v7;
INT64 v8;
_QWORD *PoolWithTag;
_QWORD *v10;
__int64 v11;
v3 = *(_QWORD *)(a2 + 56);
if( v3 )
{
v5 = (_QWORD *)(a1 + 16 * ((int)a3 + 8i64));
v6 = (_QWORD *)*v5;
if( (_QWORD *)*v5 != v5 )
{
while( 1 )
{
if( v6[3] == *(_QWORD *)(a2 + 24) && *((_DWORD *)v6 + 8) == *(_DWORD *)(a2 + 32) )
{
v7 = 2862i64;
v8 = 3221226026i64;
goto LABEL_9;
}
if( v6[2] >= v3 )
break;
v6 = (_QWORD *)*v6;
if( v6 == v5 )
goto LABEL_11;
}
v6 = (_QWORD *)v6[1];
}
LABEL_11:
PoolWithTag = ExAllocatePoolWithTag(PagedPool, 0x28ui64, 0x446D7454ui64);
v10 = PoolWithTag;
if( PoolWithTag )
{
*PoolWithTag = 0i64;
PoolWithTag[1] = 0i64;
PoolWithTag[3] = 0i64;
PoolWithTag[4] = 0i64;
PoolWithTag[2] = v3;
PoolWithTag[3] = *(_QWORD *)(a2 + 24);
*((_DWORD *)PoolWithTag + 8) = *(_DWORD *)(a2 + 32);
v11 = *v6;
if( *(_QWORD **)(*v6 + 8i64) != v6 )
__fastfail(3u);
*v10 = v11;
v10[1] = v6;
*(_QWORD *)(v11 + 8) = v10;
*v6 = v10;
}
else
{
v7 = 2897i64;
v8 = 3221225626i64;
LABEL_9:
TtmiLogError((PSTR)"TtmpQueueTerminalDisplayStateOntoDevice", v7, v8, 0xFFFFFFFFi64);
}
}
}Referenced by:
TtmpPushTerminalState