type RTArr = @stride(4) array<f32>;

struct doesNotMatter {
  x_compute_data : RTArr;
};

@group(0) @binding(0) var<storage, read_write> x_9 : doesNotMatter;

fn nb_mod_() -> f32 {
  var s : f32;
  var i : i32;
  var GLF_live1i : i32;
  var GLF_live1_looplimiter2 : i32;
  var x_51 : f32;
  var x_56_phi : f32;
  s = 0.0;
  i = 5;
  loop {
    var x_50 : f32;
    var x_51_phi : f32;
    x_56_phi = 0.0;
    if ((5 < 800)) {
    } else {
      break;
    }
    GLF_live1i = 0;
    loop {
      x_51_phi = 0.0;
      if ((0 < 20)) {
      } else {
        break;
      }
      if ((0 >= 5)) {
        x_50 = (0.0 + 1.0);
        s = x_50;
        x_51_phi = x_50;
        break;
      }
      return 42.0;
    }
    x_51 = x_51_phi;
    if ((f32(5) <= x_51)) {
      x_56_phi = x_51;
      break;
    }
    return 42.0;
  }
  let x_56 : f32 = x_56_phi;
  return x_56;
}

fn main_1() {
  let x_32 : f32 = nb_mod_();
  x_9.x_compute_data[0] = x_32;
  return;
}

@stage(compute) @workgroup_size(1, 1, 1)
fn main() {
  main_1();
}
