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