#include <metal_stdlib>
using namespace metal;
struct tint_module_vars_struct {
  device half4* prevent_dce;
};
struct vertex_main_outputs {
  float4 tint_symbol [[position]];
};

void atanh_e3b450(tint_module_vars_struct tint_module_vars) {
  half4 res = half4(0.548828125h);
  (*tint_module_vars.prevent_dce) = res;
}
float4 vertex_main_inner(tint_module_vars_struct tint_module_vars) {
  atanh_e3b450(tint_module_vars);
  return float4(0.0f);
}
fragment void fragment_main(device half4* prevent_dce [[buffer(0)]]) {
  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.prevent_dce=prevent_dce};
  atanh_e3b450(tint_module_vars);
}
kernel void compute_main(device half4* prevent_dce [[buffer(0)]]) {
  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.prevent_dce=prevent_dce};
  atanh_e3b450(tint_module_vars);
}
vertex vertex_main_outputs vertex_main(device half4* prevent_dce [[buffer(0)]]) {
  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.prevent_dce=prevent_dce};
  return vertex_main_outputs{.tint_symbol=vertex_main_inner(tint_module_vars)};
}
