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, 256u>;

var<private> x_GLF_color : vec4<f32>;

var<private> x_60 : mat2x4<f32> = mat2x4<f32>(vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0));

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_63 : vec4<f32> = gl_FragCoord;
  let x_67 : vec2<f32> = x_7.resolution;
  let x_68 : i32 = -((256 - 14));
  pos = (vec2<f32>(x_63.x, x_63.y) / x_67);
  let x_71 : f32 = pos.x;
  let x_75 : f32 = pos.y;
  ipos = vec2<i32>(i32((x_71 * 16.0)), i32((x_75 * 16.0)));
  i = 0;
  loop {
    let x_83 : i32 = i;
    if ((x_83 < 256)) {
    } else {
      break;
    }
    let x_86 : i32 = i;
    map[x_86] = 0;

    continuing {
      let x_88 : i32 = i;
      i = (x_88 + 1);
    }
  }
  p = vec2<i32>(0, 0);
  canwalk = true;
  v = 0;
  loop {
    var x_110 : bool;
    var x_130 : bool;
    var x_150 : bool;
    var x_171 : bool;
    var x_111_phi : bool;
    var x_131_phi : bool;
    var x_151_phi : bool;
    var x_172_phi : bool;
    let x_94 : i32 = v;
    v = (x_94 + 1);
    directions = 0;
    let x_97 : i32 = p.x;
    let x_98 : bool = (x_97 > 0);
    x_111_phi = x_98;
    if (x_98) {
      let x_102 : i32 = p.x;
      let x_105 : i32 = p.y;
      let x_109 : i32 = map[((x_102 - 2) + (x_105 * 16))];
      x_110 = (x_109 == 0);
      x_111_phi = x_110;
    }
    let x_111 : bool = x_111_phi;
    if (x_111) {
      let x_114 : i32 = directions;
      directions = (x_114 + 1);
    }
    let x_117 : i32 = p.y;
    let x_118 : bool = (x_117 > 0);
    x_131_phi = x_118;
    if (x_118) {
      let x_122 : i32 = p.x;
      let x_124 : i32 = p.y;
      let x_129 : i32 = map[(x_122 + ((x_124 - 2) * 16))];
      x_130 = (x_129 == 0);
      x_131_phi = x_130;
    }
    let x_131 : bool = x_131_phi;
    if (x_131) {
      let x_134 : i32 = directions;
      directions = (x_134 + 1);
    }
    let x_137 : i32 = p.x;
    let x_138 : bool = (x_137 < 14);
    x_151_phi = x_138;
    if (x_138) {
      let x_142 : i32 = p.x;
      let x_145 : i32 = p.y;
      let x_149 : i32 = map[((x_142 + 2) + (x_145 * 16))];
      x_150 = (x_149 == 0);
      x_151_phi = x_150;
    }
    let x_151 : bool = x_151_phi;
    if (x_151) {
      let x_154 : i32 = directions;
      directions = (x_154 + 1);
    }
    let x_156 : i32 = (256 - x_68);
    let x_158 : i32 = p.y;
    let x_159 : bool = (x_158 < 14);
    x_172_phi = x_159;
    if (x_159) {
      let x_163 : i32 = p.x;
      let x_165 : i32 = p.y;
      let x_170 : i32 = map[(x_163 + ((x_165 + 2) * 16))];
      x_171 = (x_170 == 0);
      x_172_phi = x_171;
    }
    let x_172 : bool = x_172_phi;
    if (x_172) {
      let x_175 : i32 = directions;
      directions = (x_175 + 1);
    }
    var x_237 : bool;
    var x_250 : bool;
    var x_289 : bool;
    var x_302 : bool;
    var x_341 : bool;
    var x_354 : bool;
    var x_393 : bool;
    var x_406 : bool;
    var x_238_phi : bool;
    var x_251_phi : bool;
    var x_290_phi : bool;
    var x_303_phi : bool;
    var x_342_phi : bool;
    var x_355_phi : bool;
    var x_394_phi : bool;
    var x_407_phi : bool;
    let x_177 : i32 = directions;
    if ((x_177 == 0)) {
      canwalk = false;
      i = 0;
      loop {
        let x_186 : i32 = i;
        if ((x_186 < 8)) {
        } else {
          break;
        }
        j = 0;
        let x_189 : i32 = (x_156 - x_186);
        x_60 = mat2x4<f32>(vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0));
        if (false) {
          continue;
        }
        loop {
          let x_194 : i32 = j;
          if ((x_194 < 8)) {
          } else {
            break;
          }
          let x_197 : i32 = j;
          let x_199 : i32 = i;
          let x_204 : i32 = map[((x_197 * 2) + ((x_199 * 2) * 16))];
          if ((x_204 == 0)) {
            let x_208 : i32 = j;
            p.x = (x_208 * 2);
            let x_211 : i32 = i;
            p.y = (x_211 * 2);
            canwalk = true;
          }

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

        continuing {
          let x_216 : i32 = i;
          i = (x_216 + 1);
        }
      }
      let x_219 : i32 = p.x;
      let x_221 : i32 = p.y;
      map[(x_219 + (x_221 * 16))] = 1;
    } else {
      let x_225 : i32 = v;
      let x_226 : i32 = directions;
      d = (x_225 % x_226);
      let x_228 : i32 = directions;
      let x_229 : i32 = v;
      v = (x_229 + x_228);
      let x_231 : i32 = d;
      let x_232 : bool = (x_231 >= 0);
      x_238_phi = x_232;
      if (x_232) {
        let x_236 : i32 = p.x;
        x_237 = (x_236 > 0);
        x_238_phi = x_237;
      }
      let x_238 : bool = x_238_phi;
      x_251_phi = x_238;
      if (x_238) {
        let x_242 : i32 = p.x;
        let x_245 : i32 = p.y;
        let x_249 : i32 = map[((x_242 - 2) + (x_245 * 16))];
        x_250 = (x_249 == 0);
        x_251_phi = x_250;
      }
      let x_251 : bool = x_251_phi;
      if (x_251) {
        let x_254 : i32 = d;
        d = (x_254 - 1);
        let x_257 : i32 = p.x;
        let x_259 : i32 = p.y;
        map[(x_257 + (x_259 * 16))] = 1;
        let x_264 : i32 = p.x;
        let x_267 : i32 = p.y;
        map[((x_264 - 1) + (x_267 * 16))] = 1;
        let x_272 : i32 = p.x;
        let x_275 : i32 = p.y;
        map[((x_272 - 2) + (x_275 * 16))] = 1;
        let x_280 : i32 = p.x;
        p.x = (x_280 - 2);
      }
      let x_283 : i32 = d;
      let x_284 : bool = (x_283 >= 0);
      x_290_phi = x_284;
      if (x_284) {
        let x_288 : i32 = p.y;
        x_289 = (x_288 > 0);
        x_290_phi = x_289;
      }
      let x_290 : bool = x_290_phi;
      x_303_phi = x_290;
      if (x_290) {
        let x_294 : i32 = p.x;
        let x_296 : i32 = p.y;
        let x_301 : i32 = map[(x_294 + ((x_296 - 2) * 16))];
        x_302 = (x_301 == 0);
        x_303_phi = x_302;
      }
      let x_303 : bool = x_303_phi;
      if (x_303) {
        let x_306 : i32 = d;
        d = (x_306 - 1);
        let x_309 : i32 = p.x;
        let x_311 : i32 = p.y;
        map[(x_309 + (x_311 * 16))] = 1;
        let x_316 : i32 = p.x;
        let x_318 : i32 = p.y;
        map[(x_316 + ((x_318 - 1) * 16))] = 1;
        let x_324 : i32 = p.x;
        let x_326 : i32 = p.y;
        map[(x_324 + ((x_326 - 2) * 16))] = 1;
        let x_332 : i32 = p.y;
        p.y = (x_332 - 2);
      }
      let x_335 : i32 = d;
      let x_336 : bool = (x_335 >= 0);
      x_342_phi = x_336;
      if (x_336) {
        let x_340 : i32 = p.x;
        x_341 = (x_340 < 14);
        x_342_phi = x_341;
      }
      let x_342 : bool = x_342_phi;
      x_355_phi = x_342;
      if (x_342) {
        let x_346 : i32 = p.x;
        let x_349 : i32 = p.y;
        let x_353 : i32 = map[((x_346 + 2) + (x_349 * 16))];
        x_354 = (x_353 == 0);
        x_355_phi = x_354;
      }
      let x_355 : bool = x_355_phi;
      if (x_355) {
        let x_358 : i32 = d;
        d = (x_358 - 1);
        let x_361 : i32 = p.x;
        let x_363 : i32 = p.y;
        map[(x_361 + (x_363 * 16))] = 1;
        let x_368 : i32 = p.x;
        let x_371 : i32 = p.y;
        map[((x_368 + 1) + (x_371 * 16))] = 1;
        let x_376 : i32 = p.x;
        let x_379 : i32 = p.y;
        map[((x_376 + 2) + (x_379 * 16))] = 1;
        let x_384 : i32 = p.x;
        p.x = (x_384 + 2);
      }
      let x_387 : i32 = d;
      let x_388 : bool = (x_387 >= 0);
      x_394_phi = x_388;
      if (x_388) {
        let x_392 : i32 = p.y;
        x_393 = (x_392 < 14);
        x_394_phi = x_393;
      }
      let x_394 : bool = x_394_phi;
      x_407_phi = x_394;
      if (x_394) {
        let x_398 : i32 = p.x;
        let x_400 : i32 = p.y;
        let x_405 : i32 = map[(x_398 + ((x_400 + 2) * 16))];
        x_406 = (x_405 == 0);
        x_407_phi = x_406;
      }
      let x_407 : bool = x_407_phi;
      if (x_407) {
        let x_410 : i32 = d;
        d = (x_410 - 1);
        let x_413 : i32 = p.x;
        let x_415 : i32 = p.y;
        map[(x_413 + (x_415 * 16))] = 1;
        let x_420 : i32 = p.x;
        let x_422 : i32 = p.y;
        map[(x_420 + ((x_422 + 1) * 16))] = 1;
        let x_428 : i32 = p.x;
        let x_430 : i32 = p.y;
        map[(x_428 + ((x_430 + 2) * 16))] = 1;
        let x_436 : i32 = p.y;
        p.y = (x_436 + 2);
      }
    }
    let x_440 : i32 = ipos.y;
    let x_443 : i32 = ipos.x;
    let x_446 : i32 = map[((x_440 * 16) + x_443)];
    if ((x_446 == 1)) {
      x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
      return;
    }

    continuing {
      let x_450 : bool = canwalk;
      if (x_450) {
      } 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);
}
