#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 merge_i1_i1_i1_(thread int* const from, thread int* const mid, thread int* const to, thread tint_array_wrapper* const tint_symbol_5, thread tint_array_wrapper* const tint_symbol_6) {
  int k = 0;
  int i = 0;
  int j = 0;
  int i_1 = 0;
  int const x_262 = *(from);
  k = x_262;
  int const x_263 = *(from);
  i = x_263;
  int const x_264 = *(mid);
  j = (x_264 + 1);
  while (true) {
    int const x_270 = i;
    int const x_271 = *(mid);
    int const x_273 = j;
    int const x_274 = *(to);
    if (((x_270 <= x_271) && (x_273 <= x_274))) {
    } else {
      break;
    }
    int const x_278 = i;
    int const x_280 = (*(tint_symbol_5)).arr[x_278];
    int const x_281 = j;
    int const x_283 = (*(tint_symbol_5)).arr[x_281];
    if ((x_280 < x_283)) {
      int const x_288 = k;
      k = (x_288 + 1);
      int const x_290 = i;
      i = (x_290 + 1);
      int const x_293 = (*(tint_symbol_5)).arr[x_290];
      (*(tint_symbol_6)).arr[x_288] = x_293;
    } else {
      int const x_295 = k;
      k = (x_295 + 1);
      int const x_297 = j;
      j = (x_297 + 1);
      int const x_300 = (*(tint_symbol_5)).arr[x_297];
      (*(tint_symbol_6)).arr[x_295] = x_300;
    }
  }
  while (true) {
    int const x_306 = i;
    int const x_308 = i;
    int const x_309 = *(mid);
    if (((x_306 < 10) && (x_308 <= x_309))) {
    } else {
      break;
    }
    int const x_313 = k;
    k = (x_313 + 1);
    int const x_315 = i;
    i = (x_315 + 1);
    int const x_318 = (*(tint_symbol_5)).arr[x_315];
    (*(tint_symbol_6)).arr[x_313] = x_318;
  }
  int const x_320 = *(from);
  i_1 = x_320;
  while (true) {
    int const x_325 = i_1;
    int const x_326 = *(to);
    if ((x_325 <= x_326)) {
    } else {
      break;
    }
    int const x_329 = i_1;
    int const x_330 = i_1;
    int const x_332 = (*(tint_symbol_6)).arr[x_330];
    (*(tint_symbol_5)).arr[x_329] = x_332;
    {
      int const x_334 = i_1;
      i_1 = (x_334 + 1);
    }
  }
  return;
}

void mergeSort_(thread tint_array_wrapper* const tint_symbol_7, thread tint_array_wrapper* const tint_symbol_8) {
  int low = 0;
  int high = 0;
  int m = 0;
  int i_2 = 0;
  int from_1 = 0;
  int mid_1 = 0;
  int to_1 = 0;
  int param = 0;
  int param_1 = 0;
  int param_2 = 0;
  low = 0;
  high = 9;
  m = 1;
  while (true) {
    int const x_341 = m;
    int const x_342 = high;
    if ((x_341 <= x_342)) {
    } else {
      break;
    }
    int const x_345 = low;
    i_2 = x_345;
    while (true) {
      int const x_350 = i_2;
      int const x_351 = high;
      if ((x_350 < x_351)) {
      } else {
        break;
      }
      int const x_354 = i_2;
      from_1 = x_354;
      int const x_355 = i_2;
      int const x_356 = m;
      mid_1 = ((x_355 + x_356) - 1);
      int const x_359 = i_2;
      int const x_360 = m;
      int const x_364 = high;
      to_1 = min(((x_359 + (2 * x_360)) - 1), x_364);
      int const x_366 = from_1;
      param = x_366;
      int const x_367 = mid_1;
      param_1 = x_367;
      int const x_368 = to_1;
      param_2 = x_368;
      merge_i1_i1_i1_(&(param), &(param_1), &(param_2), tint_symbol_7, tint_symbol_8);
      {
        int const x_370 = m;
        int const x_372 = i_2;
        i_2 = (x_372 + (2 * x_370));
      }
    }
    {
      int const x_374 = m;
      m = (2 * x_374);
    }
  }
  return;
}

