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

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

var<private> gl_FragCoord : vec4<f32>;

var<private> x_GLF_color : vec4<f32>;

fn drawShape_vf2_(pos : ptr<function, vec2<f32>>) -> vec3<f32> {
  var c2 : bool;
  var c3 : bool;
  var c4 : bool;
  var c5 : bool;
  var c6 : bool;
  var GLF_live4i : i32;
  var GLF_live4_looplimiter5 : i32;
  var GLF_live7m42 : mat4x2<f32>;
  var GLF_live7m33 : mat3x3<f32>;
  var GLF_live7cols : i32;
  var GLF_live7_looplimiter3 : i32;
  var GLF_live7rows : i32;
  var GLF_live7_looplimiter2 : i32;
  var GLF_live7_looplimiter1 : i32;
  var GLF_live7c : i32;
  var GLF_live7r : i32;
  var GLF_live7_looplimiter0 : i32;
  var GLF_live7sum_index : i32;
  var GLF_live7_looplimiter7 : i32;
  var GLF_live7cols_1 : i32;
  var GLF_live7rows_1 : i32;
  var GLF_live7sums : array<f32, 9>;
  var GLF_live7c_1 : i32;
  var GLF_live7r_1 : i32;
  var x_180 : i32;
  var indexable : mat3x3<f32>;
  let x_182 : f32 = (*(pos)).x;
  c2 = (x_182 > 1.0);
  let x_184 : bool = c2;
  if (x_184) {
    return vec3<f32>(1.0, 1.0, 1.0);
  }
  let x_188 : f32 = (*(pos)).y;
  c3 = (x_188 < 1.0);
  let x_190 : bool = c3;
  if (x_190) {
    return vec3<f32>(1.0, 1.0, 1.0);
  }
  let x_194 : f32 = (*(pos)).y;
  c4 = (x_194 > 1.0);
  let x_196 : bool = c4;
  if (x_196) {
    return vec3<f32>(1.0, 1.0, 1.0);
  }
  let x_200 : f32 = (*(pos)).x;
  c5 = (x_200 < 1.0);
  let x_202 : bool = c5;
  if (x_202) {
    return vec3<f32>(1.0, 1.0, 1.0);
  }
  let x_206 : f32 = (*(pos)).x;
  c6 = ((x_206 + 1.0) > 1.0);
  let x_209 : bool = c6;
  if (x_209) {
    return vec3<f32>(1.0, 1.0, 1.0);
  }
  GLF_live4i = 0;
  loop {
    let x_39 : i32 = GLF_live4i;
    if ((x_39 < 4)) {
    } else {
      break;
    }
    let x_40 : i32 = GLF_live4_looplimiter5;
    if ((x_40 >= 7)) {
      break;
    }
    let x_41 : i32 = GLF_live4_looplimiter5;
    GLF_live4_looplimiter5 = (x_41 + 1);
    GLF_live7m42 = mat4x2<f32>(vec2<f32>(1.0, 0.0), vec2<f32>(0.0, 1.0), vec2<f32>(0.0, 0.0), vec2<f32>(1.0, 0.0));
    GLF_live7m33 = mat3x3<f32>(vec3<f32>(1.0, 0.0, 0.0), vec3<f32>(0.0, 1.0, 0.0), vec3<f32>(0.0, 0.0, 1.0));
    GLF_live7cols = 2;
    loop {
      let x_43 : i32 = GLF_live7cols;
      if ((x_43 < 4)) {
      } else {
        break;
      }
      let x_44 : i32 = GLF_live7_looplimiter3;
      if ((x_44 >= 7)) {
        break;
      }
      let x_45 : i32 = GLF_live7_looplimiter3;
      GLF_live7_looplimiter3 = (x_45 + 1);
      GLF_live7rows = 2;
      loop {
        let x_47 : i32 = GLF_live7rows;
        if ((x_47 < 4)) {
        } else {
          break;
        }
        let x_48 : i32 = GLF_live7_looplimiter2;
        if ((x_48 >= 7)) {
          break;
        }
        let x_49 : i32 = GLF_live7_looplimiter2;
        GLF_live7_looplimiter2 = (x_49 + 1);
        GLF_live7_looplimiter1 = 0;
        GLF_live7c = 0;
        loop {
          let x_51 : i32 = GLF_live7c;
          if ((x_51 < 3)) {
          } else {
            break;
          }
          let x_52 : i32 = GLF_live7_looplimiter1;
          if ((x_52 >= 7)) {
            break;
          }
          let x_53 : i32 = GLF_live7_looplimiter1;
          GLF_live7_looplimiter1 = (x_53 + 1);
          GLF_live7r = 0;
          loop {
            let x_55 : i32 = GLF_live7r;
            if ((x_55 < 2)) {
            } else {
              break;
            }
            let x_56 : i32 = GLF_live7_looplimiter0;
            if ((x_56 >= 7)) {
              break;
            }
            let x_57 : i32 = GLF_live7_looplimiter0;
            GLF_live7_looplimiter0 = (x_57 + 1);
            let x_59 : i32 = GLF_live7c;
            let x_60 : i32 = GLF_live7c;
            let x_61 : i32 = GLF_live7c;
            let x_62 : i32 = GLF_live7r;
            let x_63 : i32 = GLF_live7r;
            let x_64 : i32 = GLF_live7r;
            GLF_live7m33[select(0, x_61, ((x_59 >= 0) && (x_60 < 3)))][select(0, x_64, ((x_62 >= 0) && (x_63 < 3)))] = 1.0;
            let x_267 : f32 = x_25.injectionSwitch.y;
            if ((0.0 > x_267)) {
            } else {
              let x_65 : i32 = GLF_live7c;
              let x_66 : i32 = GLF_live7c;
              let x_67 : i32 = GLF_live7c;
              let x_68 : i32 = GLF_live7r;
              let x_69 : i32 = GLF_live7r;
              let x_70 : i32 = GLF_live7r;
              GLF_live7m42[select(0, x_67, ((x_65 >= 0) && (x_66 < 4)))][select(0, x_70, ((x_68 >= 0) && (x_69 < 2)))] = 1.0;
            }

            continuing {
              let x_71 : i32 = GLF_live7r;
              GLF_live7r = (x_71 + 1);
            }
          }

          continuing {
            let x_73 : i32 = GLF_live7c;
            GLF_live7c = (x_73 + 1);
          }
        }

        continuing {
          let x_75 : i32 = GLF_live7rows;
          GLF_live7rows = (x_75 + 1);
        }
      }

      continuing {
        let x_77 : i32 = GLF_live7cols;
        GLF_live7cols = (x_77 + 1);
      }
    }
    GLF_live7sum_index = 0;
    GLF_live7_looplimiter7 = 0;
    GLF_live7cols_1 = 2;
    loop {
      let x_79 : i32 = GLF_live7cols_1;
      if ((x_79 < 4)) {
      } else {
        break;
      }
      let x_80 : i32 = GLF_live7_looplimiter7;
      if ((x_80 >= 7)) {
        break;
      }
      let x_81 : i32 = GLF_live7_looplimiter7;
      GLF_live7_looplimiter7 = (x_81 + 1);
      GLF_live7rows_1 = 2;
      let x_83 : i32 = GLF_live7sum_index;
      let x_84 : i32 = GLF_live7sum_index;
      let x_85 : i32 = GLF_live7sum_index;
      GLF_live7sums[select(0, x_85, ((x_83 >= 0) && (x_84 < 9)))] = 0.0;
      GLF_live7c_1 = 0;
      loop {
        let x_86 : i32 = GLF_live7c_1;
        if ((x_86 < 1)) {
        } else {
          break;
        }
        GLF_live7r_1 = 0;
        loop {
          let x_87 : i32 = GLF_live7r_1;
          let x_88 : i32 = GLF_live7rows_1;
          if ((x_87 < x_88)) {
          } else {
            break;
          }
          let x_89 : i32 = GLF_live7sum_index;
          let x_90 : i32 = GLF_live7sum_index;
          let x_91 : i32 = GLF_live7sum_index;
          let x_310 : i32 = select(0, x_91, ((x_89 >= 0) && (x_90 < 9)));
          let x_311 : mat3x3<f32> = GLF_live7m33;
          let x_312 : mat3x3<f32> = transpose(x_311);
          let x_92 : i32 = GLF_live7c_1;
          if ((x_92 < 3)) {
            x_180 = 1;
          } else {
            let x_318 : f32 = x_25.injectionSwitch.x;
            x_180 = i32(x_318);
          }
          let x_320 : i32 = x_180;
          let x_93 : i32 = GLF_live7r_1;
          indexable = x_312;
          let x_324 : f32 = indexable[x_320][select(0, 1, (x_93 < 3))];
          let x_326 : f32 = GLF_live7sums[x_310];
          GLF_live7sums[x_310] = (x_326 + x_324);
          let x_94 : i32 = GLF_live7sum_index;
          let x_95 : i32 = GLF_live7sum_index;
          let x_96 : i32 = GLF_live7sum_index;
          let x_332 : i32 = select(0, x_96, ((x_94 >= 0) && (x_95 < 9)));
          let x_97 : i32 = GLF_live7r_1;
          let x_334 : f32 = GLF_live7m42[1][x_97];
          let x_336 : f32 = GLF_live7sums[x_332];
          GLF_live7sums[x_332] = (x_336 + x_334);

          continuing {
            let x_98 : i32 = GLF_live7r_1;
            GLF_live7r_1 = (x_98 + 1);
          }
        }

        continuing {
          let x_100 : i32 = GLF_live7c_1;
          GLF_live7c_1 = (x_100 + 1);
        }
      }
      let x_102 : i32 = GLF_live7sum_index;
      GLF_live7sum_index = (x_102 + 1);

      continuing {
        let x_104 : i32 = GLF_live7cols_1;
        GLF_live7cols_1 = (x_104 + 1);
      }
    }

    continuing {
      let x_106 : i32 = GLF_live4i;
      GLF_live4i = (x_106 + 1);
    }
  }
  return vec3<f32>(1.0, 1.0, 1.0);
}

fn main_1() {
  var position : vec2<f32>;
  var param : vec2<f32>;
  var param_1 : vec2<f32>;
  var i : i32;
  var param_2 : vec2<f32>;
  let x_161 : f32 = x_25.injectionSwitch.x;
  if ((x_161 >= 2.0)) {
    let x_165 : vec4<f32> = gl_FragCoord;
    position = vec2<f32>(x_165.x, x_165.y);
    let x_167 : vec2<f32> = position;
    param = x_167;
    let x_168 : vec3<f32> = drawShape_vf2_(&(param));
    let x_169 : vec2<f32> = position;
    param_1 = x_169;
    let x_170 : vec3<f32> = drawShape_vf2_(&(param_1));
    i = 25;
    loop {
      let x_108 : i32 = i;
      if ((x_108 > 0)) {
      } else {
        break;
      }
      let x_177 : vec2<f32> = position;
      param_2 = x_177;
      let x_178 : vec3<f32> = drawShape_vf2_(&(param_2));

      continuing {
        let x_109 : i32 = i;
        i = (x_109 - 1);
      }
    }
  }
  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 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);
}
