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