#include <metal_stdlib>

using namespace metal;
struct tint_symbol_2 {
  float x_1_param [[user(locn1)]];
  float x_2_param [[user(locn2)]] [[centroid_perspective]];
  float x_3_param [[user(locn3)]] [[sample_perspective]];
  float x_4_param [[user(locn4)]] [[no_perspective]];
  float x_5_param [[user(locn5)]] [[centroid_no_perspective]];
  float x_6_param [[user(locn6)]] [[sample_no_perspective]];
};

void main_1() {
  return;
}

void tint_symbol_inner(float x_1_param, float x_2_param, float x_3_param, float x_4_param, float x_5_param, float x_6_param, thread float* const tint_symbol_3, thread float* const tint_symbol_4, thread float* const tint_symbol_5, thread float* const tint_symbol_6, thread float* const tint_symbol_7, thread float* const tint_symbol_8) {
  *(tint_symbol_3) = x_1_param;
  *(tint_symbol_4) = x_2_param;
  *(tint_symbol_5) = x_3_param;
  *(tint_symbol_6) = x_4_param;
  *(tint_symbol_7) = x_5_param;
  *(tint_symbol_8) = x_6_param;
  main_1();
}

fragment void tint_symbol(tint_symbol_2 tint_symbol_1 [[stage_in]]) {
  thread float tint_symbol_9 = 0.0f;
  thread float tint_symbol_10 = 0.0f;
  thread float tint_symbol_11 = 0.0f;
  thread float tint_symbol_12 = 0.0f;
  thread float tint_symbol_13 = 0.0f;
  thread float tint_symbol_14 = 0.0f;
  tint_symbol_inner(tint_symbol_1.x_1_param, tint_symbol_1.x_2_param, tint_symbol_1.x_3_param, tint_symbol_1.x_4_param, tint_symbol_1.x_5_param, tint_symbol_1.x_6_param, &(tint_symbol_9), &(tint_symbol_10), &(tint_symbol_11), &(tint_symbol_12), &(tint_symbol_13), &(tint_symbol_14));
  return;
}

