[[block]]
struct buf0 {
  injectionSwitch : vec2<f32>;
};

var<private> data : array<i32, 10>;

var<private> temp : array<i32, 10>;

[[group(0), binding(0)]] var<uniform> x_28 : buf0;

var<private> gl_FragCoord : vec4<f32>;

var<private> x_GLF_color : vec4<f32>;

fn merge_i1_i1_i1_(from : ptr<function, i32>, mid : ptr<function, i32>, to : ptr<function, i32>) {
  var k : i32;
  var i : i32;
  var j : i32;
  var i_1 : i32;
  let x_255 : i32 = *(from);
  k = x_255;
  let x_256 : i32 = *(from);
  i = x_256;
  let x_257 : i32 = *(mid);
  j = (x_257 + 1);
  loop {
    var x_285 : i32;
    var x_286 : i32;
    var x_305 : i32;
    var x_306 : i32;
    var x_320 : i32;
    var x_324 : i32;
    var x_339 : i32;
    var x_338 : i32;
    var x_352 : i32;
    var x_351 : i32;
    var x_366 : i32;
    var x_365 : i32;
    var x_287_phi : i32;
    var x_307_phi : i32;
    var x_328_phi : i32;
    var x_340_phi : i32;
    var x_353_phi : i32;
    var x_367_phi : i32;
    let x_261 : f32 = x_28.injectionSwitch.x;
    if ((1.0 >= x_261)) {
    } else {
      continue;
    }
    let x_266 : i32 = i;
    let x_267 : i32 = *(mid);
    let x_269 : i32 = j;
    let x_270 : i32 = *(to);
    if (((x_266 <= x_267) && (x_269 <= x_270))) {
    } else {
      break;
    }
    let x_274 : i32 = i;
    let x_276 : i32 = data[x_274];
    let x_277 : i32 = j;
    let x_279 : i32 = data[x_277];
    let x_280 : bool = (x_276 < x_279);
    if (x_280) {
      x_285 = k;
      x_287_phi = x_285;
    } else {
      x_286 = 0;
      x_287_phi = x_286;
    }
    let x_287 : i32 = x_287_phi;
    let x_288 : i32 = (x_287 + 1);
    if (x_280) {
      k = x_288;
      let x_293 : f32 = x_28.injectionSwitch.x;
      if (!((1.0 <= x_293))) {
      } else {
        continue;
      }
    }
    let x_297 : f32 = x_28.injectionSwitch.y;
    if ((x_297 >= 0.0)) {
    } else {
      continue;
    }
    let x_300 : i32 = 0;
    if (x_280) {
      x_305 = i;
      x_307_phi = x_305;
    } else {
      x_306 = 0;
      x_307_phi = x_306;
    }
    let x_307 : i32 = x_307_phi;
    let x_309 : i32 = select(x_300, x_307, x_280);
    if (x_280) {
      i = (x_309 + 1);
    }
    let x_315 : i32 = 0;
    if (x_280) {
      x_320 = data[x_309];
      let x_322 : f32 = x_28.injectionSwitch.y;
      x_328_phi = x_320;
      if (!((0.0 <= x_322))) {
        continue;
      }
    } else {
      x_324 = 0;
      let x_326 : f32 = x_28.injectionSwitch.y;
      x_328_phi = x_324;
      if (!((x_326 < 0.0))) {
      } else {
        continue;
      }
    }
    let x_328 : i32 = x_328_phi;
    if (x_280) {
      temp[x_287] = select(x_315, x_328, x_280);
    }
    if (x_280) {
      x_339 = 0;
      x_340_phi = x_339;
    } else {
      x_338 = k;
      x_340_phi = x_338;
    }
    let x_340 : i32 = x_340_phi;
    if (x_280) {
    } else {
      k = (x_340 + 1);
    }
    let x_345 : f32 = x_28.injectionSwitch.x;
    if (!((1.0 <= x_345))) {
    } else {
      continue;
    }
    if (x_280) {
      x_352 = 0;
      x_353_phi = x_352;
    } else {
      x_351 = j;
      x_353_phi = x_351;
    }
    let x_353 : i32 = x_353_phi;
    let x_355 : i32 = 0;
    let x_357 : i32 = select(x_353, x_355, x_280);
    if (x_280) {
    } else {
      j = (x_357 + 1);
    }
    if (x_280) {
      x_366 = 0;
      x_367_phi = x_366;
    } else {
      x_365 = data[x_357];
      x_367_phi = x_365;
    }
    let x_367 : i32 = x_367_phi;
    if (x_280) {
    } else {
      temp[x_340] = x_367;
    }
  }
  loop {
    let x_376 : i32 = i;
    let x_378 : i32 = i;
    let x_379 : i32 = *(mid);
    if (((x_376 < 10) && (x_378 <= x_379))) {
    } else {
      break;
    }
    let x_383 : i32 = k;
    k = (x_383 + 1);
    let x_385 : i32 = i;
    i = (x_385 + 1);
    let x_388 : i32 = data[x_385];
    temp[x_383] = x_388;
  }
  let x_390 : i32 = *(from);
  i_1 = x_390;
  loop {
    let x_395 : i32 = i_1;
    let x_396 : i32 = *(to);
    if ((x_395 <= x_396)) {
    } else {
      break;
    }
    let x_399 : i32 = i_1;
    let x_400 : i32 = i_1;
    let x_402 : i32 = temp[x_400];
    data[x_399] = x_402;

    continuing {
      let x_404 : i32 = i_1;
      i_1 = (x_404 + 1);
    }
  }
  return;
}

