TtmpCommitTerminalDisplayStateUpdateWorker

VOID __stdcall TtmpCommitTerminalDisplayStateUpdateWorker(_TTMI_SESSION *LockedSession, INT64 a2){
  __int64 v2; 
  _TTMI_SESSION *v4; 
  char v5; 
  _QWORD *v6; 
  __int64 v7; 
  __int64 v8; 
  _QWORD *v9; 
  _TTMI_DEVICE_ENTRY Device[156]; 

  v2 = (int)a2;
  memset(Device, 0i64, 0x268u);
  v4 = &LockedSession[4 * v2 + 32];
  Device[8] = -1;
  v5 = 0;
  *(_QWORD *)&Device[6] = 0xFFFFFFFFi64;
  v6 = *(_QWORD **)v4;
  if( *(_TTMI_SESSION **)v4 != v4 )
  {
    do
    {
      if( (unsigned __int8)TtmpFindDeviceByDeviceId((INT64)LockedSession) )
      {
        v7 = *(_QWORD *)&Device[14];
        if( !*(_QWORD *)&Device[14] && MEMORY[0x38] )
        {
          v5 = 1;
          Device[4] = MEMORY[0x10];
          Device[18] = MEMORY[0x48];
          v7 = MEMORY[0x38];
          *(_QWORD *)&Device[14] = MEMORY[0x38];
        }
        if( v5 && MEMORY[0x38] && MEMORY[0x38] != v7 )
        {
          TtmpPushTerminalDisplayStateOntoDevice(LockedSession, Device, (_TERMINAL_DISPLAY_STATE)v2);
          Device[4] = MEMORY[0x10];
          Device[18] = MEMORY[0x48];
          *(_QWORD *)&Device[14] = MEMORY[0x38];
        }
        TtmpPushTerminalDisplayStateOntoDevice(LockedSession, 0i64, (_TERMINAL_DISPLAY_STATE)v2);
      }
      else
      {
        TtmiLogError((INT8 *)"TtmpCommitTerminalDisplayStateUpdateWorker", 0xBA6ui64, 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( (_TTMI_SESSION *)*v9 != v4 );
    if( v5 )
      TtmpPushTerminalDisplayStateOntoDevice(LockedSession, Device, (_TERMINAL_DISPLAY_STATE)v2);
  }
}

Referenced by:

TtmiSessionDeviceListWorker