void main_1(constant buf0& x_28, thread tint_array_wrapper* const tint_symbol_9, thread tint_array_wrapper* const tint_symbol_10, thread float4* const tint_symbol_11, thread float4* const tint_symbol_12) {
  int i_3 = 0;
  int j_1 = 0;
  float grey = 0.0f;
  float const x_86 = x_28.injectionSwitch.x;
  i_3 = int(x_86);
  while (true) {
    int const x_92 = i_3;
    switch(x_92) {
      case 9: {
        int const x_122 = i_3;
        (*(tint_symbol_9)).arr[x_122] = -5;
        break;
      }
      case 8: {
        int const x_120 = i_3;
        (*(tint_symbol_9)).arr[x_120] = -4;
        break;
      }
      case 7: {
        int const x_118 = i_3;
        (*(tint_symbol_9)).arr[x_118] = -3;
        break;
      }
      case 6: {
        int const x_116 = i_3;
        (*(tint_symbol_9)).arr[x_116] = -2;
        break;
      }
      case 5: {
        int const x_114 = i_3;
        (*(tint_symbol_9)).arr[x_114] = -1;
        break;
      }
      case 4: {
        int const x_112 = i_3;
        (*(tint_symbol_9)).arr[x_112] = 0;
        break;
      }
      case 3: {
        int const x_110 = i_3;
        (*(tint_symbol_9)).arr[x_110] = 1;
        break;
      }
      case 2: {
        int const x_108 = i_3;
        (*(tint_symbol_9)).arr[x_108] = 2;
        break;
      }
      case 1: {
        int const x_106 = i_3;
        (*(tint_symbol_9)).arr[x_106] = 3;
        break;
      }
      case 0: {
        int const x_104 = i_3;
        (*(tint_symbol_9)).arr[x_104] = 4;
        break;
      }
      default: {
        break;
      }
    }
    int const x_124 = i_3;
    i_3 = (x_124 + 1);
    {
      int const x_126 = i_3;
      if ((x_126 < 10)) {
      } else {
        break;
      }
    }
  }
  j_1 = 0;
  while (true) {
    int const x_132 = j_1;
    bool const x_133 = (x_132 < 10);
    float const x_135 = x_28.injectionSwitch.x;
    if (!((x_135 <= 1.0f))) {
      grey = 1.0f;
    }
    if (x_133) {
    } else {
      break;
    }
    int const x_140 = j_1;
    int const x_141 = j_1;
    int const x_143 = (*(tint_symbol_9)).arr[x_141];
    (*(tint_symbol_10)).arr[x_140] = x_143;
    {
      int const x_145 = j_1;
      j_1 = (x_145 + 1);
    }
  }
  mergeSort_(tint_symbol_9, tint_symbol_10);
  float const x_149 = (*(tint_symbol_11)).y;
  if ((int(x_149) < 30)) {
    int const x_156 = (*(tint_symbol_9)).arr[0];
    grey = (0.5f + (float(x_156) / 10.0f));
  } else {
    float const x_161 = (*(tint_symbol_11)).y;
    if ((int(x_161) < 60)) {
      int const x_168 = (*(tint_symbol_9)).arr[1];
      grey = (0.5f + (float(x_168) / 10.0f));
    } else {
      float const x_173 = (*(tint_symbol_11)).y;
      if ((int(x_173) < 90)) {
        int const x_180 = (*(tint_symbol_9)).arr[2];
        grey = (0.5f + (float(x_180) / 10.0f));
      } else {
        float const x_185 = (*(tint_symbol_11)).y;
        if ((int(x_185) < 120)) {
          int const x_192 = (*(tint_symbol_9)).arr[3];
          grey = (0.5f + (float(x_192) / 10.0f));
        } else {
          float const x_197 = (*(tint_symbol_11)).y;
          if ((int(x_197) < 150)) {
            discard_fragment();
          } else {
            float const x_204 = (*(tint_symbol_11)).y;
            if ((int(x_204) < 180)) {
              int const x_211 = (*(tint_symbol_9)).arr[5];
              grey = (0.5f + (float(x_211) / 10.0f));
            } else {
              float const x_216 = (*(tint_symbol_11)).y;
              if ((int(x_216) < 210)) {
                int const x_223 = (*(tint_symbol_9)).arr[6];
                grey = (0.5f + (float(x_223) / 10.0f));
              } else {
                float const x_228 = (*(tint_symbol_11)).y;
                if ((int(x_228) < 240)) {
                  int const x_235 = (*(tint_symbol_9)).arr[7];
                  grey = (0.5f + (float(x_235) / 10.0f));
                } else {
                  float const x_240 = (*(tint_symbol_11)).y;
                  bool guard233 = true;
                  if ((int(x_240) < 270)) {
                    int const x_247 = (*(tint_symbol_9)).arr[8];
                    grey = (0.5f + (float(x_247) / 10.0f));
                    guard233 = false;
                  } else {
                    if (guard233) {
                      float const x_252 = x_28.injectionSwitch.y;
                      if (!((0.0f < x_252))) {
                        guard233 = false;
                      }
                      if (guard233) {
                        discard_fragment();
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
  float const x_255 = grey;
  float3 const x_256 = float3(x_255, x_255, x_255);
  *(tint_symbol_12) = float4(x_256.x, x_256.y, x_256.z, 1.0f);
  return;
}

fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_28 [[buffer(0)]]) {
  thread float4 tint_symbol_13 = 0.0f;
  thread tint_array_wrapper tint_symbol_14 = {};
  thread tint_array_wrapper tint_symbol_15 = {};
  thread float4 tint_symbol_16 = 0.0f;
  tint_symbol_13 = gl_FragCoord_param;
  main_1(x_28, &(tint_symbol_14), &(tint_symbol_15), &(tint_symbol_13), &(tint_symbol_16));
  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_16};
  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
  return tint_symbol_4;
}

