#include <metal_stdlib>

using namespace metal;
struct tint_symbol_1 {
  /* 0x0000 */ uint4 buffer_size[1];
};
struct SB_RO {
  /* 0x0000 */ uint arg_0[1];
};
struct tint_symbol {
  float4 value [[position]];
};

void arrayLength_cfca0a(constant tint_symbol_1& tint_symbol_2) {
  uint res = ((tint_symbol_2.buffer_size[0u][0u] - 0u) / 4u);
}

float4 vertex_main_inner(constant tint_symbol_1& tint_symbol_2) {
  arrayLength_cfca0a(tint_symbol_2);
  return float4();
}

vertex tint_symbol vertex_main(constant tint_symbol_1& tint_symbol_2 [[buffer(30)]]) {
  float4 const inner_result = vertex_main_inner(tint_symbol_2);
  tint_symbol wrapper_result = {};
  wrapper_result.value = inner_result;
  return wrapper_result;
}

fragment void fragment_main(constant tint_symbol_1& tint_symbol_2 [[buffer(30)]]) {
  arrayLength_cfca0a(tint_symbol_2);
  return;
}

kernel void compute_main(constant tint_symbol_1& tint_symbol_2 [[buffer(30)]]) {
  arrayLength_cfca0a(tint_symbol_2);
  return;
}

