#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;
  {
    int i = 0;
    while (true) {
      if (!((i < 2))) {
        break;
      }
      foo(&(tint_symbol_5), &(tint_symbol_6), &(tint_symbol_7), &(tint_symbol_8));
      {
        i = (i + 1);
      }
    }
  }
  return;
}

