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