#version 310 es
precision mediump float;

struct Buf {
  uint count;
  uint data[50];
};

layout(binding = 0) buffer Buf_1 {
  uint count;
  uint data[50];
} b;

layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
void tint_symbol() {
  uint i = 0u;
  while (true) {
    if ((i >= b.count)) {
      break;
    }
    uint p_save = i;
    if (((i % 2u) == 0u)) {
      {
        b.data[p_save] = (b.data[p_save] * 2u);
        i = (i + 1u);
      }
      continue;
    }
    b.data[p_save] = 0u;
    {
      b.data[p_save] = (b.data[p_save] * 2u);
      i = (i + 1u);
    }
  }
  return;
}
void main() {
  tint_symbol();
}


