#include <metal_stdlib>

using namespace metal;
struct main_out {
  float4 x_GLF_color_1;
};
struct tint_symbol_1 {
  float4 x_GLF_color_1 [[color(0)]];
};

void main_1(thread int* const tint_symbol_4, thread float4* const tint_symbol_5) {
  float2x3 m23 = float2x3(0.0f);
  float2x4 m24 = float2x4(0.0f);
  float3x2 m32 = float3x2(0.0f);
  float3x3 m33 = float3x3(0.0f);
  float3x4 m34 = float3x4(0.0f);
  float4x2 m42 = float4x2(0.0f);
  float4x3 m43 = float4x3(0.0f);
  float4x4 m44 = float4x4(0.0f);
  int i = 0;
  int i_1 = 0;
  int i_2 = 0;
  int i_3 = 0;
  int i_4 = 0;
  int i_5 = 0;
  int i_6 = 0;
  int i_7 = 0;
  int i_8 = 0;
  int i_9 = 0;
  int i_10 = 0;
  int i_11 = 0;
  int i_12 = 0;
  int i_13 = 0;
  int i_14 = 0;
  int i_15 = 0;
  int i_16 = 0;
  int i_17 = 0;
  int i_18 = 0;
  int i_19 = 0;
  int i_20 = 0;
  int i_21 = 0;
  int i_22 = 0;
  int i_23 = 0;
  int i_24 = 0;
  int i_25 = 0;
  int i_26 = 0;
  int i_27 = 0;
  int i_28 = 0;
  int i_29 = 0;
  int i_30 = 0;
  int i_31 = 0;
  int i_32 = 0;
  int i_33 = 0;
  int i_34 = 0;
  int i_35 = 0;
  int i_36 = 0;
  int i_37 = 0;
  float sum = 0.0f;
  int r = 0;
  *(tint_symbol_4) = 0;
  m23 = float2x3(float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f));
  m24 = float2x4(float4(0.0f, 0.0f, 0.0f, 0.0f), float4(0.0f, 0.0f, 0.0f, 0.0f));
  m32 = float3x2(float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f));
  m33 = float3x3(float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f));
  m34 = float3x4(float4(0.0f, 0.0f, 0.0f, 0.0f), float4(0.0f, 0.0f, 0.0f, 0.0f), float4(0.0f, 0.0f, 0.0f, 0.0f));
  m42 = float4x2(float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f));
  m43 = float4x3(float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f));
  m44 = float4x4(float4(0.0f, 0.0f, 0.0f, 0.0f), float4(0.0f, 0.0f, 0.0f, 0.0f), float4(0.0f, 0.0f, 0.0f, 0.0f), float4(0.0f, 0.0f, 0.0f, 0.0f));
  i = 0;
  while (true) {
    int const x_105 = i;
    if ((x_105 < 1)) {
    } else {
      break;
    }
    i_1 = 0;
    while (true) {
      int const x_112 = i_1;
      if ((x_112 < 1)) {
      } else {
        break;
      }
      i_2 = 0;
      while (true) {
        int const x_119 = i_2;
        if ((x_119 < 1)) {
        } else {
          break;
        }
        i_3 = 0;
        while (true) {
          int const x_126 = i_3;
          if ((x_126 < 1)) {
          } else {
            break;
          }
          i_4 = 0;
          while (true) {
            int const x_133 = i_4;
            if ((x_133 < 1)) {
            } else {
              break;
            }
            i_5 = 0;
            while (true) {
              int const x_140 = i_5;
              if ((x_140 < 1)) {
              } else {
                break;
              }
              i_6 = 0;
              while (true) {
                int const x_147 = i_6;
                if ((x_147 < 1)) {
                } else {
                  break;
                }
                i_7 = 0;
                while (true) {
                  int const x_154 = i_7;
                  if ((x_154 < 1)) {
                  } else {
                    break;
                  }
                  i_8 = 0;
                  while (true) {
                    int const x_161 = i_8;
                    if ((x_161 < 1)) {
                    } else {
                      break;
                    }
                    i_9 = 0;
                    while (true) {
                      int const x_168 = i_9;
                      if ((x_168 < 1)) {
                      } else {
                        break;
                      }
                      i_10 = 0;
                      while (true) {
                        int const x_175 = i_10;
                        if ((x_175 < 1)) {
                        } else {
                          break;
                        }
                        i_11 = 0;
                        while (true) {
                          int const x_182 = i_11;
                          if ((x_182 < 1)) {
                          } else {
                            break;
                          }
                          i_12 = 0;
                          while (true) {
                            int const x_189 = i_12;
                            if ((x_189 < 1)) {
                            } else {
                              break;
                            }
                            i_13 = 0;
                            while (true) {
                              int const x_196 = i_13;
                              if ((x_196 < 1)) {
                              } else {
                                break;
                              }
                              i_14 = 0;
                              while (true) {
                                int const x_203 = i_14;
                                if ((x_203 < 1)) {
                                } else {
                                  break;
                                }
                                i_15 = 0;
                                while (true) {
                                  int const x_210 = i_15;
                                  if ((x_210 < 1)) {
                                  } else {
                                    break;
                                  }
                                  i_16 = 0;
                                  while (true) {
                                    int const x_217 = i_16;
                                    if ((x_217 < 1)) {
                                    } else {
                                      break;
                                    }
                                    i_17 = 0;
                                    while (true) {
                                      int const x_224 = i_17;
                                      if ((x_224 < 1)) {
                                      } else {
                                        break;
                                      }
                                      i_18 = 0;
                                      while (true) {
                                        int const x_231 = i_18;
                                        if ((x_231 < 1)) {
                                        } else {
                                          break;
                                        }
                                        i_19 = 0;
                                        while (true) {
                                          int const x_238 = i_19;
                                          if ((x_238 < 1)) {
                                          } else {
                                            break;
                                          }
                                          i_20 = 0;
                                          while (true) {
                                            int const x_245 = i_20;
                                            if ((x_245 < 1)) {
                                            } else {
                                              break;
                                            }
                                            i_21 = 0;
                                            while (true) {
                                              int const x_252 = i_21;
                                              if ((x_252 < 1)) {
                                              } else {
                                                break;
                                              }
                                              i_22 = 0;
                                              while (true) {
                                                int const x_259 = i_22;
                                                if ((x_259 < 1)) {
                                                } else {
                                                  break;
                                                }
                                                i_23 = 0;
                                                while (true) {
                                                  int const x_266 = i_23;
                                                  if ((x_266 < 1)) {
                                                  } else {
                                                    break;
                                                  }
                                                  i_24 = 0;
                                                  while (true) {
                                                    int const x_273 = i_24;
                                                    if ((x_273 < 1)) {
                                                    } else {
                                                      break;
                                                    }
                                                    i_25 = 0;
                                                    while (true) {
                                                      int const x_280 = i_25;
                                                      if ((x_280 < 1)) {
                                                      } else {
                                                        break;
                                                      }
                                                      i_26 = 0;
                                                      while (true) {
                                                        int const x_287 = i_26;
                                                        if ((x_287 < 1)) {
                                                        } else {
                                                          break;
                                                        }
                                                        i_27 = 0;
                                                        while (true) {
                                                          int const x_294 = i_27;
                                                          if ((x_294 < 1)) {
                                                          } else {
                                                            break;
                                                          }
                                                          i_28 = 0;
                                                          while (true) {
                                                            int const x_301 = i_28;
                                                            if ((x_301 < 1)) {
                                                            } else {
                                                              break;
                                                            }
                                                            i_29 = 0;
                                                            while (true) {
                                                              int const x_308 = i_29;
                                                              if ((x_308 < 1)) {
                                                              } else {
                                                                break;
                                                              }
                                                              i_30 = 0;
                                                              while (true) {
                                                                int const x_315 = i_30;
                                                                if ((x_315 < 1)) {
                                                                } else {
                                                                  break;
                                                                }
                                                                i_31 = 0;
                                                                while (true) {
                                                                  int const x_322 = i_31;
                                                                  if ((x_322 < 1)) {
                                                                  } else {
                                                                    break;
                                                                  }
                                                                  i_32 = 0;
                                                                  while (true) {
                                                                    int const x_329 = i_32;
                                                                    if ((x_329 < 1)) {
                                                                    } else {
                                                                      break;
                                                                    }
                                                                    i_33 = 0;
                                                                    while (true) {
                                                                      int const x_336 = i_33;
                                                                      if ((x_336 < 1)) {
                                                                      } else {
                                                                        break;
                                                                      }
                                                                      i_34 = 0;
                                                                      while (true) {
                                                                        int const x_343 = i_34;
                                                                        if ((x_343 < 1)) {
                                                                        } else {
                                                                          break;
                                                                        }
                                                                        i_35 = 0;
                                                                        while (true) {
                                                                          int const x_350 = i_35;
                                                                          if ((x_350 < 1)) {
                                                                          } else {
                                                                            break;
                                                                          }
                                                                          i_36 = 0;
                                                                          while (true) {
                                                                            int const x_357 = i_36;
                                                                            if ((x_357 < 1)) {
                                                                            } else {
                                                                              break;
                                                                            }
                                                                            i_37 = 0;
                                                                            while (true) {
                                                                              int const x_364 = i_37;
                                                                              if ((x_364 < 1)) {
                                                                              } else {
                                                                                break;
                                                                              }
                                                                              while (true) {
                                                                                int const x_371 = *(tint_symbol_4);
                                                                                *(tint_symbol_4) = as_type<int>((as_type<uint>(x_371) + as_type<uint>(1)));
                                                                                {
                                                                                  int const x_373 = *(tint_symbol_4);
                                                                                  if ((x_373 < 98)) {
                                                                                  } else {
                                                                                    break;
                                                                                  }
                                                                                }
                                                                              }
                                                                              int const x_375 = i_37;
                                                                              int const x_376 = i_37;
                                                                              m23[x_375][x_376] = 1.0f;
                                                                              int const x_378 = i_37;
                                                                              int const x_379 = i_37;
                                                                              m24[x_378][x_379] = 1.0f;
                                                                              int const x_381 = i_37;
                                                                              int const x_382 = i_37;
                                                                              m32[x_381][x_382] = 1.0f;
                                                                              int const x_384 = i_37;
                                                                              int const x_385 = i_37;
                                                                              m33[x_384][x_385] = 1.0f;
                                                                              int const x_387 = i_37;
                                                                              int const x_388 = i_37;
                                                                              m34[x_387][x_388] = 1.0f;
                                                                              int const x_390 = i_37;
                                                                              int const x_391 = i_37;
                                                                              m42[x_390][x_391] = 1.0f;
                                                                              int const x_393 = i_37;
                                                                              int const x_394 = i_37;
                                                                              m43[x_393][x_394] = 1.0f;
                                                                              int const x_396 = i_37;
                                                                              int const x_397 = i_37;
                                                                              m44[x_396][x_397] = 1.0f;
                                                                              {
                                                                                int const x_399 = i_37;
                                                                                i_37 = as_type<int>((as_type<uint>(x_399) + as_type<uint>(1)));
                                                                              }
                                                                            }
                                                                            {
                                                                              int const x_401 = i_36;
                                                                              i_36 = as_type<int>((as_type<uint>(x_401) + as_type<uint>(1)));
                                                                            }
                                                                          }
                                                                          {
                                                                            int const x_403 = i_35;
                                                                            i_35 = as_type<int>((as_type<uint>(x_403) + as_type<uint>(1)));
                                                                          }
                                                                        }
                                                                        {
                                                                          int const x_405 = i_34;
                                                                          i_34 = as_type<int>((as_type<uint>(x_405) + as_type<uint>(1)));
                                                                        }
                                                                      }
                                                                      {
                                                                        int const x_407 = i_33;
                                                                        i_33 = as_type<int>((as_type<uint>(x_407) + as_type<uint>(1)));
                                                                      }
                                                                    }
                                                                    {
                                                                      int const x_409 = i_32;
                                                                      i_32 = as_type<int>((as_type<uint>(x_409) + as_type<uint>(1)));
                                                                    }
                                                                  }
                                                                  {
                                                                    int const x_411 = i_31;
                                                                    i_31 = as_type<int>((as_type<uint>(x_411) + as_type<uint>(1)));
                                                                  }
                                                                }
                                                                {
                                                                  int const x_413 = i_30;
                                                                  i_30 = as_type<int>((as_type<uint>(x_413) + as_type<uint>(1)));
                                                                }
                                                              }
                                                              {
                                                                int const x_415 = i_29;
                                                                i_29 = as_type<int>((as_type<uint>(x_415) + as_type<uint>(1)));
                                                              }
                                                            }
                                                            {
                                                              int const x_417 = i_28;
                                                              i_28 = as_type<int>((as_type<uint>(x_417) + as_type<uint>(1)));
                                                            }
                                                          }
                                                          {
                                                            int const x_419 = i_27;
                                                            i_27 = as_type<int>((as_type<uint>(x_419) + as_type<uint>(1)));
                                                          }
                                                        }
                                                        {
                                                          int const x_421 = i_26;
                                                          i_26 = as_type<int>((as_type<uint>(x_421) + as_type<uint>(1)));
                                                        }
                                                      }
                                                      {
                                                        int const x_423 = i_25;
                                                        i_25 = as_type<int>((as_type<uint>(x_423) + as_type<uint>(1)));
                                                      }
                                                    }
                                                    {
                                                      int const x_425 = i_24;
                                                      i_24 = as_type<int>((as_type<uint>(x_425) + as_type<uint>(1)));
                                                    }
                                                  }
                                                  {
                                                    int const x_427 = i_23;
                                                    i_23 = as_type<int>((as_type<uint>(x_427) + as_type<uint>(1)));
                                                  }
                                                }
                                                {
                                                  int const x_429 = i_22;
                                                  i_22 = as_type<int>((as_type<uint>(x_429) + as_type<uint>(1)));
                                                }
                                              }
                                              {
                                                int const x_431 = i_21;
                                                i_21 = as_type<int>((as_type<uint>(x_431) + as_type<uint>(1)));
                                              }
                                            }
                                            {
                                              int const x_433 = i_20;
                                              i_20 = as_type<int>((as_type<uint>(x_433) + as_type<uint>(1)));
                                            }
                                          }
                                          {
                                            int const x_435 = i_19;
                                            i_19 = as_type<int>((as_type<uint>(x_435) + as_type<uint>(1)));
                                          }
                                        }
                                        {
                                          int const x_437 = i_18;
                                          i_18 = as_type<int>((as_type<uint>(x_437) + as_type<uint>(1)));
                                        }
                                      }
                                      {
                                        int const x_439 = i_17;
                                        i_17 = as_type<int>((as_type<uint>(x_439) + as_type<uint>(1)));
                                      }
                                    }
                                    {
                                      int const x_441 = i_16;
                                      i_16 = as_type<int>((as_type<uint>(x_441) + as_type<uint>(1)));
                                    }
                                  }
                                  {
                                    int const x_443 = i_15;
                                    i_15 = as_type<int>((as_type<uint>(x_443) + as_type<uint>(1)));
                                  }
                                }
                                {
                                  int const x_445 = i_14;
                                  i_14 = as_type<int>((as_type<uint>(x_445) + as_type<uint>(1)));
                                }
                              }
                              {
                                int const x_447 = i_13;
                                i_13 = as_type<int>((as_type<uint>(x_447) + as_type<uint>(1)));
                              }
                            }
                            {
                              int const x_449 = i_12;
                              i_12 = as_type<int>((as_type<uint>(x_449) + as_type<uint>(1)));
                            }
                          }
                          {
                            int const x_451 = i_11;
                            i_11 = as_type<int>((as_type<uint>(x_451) + as_type<uint>(1)));
                          }
                        }
                        {
                          int const x_453 = i_10;
                          i_10 = as_type<int>((as_type<uint>(x_453) + as_type<uint>(1)));
                        }
                      }
                      {
                        int const x_455 = i_9;
                        i_9 = as_type<int>((as_type<uint>(x_455) + as_type<uint>(1)));
                      }
                    }
                    {
                      int const x_457 = i_8;
                      i_8 = as_type<int>((as_type<uint>(x_457) + as_type<uint>(1)));
                    }
                  }
                  {
                    int const x_459 = i_7;
                    i_7 = as_type<int>((as_type<uint>(x_459) + as_type<uint>(1)));
                  }
                }
                {
                  int const x_461 = i_6;
                  i_6 = as_type<int>((as_type<uint>(x_461) + as_type<uint>(1)));
                }
              }
              {
                int const x_463 = i_5;
                i_5 = as_type<int>((as_type<uint>(x_463) + as_type<uint>(1)));
              }
            }
            {
              int const x_465 = i_4;
              i_4 = as_type<int>((as_type<uint>(x_465) + as_type<uint>(1)));
            }
          }
          {
            int const x_467 = i_3;
            i_3 = as_type<int>((as_type<uint>(x_467) + as_type<uint>(1)));
          }
        }
        {
          int const x_469 = i_2;
          i_2 = as_type<int>((as_type<uint>(x_469) + as_type<uint>(1)));
        }
      }
      {
        int const x_471 = i_1;
        i_1 = as_type<int>((as_type<uint>(x_471) + as_type<uint>(1)));
      }
    }
    {
      int const x_473 = i;
      i = as_type<int>((as_type<uint>(x_473) + as_type<uint>(1)));
    }
  }
  sum = 0.0f;
  r = 0;
  while (true) {
    int const x_479 = *(tint_symbol_4);
    if ((x_479 < 100)) {
    } else {
      break;
    }
    int const x_482 = *(tint_symbol_4);
    *(tint_symbol_4) = as_type<int>((as_type<uint>(x_482) + as_type<uint>(1)));
    int const x_484 = r;
    float const x_486 = m23[0][x_484];
    float const x_487 = sum;
    sum = (x_487 + x_486);
    int const x_489 = r;
    float const x_491 = m24[0][x_489];
    float const x_492 = sum;
    sum = (x_492 + x_491);
    int const x_494 = r;
    float const x_496 = m32[0][x_494];
    float const x_497 = sum;
    sum = (x_497 + x_496);
    int const x_499 = r;
    float const x_501 = m33[0][x_499];
    float const x_502 = sum;
    sum = (x_502 + x_501);
    int const x_504 = r;
    float const x_506 = m34[0][x_504];
    float const x_507 = sum;
    sum = (x_507 + x_506);
    int const x_509 = r;
    float const x_511 = m42[0][x_509];
    float const x_512 = sum;
    sum = (x_512 + x_511);
    int const x_514 = r;
    float const x_516 = m43[0][x_514];
    float const x_517 = sum;
    sum = (x_517 + x_516);
    int const x_519 = r;
    float const x_521 = m44[0][x_519];
    float const x_522 = sum;
    sum = (x_522 + x_521);
    {
      int const x_524 = r;
      r = as_type<int>((as_type<uint>(x_524) + as_type<uint>(1)));
    }
  }
  float const x_526 = sum;
  if ((x_526 == 8.0f)) {
    *(tint_symbol_5) = float4(1.0f, 0.0f, 0.0f, 1.0f);
  } else {
    *(tint_symbol_5) = float4(0.0f, 0.0f, 0.0f, 0.0f);
  }
  return;
}

fragment tint_symbol_1 tint_symbol() {
  thread int tint_symbol_6 = 0;
  thread float4 tint_symbol_7 = 0.0f;
  main_1(&(tint_symbol_6), &(tint_symbol_7));
  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_7};
  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
  return tint_symbol_3;
}

