#include <metal_stdlib>

using namespace metal;
struct buf0 {
  /* 0x0000 */ packed_float2 injectionSwitch;
};
struct tint_array_wrapper {
  int arr[10];
};
struct main_out {
  float4 x_GLF_color_1;
};
struct tint_symbol_2 {
  float4 x_GLF_color_1 [[color(0)]];
};

void main_1(constant buf0& x_8, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
  tint_array_wrapper temp = {};
  tint_array_wrapper data = {};
  float x_180 = 0.0f;
  float x_279 = 0.0f;
  int x_65_phi = 0;
  int x_93_phi = 0;
  int x_102_phi = 0;
  float x_280_phi = 0.0f;
  float const x_62 = x_8.injectionSwitch.x;
  int const x_63 = int(x_62);
  x_65_phi = x_63;
  while (true) {
    int const x_65 = x_65_phi;
    switch(x_65) {
      case 9: {
        data.arr[x_65] = -5;
        break;
      }
      case 8: {
        data.arr[x_65] = -4;
        break;
      }
      case 7: {
        data.arr[x_65] = -3;
        break;
      }
      case 6: {
        data.arr[x_65] = -2;
        break;
      }
      case 5: {
        data.arr[x_65] = -1;
        break;
      }
      case 4: {
        data.arr[x_65] = 0;
        break;
      }
      case 3: {
        data.arr[x_65] = 1;
        break;
      }
      case 2: {
        data.arr[x_65] = 2;
        break;
      }
      case 1: {
        data.arr[x_65] = 3;
        break;
      }
      case 0: {
        data.arr[x_65] = 4;
        break;
      }
      default: {
        break;
      }
    }
    int const x_66 = (x_65 + 1);
    {
      x_65_phi = x_66;
      if ((x_66 < 10)) {
      } else {
        break;
      }
    }
  }
  x_93_phi = 0;
  while (true) {
    int x_94 = 0;
    int const x_93 = x_93_phi;
    if ((x_93 < 10)) {
    } else {
      break;
    }
    {
      int const x_99 = data.arr[x_93];
      temp.arr[x_93] = x_99;
      x_94 = (x_93 + 1);
      x_93_phi = x_94;
    }
  }
  x_102_phi = 1;
  while (true) {
    int x_103 = 0;
    int x_109_phi = 0;
    int const x_102 = x_102_phi;
    if ((x_102 <= 9)) {
    } else {
      break;
    }
    x_109_phi = 0;
    while (true) {
      int x_121 = 0;
      int x_126 = 0;
      int x_121_phi = 0;
      int x_124_phi = 0;
      int x_126_phi = 0;
      int x_148_phi = 0;
      int x_151_phi = 0;
      int x_161_phi = 0;
      int const x_109 = x_109_phi;
      if ((x_109 < 9)) {
      } else {
        break;
      }
      int const x_115 = (x_109 + x_102);
      int const x_116 = (x_115 - 1);
      int const x_110 = (x_109 + (2 * x_102));
      int const x_119 = min((x_110 - 1), 9);
      x_121_phi = x_109;
      x_124_phi = x_115;
      x_126_phi = x_109;
      while (true) {
        int x_141 = 0;
        int x_144 = 0;
        int x_125_phi = 0;
        int x_127_phi = 0;
        x_121 = x_121_phi;
        int const x_124 = x_124_phi;
        x_126 = x_126_phi;
        if (((x_126 <= x_116) && (x_124 <= x_119))) {
        } else {
          break;
        }
        int const x_133_save = x_126;
        int const x_134 = data.arr[x_133_save];
        int const x_135_save = x_124;
        int const x_136 = data.arr[x_135_save];
        int const x_122 = as_type<int>((x_121 + as_type<int>(1)));
        if ((x_134 < x_136)) {
          x_141 = as_type<int>((x_126 + as_type<int>(1)));
          int const x_142 = data.arr[x_133_save];
          temp.arr[x_121] = x_142;
          x_125_phi = x_124;
          x_127_phi = x_141;
        } else {
          x_144 = (x_124 + 1);
          int const x_145 = data.arr[x_135_save];
          temp.arr[x_121] = x_145;
          x_125_phi = x_144;
          x_127_phi = x_126;
        }
        int const x_125 = x_125_phi;
        int const x_127 = x_127_phi;
        {
          x_121_phi = x_122;
          x_124_phi = x_125;
          x_126_phi = x_127;
        }
      }
      x_148_phi = x_121;
      x_151_phi = x_126;
      while (true) {
        int x_149 = 0;
        int x_152 = 0;
        int const x_148 = x_148_phi;
        int const x_151 = x_151_phi;
        if (((x_151 < 10) && (x_151 <= x_116))) {
        } else {
          break;
        }
        {
          x_149 = (x_148 + 1);
          x_152 = (x_151 + 1);
          int const x_158 = data.arr[x_151];
          temp.arr[x_148] = x_158;
          x_148_phi = x_149;
          x_151_phi = x_152;
        }
      }
      x_161_phi = x_109;
      while (true) {
        int x_162 = 0;
        int const x_161 = x_161_phi;
        if ((x_161 <= x_119)) {
        } else {
          break;
        }
        {
          int const x_167 = temp.arr[x_161];
          data.arr[x_161] = x_167;
          x_162 = (x_161 + 1);
          x_161_phi = x_162;
        }
      }
      {
        x_109_phi = x_110;
      }
    }
    {
      x_103 = (2 * x_102);
      x_102_phi = x_103;
    }
  }
  int x_171 = 0;
  float x_189 = 0.0f;
  float x_278 = 0.0f;
  float x_279_phi = 0.0f;
  float const x_170 = (*(tint_symbol_5)).y;
  x_171 = int(x_170);
  if ((x_171 < 30)) {
    int const x_177 = data.arr[0];
    x_180 = (0.5f + (float(x_177) * 0.100000001f));
    x_280_phi = x_180;
  } else {
    float x_198 = 0.0f;
    float x_277 = 0.0f;
    float x_278_phi = 0.0f;
    if ((x_171 < 60)) {
      int const x_186 = data.arr[1];
      x_189 = (0.5f + (float(x_186) * 0.100000001f));
      x_279_phi = x_189;
    } else {
      float x_207 = 0.0f;
      float x_249 = 0.0f;
      float x_277_phi = 0.0f;
      if ((x_171 < 90)) {
        int const x_195 = data.arr[2];
        x_198 = (0.5f + (float(x_195) * 0.100000001f));
        x_278_phi = x_198;
      } else {
        if ((x_171 < 120)) {
          int const x_204 = data.arr[3];
          x_207 = (0.5f + (float(x_204) * 0.100000001f));
          x_277_phi = x_207;
        } else {
          float x_220 = 0.0f;
          float x_248 = 0.0f;
          float x_249_phi = 0.0f;
          float2 x_256_phi = 0.0f;
          int x_259_phi = 0;
          if ((x_171 < 150)) {
            discard_fragment();
          } else {
            float x_229 = 0.0f;
            float x_247 = 0.0f;
            float x_248_phi = 0.0f;
            if ((x_171 < 180)) {
              int const x_217 = data.arr[5];
              x_220 = (0.5f + (float(x_217) * 0.100000001f));
              x_249_phi = x_220;
            } else {
              float x_238 = 0.0f;
              float x_246 = 0.0f;
              float x_247_phi = 0.0f;
              if ((x_171 < 210)) {
                int const x_226 = data.arr[6];
                x_229 = (0.5f + (float(x_226) * 0.100000001f));
                x_248_phi = x_229;
              } else {
                if ((x_171 < 240)) {
                  int const x_235 = data.arr[7];
                  x_238 = (0.5f + (float(x_235) * 0.100000001f));
                  x_247_phi = x_238;
                } else {
                  if ((x_171 < 270)) {
                  } else {
                    discard_fragment();
                  }
                  int const x_243 = data.arr[8];
                  x_246 = (0.5f + (float(x_243) * 0.100000001f));
                  x_247_phi = x_246;
                }
                x_247 = x_247_phi;
                x_248_phi = x_247;
              }
              x_248 = x_248_phi;
              x_249_phi = x_248;
            }
            x_249 = x_249_phi;
            float const x_251 = x_8.injectionSwitch.y;
            bool const x_252 = (x_62 > x_251);
            if (x_252) {
              *(tint_symbol_6) = float4(1.0f, 1.0f, 1.0f, 1.0f);
            }
            x_256_phi = float2(1.0f, 1.0f);
            x_259_phi = 0;
            while (true) {
              float2 x_272 = 0.0f;
              int x_260 = 0;
              float2 x_273_phi = 0.0f;
              float2 const x_256 = x_256_phi;
              int const x_259 = x_259_phi;
              if ((x_259 <= 32)) {
              } else {
                break;
              }
              x_273_phi = x_256;
              if ((x_256.x < 0.0f)) {
                if (x_252) {
                  discard_fragment();
                }
                x_272 = x_256;
                x_272.y = (x_256.y + 1.0f);
                x_273_phi = x_272;
              }
              float2 const x_273 = x_273_phi;
              float2 x_257_1 = x_273;
              x_257_1.x = (x_273.x + x_273.y);
              float2 const x_257 = x_257_1;
              {
                x_260 = (x_259 + 1);
                x_256_phi = x_257;
                x_259_phi = x_260;
              }
            }
          }
          x_277_phi = x_249;
        }
        x_277 = x_277_phi;
        x_278_phi = x_277;
      }
      x_278 = x_278_phi;
      x_279_phi = x_278;
    }
    x_279 = x_279_phi;
    x_280_phi = x_279;
  }
  float const x_280 = x_280_phi;
  *(tint_symbol_6) = float4(x_280, x_280, x_280, 1.0f);
  return;
}

fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_8 [[buffer(0)]]) {
  thread float4 tint_symbol_7 = 0.0f;
  thread float4 tint_symbol_8 = 0.0f;
  tint_symbol_7 = gl_FragCoord_param;
  main_1(x_8, &(tint_symbol_7), &(tint_symbol_8));
  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
  return tint_symbol_4;
}

