#version 310 es

layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
void unused_entry_point() {
  return;
}
layout(binding = 0, std430) buffer S_ssbo {
  int a;
  uint pad;
  uint pad_1;
  uint pad_2;
  vec4 b;
  mat2 c;
} v;

uint i = 0u;
int idx1() {
  i = (i + 1u);
  return 1;
}

int idx2() {
  i = (i + 2u);
  return 1;
}

int idx3() {
  i = (i + 3u);
  return 1;
}

void foo() {
  float a[4] = float[4](0.0f, 0.0f, 0.0f, 0.0f);
  int tint_symbol_2 = idx1();
  int tint_symbol_save = tint_symbol_2;
  {
    a[tint_symbol_save] = (a[tint_symbol_save] * 2.0f);
    while (true) {
      int tint_symbol_3 = idx2();
      if (!((a[tint_symbol_3] < 10.0f))) {
        break;
      }
      {
      }
      {
        int tint_symbol_4 = idx3();
        int tint_symbol_1_save = tint_symbol_4;
        a[tint_symbol_1_save] = (a[tint_symbol_1_save] + 1.0f);
      }
    }
  }
}

