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

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

var<private> gl_FragCoord : vec4<f32>;

var<private> x_GLF_color : vec4<f32>;

fn main_1() {
  var temp : array<i32, 10>;
  var data : array<i32, 10>;
  var x_190 : f32;
  var x_262 : f32;
  var x_63_phi : i32;
  var x_103_phi : i32;
  var x_112_phi : i32;
  var x_263_phi : f32;
  let x_60 : f32 = x_8.injectionSwitch.x;
  let x_61 : i32 = i32(x_60);
  x_63_phi = x_61;
  loop {
    var x_100 : i32;
    var x_98 : i32;
    var x_96 : i32;
    var x_94 : i32;
    var x_92 : i32;
    var x_90 : i32;
    var x_88 : i32;
    var x_86 : i32;
    var x_84 : i32;
    var x_82 : i32;
    var x_64_phi : i32;
    let x_63 : i32 = x_63_phi;
    let x_68 : array<i32, 10> = data;
    data = array<i32, 10>(0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
    data = x_68;
    let x_69 : i32 = (x_63 + 1);
    x_64_phi = x_69;
    switch(x_63) {
      case 9: {
        data[x_63] = -5;
        x_100 = (x_63 + 1);
        x_64_phi = x_100;
      }
      case 8: {
        data[x_63] = -4;
        x_98 = (x_63 + 1);
        x_64_phi = x_98;
      }
      case 7: {
        data[x_63] = -3;
        x_96 = (x_63 + 1);
        x_64_phi = x_96;
      }
      case 6: {
        data[x_63] = -2;
        x_94 = (x_63 + 1);
        x_64_phi = x_94;
      }
      case 5: {
        data[x_63] = -1;
        x_92 = (x_63 + 1);
        x_64_phi = x_92;
      }
      case 4: {
        data[x_63] = 0;
        x_90 = (x_63 + 1);
        x_64_phi = x_90;
      }
      case 3: {
        data[x_63] = 1;
        x_88 = (x_63 + 1);
        x_64_phi = x_88;
      }
      case 2: {
        data[x_63] = 2;
        x_86 = (x_63 + 1);
        x_64_phi = x_86;
      }
      case 1: {
        data[x_63] = 3;
        x_84 = (x_63 + 1);
        x_64_phi = x_84;
      }
      case 0: {
        data[x_63] = 4;
        x_82 = (x_63 + 1);
        x_64_phi = x_82;
      }
      default: {
      }
    }
    let x_64 : i32 = x_64_phi;

    continuing {
      x_63_phi = x_64;
      if ((x_64 < 10)) {
      } else {
        break;
      }
    }
  }
  x_103_phi = 0;
  loop {
    var x_104 : i32;
    let x_103 : i32 = x_103_phi;
    if ((x_103 < 10)) {
    } else {
      break;
    }

    continuing {
      let x_109 : i32 = data[x_103];
      temp[x_103] = x_109;
      x_104 = (x_103 + 1);
      x_103_phi = x_104;
    }
  }
  x_112_phi = 1;
  loop {
    var x_113 : i32;
    var x_119_phi : i32;
    let x_112 : i32 = x_112_phi;
    if ((x_112 <= 9)) {
    } else {
      break;
    }
    x_119_phi = 0;
    loop {
      var x_131 : i32;
      var x_136 : i32;
      var x_131_phi : i32;
      var x_134_phi : i32;
      var x_136_phi : i32;
      var x_158_phi : i32;
      var x_161_phi : i32;
      var x_171_phi : i32;
      let x_119 : i32 = x_119_phi;
      if ((x_119 < 9)) {
      } else {
        break;
      }
      let x_125 : i32 = (x_119 + x_112);
      let x_126 : i32 = (x_125 - 1);
      let x_120 : i32 = (x_119 + (2 * x_112));
      let x_129 : i32 = min((x_120 - 1), 9);
      x_131_phi = x_119;
      x_134_phi = x_125;
      x_136_phi = x_119;
      loop {
        var x_151 : i32;
        var x_154 : i32;
        var x_135_phi : i32;
        var x_137_phi : i32;
        x_131 = x_131_phi;
        let x_134 : i32 = x_134_phi;
        x_136 = x_136_phi;
        if (((x_136 <= x_126) && (x_134 <= x_129))) {
        } else {
          break;
        }
        let x_143 : ptr<function, i32> = &(data[x_136]);
        let x_144 : i32 = *(x_143);
        let x_145 : ptr<function, i32> = &(data[x_134]);
        let x_146 : i32 = *(x_145);
        let x_132 : i32 = bitcast<i32>((x_131 + bitcast<i32>(1)));
        if ((x_144 < x_146)) {
          x_151 = bitcast<i32>((x_136 + bitcast<i32>(1)));
          let x_152 : i32 = *(x_143);
          temp[x_131] = x_152;
          x_135_phi = x_134;
          x_137_phi = x_151;
        } else {
          x_154 = (x_134 + 1);
          let x_155 : i32 = *(x_145);
          temp[x_131] = x_155;
          x_135_phi = x_154;
          x_137_phi = x_136;
        }
        let x_135 : i32 = x_135_phi;
        let x_137 : i32 = x_137_phi;

        continuing {
          x_131_phi = x_132;
          x_134_phi = x_135;
          x_136_phi = x_137;
        }
      }
      x_158_phi = x_131;
      x_161_phi = x_136;
      loop {
        var x_159 : i32;
        var x_162 : i32;
        let x_158 : i32 = x_158_phi;
        let x_161 : i32 = x_161_phi;
        if (((x_161 < 10) && (x_161 <= x_126))) {
        } else {
          break;
        }

        continuing {
          x_159 = (x_158 + 1);
          x_162 = (x_161 + 1);
          let x_168 : i32 = data[x_161];
          temp[x_158] = x_168;
          x_158_phi = x_159;
          x_161_phi = x_162;
        }
      }
      x_171_phi = x_119;
      loop {
        var x_172 : i32;
        let x_171 : i32 = x_171_phi;
        if ((x_171 <= x_129)) {
        } else {
          break;
        }

        continuing {
          let x_177 : i32 = temp[x_171];
          data[x_171] = x_177;
          x_172 = (x_171 + 1);
          x_171_phi = x_172;
        }
      }

      continuing {
        x_119_phi = x_120;
      }
    }

    continuing {
      x_113 = (2 * x_112);
      x_112_phi = x_113;
    }
  }
  var x_181 : i32;
  var x_199 : f32;
  var x_261 : f32;
  var x_262_phi : f32;
  let x_180 : f32 = gl_FragCoord.y;
  x_181 = i32(x_180);
  if ((x_181 < 30)) {
    let x_187 : i32 = data[0];
    x_190 = (0.5 + (f32(x_187) * 0.100000001));
    x_263_phi = x_190;
  } else {
    var x_208 : f32;
    var x_260 : f32;
    var x_261_phi : f32;
    if ((x_181 < 60)) {
      let x_196 : i32 = data[1];
      x_199 = (0.5 + (f32(x_196) * 0.100000001));
      x_262_phi = x_199;
    } else {
      var x_217 : f32;
      var x_259 : f32;
      var x_260_phi : f32;
      if ((x_181 < 90)) {
        let x_205 : i32 = data[2];
        x_208 = (0.5 + (f32(x_205) * 0.100000001));
        x_261_phi = x_208;
      } else {
        if ((x_181 < 120)) {
          let x_214 : i32 = data[3];
          x_217 = (0.5 + (f32(x_214) * 0.100000001));
          x_260_phi = x_217;
        } else {
          var x_230 : f32;
          var x_258 : f32;
          var x_259_phi : f32;
          if ((x_181 < 150)) {
            discard;
          } else {
            var x_239 : f32;
            var x_257 : f32;
            var x_258_phi : f32;
            if ((x_181 < 180)) {
              let x_227 : i32 = data[5];
              x_230 = (0.5 + (f32(x_227) * 0.100000001));
              x_259_phi = x_230;
            } else {
              var x_248 : f32;
              var x_256 : f32;
              var x_257_phi : f32;
              if ((x_181 < 210)) {
                let x_236 : i32 = data[6];
                x_239 = (0.5 + (f32(x_236) * 0.100000001));
                x_258_phi = x_239;
              } else {
                if ((x_181 < 240)) {
                  let x_245 : i32 = data[7];
                  x_248 = (0.5 + (f32(x_245) * 0.100000001));
                  x_257_phi = x_248;
                } else {
                  if ((x_181 < 270)) {
                  } else {
                    discard;
                  }
                  let x_253 : i32 = data[8];
                  x_256 = (0.5 + (f32(x_253) * 0.100000001));
                  x_257_phi = x_256;
                }
                x_257 = x_257_phi;
                x_258_phi = x_257;
              }
              x_258 = x_258_phi;
              x_259_phi = x_258;
            }
            x_259 = x_259_phi;
          }
          x_260_phi = x_259;
        }
        x_260 = x_260_phi;
        x_261_phi = x_260;
      }
      x_261 = x_261_phi;
      x_262_phi = x_261;
    }
    x_262 = x_262_phi;
    x_263_phi = x_262;
  }
  let x_263 : f32 = x_263_phi;
  x_GLF_color = vec4<f32>(x_263, x_263, x_263, 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);
}
