#include <metal_stdlib>

using namespace metal;
struct tint_array_wrapper {
  uint arr[2];
};
struct S {
  uint field0;
  float field1;
  tint_array_wrapper field2;
};

void main_1(thread uint* const tint_symbol_1) {
  *(tint_symbol_1) = 0u;
  while (true) {
    uint x_2 = 0u;
    *(tint_symbol_1) = 1u;
    if (false) {
      break;
    }
    *(tint_symbol_1) = 3u;
    if (true) {
      x_2 = (1u + 1u);
    } else {
      return;
    }
    *(tint_symbol_1) = x_2;
    {
      *(tint_symbol_1) = 4u;
      if (false) {
        break;
      }
    }
  }
  *(tint_symbol_1) = 5u;
  return;
}

fragment void tint_symbol() {
  thread uint tint_symbol_2 = 0u;
  main_1(&(tint_symbol_2));
  return;
}

