#include <metal_stdlib>

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

int4 tint_mod(int4 lhs, int4 rhs) {
  int4 const rhs_or_one = select(rhs, int4(1), ((rhs == int4(0)) | ((lhs == int4((-2147483647 - 1))) & (rhs == 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, int4(2));
}

