[[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);
}
