#include <metal_stdlib>

using namespace metal;
struct S {
  /* 0x0000 */ uint field0[1];
};

void main_1(device S& x_6, device S& x_7, device S& x_8, device S& x_9, thread uint3* const tint_symbol_1) {
  uint const x_23 = (*(tint_symbol_1)).x;
  uint const x_25 = x_6.field0[x_23];
  uint const x_27 = x_7.field0[x_23];
  uint const x_29 = x_8.field0[x_23];
  x_9.field0[x_23] = as_type<uint>(clamp(as_type<int>(x_25), as_type<int>(x_27), as_type<int>(x_29)));
  return;
}

void tint_symbol_inner(device S& x_6, device S& x_7, device S& x_8, device S& x_9, uint3 x_3_param, thread uint3* const tint_symbol_2) {
  *(tint_symbol_2) = x_3_param;
  main_1(x_6, x_7, x_8, x_9, tint_symbol_2);
}

kernel void tint_symbol(uint3 x_3_param [[thread_position_in_grid]], device S& x_6 [[buffer(0)]], device S& x_7 [[buffer(1)]], device S& x_8 [[buffer(2)]], device S& x_9 [[buffer(3)]]) {
  thread uint3 tint_symbol_3 = 0u;
  tint_symbol_inner(x_6, x_7, x_8, x_9, x_3_param, &(tint_symbol_3));
  return;
}

