#include <metal_stdlib>

using namespace metal;

half tint_radians(half param_0) {
  return param_0 * 0.017453292519943295474;
}

void radians_208fd9() {
  half res = tint_radians(0.0h);
}

struct tint_symbol {
  float4 value [[position]];
};

float4 vertex_main_inner() {
  radians_208fd9();
  return float4(0.0f);
}

vertex tint_symbol vertex_main() {
  float4 const inner_result = vertex_main_inner();
  tint_symbol wrapper_result = {};
  wrapper_result.value = inner_result;
  return wrapper_result;
}

fragment void fragment_main() {
  radians_208fd9();
  return;
}

kernel void compute_main() {
  radians_208fd9();
  return;
}

