#include <metal_stdlib>

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

int tint_mod(int lhs, int rhs) {
  int const rhs_or_one = select(rhs, 1, bool((rhs == 0) | bool((lhs == (-2147483647 - 1)) & (rhs == -1))));
  if (any(((uint((lhs | rhs_or_one)) & 2147483648u) != 0u))) {
    return as_type<int>((as_type<uint>(lhs) - as_type<uint>(as_type<int>((as_type<uint>((lhs / rhs_or_one)) * as_type<uint>(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);
}

