#include <metal_stdlib>

using namespace metal;

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

void radians_61687a() {
  float2 res = tint_radians(float2());
}

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

float4 vertex_main_inner() {
  radians_61687a();
  return float4();
}

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_61687a();
  return;
}

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

