[[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_189 : f32;
  var x_261 : f32;
  var x_63_phi : i32;
  var x_102_phi : i32;
  var x_111_phi : i32;
  var x_262_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_99 : i32;
    var x_97 : i32;
    var x_95 : i32;
    var x_93 : i32;
    var x_91 : i32;
    var x_89 : i32;
    var x_87 : i32;
    var x_85 : i32;
    var x_83 : i32;
    var x_81 : i32;
    var x_64_phi : i32;
    let x_63 : i32 = x_63_phi;
    let x_68 : i32 = (x_63 + 1);
    x_64_phi = x_68;
    switch(x_63) {
      case 9: {
        data[x_63] = -5;
        x_99 = (x_63 + 1);
        x_64_phi = x_99;
      }
      case 8: {
        data[x_63] = -4;
        x_97 = (x_63 + 1);
        x_64_phi = x_97;
      }
      case 7: {
        data[x_63] = -3;
        x_95 = (x_63 + 1);
        x_64_phi = x_95;
      }
      case 6: {
        data[x_63] = -2;
        x_93 = (x_63 + 1);
        x_64_phi = x_93;
      }
      case 5: {
        data[x_63] = -1;
        x_91 = (x_63 + 1);
        x_64_phi = x_91;
      }
      case 4: {
        data[x_63] = 0;
        x_89 = (x_63 + 1);
        x_64_phi = x_89;
      }
      case 3: {
        data[x_63] = 1;
        x_87 = (x_63 + 1);
        x_64_phi = x_87;
      }
      case 2: {
        data[x_63] = 2;
        x_85 = (x_63 + 1);
        x_64_phi = x_85;
      }
      case 1: {
        data[x_63] = 3;
        x_83 = (x_63 + 1);
        x_64_phi = x_83;
      }
      case 0: {
        data[x_63] = 4;
        x_81 = (x_63 + 1);
        x_64_phi = x_81;
      }
      default: {
      }
    }
    let x_64 : i32 = x_64_phi;

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

    continuing {
      let x_108 : i32 = data[x_102];
      temp[x_102] = x_108;
      x_103 = (x_102 + 1);
      x_102_phi = x_103;
    }
  }
  x_111_phi = 1;
  loop {
    var x_112 : i32;
    var x_118_phi : i32;
    let x_111 : i32 = x_111_phi;
    if ((x_111 <= 9)) {
    } else {
      break;
    }
    x_118_phi = 0;
    loop {
      var x_130 : i32;
      var x_135 : i32;
      var x_130_phi : i32;
      var x_133_phi : i32;
      var x_135_phi : i32;
      var x_157_phi : i32;
      var x_160_phi : i32;
      var x_170_phi : i32;
      let x_118 : i32 = x_118_phi;
      if ((x_118 < 9)) {
      } else {
        break;
      }
      let x_124 : i32 = (x_118 + x_111);
      let x_125 : i32 = (x_124 - 1);
      let x_119 : i32 = (x_118 + (2 * x_111));
      let x_128 : i32 = min((x_119 - 1), 9);
      x_130_phi = x_118;
      x_133_phi = x_124;
      x_135_phi = x_118;
      loop {
        var x_150 : i32;
        var x_153 : i32;
        var x_134_phi : i32;
        var x_136_phi : i32;
        x_130 = x_130_phi;
        let x_133 : i32 = x_133_phi;
        x_135 = x_135_phi;
        if (((x_135 <= x_125) && (x_133 <= x_128))) {
        } else {
          break;
        }
        let x_142 : ptr<function, i32> = &(data[x_135]);
        let x_143 : i32 = *(x_142);
        let x_144 : ptr<function, i32> = &(data[x_133]);
        let x_145 : i32 = *(x_144);
        let x_131 : i32 = bitcast<i32>((x_130 + bitcast<i32>(1)));
        if ((x_143 < x_145)) {
          x_150 = bitcast<i32>((x_135 + bitcast<i32>(1)));
          let x_151 : i32 = *(x_142);
          temp[x_130] = x_151;
          x_134_phi = x_133;
          x_136_phi = x_150;
        } else {
          x_153 = (x_133 + 1);
          let x_154 : i32 = *(x_144);
          temp[x_130] = x_154;
          x_134_phi = x_153;
          x_136_phi = x_135;
        }
        let x_134 : i32 = x_134_phi;
        let x_136 : i32 = x_136_phi;

        continuing {
          x_130_phi = x_131;
          x_133_phi = x_134;
          x_135_phi = x_136;
        }
      }
      x_157_phi = x_130;
      x_160_phi = x_135;
      loop {
        var x_158 : i32;
        var x_161 : i32;
        let x_157 : i32 = x_157_phi;
        let x_160 : i32 = x_160_phi;
        if (((x_160 < 10) && (x_160 <= x_125))) {
        } else {
          break;
        }

        continuing {
          x_158 = (x_157 + 1);
          x_161 = (x_160 + 1);
          let x_167 : i32 = data[x_160];
          temp[x_157] = x_167;
          x_157_phi = x_158;
          x_160_phi = x_161;
        }
      }
      x_170_phi = x_118;
      loop {
        var x_171 : i32;
        let x_170 : i32 = x_170_phi;
        if ((x_170 <= x_128)) {
        } else {
          break;
        }

        continuing {
          let x_176 : i32 = temp[x_170];
          data[x_170] = x_176;
          x_171 = (x_170 + 1);
          x_170_phi = x_171;
        }
      }

      continuing {
        x_118_phi = x_119;
      }
    }

    continuing {
      x_112 = (2 * x_111);
      x_111_phi = x_112;
    }
  }
  var x_180 : i32;
  var x_198 : f32;
  var x_260 : f32;
  var x_261_phi : f32;
  let x_179 : f32 = gl_FragCoord.y;
  x_180 = i32(x_179);
  if ((x_180 < 30)) {
    let x_186 : i32 = data[0];
    x_189 = (0.5 + (f32(x_186) * 0.100000001));
    x_262_phi = x_189;
  } else {
    var x_207 : f32;
    var x_259 : f32;
    var x_260_phi : f32;
    if ((x_180 < 60)) {
      let x_195 : i32 = data[1];
      x_198 = (0.5 + (f32(x_195) * 0.100000001));
      x_261_phi = x_198;
    } else {
      var x_216 : f32;
      var x_258 : f32;
      var x_259_phi : f32;
      if ((x_180 < 90)) {
        let x_204 : i32 = data[2];
        x_207 = (0.5 + (f32(x_204) * 0.100000001));
        x_260_phi = x_207;
      } else {
        if ((x_180 < 120)) {
          let x_213 : i32 = data[3];
          x_216 = (0.5 + (f32(x_213) * 0.100000001));
          x_259_phi = x_216;
        } else {
          var x_229 : f32;
          var x_257 : f32;
          var x_258_phi : f32;
          if ((x_180 < 150)) {
            discard;
          } else {
            var x_238 : f32;
            var x_256 : f32;
            var x_257_phi : f32;
            if ((x_180 < 180)) {
              let x_226 : i32 = data[5];
              x_229 = (0.5 + (f32(x_226) * 0.100000001));
              x_258_phi = x_229;
            } else {
              var x_247 : f32;
              var x_255 : f32;
              var x_256_phi : f32;
              if ((x_180 < 210)) {
                let x_235 : i32 = data[6];
                x_238 = (0.5 + (f32(x_235) * 0.100000001));
                x_257_phi = x_238;
              } else {
                if ((x_180 < 240)) {
                  let x_244 : i32 = data[7];
                  x_247 = (0.5 + (f32(x_244) * 0.100000001));
                  x_256_phi = x_247;
                } else {
                  if ((x_180 < 270)) {
                  } else {
                    discard;
                  }
                  let x_252 : i32 = data[8];
                  x_255 = (0.5 + (f32(x_252) * 0.100000001));
                  x_256_phi = x_255;
                }
                x_256 = x_256_phi;
                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;
  }
  let x_262 : f32 = x_262_phi;
  x_GLF_color = vec4<f32>(x_262, x_262, x_262, 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);
}
