#include <metal_stdlib>

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

void main_1(thread float4* const tint_symbol_5, thread float4* const tint_symbol_6, thread float* const tint_symbol_7) {
  *(tint_symbol_5) = float4(0.0f, 0.0f, 0.0f, 0.0f);
  float const x_20 = (*(tint_symbol_6)).z;
  *(tint_symbol_7) = x_20;
  return;
}

fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]]) {
  thread float4 tint_symbol_8 = 0.0f;
  thread float4 tint_symbol_9 = 0.0f;
  thread float tint_symbol_10 = 0.0f;
  tint_symbol_8 = gl_FragCoord_param;
  main_1(&(tint_symbol_9), &(tint_symbol_8), &(tint_symbol_10));
  main_out const tint_symbol_3 = {.outColor_1=tint_symbol_9, .gl_FragDepth_1=tint_symbol_10};
  tint_symbol_2 const tint_symbol_4 = {.outColor_1=tint_symbol_3.outColor_1, .gl_FragDepth_1=tint_symbol_3.gl_FragDepth_1};
  return tint_symbol_4;
}

