#include <metal_stdlib>

using namespace metal;
struct main_out {
  float4 outColor_1;
  float gl_FragDepth_1;
};
struct tint_symbol_1 {
  float4 outColor_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(0.0f, 0.0f, 0.0f, 0.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 = {.outColor_1=tint_symbol_6, .gl_FragDepth_1=tint_symbol_7};
  tint_symbol_1 const tint_symbol_3 = {.outColor_1=tint_symbol_2.outColor_1, .gl_FragDepth_1=tint_symbol_2.gl_FragDepth_1};
  return tint_symbol_3;
}

