#include <metal_stdlib>

using namespace metal;
struct Buf1 {
  /* 0x0000 */ int result;
};
struct Buf0 {
  /* 0x0000 */ uint values[1];
};

void main_1(device Buf1& x_4, device Buf0& x_7) {
  uint i = 0u;
  x_4.result = 1;
  i = 0u;
  while (true) {
    uint const x_33 = i;
    if ((x_33 < 512u)) {
    } else {
      break;
    }
    uint const x_36 = i;
    uint const x_39 = x_7.values[(x_36 * 2u)];
    uint const x_40 = i;
    if ((x_39 != x_40)) {
      x_4.result = 0;
    }
    {
      uint const x_45 = i;
      i = (x_45 + as_type<uint>(1));
    }
  }
  return;
}

kernel void tint_symbol(device Buf1& x_4 [[buffer(0)]], device Buf0& x_7 [[buffer(1)]]) {
  main_1(x_4, x_7);
  return;
}

