#include <metal_stdlib>

using namespace metal;
struct S {
  /* 0x0000 */ int4 a;
};

int4 tint_mod(int4 lhs, int rhs) {
  int4 const r = int4(rhs);
  int4 const rhs_or_one = select(r, int4(1), ((r == int4(0)) | ((lhs == int4((-2147483647 - 1))) & (r == int4(-1)))));
  if (any(((uint4((lhs | rhs_or_one)) & uint4(2147483648u)) != uint4(0u)))) {
    return as_type<int4>((as_type<uint4>(lhs) - as_type<uint4>(as_type<int4>((as_type<uint4>((lhs / rhs_or_one)) * as_type<uint4>(rhs_or_one))))));
  } else {
    return (lhs % rhs_or_one);
  }
}

void foo(device S* const tint_symbol) {
  (*(tint_symbol)).a = tint_mod((*(tint_symbol)).a, 2);
}

