struct QuicksortObject {
  numbers : array<i32, 10>;
};

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

var<private> obj : QuicksortObject;

var<private> x_GLF_FragCoord : vec4<f32>;

var<private> x_GLF_pos : vec4<f32>;

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

var<private> frag_color : vec4<f32>;

var<private> gl_Position : vec4<f32>;

fn performPartition_i1_i1_(l : ptr<function, i32>, h : ptr<function, i32>) -> i32 {
  var x_314 : i32;
  var x_315 : i32;
  var pivot : i32;
  var i_1 : i32;
  var j_1 : i32;
  var param : i32;
  var param_1 : i32;
  var param_2 : i32;
  var param_3 : i32;
  let x_316 : i32 = *(h);
  let x_318 : i32 = obj.numbers[x_316];
  pivot = x_318;
  let x_319 : i32 = *(l);
  i_1 = (x_319 - 1);
  let x_321 : i32 = *(l);
  j_1 = x_321;
  loop {
    let x_326 : i32 = j_1;
    let x_327 : i32 = *(h);
    if ((x_326 <= (x_327 - 1))) {
    } else {
      break;
    }
    let x_331 : i32 = j_1;
    let x_333 : i32 = obj.numbers[x_331];
    let x_334 : i32 = pivot;
    if ((x_333 <= x_334)) {
      let x_338 : i32 = i_1;
      i_1 = (x_338 + 1);
      let x_340 : i32 = i_1;
      param = x_340;
      let x_341 : i32 = j_1;
      param_1 = x_341;
      let x_342 : i32 = param;
      let x_344 : i32 = obj.numbers[x_342];
      x_315 = x_344;
      let x_345 : i32 = param;
      let x_346 : i32 = param_1;
      let x_348 : i32 = obj.numbers[x_346];
      obj.numbers[x_345] = x_348;
      let x_350 : i32 = param_1;
      let x_351 : i32 = x_315;
      obj.numbers[x_350] = x_351;
    }

    continuing {
      let x_353 : i32 = j_1;
      j_1 = (x_353 + 1);
    }
  }
  let x_355 : i32 = i_1;
  param_2 = (x_355 + 1);
  let x_357 : i32 = *(h);
  param_3 = x_357;
  let x_358 : i32 = param_2;
  let x_360 : i32 = obj.numbers[x_358];
  x_314 = x_360;
  let x_361 : i32 = param_2;
  let x_362 : i32 = param_3;
  let x_364 : i32 = obj.numbers[x_362];
  obj.numbers[x_361] = x_364;
  let x_366 : i32 = param_3;
  let x_367 : i32 = x_314;
  obj.numbers[x_366] = x_367;
  if (false) {
  } else {
    let x_372 : i32 = i_1;
    return (x_372 + 1);
  }
  return 0;
}

