#version 310 es

void tint_symbol() {
  int x = 42;
  int empty[4] = int[4](0, 0, 0, 0);
  int nonempty[4] = int[4](1, 2, 3, 4);
  int nonempty_with_expr[4] = int[4](1, x, (x + 1), 4);
  int nested_empty[2][3][4] = int[2][3][4](int[3][4](int[4](0, 0, 0, 0), int[4](0, 0, 0, 0), int[4](0, 0, 0, 0)), int[3][4](int[4](0, 0, 0, 0), int[4](0, 0, 0, 0), int[4](0, 0, 0, 0)));
  int tint_symbol_1[4] = int[4](1, 2, 3, 4);
  int tint_symbol_2[4] = int[4](5, 6, 7, 8);
  int tint_symbol_3[4] = int[4](9, 10, 11, 12);
  int tint_symbol_4[3][4] = int[3][4](tint_symbol_1, tint_symbol_2, tint_symbol_3);
  int tint_symbol_5[4] = int[4](13, 14, 15, 16);
  int tint_symbol_6[4] = int[4](17, 18, 19, 20);
  int tint_symbol_7[4] = int[4](21, 22, 23, 24);
  int tint_symbol_8[3][4] = int[3][4](tint_symbol_5, tint_symbol_6, tint_symbol_7);
  int nested_nonempty[2][3][4] = int[2][3][4](tint_symbol_4, tint_symbol_8);
  int tint_symbol_9[4] = int[4](1, 2, x, (x + 1));
  int tint_symbol_10[4] = int[4](5, 6, 3, (4 + 1));
  int tint_symbol_11[3][4] = int[3][4](tint_symbol_9, tint_symbol_10, nonempty);
  int nested_nonempty_with_expr[2][3][4] = int[2][3][4](tint_symbol_11, nested_nonempty[1]);
  int tint_symbol_12[4] = int[4](0, 0, 0, 0);
  int subexpr_empty = 0;
  int tint_symbol_13[4] = int[4](1, 2, 3, 4);
  int subexpr_nonempty = 3;
  int tint_symbol_14[4] = int[4](1, x, (x + 1), 4);
  int subexpr_nonempty_with_expr = tint_symbol_14[2];
  int tint_symbol_15[2][4] = int[2][4](int[4](0, 0, 0, 0), int[4](0, 0, 0, 0));
  int subexpr_nested_empty[4] = tint_symbol_15[1];
  int tint_symbol_16[4] = int[4](1, 2, 3, 4);
  int tint_symbol_17[4] = int[4](5, 6, 7, 8);
  int tint_symbol_18[2][4] = int[2][4](tint_symbol_16, tint_symbol_17);
  int subexpr_nested_nonempty[4] = tint_symbol_18[1];
  int tint_symbol_19[4] = int[4](1, x, (x + 1), 4);
  int tint_symbol_20[2][4] = int[2][4](tint_symbol_19, nested_nonempty[1][2]);
  int subexpr_nested_nonempty_with_expr[4] = tint_symbol_20[1];
}

layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
void main() {
  tint_symbol();
  return;
}
