#include <metal_stdlib>
using namespace metal;

[[max_total_threads_per_threadgroup(1)]]
kernel void v() {
  {
    uint2 tint_loop_idx = uint2(4294967295u);
    int i = 0;
    while(true) {
      if (all((tint_loop_idx == uint2(0u)))) {
        break;
      }
      if ((i < 2)) {
      } else {
        break;
      }
      {
        uint2 tint_loop_idx_1 = uint2(4294967295u);
        int j = 0;
        while(true) {
          if (all((tint_loop_idx_1 == uint2(0u)))) {
            break;
          }
          if ((j < 2)) {
          } else {
            break;
          }
          bool tint_continue = false;
          switch(i) {
            case 0:
            {
              tint_continue = true;
              break;
            }
            default:
            {
              break;
            }
          }
          if (tint_continue) {
            {
              uint const tint_low_inc_1 = (tint_loop_idx_1.x - 1u);
              tint_loop_idx_1.x = tint_low_inc_1;
              uint const tint_carry_1 = uint((tint_low_inc_1 == 4294967295u));
              tint_loop_idx_1.y = (tint_loop_idx_1.y - tint_carry_1);
              j = as_type<int>((as_type<uint>(j) + as_type<uint>(2)));
            }
            continue;
          }
          {
            uint const tint_low_inc_1 = (tint_loop_idx_1.x - 1u);
            tint_loop_idx_1.x = tint_low_inc_1;
            uint const tint_carry_1 = uint((tint_low_inc_1 == 4294967295u));
            tint_loop_idx_1.y = (tint_loop_idx_1.y - tint_carry_1);
            j = as_type<int>((as_type<uint>(j) + as_type<uint>(2)));
          }
          continue;
        }
      }
      {
        uint const tint_low_inc = (tint_loop_idx.x - 1u);
        tint_loop_idx.x = tint_low_inc;
        uint const tint_carry = uint((tint_low_inc == 4294967295u));
        tint_loop_idx.y = (tint_loop_idx.y - tint_carry);
        i = as_type<int>((as_type<uint>(i) + as_type<uint>(2)));
      }
      continue;
    }
  }
}
