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 tint_array_wrapper {
  int arr[2];
};
struct T {
  tint_array_wrapper a;
};
struct tint_array_wrapper_1 {
  T arr[2];
};

[numthreads(1, 1, 1)]
void main() {
  const int x = 42;
  const S1 empty = (S1)0;
  const S1 nonempty = {1, 2, 3, 4};
  const S1 nonempty_with_expr = {1, x, (x + 1), nonempty.d};
  const S3 nested_empty = (S3)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 = (S1)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 = (S2)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 tint_array_wrapper_1 aosoa_empty = {(T[2])0};
  const tint_array_wrapper tint_symbol_13 = {{1, 2}};
  const T tint_symbol_14 = {tint_symbol_13};
  const tint_array_wrapper tint_symbol_15 = {{3, 4}};
  const T tint_symbol_16 = {tint_symbol_15};
  const tint_array_wrapper_1 aosoa_nonempty = {{tint_symbol_14, tint_symbol_16}};
  const tint_array_wrapper tint_symbol_17 = {{1, (aosoa_nonempty.arr[0].a.arr[0] + 1)}};
  const T tint_symbol_18 = {tint_symbol_17};
  const tint_array_wrapper_1 aosoa_nonempty_with_expr = {{tint_symbol_18, aosoa_nonempty.arr[1]}};
  return;
}
