#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_1) {
  int const tint_symbol = tint_mod((*(tint_symbol_1)).a, 2);
  (*(tint_symbol_1)).a = tint_symbol;
}

