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];
};

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

