#version 310 es

uint tint_mod(uint lhs, uint rhs) {
  return (lhs % ((rhs == 0u) ? 1u : rhs));
}

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

layout(binding = 0, std430) buffer b_block_ssbo {
  Buf inner;
} b;

void tint_symbol() {
  uint i = 0u;
  while (true) {
    if ((i >= b.inner.count)) {
      break;
    }
    uint p_save = i;
    uint tint_symbol_1 = tint_mod(i, 2u);
    if ((tint_symbol_1 == 0u)) {
      {
        b.inner.data[p_save] = (b.inner.data[p_save] * 2u);
        i = (i + 1u);
      }
      continue;
    }
    b.inner.data[p_save] = 0u;
    {
      b.inner.data[p_save] = (b.inner.data[p_save] * 2u);
      i = (i + 1u);
    }
  }
  return;
}

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