[[block]]
struct buf0 {
  resolution : vec2<f32>;
};

var<private> gl_FragCoord : vec4<f32>;

[[group(0), binding(0)]] var<uniform> x_6 : buf0;

var<private> x_GLF_color : vec4<f32>;

fn main_1() {
  var x_81 : array<vec4<f32>, 8> = array<vec4<f32>, 8>(vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0));
  var x_82 : array<vec4<f32>, 8>;
  var x_83 : array<vec4<f32>, 8>;
  var x_84 : array<vec4<f32>, 8>;
  var x_85 : array<vec4<f32>, 16>;
  var x_95 : vec4<f32>;
  var x_95_phi : vec4<f32>;
  var x_98_phi : i32;
  x_81 = array<vec4<f32>, 8>(vec4<f32>(4.0, 4.0, 20.0, 4.0), vec4<f32>(4.0, 4.0, 4.0, 20.0), vec4<f32>(4.0, 20.0, 20.0, 4.0), vec4<f32>(20.0, 4.0, 4.0, 8.0), vec4<f32>(8.0, 6.0, 4.0, 2.0), vec4<f32>(2.0, 12.0, 2.0, 4.0), vec4<f32>(16.0, 2.0, 4.0, 4.0), vec4<f32>(12.0, 22.0, 4.0, 4.0));
  let x_86 : array<vec4<f32>, 8> = x_81;
  let x_87 : vec4<f32> = gl_FragCoord;
  let x_90 : vec2<f32> = x_6.resolution;
  let x_93 : vec2<f32> = floor(((vec2<f32>(x_87.x, x_87.y) / x_90) * 32.0));
  x_95_phi = vec4<f32>(0.5, 0.5, 1.0, 1.0);
  x_98_phi = 0;
  loop {
    var x_143 : vec4<f32>;
    var x_99 : i32;
    var x_127_phi : bool;
    var x_96_phi : vec4<f32>;
    x_95 = x_95_phi;
    let x_98 : i32 = x_98_phi;
    if ((x_98 < 8)) {
    } else {
      break;
    }
    var x_104 : vec4<f32>;
    x_82 = x_86;
    x_104 = x_82[x_98];
    switch(0u) {
      default: {
        let x_107 : f32 = x_93.x;
        let x_108 : f32 = x_104.x;
        if ((x_107 < x_108)) {
          x_127_phi = false;
          break;
        }
        let x_112 : f32 = x_93.y;
        let x_113 : f32 = x_104.y;
        if ((x_112 < x_113)) {
          x_127_phi = false;
          break;
        }
        if ((x_107 > (x_108 + x_104.z))) {
          x_127_phi = false;
          break;
        }
        if ((x_112 > (x_113 + x_104.w))) {
          x_127_phi = false;
          break;
        }
        x_127_phi = true;
      }
    }
    let x_127 : bool = x_127_phi;
    x_96_phi = x_95;
    if (x_127) {
      x_83 = array<vec4<f32>, 8>(vec4<f32>(4.0, 4.0, 20.0, 4.0), vec4<f32>(4.0, 4.0, 4.0, 20.0), vec4<f32>(4.0, 20.0, 20.0, 4.0), vec4<f32>(20.0, 4.0, 4.0, 8.0), vec4<f32>(8.0, 6.0, 4.0, 2.0), vec4<f32>(2.0, 12.0, 2.0, 4.0), vec4<f32>(16.0, 2.0, 4.0, 4.0), vec4<f32>(12.0, 22.0, 4.0, 4.0));
      let x_131 : f32 = x_83[x_98].x;
      x_84 = array<vec4<f32>, 8>(vec4<f32>(4.0, 4.0, 20.0, 4.0), vec4<f32>(4.0, 4.0, 4.0, 20.0), vec4<f32>(4.0, 20.0, 20.0, 4.0), vec4<f32>(20.0, 4.0, 4.0, 8.0), vec4<f32>(8.0, 6.0, 4.0, 2.0), vec4<f32>(2.0, 12.0, 2.0, 4.0), vec4<f32>(16.0, 2.0, 4.0, 4.0), vec4<f32>(12.0, 22.0, 4.0, 4.0));
      let x_134 : f32 = x_84[x_98].y;
      let x_135 : array<vec4<f32>, 8> = x_81;
      x_81 = array<vec4<f32>, 8>(vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0));
      x_81 = x_135;
      x_85 = array<vec4<f32>, 16>(vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(0.5, 0.0, 0.0, 1.0), vec4<f32>(0.0, 0.5, 0.0, 1.0), vec4<f32>(0.5, 0.5, 0.0, 1.0), vec4<f32>(0.0, 0.0, 0.5, 1.0), vec4<f32>(0.5, 0.0, 0.5, 1.0), vec4<f32>(0.0, 0.5, 0.5, 1.0), vec4<f32>(0.5, 0.5, 0.5, 1.0), vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(1.0, 0.0, 0.0, 1.0), vec4<f32>(0.0, 1.0, 0.0, 1.0), vec4<f32>(1.0, 1.0, 0.0, 1.0), vec4<f32>(0.0, 0.0, 1.0, 1.0), vec4<f32>(1.0, 0.0, 1.0, 1.0), vec4<f32>(0.0, 1.0, 1.0, 1.0), vec4<f32>(1.0, 1.0, 1.0, 1.0));
      x_143 = x_85[((((i32(x_131) * i32(x_134)) + (x_98 * 9)) + 11) % 16)];
      x_96_phi = x_143;
    }
    let x_96 : vec4<f32> = x_96_phi;

    continuing {
      x_99 = (x_98 + 1);
      x_95_phi = x_96;
      x_98_phi = x_99;
    }
  }
  x_GLF_color = x_95;
  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);
}
