#version 310 es

struct S1 {
  int a;
  int b;
  int c;
  int d;
};

struct S2 {
  int e;
  S1 f;
};

struct S3 {
  int g;
  S1 h;
  S2 i;
};

struct T {
  int a[2];
};

void tint_symbol() {
  int x = 42;
  S1 empty = S1(0, 0, 0, 0);
  S1 nonempty = S1(1, 2, 3, 4);
  S1 nonempty_with_expr = S1(1, 42, (42 + 1), nonempty.d);
  S3 nested_empty = S3(0, S1(0, 0, 0, 0), S2(0, S1(0, 0, 0, 0)));
  S1 tint_symbol_1 = S1(2, 3, 4, 5);
  S1 tint_symbol_2 = S1(7, 8, 9, 10);
  S2 tint_symbol_3 = S2(6, tint_symbol_2);
  S3 nested_nonempty = S3(1, tint_symbol_1, tint_symbol_3);
  S1 tint_symbol_4 = S1(2, 42, (42 + 1), nested_nonempty.i.f.d);
  S2 tint_symbol_5 = S2(6, nonempty);
  S3 nested_nonempty_with_expr = S3(1, tint_symbol_4, tint_symbol_5);
  S1 tint_symbol_6 = S1(0, 0, 0, 0);
  int subexpr_empty = tint_symbol_6.a;
  S1 tint_symbol_7 = S1(1, 2, 3, 4);
  int subexpr_nonempty = tint_symbol_7.b;
  S1 tint_symbol_8 = S1(1, 42, (42 + 1), nonempty.d);
  int subexpr_nonempty_with_expr = tint_symbol_8.c;
  S2 tint_symbol_9 = S2(0, S1(0, 0, 0, 0));
  S1 subexpr_nested_empty = tint_symbol_9.f;
  S1 tint_symbol_10 = S1(2, 3, 4, 5);
  S2 tint_symbol_11 = S2(1, tint_symbol_10);
  S1 subexpr_nested_nonempty = tint_symbol_11.f;
  S1 tint_symbol_12 = S1(2, 42, (42 + 1), nested_nonempty.i.f.d);
  S2 tint_symbol_13 = S2(1, tint_symbol_12);
  S1 subexpr_nested_nonempty_with_expr = tint_symbol_13.f;
  T aosoa_empty[2] = T[2](T(int[2](0, 0)), T(int[2](0, 0)));
  int tint_symbol_14[2] = int[2](1, 2);
  T tint_symbol_15 = T(tint_symbol_14);
  int tint_symbol_16[2] = int[2](3, 4);
  T tint_symbol_17 = T(tint_symbol_16);
  T aosoa_nonempty[2] = T[2](tint_symbol_15, tint_symbol_17);
  int tint_symbol_18[2] = int[2](1, (aosoa_nonempty[0].a[0] + 1));
  T tint_symbol_19 = T(tint_symbol_18);
  T aosoa_nonempty_with_expr[2] = T[2](tint_symbol_19, aosoa_nonempty[1]);
}

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