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