#include <metal_stdlib>

using namespace metal;
struct main_out {
  float4 color_out_1;
  float gl_FragDepth_1;
};
struct tint_symbol_1 {
  float4 color_out_1 [[color(0)]];
  float gl_FragDepth_1 [[depth(any)]];
};

void main_1(thread float4* const tint_symbol_4, thread float* const tint_symbol_5) {
  *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
  *(tint_symbol_5) = 0.400000006f;
  return;
}

fragment tint_symbol_1 tint_symbol() {
  thread float4 tint_symbol_6 = 0.0f;
  thread float tint_symbol_7 = 0.0f;
  main_1(&(tint_symbol_6), &(tint_symbol_7));
  main_out const tint_symbol_2 = {.color_out_1=tint_symbol_6, .gl_FragDepth_1=tint_symbol_7};
  tint_symbol_1 const tint_symbol_3 = {.color_out_1=tint_symbol_2.color_out_1, .gl_FragDepth_1=tint_symbol_2.gl_FragDepth_1};
  return tint_symbol_3;
}

