var<private> x_GLF_color : vec4<f32>;

fn func_() -> vec3<f32> {
  var v : vec2<f32>;
  var i : i32;
  var k : i32;
  v = vec2<f32>(1.0, 1.0);
  i = 0;
  k = 0;
  loop {
    let x_90 : i32 = k;
    if ((x_90 < 2)) {
    } else {
      break;
    }
    let x_94 : f32 = v.y;
    if (((x_94 + 1.0) > 4.0)) {
      break;
    }
    v.y = 1.0;
    let x_100 : i32 = i;
    i = (x_100 + 1);

    continuing {
      let x_102 : i32 = k;
      k = (x_102 + 1);
    }
  }
  let x_104 : i32 = i;
  if ((x_104 < 10)) {
    return vec3<f32>(1.0, 0.0, 0.0);
  } else {
    return vec3<f32>(0.0, 0.0, 1.0);
  }
  return vec3<f32>(0.0, 0.0, 0.0);
}

fn main_1() {
  var j : i32;
  var data : array<vec3<f32>, 2>;
  var j_1 : i32;
  var x_80 : bool;
  var x_81_phi : bool;
  j = 0;
  loop {
    let x_49 : i32 = j;
    if ((x_49 < 1)) {
    } else {
      break;
    }
    let x_52 : i32 = j;
    let x_53 : vec3<f32> = func_();
    data[x_52] = x_53;

    continuing {
      let x_55 : i32 = j;
      j = (x_55 + 1);
    }
  }
  j_1 = 0;
  loop {
    let x_61 : i32 = j_1;
    if ((x_61 < 1)) {
    } else {
      break;
    }
    let x_64 : i32 = j_1;
    let x_67 : vec3<f32> = func_();
    data[((4 * x_64) + 1)] = x_67;

    continuing {
      let x_69 : i32 = j_1;
      j_1 = (x_69 + 1);
    }
  }
  let x_72 : vec3<f32> = data[0];
  let x_74 : bool = all((x_72 == vec3<f32>(1.0, 0.0, 0.0)));
  x_81_phi = x_74;
  if (x_74) {
    let x_78 : vec3<f32> = data[1];
    x_80 = all((x_78 == vec3<f32>(1.0, 0.0, 0.0)));
    x_81_phi = x_80;
  }
  let x_81 : bool = x_81_phi;
  if (x_81) {
    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>;
};

[[stage(fragment)]]
fn main() -> main_out {
  main_1();
  return main_out(x_GLF_color);
}