fn main_1() {
  var x_91 : i32;
  var x_92 : i32;
  var x_93 : i32;
  var x_94 : array<i32, 10>;
  var x_95 : i32;
  var x_96 : i32;
  var x_97 : i32;
  var i_2 : i32;
  var uv : vec2<f32>;
  var color : vec3<f32>;
  let x_98 : vec4<f32> = x_GLF_pos;
  x_GLF_FragCoord = ((x_98 + vec4<f32>(1.0, 1.0, 0.0, 0.0)) * vec4<f32>(128.0, 128.0, 1.0, 1.0));
  i_2 = 0;
  loop {
    let x_105 : i32 = i_2;
    if ((x_105 < 10)) {
    } else {
      break;
    }
    let x_108 : i32 = i_2;
    let x_109 : i32 = i_2;
    obj.numbers[x_108] = (10 - x_109);
    let x_112 : i32 = i_2;
    let x_113 : i32 = i_2;
    let x_115 : i32 = obj.numbers[x_113];
    let x_116 : i32 = i_2;
    let x_118 : i32 = obj.numbers[x_116];
    obj.numbers[x_112] = (x_115 * x_118);

    continuing {
      let x_121 : i32 = i_2;
      i_2 = (x_121 + 1);
    }
  }
  x_91 = 0;
  x_92 = 9;
  x_93 = -1;
  let x_123 : i32 = x_93;
  let x_124 : i32 = (x_123 + 1);
  x_93 = x_124;
  let x_125 : i32 = x_91;
  x_94[x_124] = x_125;
  let x_127 : i32 = x_93;
  let x_128 : i32 = (x_127 + 1);
  x_93 = x_128;
  let x_129 : i32 = x_92;
  x_94[x_128] = x_129;
  loop {
    let x_135 : i32 = x_93;
    if ((x_135 >= 0)) {
    } else {
      break;
    }
    let x_138 : i32 = x_93;
    x_93 = (x_138 - 1);
    let x_141 : i32 = x_94[x_138];
    x_92 = x_141;
    let x_142 : i32 = x_93;
    x_93 = (x_142 - 1);
    let x_145 : i32 = x_94[x_142];
    x_91 = x_145;
    let x_146 : i32 = x_91;
    x_96 = x_146;
    let x_147 : i32 = x_92;
    x_97 = x_147;
    let x_148 : i32 = performPartition_i1_i1_(&(x_96), &(x_97));
    x_95 = x_148;
    let x_149 : i32 = x_95;
    let x_151 : i32 = x_91;
    if (((x_149 - 1) > x_151)) {
      let x_155 : i32 = x_93;
      let x_156 : i32 = (x_155 + 1);
      x_93 = x_156;
      let x_157 : i32 = x_91;
      x_94[x_156] = x_157;
      let x_159 : i32 = x_93;
      let x_160 : i32 = (x_159 + 1);
      x_93 = x_160;
      let x_161 : i32 = x_95;
      x_94[x_160] = (x_161 - 1);
    }
    let x_164 : i32 = x_95;
    let x_166 : i32 = x_92;
    if (((x_164 + 1) < x_166)) {
      let x_170 : i32 = x_93;
      let x_171 : i32 = (x_170 + 1);
      x_93 = x_171;
      let x_172 : i32 = x_95;
      x_94[x_171] = (x_172 + 1);
      let x_175 : i32 = x_93;
      let x_176 : i32 = (x_175 + 1);
      x_93 = x_176;
      let x_177 : i32 = x_92;
      x_94[x_176] = x_177;
    }
  }
  let x_179 : vec4<f32> = x_GLF_FragCoord;
  let x_182 : vec2<f32> = x_34.resolution;
  uv = (vec2<f32>(x_179.x, x_179.y) / x_182);
  color = vec3<f32>(1.0, 2.0, 3.0);
  let x_185 : i32 = obj.numbers[0];
  let x_188 : f32 = color.x;
  color.x = (x_188 + f32(x_185));
  let x_192 : f32 = uv.x;
  if ((x_192 > 0.25)) {
    let x_197 : i32 = obj.numbers[1];
    let x_200 : f32 = color.x;
    color.x = (x_200 + f32(x_197));
  }
  let x_204 : f32 = uv.x;
  if ((x_204 > 0.5)) {
    let x_209 : i32 = obj.numbers[2];
    let x_212 : f32 = color.y;
    color.y = (x_212 + f32(x_209));
  }
  let x_216 : f32 = uv.x;
  if ((x_216 > 0.75)) {
    let x_221 : i32 = obj.numbers[3];
    let x_224 : f32 = color.z;
    color.z = (x_224 + f32(x_221));
  }
  let x_228 : i32 = obj.numbers[4];
  let x_231 : f32 = color.y;
  color.y = (x_231 + f32(x_228));
  let x_235 : f32 = uv.y;
  if ((x_235 > 0.25)) {
    let x_240 : i32 = obj.numbers[5];
    let x_243 : f32 = color.x;
    color.x = (x_243 + f32(x_240));
  }
  let x_247 : f32 = uv.y;
  if ((x_247 > 0.5)) {
    let x_252 : i32 = obj.numbers[6];
    let x_255 : f32 = color.y;
    color.y = (x_255 + f32(x_252));
  }
  let x_259 : f32 = uv.y;
  if ((x_259 > 0.75)) {
    let x_264 : i32 = obj.numbers[7];
    let x_267 : f32 = color.z;
    color.z = (x_267 + f32(x_264));
  }
  let x_271 : i32 = obj.numbers[8];
  let x_274 : f32 = color.z;
  color.z = (x_274 + f32(x_271));
  let x_278 : f32 = uv.x;
  let x_280 : f32 = uv.y;
  if ((abs((x_278 - x_280)) < 0.25)) {
    let x_287 : i32 = obj.numbers[9];
    let x_290 : f32 = color.x;
    color.x = (x_290 + f32(x_287));
  }
  let x_293 : vec3<f32> = color;
  let x_294 : vec3<f32> = normalize(x_293);
  frag_color = vec4<f32>(x_294.x, x_294.y, x_294.z, 1.0);
  let x_299 : vec4<f32> = x_GLF_pos;
  gl_Position = x_299;
  return;
}

