#include <metal_stdlib>

using namespace metal;
struct main_out {
  float4 color_out_1;
};
struct tint_symbol_2 {
  float4 color_in_param [[user(locn0)]];
};
struct tint_symbol_3 {
  float4 color_out_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 color_in_param = tint_symbol_1.color_in_param;
  tint_symbol_8 = color_in_param;
  main_1(&(tint_symbol_8), &(tint_symbol_9));
  main_out const tint_symbol_4 = {.color_out_1=tint_symbol_9};
  tint_symbol_3 const tint_symbol_5 = {.color_out_1=tint_symbol_4.color_out_1};
  return tint_symbol_5;
}

