#include <metal_stdlib>

using namespace metal;
struct main_out {
  uint x_1_1;
  uint2 x_2_1;
  int x_3_1;
  int2 x_4_1;
  float x_5_1;
  float2 x_6_1;
  float4 x_8_1;
};
struct tint_symbol_1 {
  uint x_1_1 [[user(locn1)]];
  uint2 x_2_1 [[user(locn2)]];
  int x_3_1 [[user(locn3)]];
  int2 x_4_1 [[user(locn4)]];
  float x_5_1 [[user(locn5)]] [[flat]];
  float2 x_6_1 [[user(locn6)]] [[flat]];
  float4 x_8_1 [[position]];
};

void main_1() {
  return;
}

main_out tint_symbol_inner(thread uint* const tint_symbol_3, thread uint2* const tint_symbol_4, thread int* const tint_symbol_5, thread int2* const tint_symbol_6, thread float* const tint_symbol_7, thread float2* const tint_symbol_8, thread float4* const tint_symbol_9) {
  main_1();
  main_out const tint_symbol_2 = {.x_1_1=*(tint_symbol_3), .x_2_1=*(tint_symbol_4), .x_3_1=*(tint_symbol_5), .x_4_1=*(tint_symbol_6), .x_5_1=*(tint_symbol_7), .x_6_1=*(tint_symbol_8), .x_8_1=*(tint_symbol_9)};
  return tint_symbol_2;
}

vertex tint_symbol_1 tint_symbol() {
  thread uint tint_symbol_10 = 0u;
  thread uint2 tint_symbol_11 = 0u;
  thread int tint_symbol_12 = 0;
  thread int2 tint_symbol_13 = 0;
  thread float tint_symbol_14 = 0.0f;
  thread float2 tint_symbol_15 = 0.0f;
  thread float4 tint_symbol_16 = 0.0f;
  main_out const inner_result = tint_symbol_inner(&(tint_symbol_10), &(tint_symbol_11), &(tint_symbol_12), &(tint_symbol_13), &(tint_symbol_14), &(tint_symbol_15), &(tint_symbol_16));
  tint_symbol_1 wrapper_result = {};
  wrapper_result.x_1_1 = inner_result.x_1_1;
  wrapper_result.x_2_1 = inner_result.x_2_1;
  wrapper_result.x_3_1 = inner_result.x_3_1;
  wrapper_result.x_4_1 = inner_result.x_4_1;
  wrapper_result.x_5_1 = inner_result.x_5_1;
  wrapper_result.x_6_1 = inner_result.x_6_1;
  wrapper_result.x_8_1 = inner_result.x_8_1;
  return wrapper_result;
}