fn mergeSort_() {
  var low : i32;
  var high : i32;
  var m : i32;
  var i_2 : i32;
  var from_1 : i32;
  var mid_1 : i32;
  var to_1 : i32;
  var param : i32;
  var param_1 : i32;
  var param_2 : i32;
  low = 0;
  high = 9;
  m = 1;
  loop {
    let x_411 : i32 = m;
    let x_412 : i32 = high;
    if ((x_411 <= x_412)) {
    } else {
      break;
    }
    let x_415 : i32 = low;
    i_2 = x_415;
    loop {
      let x_420 : i32 = i_2;
      let x_421 : i32 = high;
      if ((x_420 < x_421)) {
      } else {
        break;
      }
      let x_424 : i32 = i_2;
      from_1 = x_424;
      let x_425 : i32 = i_2;
      let x_426 : i32 = m;
      mid_1 = ((x_425 + x_426) - 1);
      let x_429 : i32 = i_2;
      let x_430 : i32 = m;
      let x_434 : i32 = high;
      to_1 = min(((x_429 + (2 * x_430)) - 1), x_434);
      let x_436 : i32 = from_1;
      param = x_436;
      let x_437 : i32 = mid_1;
      param_1 = x_437;
      let x_438 : i32 = to_1;
      param_2 = x_438;
      merge_i1_i1_i1_(&(param), &(param_1), &(param_2));

      continuing {
        let x_440 : i32 = m;
        let x_442 : i32 = i_2;
        i_2 = (x_442 + (2 * x_440));
      }
    }

    continuing {
      let x_444 : i32 = m;
      m = (2 * x_444);
    }
  }
  return;
}

