#include <metal_stdlib>

using namespace metal;
struct main_out {
  float4 final_color_1;
};
struct tint_symbol_2 {
  float4 frag_color_param [[user(locn0)]];
};
struct tint_symbol_3 {
  float4 final_color_1 [[color(0)]];
};

void main_1(thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
  float4 const x_12 = *(tint_symbol_6);
  *(tint_symbol_7) = x_12;
  return;
}

fragment tint_symbol_3 tint_symbol(tint_symbol_2 tint_symbol_1 [[stage_in]]) {
  thread float4 tint_symbol_8 = 0.0f;
  thread float4 tint_symbol_9 = 0.0f;
  float4 const frag_color_param = tint_symbol_1.frag_color_param;
  tint_symbol_8 = frag_color_param;
  main_1(&(tint_symbol_8), &(tint_symbol_9));
  main_out const tint_symbol_4 = {.final_color_1=tint_symbol_9};
  tint_symbol_3 const tint_symbol_5 = {.final_color_1=tint_symbol_4.final_color_1};
  return tint_symbol_5;
}

