#version 310 es
precision mediump float;

vec3 Bad(uint index, vec3 rd) {
  vec3 normal = vec3(0.0f);
  normal[index] = -(sign(rd[index]));
  return normalize(normal);
}

struct S {
  vec3 v;
  uint i;
};

layout (binding = 0) buffer S_1 {
  vec3 v;
  uint i;
} io;

struct tint_symbol_2 {
  uint idx;
};

void tint_symbol_inner(uint idx) {
  io.v = Bad(io.i, io.v);
}

layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
void tint_symbol(tint_symbol_2 tint_symbol_1) {
  tint_symbol_inner(tint_symbol_1.idx);
  return;
}
void main() {
  tint_symbol_2 inputs;
  inputs.idx = uint(gl_LocalInvocationIndex);
  tint_symbol(inputs);
}


