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