#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 bool* const tint_symbol_1, thread bool* const tint_symbol_2, thread uint* const tint_symbol_3) {
  bool const x_101 = *(tint_symbol_1);
  bool const x_102 = *(tint_symbol_2);
  while (true) {
    uint x_2_phi = 0u;
    if (x_101) {
      break;
    }
    x_2_phi = 0u;
    if (x_102) {
      x_2_phi = 1u;
      {
        uint const x_2 = x_2_phi;
        *(tint_symbol_3) = x_2;
      }
      continue;
    } else {
      {
        uint const x_2 = x_2_phi;
        *(tint_symbol_3) = x_2;
      }
      continue;
    }
    return;
    {
      uint const x_2 = x_2_phi;
      *(tint_symbol_3) = x_2;
    }
  }
  return;
}

fragment void tint_symbol() {
  thread bool tint_symbol_4 = false;
  thread bool tint_symbol_5 = false;
  thread uint tint_symbol_6 = 0u;
  main_1(&(tint_symbol_4), &(tint_symbol_5), &(tint_symbol_6));
  return;
}

