#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;
    while (true) {
      if (!((i < 2))) {
        break;
      }
      (*(tint_symbol_1))[i] = 1.0f;
      (*(tint_symbol_2))[i] = 1;
      (*(tint_symbol_3))[i] = 1u;
      (*(tint_symbol_4))[i] = true;
      {
        i = (i + 1);
      }
    }
  }
}

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;
}

