#include <metal_stdlib>

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

struct SB_RW {
  int arg_0;
};

void atomicStore_d1e9a6(device SB_RW_atomic* const tint_symbol) {
  int arg_1 = 0;
  arg_1 = 1;
  int const x_20 = arg_1;
  atomic_store_explicit(&((*(tint_symbol)).arg_0), x_20, memory_order_relaxed);
  return;
}

void fragment_main_1(device SB_RW_atomic* const tint_symbol_1) {
  atomicStore_d1e9a6(tint_symbol_1);
  return;
}

fragment void fragment_main(device SB_RW_atomic* tint_symbol_2 [[buffer(0)]]) {
  fragment_main_1(tint_symbol_2);
  return;
}

void compute_main_1(device SB_RW_atomic* const tint_symbol_3) {
  atomicStore_d1e9a6(tint_symbol_3);
  return;
}

kernel void compute_main(device SB_RW_atomic* tint_symbol_4 [[buffer(0)]]) {
  compute_main_1(tint_symbol_4);
  return;
}

