#include <metal_stdlib>

using namespace metal;
struct tint_private_vars_struct {
  int counter;
};

int i(thread tint_private_vars_struct* const tint_private_vars) {
  (*(tint_private_vars)).counter = as_type<int>((as_type<uint>((*(tint_private_vars)).counter) + as_type<uint>(1)));
  return (*(tint_private_vars)).counter;
}

kernel void f(const constant float4x4* tint_symbol_1 [[buffer(0)]]) {
  thread tint_private_vars_struct tint_private_vars = {};
  tint_private_vars.counter = 0;
  int const tint_symbol = i(&(tint_private_vars));
  int const p_m_i_save = tint_symbol;
  float4x4 const l_m = *(tint_symbol_1);
  float4 const l_m_i = (*(tint_symbol_1))[p_m_i_save];
  return;
}

