#include <metal_stdlib>

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

void main_1(device S& x_5, device S& x_6, device S& x_7, thread uint3* const tint_symbol_2) {
  uint const x_21 = (*(tint_symbol_2)).x;
  uint const x_23 = x_5.field0[x_21];
  uint const x_25 = x_6.field0[x_21];
  x_7.field0[x_21] = select(0u, 1u, (as_type<int>(x_23) >= as_type<int>(x_25)));
  return;
}

kernel void tint_symbol(uint3 x_2_param [[thread_position_in_grid]], device S& x_5 [[buffer(0)]], device S& x_6 [[buffer(1)]], device S& x_7 [[buffer(2)]]) {
  thread uint3 tint_symbol_3 = 0u;
  tint_symbol_3 = x_2_param;
  main_1(x_5, x_6, x_7, &(tint_symbol_3));
  return;
}

