TtmpQueueTerminalDisplayStateOntoDevice

VOID __stdcall TtmpQueueTerminalDisplayStateOntoDevice(INT64 a1, INT64 a2, INT64 a3){
  VOID **v3; 
  VOID ****v5; 
  VOID ***v6; 
  UINT64 v7; 
  INT64 v8; 
  VOID **PoolWithTag; 
  VOID **v10; 
  VOID **v11; 

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

Referenced by:

TtmpPushTerminalState