#include <metal_stdlib>

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

void arrayLength_1588cd(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_1588cd(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_1588cd(tint_symbol_2);
  return;
}

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

