#include <metal_stdlib>

using namespace metal;
struct SB_RW {
  /* 0x0000 */ atomic_int arg_0;
};

void atomicExchange_f2e22f(device SB_RW* const tint_symbol, device int* const tint_symbol_1) {
  int res = atomic_exchange_explicit(&((*(tint_symbol)).arg_0), 1, memory_order_relaxed);
  *(tint_symbol_1) = res;
}

fragment void fragment_main(device SB_RW* tint_symbol_2 [[buffer(0)]], device int* tint_symbol_3 [[buffer(1)]]) {
  atomicExchange_f2e22f(tint_symbol_2, tint_symbol_3);
  return;
}

kernel void compute_main(device SB_RW* tint_symbol_4 [[buffer(0)]], device int* tint_symbol_5 [[buffer(1)]]) {
  atomicExchange_f2e22f(tint_symbol_4, tint_symbol_5);
  return;
}

