#version 310 es
precision mediump float;

struct SB_RW {
  uint arg_0;
};

layout (binding = 0) buffer SB_RW_1 {
  uint arg_0;
} sb_rw;

void atomicOr_5e95d4() {
  uint res = atomicOr(sb_rw.arg_0, 1u);
}

void fragment_main() {
  atomicOr_5e95d4();
  return;
}
void main() {
  fragment_main();
}


#version 310 es
precision mediump float;

struct SB_RW {
  uint arg_0;
};

layout (binding = 0) buffer SB_RW_1 {
  uint arg_0;
} sb_rw;

void atomicOr_5e95d4() {
  uint res = atomicOr(sb_rw.arg_0, 1u);
}

layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
void compute_main() {
  atomicOr_5e95d4();
  return;
}
void main() {
  compute_main();
}


