var<private> x_GLF_color : vec4<f32>;

fn main_1() {
  var x_29 : bool = false;
  var x_30 : f32;
  var x_31 : f32;
  var x_32 : f32;
  var x_33 : bool = false;
  var x_34 : f32;
  var x_35 : f32;
  var x_36 : f32;
  var f : f32;
  var i : f32;
  var param : f32;
  var param_1 : f32;
  f = 0.0;
  i = 0.0;
  loop {
    let x_38 : f32 = i;
    param = x_38;
    x_33 = false;
    loop {
      let x_41 : f32 = param;
      x_35 = x_41;
      loop {
        let x_48 : f32 = x_35;
        let x_49 : f32 = param;
        if ((x_48 == x_49)) {
          let x_53 : f32 = x_35;
          x_33 = true;
          x_34 = x_53;
          break;
        }
        let x_54 : f32 = x_35;
        x_35 = (x_54 + 1.0);

        continuing {
          let x_56 : f32 = x_35;
          let x_57 : f32 = param;
          if ((x_56 < x_57)) {
          } else {
            break;
          }
        }
      }
      let x_59 : bool = x_33;
      if (x_59) {
        break;
      }
      x_33 = true;
      x_34 = 0.0;
      break;
    }
    let x_61 : f32 = x_34;
    x_36 = x_61;
    f = x_61;
    param_1 = 1.0;
    x_29 = false;
    loop {
      let x_63 : f32 = param_1;
      x_31 = x_63;
      loop {
        let x_70 : f32 = x_31;
        let x_71 : f32 = param_1;
        if ((x_70 == x_71)) {
          let x_75 : f32 = x_31;
          x_29 = true;
          x_30 = x_75;
          break;
        }
        let x_76 : f32 = x_31;
        x_31 = (x_76 + 1.0);

        continuing {
          let x_78 : f32 = x_31;
          let x_79 : f32 = param_1;
          if ((x_78 < x_79)) {
          } else {
            break;
          }
        }
      }
      let x_81 : bool = x_29;
      if (x_81) {
        break;
      }
      x_29 = true;
      x_30 = 0.0;
      break;
    }
    let x_83 : f32 = x_30;
    x_32 = x_83;
    let x_84 : f32 = i;
    let x_85 : f32 = (x_84 + x_83);
    i = x_85;
    if ((x_85 < 6.0)) {
    } else {
      break;
    }
  }
  let x_87 : f32 = f;
  if ((x_87 == 5.0)) {
    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
  } else {
    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
  }
  return;
}

struct main_out {
  @location(0)
  x_GLF_color_1 : vec4<f32>,
}

@fragment
fn main() -> main_out {
  main_1();
  return main_out(x_GLF_color);
}

fn func_f1_(x : ptr<function, f32>) -> f32 {
  var x_93 : bool = false;
  var x_94 : f32;
  var a : f32;
  loop {
    let x_96 : f32 = *(x);
    a = x_96;
    loop {
      let x_103 : f32 = a;
      let x_104 : f32 = *(x);
      if ((x_103 == x_104)) {
        let x_108 : f32 = a;
        x_93 = true;
        x_94 = x_108;
        break;
      }
      let x_109 : f32 = a;
      a = (x_109 + 1.0);

      continuing {
        let x_111 : f32 = a;
        let x_112 : f32 = *(x);
        if ((x_111 < x_112)) {
        } else {
          break;
        }
      }
    }
    let x_114 : bool = x_93;
    if (x_114) {
      break;
    }
    x_93 = true;
    x_94 = 0.0;
    break;
  }
  let x_116 : f32 = x_94;
  return x_116;
}
