#include <metal_stdlib>

using namespace metal;
struct tint_private_vars_struct {
  float t;
};

uint tint_ftou(float v) {
  return select(4294967295u, select(uint(v), 0u, (v < 0.0f)), (v < 4294967040.0f));
}

float m(thread tint_private_vars_struct* const tint_private_vars) {
  (*(tint_private_vars)).t = 1.0f;
  return float((*(tint_private_vars)).t);
}

void f(thread tint_private_vars_struct* const tint_private_vars) {
  float const tint_symbol = m(tint_private_vars);
  uint v = tint_ftou(tint_symbol);
}

