#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_2) {
  uint const x_23 = (*(tint_symbol_2)).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;
}

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_3 = x_3_param;
  main_1(x_6, x_7, x_8, x_9, &(tint_symbol_3));
  return;
}