struct main_out {
  [[location(0)]]
  frag_color_1 : vec4<f32>;
  [[builtin(position)]]
  gl_Position : vec4<f32>;
};

[[stage(vertex)]]
fn main([[location(0)]] x_GLF_pos_param : vec4<f32>) -> main_out {
  x_GLF_pos = x_GLF_pos_param;
  main_1();
  return main_out(frag_color, gl_Position);
}

fn swap_i1_i1_(i : ptr<function, i32>, j : ptr<function, i32>) {
  var temp : i32;
  let x_302 : i32 = *(i);
  let x_304 : i32 = obj.numbers[x_302];
  temp = x_304;
  let x_305 : i32 = *(i);
  let x_306 : i32 = *(j);
  let x_308 : i32 = obj.numbers[x_306];
  obj.numbers[x_305] = x_308;
  let x_310 : i32 = *(j);
  let x_311 : i32 = temp;
  obj.numbers[x_310] = x_311;
  return;
}

fn quicksort_() {
  var l_1 : i32;
  var h_1 : i32;
  var top : i32;
  var stack : array<i32, 10>;
  var p : i32;
  var param_4 : i32;
  var param_5 : i32;
  l_1 = 0;
  h_1 = 9;
  top = -1;
  let x_376 : i32 = top;
  let x_377 : i32 = (x_376 + 1);
  top = x_377;
  let x_378 : i32 = l_1;
  stack[x_377] = x_378;
  let x_380 : i32 = top;
  let x_381 : i32 = (x_380 + 1);
  top = x_381;
  let x_382 : i32 = h_1;
  stack[x_381] = x_382;
  loop {
    let x_388 : i32 = top;
    if ((x_388 >= 0)) {
    } else {
      break;
    }
    let x_391 : i32 = top;
    top = (x_391 - 1);
    let x_394 : i32 = stack[x_391];
    h_1 = x_394;
    let x_395 : i32 = top;
    top = (x_395 - 1);
    let x_398 : i32 = stack[x_395];
    l_1 = x_398;
    let x_399 : i32 = l_1;
    param_4 = x_399;
    let x_400 : i32 = h_1;
    param_5 = x_400;
    let x_401 : i32 = performPartition_i1_i1_(&(param_4), &(param_5));
    p = x_401;
    let x_402 : i32 = p;
    let x_404 : i32 = l_1;
    if (((x_402 - 1) > x_404)) {
      let x_408 : i32 = top;
      let x_409 : i32 = (x_408 + 1);
      top = x_409;
      let x_410 : i32 = l_1;
      stack[x_409] = x_410;
      let x_412 : i32 = top;
      let x_413 : i32 = (x_412 + 1);
      top = x_413;
      let x_414 : i32 = p;
      stack[x_413] = (x_414 - 1);
    }
    let x_417 : i32 = p;
    let x_419 : i32 = h_1;
    if (((x_417 + 1) < x_419)) {
      let x_423 : i32 = top;
      let x_424 : i32 = (x_423 + 1);
      top = x_424;
      let x_425 : i32 = p;
      stack[x_424] = (x_425 + 1);
      let x_428 : i32 = top;
      let x_429 : i32 = (x_428 + 1);
      top = x_429;
      let x_430 : i32 = h_1;
      stack[x_429] = x_430;
    }
  }
  return;
}
