#include <metal_stdlib>

using namespace metal;
struct tint_array_wrapper {
  float arr[3];
};
struct main_out {
  float x_1_1;
  float x_1_2;
  float x_1_3;
  float4 x_2_1;
};
struct tint_symbol_1 {
  float x_1_1 [[user(locn4)]];
  float x_1_2 [[user(locn5)]];
  float x_1_3 [[user(locn6)]];
  float4 x_2_1 [[position]];
};

void main_1() {
  return;
}

vertex tint_symbol_1 tint_symbol() {
  thread tint_array_wrapper tint_symbol_4 = {};
  thread float4 tint_symbol_5 = 0.0f;
  main_1();
  main_out const tint_symbol_2 = {.x_1_1=tint_symbol_4.arr[0], .x_1_2=tint_symbol_4.arr[1], .x_1_3=tint_symbol_4.arr[2], .x_2_1=tint_symbol_5};
  tint_symbol_1 const tint_symbol_3 = {.x_1_1=tint_symbol_2.x_1_1, .x_1_2=tint_symbol_2.x_1_2, .x_1_3=tint_symbol_2.x_1_3, .x_2_1=tint_symbol_2.x_2_1};
  return tint_symbol_3;
}

