#version 310 es

struct S0_atomic {
  int x;
  uint a;
  int y;
  int z;
};

struct S0 {
  int x;
  uint a;
  int y;
  int z;
};

struct S1_atomic {
  int x;
  S0_atomic a;
  int y;
  int z;
};

struct S1 {
  int x;
  S0 a;
  int y;
  int z;
};

struct S2_atomic {
  int x;
  int y;
  int z;
  S1_atomic a;
};

struct S2 {
  int x;
  int y;
  int z;
  S1 a;
};

uint local_invocation_index_1 = 0u;
shared S2_atomic wg;
void compute_main_inner(uint local_invocation_index) {
  wg.x = 0;
  wg.y = 0;
  wg.z = 0;
  wg.a.x = 0;
  wg.a.a.x = 0;
  atomicExchange(wg.a.a.a, 0u);
  wg.a.a.y = 0;
  wg.a.a.z = 0;
  wg.a.y = 0;
  wg.a.z = 0;
  barrier();
  atomicExchange(wg.a.a.a, 1u);
  return;
}

void compute_main_1() {
  uint x_44 = local_invocation_index_1;
  compute_main_inner(x_44);
  return;
}

void compute_main(uint local_invocation_index_1_param) {
  {
    wg.x = 0;
    wg.y = 0;
    wg.z = 0;
    wg.a.x = 0;
    wg.a.a.x = 0;
    atomicExchange(wg.a.a.a, 0u);
    wg.a.a.y = 0;
    wg.a.a.z = 0;
    wg.a.y = 0;
    wg.a.z = 0;
  }
  barrier();
  local_invocation_index_1 = local_invocation_index_1_param;
  compute_main_1();
}

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