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