#include <metal_stdlib>

using namespace metal;
void main_1(thread float4* const tint_symbol_3) {
  *(tint_symbol_3) = float4(NAN, NAN, NAN, NAN);
  return;
}

struct main_out {
  float4 out_var_SV_TARGET_1;
};

struct tint_symbol_1 {
  float4 out_var_SV_TARGET_1 [[color(0)]];
};

main_out tint_symbol_inner(thread float4* const tint_symbol_4) {
  main_1(tint_symbol_4);
  main_out const tint_symbol_2 = {.out_var_SV_TARGET_1=*(tint_symbol_4)};
  return tint_symbol_2;
}

fragment tint_symbol_1 tint_symbol() {
  thread float4 tint_symbol_5 = 0.0f;
  main_out const inner_result = tint_symbol_inner(&(tint_symbol_5));
  tint_symbol_1 wrapper_result = {};
  wrapper_result.out_var_SV_TARGET_1 = inner_result.out_var_SV_TARGET_1;
  return wrapper_result;
}

