#include <metal_stdlib>

using namespace metal;
void foo(thread float2* const tint_symbol_1, thread int3* const tint_symbol_2, thread uint4* const tint_symbol_3, thread bool2* const tint_symbol_4) {
  int i = 0;
  (*(tint_symbol_1))[i] = 1.0f;
  (*(tint_symbol_2))[i] = 1;
  (*(tint_symbol_3))[i] = 1u;
  (*(tint_symbol_4))[i] = true;
}

kernel void tint_symbol() {
  thread float2 tint_symbol_5 = 0.0f;
  thread int3 tint_symbol_6 = 0;
  thread uint4 tint_symbol_7 = 0u;
  thread bool2 tint_symbol_8 = false;
  for(int i = 0; (i < 2); i = as_type<int>((as_type<uint>(i) + as_type<uint>(1)))) {
    foo(&(tint_symbol_5), &(tint_symbol_6), &(tint_symbol_7), &(tint_symbol_8));
  }
  return;
}

