#include <metal_stdlib>

using namespace metal;
struct S_tint_packed_vec3 {
  /* 0x0000 */ packed_float3 v;
  /* 0x000c */ uint i;
};

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

struct S {
  float3 v;
  uint i;
};

void tint_symbol_inner(uint idx, device S_tint_packed_vec3* const tint_symbol_1) {
  (*(tint_symbol_1)).v = packed_float3(Bad((*(tint_symbol_1)).i, float3((*(tint_symbol_1)).v)));
}

kernel void tint_symbol(device S_tint_packed_vec3* tint_symbol_2 [[buffer(0)]], uint idx [[thread_index_in_threadgroup]]) {
  tint_symbol_inner(idx, tint_symbol_2);
  return;
}

