#include <metal_stdlib>

using namespace metal;
int tint_workgroupUniformLoad(threadgroup int* const p) {
  threadgroup_barrier(mem_flags::mem_threadgroup);
  int const result = *(p);
  threadgroup_barrier(mem_flags::mem_threadgroup);
  return result;
}

void foo(threadgroup int* const tint_symbol_4, threadgroup int* const tint_symbol_5) {
  {
    int i = 0;
    while (true) {
      int const tint_symbol = i;
      int const tint_symbol_1 = tint_workgroupUniformLoad(tint_symbol_4);
      if (!((tint_symbol < tint_symbol_1))) {
        break;
      }
      {
      }
      {
        int const tint_symbol_2 = i;
        int const tint_symbol_3 = tint_workgroupUniformLoad(tint_symbol_5);
        i = as_type<int>((as_type<uint>(tint_symbol_2) + as_type<uint>(tint_symbol_3)));
      }
    }
  }
}

