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

var<private> gl_FragCoord : vec4<f32>;

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

var<private> map : array<i32, 256>;

var<private> x_GLF_color : vec4<f32>;

fn main_1() {
  var pos : vec2<f32>;
  var ipos : vec2<i32>;
  var i : i32;
  var p : vec2<i32>;
  var canwalk : bool;
  var v : i32;
  var directions : i32;
  var j : i32;
  var d : i32;
  let x_59 : vec4<f32> = gl_FragCoord;
  let x_62 : vec2<f32> = x_7.resolution;
  pos = (vec2<f32>(x_59.x, x_59.y) / x_62);
  let x_65 : f32 = pos.x;
  let x_69 : f32 = pos.y;
  ipos = vec2<i32>(i32((x_65 * 16.0)), i32((x_69 * 16.0)));
  i = 0;
  loop {
    let x_77 : i32 = i;
    if ((x_77 < 256)) {
    } else {
      break;
    }
    let x_80 : i32 = i;
    map[x_80] = 0;

    continuing {
      let x_82 : i32 = i;
      i = (x_82 + 1);
    }
  }
  p = vec2<i32>(0, 0);
  canwalk = true;
  v = 0;
  loop {
    var x_104 : bool;
    var x_124 : bool;
    var x_144 : bool;
    var x_164 : bool;
    var x_105_phi : bool;
    var x_125_phi : bool;
    var x_145_phi : bool;
    var x_165_phi : bool;
    let x_88 : i32 = v;
    v = (x_88 + 1);
    directions = 0;
    let x_91 : i32 = p.x;
    let x_92 : bool = (x_91 > 0);
    x_105_phi = x_92;
    if (x_92) {
      let x_96 : i32 = p.x;
      let x_99 : i32 = p.y;
      let x_103 : i32 = map[((x_96 - 2) + (x_99 * 16))];
      x_104 = (x_103 == 0);
      x_105_phi = x_104;
    }
    let x_105 : bool = x_105_phi;
    if (x_105) {
      let x_108 : i32 = directions;
      directions = (x_108 + 1);
    }
    let x_111 : i32 = p.y;
    let x_112 : bool = (x_111 > 0);
    x_125_phi = x_112;
    if (x_112) {
      let x_116 : i32 = p.x;
      let x_118 : i32 = p.y;
      let x_123 : i32 = map[(x_116 + ((x_118 - 2) * 16))];
      x_124 = (x_123 == 0);
      x_125_phi = x_124;
    }
    let x_125 : bool = x_125_phi;
    if (x_125) {
      let x_128 : i32 = directions;
      directions = (x_128 + 1);
    }
    let x_131 : i32 = p.x;
    let x_132 : bool = (x_131 < 14);
    x_145_phi = x_132;
    if (x_132) {
      let x_136 : i32 = p.x;
      let x_139 : i32 = p.y;
      let x_143 : i32 = map[((x_136 + 2) + (x_139 * 16))];
      x_144 = (x_143 == 0);
      x_145_phi = x_144;
    }
    let x_145 : bool = x_145_phi;
    if (x_145) {
      let x_148 : i32 = directions;
      directions = (x_148 + 1);
    }
    let x_151 : i32 = p.y;
    let x_152 : bool = (x_151 < 14);
    x_165_phi = x_152;
    if (x_152) {
      let x_156 : i32 = p.x;
      let x_158 : i32 = p.y;
      let x_163 : i32 = map[(x_156 + ((x_158 + 2) * 16))];
      x_164 = (x_163 == 0);
      x_165_phi = x_164;
    }
    let x_165 : bool = x_165_phi;
    if (x_165) {
      let x_168 : i32 = directions;
      directions = (x_168 + 1);
    }
    var x_229 : bool;
    var x_242 : bool;
    var x_281 : bool;
    var x_295 : bool;
    var x_335 : bool;
    var x_348 : bool;
    var x_387 : bool;
    var x_400 : bool;
    var x_230_phi : bool;
    var x_243_phi : bool;
    var x_282_phi : bool;
    var x_296_phi : bool;
    var x_336_phi : bool;
    var x_349_phi : bool;
    var x_388_phi : bool;
    var x_401_phi : bool;
    let x_170 : i32 = directions;
    if ((x_170 == 0)) {
      canwalk = false;
      i = 0;
      loop {
        let x_179 : i32 = i;
        if ((x_179 < 8)) {
        } else {
          break;
        }
        j = 0;
        loop {
          let x_186 : i32 = j;
          if ((x_186 < 8)) {
          } else {
            break;
          }
          let x_189 : i32 = j;
          let x_191 : i32 = i;
          let x_196 : i32 = map[((x_189 * 2) + ((x_191 * 2) * 16))];
          if ((x_196 == 0)) {
            let x_200 : i32 = j;
            p.x = (x_200 * 2);
            let x_203 : i32 = i;
            p.y = (x_203 * 2);
            canwalk = true;
          }

          continuing {
            let x_206 : i32 = j;
            j = (x_206 + 1);
          }
        }

        continuing {
          let x_208 : i32 = i;
          i = (x_208 + 1);
        }
      }
      let x_211 : i32 = p.x;
      let x_213 : i32 = p.y;
      map[(x_211 + (x_213 * 16))] = 1;
    } else {
      let x_217 : i32 = v;
      let x_218 : i32 = directions;
      d = (x_217 % x_218);
      let x_220 : i32 = directions;
      let x_221 : i32 = v;
      v = (x_221 + x_220);
      let x_223 : i32 = d;
      let x_224 : bool = (x_223 >= 0);
      x_230_phi = x_224;
      if (x_224) {
        let x_228 : i32 = p.x;
        x_229 = (x_228 > 0);
        x_230_phi = x_229;
      }
      let x_230 : bool = x_230_phi;
      x_243_phi = x_230;
      if (x_230) {
        let x_234 : i32 = p.x;
        let x_237 : i32 = p.y;
        let x_241 : i32 = map[((x_234 - 2) + (x_237 * 16))];
        x_242 = (x_241 == 0);
        x_243_phi = x_242;
      }
      let x_243 : bool = x_243_phi;
      if (x_243) {
        let x_246 : i32 = d;
        d = (x_246 - 1);
        let x_249 : i32 = p.x;
        let x_251 : i32 = p.y;
        map[(x_249 + (x_251 * 16))] = 1;
        let x_256 : i32 = p.x;
        let x_259 : i32 = p.y;
        map[((x_256 - 1) + (x_259 * 16))] = 1;
        let x_264 : i32 = p.x;
        let x_267 : i32 = p.y;
        map[((x_264 - 2) + (x_267 * 16))] = 1;
        let x_272 : i32 = p.x;
        p.x = (x_272 - 2);
      }
      let x_275 : i32 = d;
      let x_276 : bool = (x_275 >= 0);
      x_282_phi = x_276;
      if (x_276) {
        let x_280 : i32 = p.y;
        x_281 = (x_280 > 0);
        x_282_phi = x_281;
      }
      let x_282 : bool = x_282_phi;
      x_296_phi = x_282;
      if (x_282) {
        let x_286 : i32 = p.x;
        let x_288 : i32 = p.y;
        let x_291 : array<i32, 256> = map;
        map = array<i32, 256>(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
        map = x_291;
        let x_294 : i32 = map[(x_286 + ((x_288 - 2) * 16))];
        x_295 = (x_294 == 0);
        x_296_phi = x_295;
      }
      let x_296 : bool = x_296_phi;
      if (x_296) {
        let x_299 : i32 = d;
        d = (x_299 - 1);
        let x_302 : i32 = p.x;
        let x_304 : i32 = p.y;
        map[(x_302 + (x_304 * 16))] = 1;
        let x_309 : i32 = p.x;
        let x_311 : i32 = p.y;
        map[(x_309 + ((x_311 - 1) * 16))] = 1;
        let x_317 : i32 = p.x;
        let x_319 : i32 = p.y;
        let x_321 : array<i32, 256> = map;
        map = array<i32, 256>(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
        map = x_321;
        map[(x_317 + ((x_319 - 2) * 16))] = 1;
        let x_326 : i32 = p.y;
        p.y = (x_326 - 2);
      }
      let x_329 : i32 = d;
      let x_330 : bool = (x_329 >= 0);
      x_336_phi = x_330;
      if (x_330) {
        let x_334 : i32 = p.x;
        x_335 = (x_334 < 14);
        x_336_phi = x_335;
      }
      let x_336 : bool = x_336_phi;
      x_349_phi = x_336;
      if (x_336) {
        let x_340 : i32 = p.x;
        let x_343 : i32 = p.y;
        let x_347 : i32 = map[((x_340 + 2) + (x_343 * 16))];
        x_348 = (x_347 == 0);
        x_349_phi = x_348;
      }
      let x_349 : bool = x_349_phi;
      if (x_349) {
        let x_352 : i32 = d;
        d = (x_352 - 1);
        let x_355 : i32 = p.x;
        let x_357 : i32 = p.y;
        map[(x_355 + (x_357 * 16))] = 1;
        let x_362 : i32 = p.x;
        let x_365 : i32 = p.y;
        map[((x_362 + 1) + (x_365 * 16))] = 1;
        let x_370 : i32 = p.x;
        let x_373 : i32 = p.y;
        map[((x_370 + 2) + (x_373 * 16))] = 1;
        let x_378 : i32 = p.x;
        p.x = (x_378 + 2);
      }
      let x_381 : i32 = d;
      let x_382 : bool = (x_381 >= 0);
      x_388_phi = x_382;
      if (x_382) {
        let x_386 : i32 = p.y;
        x_387 = (x_386 < 14);
        x_388_phi = x_387;
      }
      let x_388 : bool = x_388_phi;
      x_401_phi = x_388;
      if (x_388) {
        let x_392 : i32 = p.x;
        let x_394 : i32 = p.y;
        let x_399 : i32 = map[(x_392 + ((x_394 + 2) * 16))];
        x_400 = (x_399 == 0);
        x_401_phi = x_400;
      }
      let x_401 : bool = x_401_phi;
      if (x_401) {
        let x_404 : i32 = d;
        d = (x_404 - 1);
        let x_407 : i32 = p.x;
        let x_409 : i32 = p.y;
        map[(x_407 + (x_409 * 16))] = 1;
        let x_414 : i32 = p.x;
        let x_416 : i32 = p.y;
        map[(x_414 + ((x_416 + 1) * 16))] = 1;
        let x_422 : i32 = p.x;
        let x_424 : i32 = p.y;
        map[(x_422 + ((x_424 + 2) * 16))] = 1;
        let x_430 : i32 = p.y;
        p.y = (x_430 + 2);
      }
    }
    let x_434 : i32 = ipos.y;
    let x_437 : i32 = ipos.x;
    let x_440 : i32 = map[((x_434 * 16) + x_437)];
    if ((x_440 == 1)) {
      x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
      return;
    }

    continuing {
      let x_444 : bool = canwalk;
      if (x_444) {
      } else {
        break;
      }
    }
  }
  x_GLF_color = vec4<f32>(0.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);
}
