[[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_283 : i32;
    var x_284 : i32;
    var x_303 : i32;
    var x_304 : i32;
    var x_318 : i32;
    var x_322 : i32;
    var x_337 : i32;
    var x_336 : i32;
    var x_350 : i32;
    var x_349 : i32;
    var x_364 : i32;
    var x_363 : i32;
    var x_285_phi : i32;
    var x_305_phi : i32;
    var x_326_phi : i32;
    var x_338_phi : i32;
    var x_351_phi : i32;
    var x_365_phi : i32;
    if ((1.0 >= 0.0)) {
    } else {
      continue;
    }
    let x_264 : i32 = i;
    let x_265 : i32 = *(mid);
    let x_267 : i32 = j;
    let x_268 : i32 = *(to);
    if (((x_264 <= x_265) && (x_267 <= x_268))) {
    } else {
      break;
    }
    let x_272 : i32 = i;
    let x_274 : i32 = data[x_272];
    let x_275 : i32 = j;
    let x_277 : i32 = data[x_275];
    let x_278 : bool = (x_274 < x_277);
    if (x_278) {
      x_283 = k;
      x_285_phi = x_283;
    } else {
      x_284 = 0;
      x_285_phi = x_284;
    }
    let x_285 : i32 = x_285_phi;
    let x_286 : i32 = (x_285 + 1);
    if (x_278) {
      k = x_286;
      let x_291 : f32 = x_28.injectionSwitch.x;
      if (!((1.0 <= x_291))) {
      } else {
        continue;
      }
    }
    let x_295 : f32 = x_28.injectionSwitch.y;
    if ((x_295 >= 0.0)) {
    } else {
      continue;
    }
    let x_298 : i32 = 0;
    if (x_278) {
      x_303 = i;
      x_305_phi = x_303;
    } else {
      x_304 = 0;
      x_305_phi = x_304;
    }
    let x_305 : i32 = x_305_phi;
    let x_307 : i32 = select(x_298, x_305, x_278);
    if (x_278) {
      i = (x_307 + 1);
    }
    let x_313 : i32 = 0;
    if (x_278) {
      x_318 = data[x_307];
      let x_320 : f32 = x_28.injectionSwitch.y;
      x_326_phi = x_318;
      if (!((0.0 <= x_320))) {
        continue;
      }
    } else {
      x_322 = 0;
      let x_324 : f32 = x_28.injectionSwitch.y;
      x_326_phi = x_322;
      if (!((x_324 < 0.0))) {
      } else {
        continue;
      }
    }
    let x_326 : i32 = x_326_phi;
    if (x_278) {
      temp[x_285] = select(x_313, x_326, x_278);
    }
    if (x_278) {
      x_337 = 0;
      x_338_phi = x_337;
    } else {
      x_336 = k;
      x_338_phi = x_336;
    }
    let x_338 : i32 = x_338_phi;
    if (x_278) {
    } else {
      k = (x_338 + 1);
    }
    let x_343 : f32 = x_28.injectionSwitch.x;
    if (!((1.0 <= x_343))) {
    } else {
      continue;
    }
    if (x_278) {
      x_350 = 0;
      x_351_phi = x_350;
    } else {
      x_349 = j;
      x_351_phi = x_349;
    }
    let x_351 : i32 = x_351_phi;
    let x_353 : i32 = 0;
    let x_355 : i32 = select(x_351, x_353, x_278);
    if (x_278) {
    } else {
      j = (x_355 + 1);
    }
    if (x_278) {
      x_364 = 0;
      x_365_phi = x_364;
    } else {
      x_363 = data[x_355];
      x_365_phi = x_363;
    }
    let x_365 : i32 = x_365_phi;
    if (x_278) {
    } else {
      temp[x_338] = x_365;
    }
  }
  loop {
    let x_374 : i32 = i;
    let x_376 : i32 = i;
    let x_377 : i32 = *(mid);
    if (((x_374 < 10) && (x_376 <= x_377))) {
    } else {
      break;
    }
    let x_381 : i32 = k;
    k = (x_381 + 1);
    let x_383 : i32 = i;
    i = (x_383 + 1);
    let x_386 : i32 = data[x_383];
    temp[x_381] = x_386;
  }
  let x_388 : i32 = *(from);
  i_1 = x_388;
  loop {
    let x_393 : i32 = i_1;
    let x_394 : i32 = *(to);
    if ((x_393 <= x_394)) {
    } else {
      break;
    }
    let x_397 : i32 = i_1;
    let x_398 : i32 = i_1;
    let x_400 : i32 = temp[x_398];
    data[x_397] = x_400;

    continuing {
      let x_402 : i32 = i_1;
      i_1 = (x_402 + 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_409 : i32 = m;
    let x_410 : i32 = high;
    if ((x_409 <= x_410)) {
    } else {
      break;
    }
    let x_413 : i32 = low;
    i_2 = x_413;
    loop {
      let x_418 : i32 = i_2;
      let x_419 : i32 = high;
      if ((x_418 < x_419)) {
      } else {
        break;
      }
      let x_422 : i32 = i_2;
      from_1 = x_422;
      let x_423 : i32 = i_2;
      let x_424 : i32 = m;
      mid_1 = ((x_423 + x_424) - 1);
      let x_427 : i32 = i_2;
      let x_428 : i32 = m;
      let x_432 : i32 = high;
      to_1 = min(((x_427 + (2 * x_428)) - 1), x_432);
      let x_434 : i32 = from_1;
      param = x_434;
      let x_435 : i32 = mid_1;
      param_1 = x_435;
      let x_436 : i32 = to_1;
      param_2 = x_436;
      merge_i1_i1_i1_(&(param), &(param_1), &(param_2));

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

    continuing {
      let x_442 : i32 = m;
      m = (2 * x_442);
    }
  }
  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);
}
