
[numthreads(1, 1, 1)]
void main() {
  {
    uint2 tint_loop_idx = (4294967295u).xx;
    int i = int(0);
    while(true) {
      if (all((tint_loop_idx == (0u).xx))) {
        break;
      }
      if ((i < int(2))) {
      } else {
        break;
      }
      {
        uint2 tint_loop_idx_1 = (4294967295u).xx;
        int j = int(0);
        while(true) {
          if (all((tint_loop_idx_1 == (0u).xx))) {
            break;
          }
          if ((j < int(2))) {
          } else {
            break;
          }
          bool tint_continue = false;
          switch(i) {
            case int(0):
            {
              tint_continue = true;
              break;
            }
            default:
            {
              break;
            }
          }
          if (tint_continue) {
            {
              uint tint_low_inc_1 = (tint_loop_idx_1.x - 1u);
              tint_loop_idx_1.x = tint_low_inc_1;
              uint tint_carry_1 = uint((tint_low_inc_1 == 4294967295u));
              tint_loop_idx_1.y = (tint_loop_idx_1.y - tint_carry_1);
              j = asint((asuint(j) + asuint(int(2))));
            }
            continue;
          }
          {
            uint tint_low_inc_1 = (tint_loop_idx_1.x - 1u);
            tint_loop_idx_1.x = tint_low_inc_1;
            uint tint_carry_1 = uint((tint_low_inc_1 == 4294967295u));
            tint_loop_idx_1.y = (tint_loop_idx_1.y - tint_carry_1);
            j = asint((asuint(j) + asuint(int(2))));
          }
        }
      }
      {
        uint tint_low_inc = (tint_loop_idx.x - 1u);
        tint_loop_idx.x = tint_low_inc;
        uint tint_carry = uint((tint_low_inc == 4294967295u));
        tint_loop_idx.y = (tint_loop_idx.y - tint_carry);
        i = asint((asuint(i) + asuint(int(2))));
      }
    }
  }
}