fn main_1() {
  var i_3 : i32;
  var j_1 : i32;
  var grey : f32;
  let x_88 : f32 = x_28.injectionSwitch.x;
  i_3 = i32(x_88);
  loop {
    let x_94 : i32 = i_3;
    switch(x_94) {
      case 9: {
        let x_124 : i32 = i_3;
        data[x_124] = -5;
      }
      case 8: {
        let x_122 : i32 = i_3;
        data[x_122] = -4;
      }
      case 7: {
        let x_120 : i32 = i_3;
        data[x_120] = -3;
      }
      case 6: {
        let x_118 : i32 = i_3;
        data[x_118] = -2;
      }
      case 5: {
        let x_116 : i32 = i_3;
        data[x_116] = -1;
      }
      case 4: {
        let x_114 : i32 = i_3;
        data[x_114] = 0;
      }
      case 3: {
        let x_112 : i32 = i_3;
        data[x_112] = 1;
      }
      case 2: {
        let x_110 : i32 = i_3;
        data[x_110] = 2;
      }
      case 1: {
        let x_108 : i32 = i_3;
        data[x_108] = 3;
      }
      case 0: {
        let x_106 : i32 = i_3;
        data[x_106] = 4;
      }
      default: {
      }
    }
    let x_126 : i32 = i_3;
    i_3 = (x_126 + 1);

    continuing {
      let x_128 : i32 = i_3;
      if ((x_128 < 10)) {
      } else {
        break;
      }
    }
  }
  j_1 = 0;
  loop {
    let x_134 : i32 = j_1;
    if ((x_134 < 10)) {
    } else {
      break;
    }
    let x_137 : i32 = j_1;
    let x_138 : i32 = j_1;
    let x_140 : i32 = data[x_138];
    temp[x_137] = x_140;

    continuing {
      let x_142 : i32 = j_1;
      j_1 = (x_142 + 1);
    }
  }
  mergeSort_();
  let x_146 : f32 = gl_FragCoord.y;
  if ((i32(x_146) < 30)) {
    let x_153 : i32 = data[0];
    grey = (0.5 + (f32(x_153) / 10.0));
  } else {
    let x_158 : f32 = gl_FragCoord.y;
    if ((i32(x_158) < 60)) {
      let x_165 : i32 = data[1];
      grey = (0.5 + (f32(x_165) / 10.0));
    } else {
      let x_170 : f32 = gl_FragCoord.y;
      if ((i32(x_170) < 90)) {
        let x_177 : i32 = data[2];
        grey = (0.5 + (f32(x_177) / 10.0));
      } else {
        let x_182 : f32 = gl_FragCoord.y;
        if ((i32(x_182) < 120)) {
          let x_189 : i32 = data[3];
          grey = (0.5 + (f32(x_189) / 10.0));
        } else {
          let x_194 : f32 = gl_FragCoord.y;
          if ((i32(x_194) < 150)) {
            discard;
          } else {
            let x_201 : f32 = gl_FragCoord.y;
            if ((i32(x_201) < 180)) {
              let x_208 : i32 = data[5];
              grey = (0.5 + (f32(x_208) / 10.0));
            } else {
              let x_213 : f32 = gl_FragCoord.y;
              if ((i32(x_213) < 210)) {
                let x_220 : i32 = data[6];
                grey = (0.5 + (f32(x_220) / 10.0));
              } else {
                let x_225 : f32 = gl_FragCoord.y;
                if ((i32(x_225) < 240)) {
                  let x_232 : i32 = data[7];
                  grey = (0.5 + (f32(x_232) / 10.0));
                } else {
                  let x_237 : f32 = gl_FragCoord.y;
                  if ((i32(x_237) < 270)) {
                    let x_244 : i32 = data[8];
                    grey = (0.5 + (f32(x_244) / 10.0));
                  } else {
                    discard;
                  }
                }
              }
            }
          }
        }
      }
    }
  }
  let x_248 : f32 = grey;
  let x_249 : vec3<f32> = vec3<f32>(x_248, x_248, x_248);
  x_GLF_color = vec4<f32>(x_249.x, x_249.y, x_249.z, 1.0);
  return;
}

struct main_out {
  [[location(0)]]
  x_GLF_color_1 : vec4<f32>;
};

[[stage(fragment)]]
fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
  gl_FragCoord = gl_FragCoord_param;
  main_1();
  return main_out(x_GLF_color);
}
