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

struct buf0 {
  resolution : vec2<f32>,
}

var<private> obj : QuicksortObject;

var<private> gl_FragCoord : vec4<f32>;

@group(0) @binding(0) var<uniform> x_188 : buf0;

var<private> x_GLF_color : vec4<f32>;

fn swap_i1_i1_(i : ptr<function, i32>, j : ptr<function, i32>) {
  var temp : i32;
  let x_932 : i32 = temp;
  temp = 0i;
  temp = x_932;
  let x_523 : vec3<f32> = vec3<f32>(vec3<f32>(1.0f, 2.0f, 3.0f).z, vec3<f32>(1.0f, 2.0f, 3.0f).y, vec3<f32>(1.0f, 2.0f, 3.0f).z);
  let x_933 : i32 = *(i);
  *(i) = 0i;
  *(i) = x_933;
  let x_28 : i32 = *(i);
  let x_934 : i32 = *(j);
  *(j) = 0i;
  *(j) = x_934;
  let x_524 : vec3<f32> = vec3<f32>(x_523.y, x_523.x, x_523.y);
  let x_935 : i32 = temp;
  temp = 0i;
  temp = x_935;
  let x_30_save = x_28;
  let x_936 : i32 = obj.numbers[x_30_save];
  obj.numbers[x_30_save] = 0i;
  obj.numbers[x_30_save] = x_936;
  let x_31 : i32 = obj.numbers[x_30_save];
  let x_937 : i32 = temp;
  temp = 0i;
  temp = x_937;
  temp = x_31;
  let x_938 : i32 = *(j);
  *(j) = 0i;
  *(j) = x_938;
  let x_525 : vec3<f32> = vec3<f32>(x_523.z, vec3<f32>(1.0f, 2.0f, 3.0f).x, x_523.y);
  let x_939 : i32 = *(i);
  *(i) = 0i;
  *(i) = x_939;
  let x_32 : i32 = *(i);
  let x_940 : i32 = obj.numbers[x_30_save];
  obj.numbers[x_30_save] = 0i;
  obj.numbers[x_30_save] = x_940;
  let x_33 : i32 = *(j);
  let x_941 : i32 = *(i);
  *(i) = 0i;
  *(i) = x_941;
  let x_526 : vec3<f32> = vec3<f32>(x_525.x, x_525.z, x_525.z);
  let x_942 : i32 = obj.numbers[x_30_save];
  obj.numbers[x_30_save] = 0i;
  obj.numbers[x_30_save] = x_942;
  let x_34_save = x_33;
  let x_35 : i32 = obj.numbers[x_34_save];
  let x_943 : QuicksortObject = obj;
  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
  obj = x_943;
  let x_527 : vec2<f32> = vec2<f32>(x_526.x, x_526.x);
  let x_36_save = x_32;
  let x_528 : vec3<f32> = vec3<f32>(x_524.x, x_524.z, x_524.x);
  obj.numbers[x_36_save] = x_35;
  let x_944 : QuicksortObject = obj;
  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
  obj = x_944;
  let x_529 : vec3<f32> = vec3<f32>(x_526.y, x_526.z, x_526.x);
  let x_945 : i32 = *(i);
  *(i) = 0i;
  *(i) = x_945;
  let x_37 : i32 = *(j);
  let x_946 : i32 = temp;
  temp = 0i;
  temp = x_946;
  let x_530 : vec2<f32> = vec2<f32>(x_529.z, x_529.y);
  let x_947 : i32 = obj.numbers[x_34_save];
  obj.numbers[x_34_save] = 0i;
  obj.numbers[x_34_save] = x_947;
  let x_38 : i32 = temp;
  let x_948 : i32 = *(j);
  *(j) = 0i;
  *(j) = x_948;
  let x_531 : vec3<f32> = vec3<f32>(x_527.x, x_526.y, x_526.x);
  let x_949 : i32 = obj.numbers[x_36_save];
  obj.numbers[x_36_save] = 0i;
  obj.numbers[x_36_save] = x_949;
  let x_950 : QuicksortObject = obj;
  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
  obj = x_950;
  let x_532 : vec3<f32> = vec3<f32>(x_528.x, x_528.y, x_528.x);
  let x_951 : i32 = obj.numbers[x_34_save];
  obj.numbers[x_34_save] = 0i;
  obj.numbers[x_34_save] = x_951;
  obj.numbers[x_37] = x_38;
  return;
}

fn performPartition_i1_i1_(l : ptr<function, i32>, h : ptr<function, i32>) -> i32 {
  var param_3 : i32;
  var i_1 : i32;
  var j_1 : i32;
  var param_2 : i32;
  var param_1 : i32;
  var param : i32;
  var pivot : i32;
  var x_537 : vec2<f32>;
  var x_538 : vec3<f32>;
  let x_952 : i32 = *(h);
  *(h) = 0i;
  *(h) = x_952;
  let x_41 : i32 = *(h);
  let x_953 : i32 = *(l);
  *(l) = 0i;
  *(l) = x_953;
  let x_42_save = x_41;
  let x_954 : i32 = obj.numbers[x_42_save];
  obj.numbers[x_42_save] = 0i;
  obj.numbers[x_42_save] = x_954;
  let x_43 : i32 = obj.numbers[x_42_save];
  let x_955 : i32 = param_3;
  param_3 = 0i;
  param_3 = x_955;
  let x_534 : vec3<f32> = vec3<f32>(vec3<f32>(1.0f, 2.0f, 3.0f).z, vec3<f32>(1.0f, 2.0f, 3.0f).x, vec3<f32>(1.0f, 2.0f, 3.0f).z);
  let x_956 : i32 = param_1;
  param_1 = 0i;
  param_1 = x_956;
  pivot = x_43;
  let x_45 : i32 = *(l);
  let x_957 : i32 = *(h);
  *(h) = 0i;
  *(h) = x_957;
  let x_958 : i32 = j_1;
  j_1 = 0i;
  j_1 = x_958;
  let x_535 : vec3<f32> = vec3<f32>(x_534.y, x_534.z, x_534.y);
  let x_959 : i32 = *(l);
  *(l) = 0i;
  *(l) = x_959;
  i_1 = (x_45 - bitcast<i32>(1u));
  let x_49 : i32 = *(l);
  let x_536 : vec3<f32> = vec3<f32>(x_534.x, x_534.z, x_535.x);
  j_1 = 10i;
  let x_960 : QuicksortObject = obj;
  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
  obj = x_960;
  loop {
    let x_961 : i32 = pivot;
    pivot = 0i;
    pivot = x_961;
    let x_962 : i32 = param_1;
    param_1 = 0i;
    param_1 = x_962;
    let x_55 : i32 = j_1;
    let x_963 : i32 = pivot;
    pivot = 0i;
    pivot = x_963;
    x_537 = vec2<f32>(vec3<f32>(1.0f, 2.0f, 3.0f).y, vec3<f32>(1.0f, 2.0f, 3.0f).z);
    let x_964 : QuicksortObject = obj;
    obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
    obj = x_964;
    let x_56 : i32 = *(h);
    let x_965 : i32 = *(h);
    *(h) = 0i;
    *(h) = x_965;
    let x_966 : i32 = param;
    param = 0i;
    param = x_966;
    let x_967 : i32 = j_1;
    j_1 = 0i;
    j_1 = x_967;
    x_538 = vec3<f32>(x_534.x, x_537.y, x_534.z);
    let x_968 : i32 = param;
    param = 0i;
    param = x_968;
    if ((x_55 <= (x_56 - bitcast<i32>(1u)))) {
    } else {
      break;
    }
    let x_60 : i32 = j_1;
    let x_969 : i32 = obj.numbers[x_42_save];
    obj.numbers[x_42_save] = 0i;
    obj.numbers[x_42_save] = x_969;
    let x_61_save = x_60;
    let x_970 : i32 = *(h);
    *(h) = 0i;
    *(h) = x_970;
    let x_539 : vec3<f32> = vec3<f32>(x_537.x, x_535.z, x_537.x);
    let x_971 : i32 = param_1;
    param_1 = 0i;
    param_1 = x_971;
    let x_62 : i32 = obj.numbers[x_61_save];
    let x_972 : QuicksortObject = obj;
    obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
    obj = x_972;
    let x_63 : i32 = pivot;
    let x_540 : vec2<f32> = vec2<f32>(vec3<f32>(1.0f, 2.0f, 3.0f).y, x_534.z);
    let x_973 : i32 = i_1;
    i_1 = 0i;
    i_1 = x_973;
    let x_974 : i32 = *(l);
    *(l) = 0i;
    *(l) = x_974;
    let x_541 : vec3<f32> = vec3<f32>(x_534.y, x_534.x, x_534.y);
    let x_975 : i32 = pivot;
    pivot = 0i;
    pivot = x_975;
    if ((x_62 <= x_63)) {
      let x_542 : vec3<f32> = vec3<f32>(x_541.z, x_541.x, x_541.x);
      let x_976 : i32 = param_3;
      param_3 = 0i;
      param_3 = x_976;
      let x_67 : i32 = i_1;
      let x_977 : i32 = pivot;
      pivot = 0i;
      pivot = x_977;
      let x_543 : vec2<f32> = vec2<f32>(x_539.x, x_541.y);
      let x_978 : i32 = i_1;
      i_1 = 0i;
      i_1 = x_978;
      let x_979 : i32 = param;
      param = 0i;
      param = x_979;
      i_1 = (x_67 + bitcast<i32>(1u));
      let x_980 : i32 = *(l);
      *(l) = 0i;
      *(l) = x_980;
      let x_544 : vec3<f32> = vec3<f32>(vec3<f32>(1.0f, 2.0f, 3.0f).z, vec3<f32>(1.0f, 2.0f, 3.0f).y, x_540.x);
      let x_70 : i32 = i_1;
      let x_545 : vec2<f32> = vec2<f32>(x_537.y, x_538.x);
      let x_981 : i32 = param;
      param = 0i;
      param = x_981;
      param = x_70;
      let x_982 : i32 = param;
      param = 0i;
      param = x_982;
      let x_546 : vec2<f32> = vec2<f32>(x_545.x, x_545.x);
      let x_983 : i32 = i_1;
      i_1 = 0i;
      i_1 = x_983;
      let x_72 : i32 = j_1;
      param_1 = x_72;
      let x_984 : i32 = param_3;
      param_3 = 0i;
      param_3 = x_984;
      swap_i1_i1_(&(param), &(param_1));
      let x_985 : i32 = param_1;
      param_1 = 0i;
      param_1 = x_985;
    }
    let x_986 : QuicksortObject = obj;
    obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
    obj = x_986;

    continuing {
      let x_987 : i32 = *(h);
      *(h) = 0i;
      *(h) = x_987;
      let x_74 : i32 = j_1;
      let x_988 : i32 = *(h);
      *(h) = 0i;
      *(h) = x_988;
      let x_547 : vec3<f32> = vec3<f32>(x_539.x, x_541.z, x_541.z);
      let x_989 : i32 = obj.numbers[x_61_save];
      obj.numbers[x_61_save] = 0i;
      obj.numbers[x_61_save] = x_989;
      let x_990 : i32 = param;
      param = 0i;
      param = x_990;
      j_1 = (1i + x_74);
      let x_991 : i32 = param_1;
      param_1 = 0i;
      param_1 = x_991;
      let x_548 : vec3<f32> = vec3<f32>(x_541.y, x_541.z, x_541.x);
      let x_992 : i32 = obj.numbers[x_61_save];
      obj.numbers[x_61_save] = 0i;
      obj.numbers[x_61_save] = x_992;
    }
  }
  let x_76 : i32 = i_1;
  let x_993 : i32 = obj.numbers[x_42_save];
  obj.numbers[x_42_save] = 0i;
  obj.numbers[x_42_save] = x_993;
  let x_549 : vec2<f32> = vec2<f32>(x_534.x, x_534.y);
  let x_994 : QuicksortObject = obj;
  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
  obj = x_994;
  let x_995 : i32 = *(h);
  *(h) = 0i;
  *(h) = x_995;
  i_1 = (1i + x_76);
  let x_996 : i32 = param_1;
  param_1 = 0i;
  param_1 = x_996;
  let x_79 : i32 = i_1;
  let x_997 : i32 = j_1;
  j_1 = 0i;
  j_1 = x_997;
  let x_550 : vec2<f32> = vec2<f32>(x_534.x, x_534.x);
  let x_998 : i32 = param_1;
  param_1 = 0i;
  param_1 = x_998;
  param_2 = x_79;
  let x_551 : vec2<f32> = vec2<f32>(x_534.y, x_536.x);
  let x_999 : i32 = pivot;
  pivot = 0i;
  pivot = x_999;
  let x_81 : i32 = *(h);
  let x_552 : vec2<f32> = vec2<f32>(x_550.x, x_549.y);
  let x_1000 : i32 = *(h);
  *(h) = 0i;
  *(h) = x_1000;
  param_3 = x_81;
  let x_1001 : i32 = i_1;
  i_1 = 0i;
  i_1 = x_1001;
  let x_553 : vec2<f32> = vec2<f32>(x_549.y, x_552.x);
  let x_1002 : i32 = *(h);
  *(h) = 0i;
  *(h) = x_1002;
  swap_i1_i1_(&(param_2), &(param_3));
  let x_1003 : i32 = *(l);
  *(l) = 0i;
  *(l) = x_1003;
  let x_554 : vec2<f32> = vec2<f32>(x_536.z, vec3<f32>(1.0f, 2.0f, 3.0f).y);
  let x_1004 : i32 = param_1;
  param_1 = 0i;
  param_1 = x_1004;
  let x_83 : i32 = i_1;
  let x_1005 : i32 = param;
  param = 0i;
  param = x_1005;
  let x_555 : vec2<f32> = vec2<f32>(x_534.y, x_534.x);
  let x_1006 : i32 = j_1;
  j_1 = 0i;
  j_1 = x_1006;
  return x_83;
}

fn quicksort_() {
  var param_4 : i32;
  var h_1 : i32;
  var p : i32;
  var l_1 : i32;
  var top : i32;
  var stack : array<i32, 10u>;
  var param_5 : i32;
  l_1 = 0i;
  let x_1007 : i32 = param_5;
  param_5 = 0i;
  param_5 = x_1007;
  h_1 = 9i;
  let x_1008 : array<i32, 10u> = stack;
  stack = array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i);
  stack = x_1008;
  let x_556 : vec2<f32> = vec2<f32>(vec3<f32>(1.0f, 2.0f, 3.0f).y, vec3<f32>(1.0f, 2.0f, 3.0f).y);
  let x_1009 : i32 = param_5;
  param_5 = 0i;
  param_5 = x_1009;
  top = -1i;
  let x_1010 : i32 = p;
  p = 0i;
  p = x_1010;
  let x_93 : i32 = top;
  let x_557 : vec2<f32> = vec2<f32>(vec3<f32>(1.0f, 2.0f, 3.0f).x, vec3<f32>(1.0f, 2.0f, 3.0f).x);
  let x_1011 : i32 = p;
  p = 0i;
  p = x_1011;
  let x_94 : i32 = (x_93 + bitcast<i32>(1u));
  let x_1012 : i32 = top;
  top = 0i;
  top = x_1012;
  let x_558 : vec2<f32> = vec2<f32>(x_556.y, x_557.y);
  let x_1013 : i32 = param_4;
  param_4 = 0i;
  param_4 = x_1013;
  top = x_94;
  let x_1014 : i32 = h_1;
  h_1 = 0i;
  h_1 = x_1014;
  let x_559 : vec3<f32> = vec3<f32>(x_557.y, x_557.x, x_557.x);
  let x_1015 : i32 = param_4;
  param_4 = 0i;
  param_4 = x_1015;
  let x_95 : i32 = l_1;
  let x_1016 : QuicksortObject = obj;
  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
  obj = x_1016;
  let x_560 : vec3<f32> = vec3<f32>(x_559.y, x_559.x, x_557.x);
  let x_96_save = x_94;
  let x_1017 : array<i32, 10u> = stack;
  stack = array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i);
  stack = x_1017;
  let x_561 : vec3<f32> = vec3<f32>(x_556.y, x_556.y, x_556.y);
  let x_1018 : i32 = l_1;
  l_1 = 0i;
  l_1 = 0i;
  stack[x_96_save] = x_95;
  let x_1019 : i32 = param_5;
  param_5 = 0i;
  param_5 = x_1019;
  let x_97 : i32 = top;
  let x_1020 : i32 = param_4;
  param_4 = 0i;
  param_4 = x_1020;
  let x_562 : vec3<f32> = vec3<f32>(vec3<f32>(1.0f, 2.0f, 3.0f).z, x_558.y, vec3<f32>(1.0f, 2.0f, 3.0f).y);
  let x_1021 : i32 = stack[x_96_save];
  stack[x_96_save] = 0i;
  stack[x_96_save] = x_1021;
  let x_98 : i32 = (x_97 + 1i);
  let x_1022 : i32 = stack[x_96_save];
  stack[x_96_save] = 0i;
  stack[x_96_save] = x_1022;
  let x_563 : vec3<f32> = vec3<f32>(x_559.x, x_559.z, x_556.y);
  top = x_98;
  let x_1023 : i32 = param_4;
  param_4 = 0i;
  param_4 = x_1023;
  let x_99 : i32 = h_1;
  let x_1024 : i32 = param_4;
  param_4 = 0i;
  param_4 = x_1024;
  let x_564 : vec3<f32> = vec3<f32>(x_558.x, x_561.x, x_558.y);
  let x_1025 : i32 = l_1;
  l_1 = 0i;
  l_1 = x_1025;
  let x_100_save = x_98;
  let x_1026 : i32 = param_5;
  param_5 = 0i;
  param_5 = x_1026;
  let x_565 : vec2<f32> = vec2<f32>(x_564.z, x_564.z);
  let x_1027 : i32 = p;
  p = 0i;
  p = x_1027;
  stack[x_100_save] = x_99;
  loop {
    let x_566 : vec3<f32> = vec3<f32>(x_563.x, x_563.x, x_563.x);
    let x_1028 : i32 = h_1;
    h_1 = 0i;
    h_1 = x_1028;
    let x_1029 : array<i32, 10u> = stack;
    stack = array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i);
    stack = x_1029;
    let x_106 : i32 = top;
    let x_1030 : array<i32, 10u> = stack;
    stack = array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i);
    stack = x_1030;
    let x_567 : vec2<f32> = vec2<f32>(x_558.x, x_564.z);
    let x_1031 : i32 = param_4;
    param_4 = 0i;
    param_4 = x_1031;
    if ((x_106 >= bitcast<i32>(0u))) {
    } else {
      break;
    }
    let x_1032 : QuicksortObject = obj;
    obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
    obj = x_1032;
    let x_568 : vec3<f32> = vec3<f32>(x_559.y, x_559.x, x_563.y);
    let x_1033 : i32 = param_4;
    param_4 = 0i;
    param_4 = x_1033;
    let x_108 : i32 = top;
    let x_569 : vec3<f32> = vec3<f32>(x_565.x, x_567.y, x_565.x);
    let x_1034 : i32 = h_1;
    h_1 = 0i;
    h_1 = x_1034;
    let x_570 : vec2<f32> = vec2<f32>(x_556.x, x_556.x);
    let x_1035 : i32 = p;
    p = 0i;
    p = x_1035;
    top = (x_108 - bitcast<i32>(1u));
    let x_1036 : i32 = p;
    p = 0i;
    p = x_1036;
    let x_110_save = x_108;
    let x_1037 : i32 = stack[x_96_save];
    stack[x_96_save] = 0i;
    stack[x_96_save] = x_1037;
    let x_111 : i32 = stack[x_110_save];
    let x_1038 : array<i32, 10u> = stack;
    stack = array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i);
    stack = x_1038;
    let x_571 : vec3<f32> = vec3<f32>(x_559.y, x_559.x, x_564.y);
    let x_1039 : i32 = l_1;
    l_1 = 0i;
    l_1 = x_1039;
    h_1 = x_111;
    let x_1040 : array<i32, 10u> = stack;
    stack = array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i);
    stack = x_1040;
    let x_572 : vec2<f32> = vec2<f32>(x_562.y, x_561.y);
    let x_1041 : i32 = p;
    p = 0i;
    p = x_1041;
    let x_112 : i32 = top;
    let x_1042 : i32 = param_4;
    param_4 = 0i;
    param_4 = x_1042;
    let x_1043 : i32 = stack[x_100_save];
    stack[x_100_save] = 0i;
    stack[x_100_save] = x_1043;
    let x_573 : vec2<f32> = vec2<f32>(vec3<f32>(1.0f, 2.0f, 3.0f).y, vec3<f32>(1.0f, 2.0f, 3.0f).z);
    top = (x_112 - 1i);
    let x_1044 : i32 = param_5;
    param_5 = 0i;
    param_5 = x_1044;
    let x_574 : vec3<f32> = vec3<f32>(x_570.y, x_565.x, x_570.y);
    let x_1045 : i32 = h_1;
    h_1 = 0i;
    h_1 = x_1045;
    let x_114_save = x_112;
    let x_575 : vec2<f32> = vec2<f32>(x_564.y, x_564.z);
    let x_1046 : i32 = stack[x_100_save];
    stack[x_100_save] = 0i;
    stack[x_100_save] = x_1046;
    let x_115 : i32 = stack[x_114_save];
    let x_1047 : i32 = p;
    p = 0i;
    p = x_1047;
    let x_576 : vec3<f32> = vec3<f32>(x_573.y, x_573.y, x_565.x);
    let x_1048 : i32 = param_5;
    param_5 = 0i;
    param_5 = x_1048;
    l_1 = x_115;
    let x_1049 : i32 = top;
    top = 0i;
    top = x_1049;
    let x_118 : i32 = l_1;
    param_4 = x_118;
    let x_1050 : i32 = stack[x_110_save];
    stack[x_110_save] = 0i;
    stack[x_110_save] = x_1050;
    let x_577 : vec2<f32> = vec2<f32>(x_569.y, x_569.z);
    let x_120 : i32 = h_1;
    let x_578 : vec2<f32> = vec2<f32>(x_558.x, vec3<f32>(1.0f, 2.0f, 3.0f).y);
    param_5 = x_120;
    let x_1051 : i32 = stack[x_100_save];
    stack[x_100_save] = 0i;
    stack[x_100_save] = x_1051;
    let x_121 : i32 = performPartition_i1_i1_(&(param_4), &(param_5));
    let x_579 : vec2<f32> = vec2<f32>(x_567.x, x_568.x);
    let x_1052 : i32 = param_5;
    param_5 = 0i;
    param_5 = x_1052;
    p = x_121;
    let x_1053 : i32 = param_4;
    param_4 = 0i;
    param_4 = x_1053;
    let x_122 : i32 = p;
    let x_1054 : i32 = h_1;
    h_1 = 0i;
    h_1 = x_1054;
    let x_580 : vec2<f32> = vec2<f32>(x_568.y, x_568.y);
    let x_1055 : i32 = l_1;
    l_1 = 0i;
    l_1 = x_1055;
    let x_1056 : i32 = h_1;
    h_1 = 0i;
    h_1 = x_1056;
    let x_124 : i32 = l_1;
    let x_1057 : i32 = stack[x_110_save];
    stack[x_110_save] = 0i;
    stack[x_110_save] = x_1057;
    let x_1058 : i32 = h_1;
    h_1 = 0i;
    h_1 = x_1058;
    let x_582 : vec2<f32> = vec2<f32>(x_567.y, x_573.x);
    let x_1059 : i32 = stack[x_100_save];
    stack[x_100_save] = 0i;
    stack[x_100_save] = x_1059;
    if (((x_122 - bitcast<i32>(1u)) > x_124)) {
      let x_1060 : i32 = param_4;
      param_4 = 0i;
      param_4 = x_1060;
      let x_128 : i32 = top;
      let x_583 : vec2<f32> = vec2<f32>(x_571.y, x_556.y);
      let x_1061 : i32 = stack[x_100_save];
      stack[x_100_save] = 0i;
      stack[x_100_save] = x_1061;
      let x_1062 : array<i32, 10u> = stack;
      stack = array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i);
      stack = x_1062;
      let x_584 : vec2<f32> = vec2<f32>(x_569.z, x_569.y);
      let x_585 : vec3<f32> = vec3<f32>(x_580.y, x_577.x, x_577.x);
      let x_130 : i32 = l_1;
      let x_1063 : i32 = stack[x_114_save];
      stack[x_114_save] = 0i;
      stack[x_114_save] = x_1063;
      let x_586 : vec2<f32> = vec2<f32>(x_564.x, x_585.x);
      let x_1064 : i32 = param_5;
      param_5 = 0i;
      param_5 = x_1064;
      let x_131_save = (1i + x_128);
      let x_1065 : i32 = stack[x_110_save];
      stack[x_110_save] = 0i;
      stack[x_110_save] = x_1065;
      let x_587 : vec3<f32> = vec3<f32>(x_566.y, x_566.y, x_563.x);
      let x_1066 : i32 = param_5;
      param_5 = 0i;
      param_5 = x_1066;
      stack[x_131_save] = x_130;
      let x_132 : i32 = top;
      let x_1067 : i32 = stack[x_100_save];
      stack[x_100_save] = 0i;
      stack[x_100_save] = x_1067;
      let x_588 : vec2<f32> = vec2<f32>(x_575.y, x_575.x);
      let x_1068 : i32 = stack[x_131_save];
      stack[x_131_save] = 0i;
      stack[x_131_save] = x_1068;
      let x_133 : i32 = bitcast<i32>((1u + bitcast<u32>(x_132)));
      let x_1069 : i32 = stack[x_100_save];
      stack[x_100_save] = 0i;
      stack[x_100_save] = x_1069;
      let x_589 : vec3<f32> = vec3<f32>(x_576.z, x_588.y, x_576.z);
      let x_1070 : i32 = h_1;
      h_1 = 0i;
      h_1 = x_1070;
      top = x_133;
      let x_1071 : array<i32, 10u> = stack;
      stack = array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i);
      stack = x_1071;
      let x_134 : i32 = p;
      let x_590 : vec2<f32> = vec2<f32>(x_576.x, x_573.y);
      let x_1072 : i32 = stack[x_114_save];
      stack[x_114_save] = 0i;
      stack[x_114_save] = x_1072;
      let x_136_save = x_133;
      let x_1073 : i32 = stack[x_114_save];
      stack[x_114_save] = 0i;
      stack[x_114_save] = x_1073;
      stack[x_136_save] = (x_134 - bitcast<i32>(1u));
      let x_1074 : i32 = stack[x_96_save];
      stack[x_96_save] = 0i;
      stack[x_96_save] = x_1074;
      let x_591 : vec2<f32> = vec2<f32>(x_569.z, x_569.y);
      let x_1075 : i32 = stack[x_136_save];
      stack[x_136_save] = 0i;
      stack[x_136_save] = x_1075;
    }
    let x_1076 : i32 = stack[x_96_save];
    stack[x_96_save] = 0i;
    stack[x_96_save] = x_1076;
    let x_592 : vec2<f32> = vec2<f32>(vec3<f32>(1.0f, 2.0f, 3.0f).x, vec3<f32>(1.0f, 2.0f, 3.0f).y);
    let x_1077 : QuicksortObject = obj;
    obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
    obj = x_1077;
    let x_137 : i32 = p;
    let x_1078 : i32 = stack[x_114_save];
    stack[x_114_save] = 0i;
    stack[x_114_save] = x_1078;
    let x_593 : vec3<f32> = vec3<f32>(x_571.z, x_556.x, x_556.y);
    let x_1079 : i32 = p;
    p = 0i;
    p = x_1079;
    let x_594 : vec3<f32> = vec3<f32>(x_563.z, x_563.x, x_575.x);
    let x_1080 : i32 = stack[x_114_save];
    stack[x_114_save] = 0i;
    stack[x_114_save] = x_1080;
    let x_139 : i32 = h_1;
    let x_1081 : i32 = top;
    top = 0i;
    top = x_1081;
    let x_595 : vec3<f32> = vec3<f32>(x_560.z, x_568.x, x_560.x);
    let x_1082 : i32 = stack[x_100_save];
    stack[x_100_save] = 0i;
    stack[x_100_save] = x_1082;
    let x_1083 : i32 = p;
    p = 0i;
    p = x_1083;
    if ((bitcast<i32>((1u + bitcast<u32>(x_137))) < x_139)) {
      let x_1084 : i32 = stack[x_114_save];
      stack[x_114_save] = 0i;
      stack[x_114_save] = x_1084;
      let x_596 : vec2<f32> = vec2<f32>(x_592.y, x_582.x);
      let x_1085 : i32 = l_1;
      l_1 = 0i;
      l_1 = x_1085;
      let x_143 : i32 = top;
      let x_1086 : i32 = stack[x_114_save];
      stack[x_114_save] = 0i;
      stack[x_114_save] = x_1086;
      let x_597 : vec3<f32> = vec3<f32>(x_562.y, x_560.y, x_560.y);
      let x_144 : i32 = (x_143 + 1i);
      let x_1087 : i32 = param_5;
      param_5 = 0i;
      param_5 = x_1087;
      top = x_144;
      let x_1088 : i32 = stack[x_114_save];
      stack[x_114_save] = 0i;
      stack[x_114_save] = x_1088;
      let x_145 : i32 = p;
      let x_1089 : i32 = param_5;
      param_5 = 0i;
      param_5 = x_1089;
      let x_599 : vec3<f32> = vec3<f32>(x_560.z, x_560.x, x_568.x);
      let x_1090 : i32 = p;
      p = 0i;
      p = x_1090;
      let x_600 : vec3<f32> = vec3<f32>(x_556.x, x_580.x, x_580.x);
      let x_1091 : i32 = stack[x_100_save];
      stack[x_100_save] = 0i;
      stack[x_100_save] = x_1091;
      let x_147_save = x_144;
      let x_1092 : i32 = stack[x_110_save];
      stack[x_110_save] = 0i;
      stack[x_110_save] = x_1092;
      let x_601 : vec2<f32> = vec2<f32>(x_563.x, x_563.y);
      stack[x_147_save] = bitcast<i32>((1u + bitcast<u32>(x_145)));
      let x_1093 : array<i32, 10u> = stack;
      stack = array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i);
      stack = x_1093;
      let x_148 : i32 = top;
      let x_1094 : i32 = stack[x_114_save];
      stack[x_114_save] = 0i;
      stack[x_114_save] = x_1094;
      let x_602 : vec2<f32> = vec2<f32>(x_565.y, x_599.y);
      let x_1095 : array<i32, 10u> = stack;
      stack = array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i);
      stack = x_1095;
      let x_149 : i32 = (x_148 + bitcast<i32>(1u));
      let x_1096 : i32 = stack[x_147_save];
      stack[x_147_save] = 0i;
      stack[x_147_save] = x_1096;
      top = x_149;
      let x_1097 : i32 = param_4;
      param_4 = 0i;
      param_4 = x_1097;
      let x_150 : i32 = h_1;
      let x_1098 : i32 = stack[x_100_save];
      stack[x_100_save] = 0i;
      stack[x_100_save] = x_1098;
      let x_1099 : i32 = stack[x_96_save];
      stack[x_96_save] = 0i;
      stack[x_96_save] = x_1099;
      stack[x_149] = x_150;
      let x_1100 : i32 = stack[x_114_save];
      stack[x_114_save] = 0i;
      stack[x_114_save] = x_1100;
      let x_603 : vec3<f32> = vec3<f32>(x_568.y, x_564.x, x_564.x);
      let x_1101 : i32 = l_1;
      l_1 = 0i;
      l_1 = x_1101;
    }
    let x_1102 : i32 = stack[x_100_save];
    stack[x_100_save] = 0i;
    stack[x_100_save] = x_1102;

    continuing {
      let x_1103 : i32 = l_1;
      l_1 = 0i;
      l_1 = x_1103;
      let x_604 : vec2<f32> = vec2<f32>(x_563.z, x_564.x);
      let x_1104 : QuicksortObject = obj;
      obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
      obj = x_1104;
    }
  }
  let x_1105 : i32 = h_1;
  h_1 = 0i;
  h_1 = x_1105;
  return;
}

fn main_1() {
  var color : vec3<f32>;
  var i_2 : i32;
  var uv : vec2<f32>;
  let x_717 : vec2<f32> = uv;
  uv = vec2<f32>(0.0f, 0.0f);
  uv = x_717;
  i_2 = 0i;
  let x_721 : QuicksortObject = obj;
  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
  obj = x_721;
  if (true) {
    let x_722 : QuicksortObject = obj;
    obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
    obj = x_722;
    let x_431 : vec2<f32> = vec2<f32>(vec3<f32>(1.0f, 2.0f, 3.0f).x, vec3<f32>(1.0f, 2.0f, 3.0f).x);
    let x_158 : i32 = i_2;
    let x_723 : vec2<f32> = uv;
    uv = vec2<f32>(0.0f, 0.0f);
    uv = x_723;
    let x_725 : vec3<f32> = color;
    color = vec3<f32>(0.0f, 0.0f, 0.0f);
    color = x_725;
    let x_432 : vec2<f32> = vec2<f32>(x_431.y, x_431.y);
    let x_726 : QuicksortObject = obj;
    obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
    obj = x_726;
  }
  let x_756 : QuicksortObject = obj;
  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
  obj = x_756;
  let x_446 : vec2<f32> = vec2<f32>(vec2<f32>().x, vec2<f32>().x);
  let x_757 : i32 = i_2;
  i_2 = 0i;
  i_2 = x_757;
  quicksort_();
  let x_758 : QuicksortObject = obj;
  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
  obj = x_758;
  let x_184 : vec4<f32> = gl_FragCoord;
  let x_759 : vec2<f32> = uv;
  uv = vec2<f32>(0.0f, 0.0f);
  uv = x_759;
  let x_447 : vec2<f32> = vec2<f32>(vec2<f32>().y, vec2<f32>().y);
  let x_760 : vec2<f32> = uv;
  uv = vec2<f32>(0.0f, 0.0f);
  uv = x_760;
  let x_185 : vec2<f32> = vec2<f32>(x_184.x, x_184.y);
  let x_448 : vec3<f32> = vec3<f32>(x_185.y, x_446.y, x_446.y);
  let x_761 : QuicksortObject = obj;
  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
  obj = x_761;
  let x_762 : vec2<f32> = uv;
  uv = vec2<f32>(0.0f, 0.0f);
  uv = x_762;
  let x_191 : vec2<f32> = x_188.resolution;
  let x_763 : QuicksortObject = obj;
  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
  obj = x_763;
  let x_449 : vec3<f32> = vec3<f32>(x_184.y, vec3<f32>(1.0f, 2.0f, 3.0f).z, x_184.w);
  let x_764 : vec3<f32> = color;
  color = vec3<f32>(0.0f, 0.0f, 0.0f);
  color = x_764;
  let x_192 : vec2<f32> = (x_185 / x_191);
  let x_765 : QuicksortObject = obj;
  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
  obj = x_765;
  let x_450 : vec2<f32> = vec2<f32>(x_447.x, x_185.y);
  let x_766 : vec3<f32> = color;
  color = vec3<f32>(0.0f, 0.0f, 0.0f);
  let x_767 : vec3<f32> = color;
  color = vec3<f32>(0.0f, 0.0f, 0.0f);
  color = x_767;
  color = x_766;
  uv = x_192;
  color = vec3<f32>(1.0f, 2.0f, 3.0f);
  let x_768 : vec3<f32> = color;
  color = vec3<f32>(0.0f, 0.0f, 0.0f);
  color = x_768;
  let x_451 : vec3<f32> = vec3<f32>(x_185.x, x_185.y, x_446.y);
  let x_769 : QuicksortObject = obj;
  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
  obj = x_769;
  let x_770 : i32 = obj.numbers[0u];
  obj.numbers[0u] = 0i;
  obj.numbers[0u] = x_770;
  let x_201 : i32 = obj.numbers[0u];
  let x_771 : QuicksortObject = obj;
  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
  obj = x_771;
  let x_772 : i32 = obj.numbers[0u];
  obj.numbers[0u] = 0i;
  obj.numbers[0u] = x_772;
  let x_206 : f32 = color.x;
  let x_773 : f32 = color.x;
  color.x = 0.0f;
  color.x = x_773;
  let x_452 : vec2<f32> = vec2<f32>(vec3<f32>(1.0f, 2.0f, 3.0f).z, vec3<f32>(1.0f, 2.0f, 3.0f).y);
  let x_774 : i32 = i_2;
  i_2 = 0i;
  i_2 = x_774;
  let x_775 : QuicksortObject = obj;
  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
  obj = x_775;
  let x_453 : vec3<f32> = vec3<f32>(x_451.x, x_450.x, x_450.y);
  color.x = (x_206 + f32(x_201));
  let x_776 : vec2<f32> = uv;
  uv = vec2<f32>(0.0f, 0.0f);
  uv = x_776;
  let x_777 : vec2<f32> = uv;
  uv = vec2<f32>(0.0f, 0.0f);
  uv = x_777;
  let x_454 : vec2<f32> = vec2<f32>(x_184.y, x_184.y);
  let x_210 : f32 = uv.x;
  let x_455 : vec2<f32> = vec2<f32>(x_192.y, x_192.x);
  let x_778 : f32 = uv.x;
  uv.x = 0.0f;
  uv.x = x_778;
  let x_779 : QuicksortObject = obj;
  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
  obj = x_779;
  if ((x_210 > 0.25f)) {
    let x_780 : i32 = i_2;
    i_2 = 0i;
    i_2 = x_780;
    let x_781 : i32 = obj.numbers[0u];
    obj.numbers[0u] = 0i;
    obj.numbers[0u] = x_781;
    let x_456 : vec3<f32> = vec3<f32>(vec2<f32>().y, x_448.y, x_448.y);
    let x_782 : f32 = uv.x;
    uv.x = 0.0f;
    uv.x = x_782;
    let x_216 : i32 = obj.numbers[1i];
    let x_783 : QuicksortObject = obj;
    obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
    obj = x_783;
    let x_457 : vec2<f32> = vec2<f32>(x_454.x, x_454.x);
    let x_784 : vec2<f32> = uv;
    uv = vec2<f32>(0.0f, 0.0f);
    uv = x_784;
    let x_785 : QuicksortObject = obj;
    obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
    obj = x_785;
    let x_458 : vec2<f32> = vec2<f32>(vec3<f32>(1.0f, 2.0f, 3.0f).z, vec2<f32>().y);
    let x_786 : i32 = i_2;
    i_2 = 0i;
    i_2 = x_786;
    let x_219 : f32 = color[0i];
    let x_787 : f32 = color[0i];
    color[0i] = 0.0f;
    color[0i] = x_787;
    let x_788 : vec3<f32> = color;
    color = vec3<f32>(0.0f, 0.0f, 0.0f);
    color = x_788;
    let x_789 : vec3<f32> = color;
    color = vec3<f32>(0.0f, 0.0f, 0.0f);
    color = x_789;
    let x_459 : vec3<f32> = vec3<f32>(x_454.y, x_454.y, x_447.y);
    let x_790 : f32 = color[0i];
    color[0i] = 0.0f;
    color[0i] = x_790;
    color.x = (f32(x_216) + x_219);
    let x_791 : i32 = obj.numbers[0u];
    obj.numbers[0u] = 0i;
    obj.numbers[0u] = x_791;
  }
  let x_792 : f32 = uv.x;
  uv.x = 0.0f;
  uv.x = x_792;
  let x_793 : f32 = uv.x;
  uv.x = 0.0f;
  uv.x = x_793;
  let x_223 : f32 = uv.x;
  let x_794 : f32 = uv.x;
  uv.x = 0.0f;
  uv.x = x_794;
  let x_460 : vec3<f32> = vec3<f32>(x_453.z, x_453.y, x_453.y);
  let x_795 : vec2<f32> = uv;
  uv = vec2<f32>(0.0f, 0.0f);
  uv = x_795;
  let x_796 : f32 = uv.x;
  uv.x = 0.0f;
  uv.x = x_796;
  let x_461 : vec2<f32> = vec2<f32>(vec2<f32>().y, vec2<f32>().y);
  let x_797 : f32 = uv.x;
  uv.x = 0.0f;
  uv.x = x_797;
  if ((x_223 > 0.5f)) {
    let x_798 : f32 = uv.x;
    uv.x = 0.0f;
    uv.x = x_798;
    let x_462 : vec2<f32> = vec2<f32>(x_446.x, x_446.x);
    let x_799 : f32 = color.x;
    color.x = 0.0f;
    color.x = x_799;
    let x_800 : f32 = color.x;
    color.x = 0.0f;
    color.x = x_800;
    let x_463 : vec3<f32> = vec3<f32>(x_453.x, x_453.z, x_461.y);
    let x_801 : f32 = color.x;
    color.x = 0.0f;
    color.x = x_801;
    let x_230 : i32 = obj.numbers[2u];
    let x_802 : f32 = uv.x;
    uv.x = 0.0f;
    uv.x = x_802;
    let x_803 : f32 = color.x;
    color.x = 0.0f;
    color.x = x_803;
    let x_804 : i32 = obj.numbers[2u];
    obj.numbers[2u] = 0i;
    obj.numbers[2u] = x_804;
    let x_464 : vec2<f32> = vec2<f32>(x_450.y, x_191.x);
    let x_805 : f32 = color.y;
    color.y = 0.0f;
    color.y = x_805;
    let x_234 : f32 = color.y;
    let x_806 : i32 = obj.numbers[2u];
    obj.numbers[2u] = 0i;
    obj.numbers[2u] = x_806;
    let x_465 : vec2<f32> = vec2<f32>(x_463.x, x_185.x);
    let x_807 : f32 = color.x;
    color.x = 0.0f;
    color.x = x_807;
    let x_808 : i32 = i_2;
    i_2 = 0i;
    i_2 = x_808;
    let x_466 : vec2<f32> = vec2<f32>(x_455.y, vec2<f32>().y);
    let x_809 : i32 = i_2;
    i_2 = 0i;
    i_2 = x_809;
    color.y = (f32(x_230) + x_234);
    let x_810 : f32 = uv.x;
    uv.x = 0.0f;
    uv.x = x_810;
  }
  let x_811 : i32 = i_2;
  i_2 = 0i;
  i_2 = x_811;
  let x_467 : vec2<f32> = vec2<f32>(x_191.x, x_191.x);
  let x_812 : f32 = uv.x;
  uv.x = 0.0f;
  uv.x = x_812;
  let x_238 : f32 = uv[0i];
  let x_813 : vec3<f32> = color;
  color = vec3<f32>(0.0f, 0.0f, 0.0f);
  color = x_813;
  let x_814 : f32 = color.x;
  color.x = 0.0f;
  color.x = x_814;
  if ((x_238 > 0.75f)) {
    let x_815 : f32 = color.x;
    color.x = 0.0f;
    color.x = x_815;
    let x_245 : i32 = obj.numbers[3i];
    let x_816 : f32 = color.x;
    color.x = 0.0f;
    color.x = x_816;
    let x_817 : QuicksortObject = obj;
    obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
    obj = x_817;
    let x_468 : vec3<f32> = vec3<f32>(x_467.x, x_467.x, x_467.x);
    let x_818 : f32 = uv[0i];
    uv[0i] = 0.0f;
    uv[0i] = x_818;
    let x_819 : f32 = uv.x;
    uv.x = 0.0f;
    uv.x = x_819;
    let x_249 : f32 = color.z;
    let x_820 : vec3<f32> = color;
    color = vec3<f32>(0.0f, 0.0f, 0.0f);
    color = x_820;
    let x_469 : vec3<f32> = vec3<f32>(x_467.x, x_191.y, x_467.y);
    let x_821 : f32 = color.z;
    color.z = 0.0f;
    color.z = x_821;
    let x_822 : i32 = obj.numbers[0u];
    obj.numbers[0u] = 0i;
    obj.numbers[0u] = x_822;
    let x_470 : vec2<f32> = vec2<f32>(vec2<f32>().x, vec2<f32>().y);
    let x_823 : f32 = color.z;
    color.z = 0.0f;
    color.z = x_823;
    color.z = (x_249 + f32(x_245));
    let x_824 : vec2<f32> = uv;
    uv = vec2<f32>(0.0f, 0.0f);
    uv = x_824;
    let x_471 : vec2<f32> = vec2<f32>(x_470.y, x_470.y);
  }
  let x_825 : f32 = uv[0i];
  uv[0i] = 0.0f;
  uv[0i] = x_825;
  let x_472 : vec3<f32> = vec3<f32>(x_454.x, x_454.y, x_454.y);
  let x_254 : i32 = obj.numbers[4i];
  let x_826 : f32 = uv[0i];
  uv[0i] = 0.0f;
  uv[0i] = x_826;
  let x_827 : vec3<f32> = color;
  color = vec3<f32>(0.0f, 0.0f, 0.0f);
  color = x_827;
  let x_473 : vec3<f32> = vec3<f32>(x_446.y, x_453.x, x_453.x);
  let x_828 : i32 = obj.numbers[4i];
  obj.numbers[4i] = 0i;
  obj.numbers[4i] = x_828;
  let x_474 : vec2<f32> = vec2<f32>(x_191.x, x_184.z);
  let x_829 : f32 = uv.x;
  uv.x = 0.0f;
  uv.x = x_829;
  let x_257 : f32 = color.y;
  let x_830 : f32 = color.y;
  color.y = 0.0f;
  color.y = x_830;
  let x_475 : vec2<f32> = vec2<f32>(x_467.x, x_450.x);
  let x_831 : f32 = uv.x;
  uv.x = 0.0f;
  uv.x = x_831;
  let x_832 : f32 = color.x;
  color.x = 0.0f;
  color.x = x_832;
  let x_476 : vec2<f32> = vec2<f32>(x_451.z, x_460.y);
  color.y = (x_257 + f32(x_254));
  let x_477 : vec3<f32> = vec3<f32>(vec2<f32>().x, x_472.x, vec2<f32>().y);
  let x_833 : f32 = uv.x;
  uv.x = 0.0f;
  uv.x = x_833;
  let x_834 : f32 = color.x;
  color.x = 0.0f;
  color.x = x_834;
  let x_478 : vec2<f32> = vec2<f32>(x_472.x, x_472.y);
  let x_835 : f32 = uv.y;
  uv.y = 0.0f;
  uv.y = x_835;
  let x_261 : f32 = uv.y;
  let x_836 : i32 = i_2;
  i_2 = 0i;
  i_2 = x_836;
  let x_479 : vec3<f32> = vec3<f32>(vec2<f32>().y, x_454.y, vec2<f32>().x);
  let x_837 : i32 = obj.numbers[0u];
  obj.numbers[0u] = 0i;
  obj.numbers[0u] = x_837;
  let x_838 : f32 = color.y;
  color.y = 0.0f;
  color.y = x_838;
  let x_480 : vec3<f32> = vec3<f32>(x_446.x, x_446.x, vec2<f32>().y);
  let x_839 : f32 = uv.x;
  uv.x = 0.0f;
  uv.x = x_839;
  if ((x_261 > 0.25f)) {
    let x_481 : vec2<f32> = vec2<f32>(x_447.x, x_480.z);
    let x_840 : vec3<f32> = color;
    color = vec3<f32>(0.0f, 0.0f, 0.0f);
    color = x_840;
    let x_267 : i32 = obj.numbers[5u];
    let x_841 : f32 = color.x;
    color.x = 0.0f;
    color.x = x_841;
    let x_842 : i32 = i_2;
    i_2 = 0i;
    i_2 = x_842;
    let x_843 : i32 = i_2;
    i_2 = 0i;
    i_2 = x_843;
    let x_270 : f32 = color.x;
    let x_844 : f32 = uv[0i];
    uv[0i] = 0.0f;
    uv[0i] = x_844;
    let x_482 : vec3<f32> = vec3<f32>(x_455.x, x_475.y, x_455.y);
    let x_845 : QuicksortObject = obj;
    obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
    obj = x_845;
    let x_846 : f32 = uv.y;
    uv.y = 0.0f;
    uv.y = x_846;
    let x_847 : i32 = i_2;
    i_2 = 0i;
    i_2 = x_847;
    let x_483 : vec3<f32> = vec3<f32>(x_184.w, x_184.w, x_192.x);
    let x_848 : f32 = uv.x;
    uv.x = 0.0f;
    uv.x = x_848;
    color.x = (f32(x_267) + x_270);
    let x_484 : vec3<f32> = vec3<f32>(x_454.y, x_450.x, x_454.y);
    let x_849 : f32 = uv.x;
    uv.x = 0.0f;
    uv.x = x_849;
  }
  let x_850 : f32 = color.x;
  color.x = 0.0f;
  color.x = x_850;
  let x_485 : vec3<f32> = vec3<f32>(x_467.x, x_450.y, x_450.x);
  let x_851 : f32 = uv.y;
  uv.y = 0.0f;
  uv.y = x_851;
  let x_852 : i32 = obj.numbers[4i];
  obj.numbers[4i] = 0i;
  obj.numbers[4i] = x_852;
  let x_274 : f32 = uv.y;
  let x_853 : i32 = obj.numbers[0u];
  obj.numbers[0u] = 0i;
  obj.numbers[0u] = x_853;
  if ((x_274 > 0.5f)) {
    let x_854 : f32 = uv.x;
    uv.x = 0.0f;
    uv.x = x_854;
    let x_486 : vec2<f32> = vec2<f32>(x_480.y, x_455.y);
    let x_855 : f32 = color.y;
    color.y = 0.0f;
    color.y = x_855;
    let x_487 : vec2<f32> = vec2<f32>(x_449.z, x_449.y);
    let x_856 : f32 = uv.y;
    uv.y = 0.0f;
    uv.y = x_856;
    let x_280 : i32 = obj.numbers[6u];
    let x_857 : f32 = uv.y;
    uv.y = 0.0f;
    uv.y = x_857;
    let x_858 : i32 = i_2;
    i_2 = 0i;
    i_2 = x_858;
    let x_859 : i32 = obj.numbers[4i];
    obj.numbers[4i] = 0i;
    obj.numbers[4i] = x_859;
    let x_488 : vec2<f32> = vec2<f32>(x_473.z, x_473.y);
    let x_283 : f32 = color.y;
    let x_860 : vec2<f32> = uv;
    uv = vec2<f32>(0.0f, 0.0f);
    uv = x_860;
    let x_861 : f32 = color.x;
    color.x = 0.0f;
    color.x = x_861;
    let x_489 : vec2<f32> = vec2<f32>(x_475.y, x_475.x);
    let x_862 : i32 = obj.numbers[6u];
    obj.numbers[6u] = 0i;
    obj.numbers[6u] = x_862;
    let x_863 : i32 = obj.numbers[6u];
    obj.numbers[6u] = 0i;
    obj.numbers[6u] = x_863;
    let x_490 : vec2<f32> = vec2<f32>(x_480.z, x_480.z);
    let x_864 : QuicksortObject = obj;
    obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
    obj = x_864;
    color.y = (f32(x_280) + x_283);
    let x_865 : f32 = color.x;
    color.x = 0.0f;
    color.x = x_865;
    let x_491 : vec2<f32> = vec2<f32>(vec3<f32>(1.0f, 2.0f, 3.0f).y, x_454.x);
    let x_866 : f32 = color.y;
    color.y = 0.0f;
    color.y = x_866;
  }
  let x_492 : vec2<f32> = vec2<f32>(x_455.y, x_455.y);
  let x_867 : f32 = color.x;
  color.x = 0.0f;
  color.x = x_867;
  let x_287 : f32 = uv.y;
  let x_868 : QuicksortObject = obj;
  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
  obj = x_868;
  let x_493 : vec2<f32> = vec2<f32>(x_475.x, x_475.y);
  let x_869 : f32 = uv[0i];
  uv[0i] = 0.0f;
  uv[0i] = x_869;
  let x_870 : f32 = color.y;
  color.y = 0.0f;
  color.y = x_870;
  let x_494 : vec3<f32> = vec3<f32>(x_191.x, x_191.y, x_191.y);
  let x_871 : i32 = obj.numbers[4i];
  obj.numbers[4i] = 0i;
  obj.numbers[4i] = x_871;
  if ((x_287 > 0.75f)) {
    let x_872 : vec3<f32> = color;
    color = vec3<f32>(0.0f, 0.0f, 0.0f);
    color = x_872;
    let x_873 : f32 = color.x;
    color.x = 0.0f;
    color.x = x_873;
    let x_495 : vec3<f32> = vec3<f32>(x_192.y, x_192.x, x_192.y);
    let x_874 : vec3<f32> = color;
    color = vec3<f32>(0.0f, 0.0f, 0.0f);
    color = x_874;
    let x_293 : i32 = obj.numbers[7i];
    let x_875 : f32 = uv.x;
    uv.x = 0.0f;
    uv.x = x_875;
    let x_496 : vec3<f32> = vec3<f32>(x_475.x, x_467.y, x_467.x);
    let x_876 : f32 = color.y;
    color.y = 0.0f;
    color.y = x_876;
    let x_497 : vec2<f32> = vec2<f32>(x_477.x, x_461.y);
    let x_877 : i32 = obj.numbers[0u];
    obj.numbers[0u] = 0i;
    obj.numbers[0u] = x_877;
    let x_878 : f32 = color.y;
    color.y = 0.0f;
    color.y = x_878;
    let x_498 : vec3<f32> = vec3<f32>(x_478.x, x_478.y, x_478.x);
    let x_879 : f32 = color.x;
    color.x = 0.0f;
    color.x = x_879;
    let x_296 : f32 = color.z;
    let x_880 : f32 = uv.y;
    uv.y = 0.0f;
    uv.y = x_880;
    let x_499 : vec2<f32> = vec2<f32>(x_184.x, x_184.y);
    let x_881 : f32 = uv.x;
    uv.x = 0.0f;
    uv.x = x_881;
    let x_882 : f32 = uv.y;
    uv.y = 0.0f;
    uv.y = x_882;
    let x_883 : f32 = uv.y;
    uv.y = 0.0f;
    uv.y = x_883;
    let x_500 : vec3<f32> = vec3<f32>(x_499.y, x_499.y, x_494.z);
    let x_884 : f32 = color.z;
    color.z = 0.0f;
    color.z = x_884;
    color.z = (f32(x_293) + x_296);
    let x_885 : f32 = color.y;
    color.y = 0.0f;
    color.y = x_885;
    let x_501 : vec2<f32> = vec2<f32>(x_453.x, x_453.z);
    let x_886 : f32 = color.x;
    color.x = 0.0f;
    color.x = x_886;
  }
  let x_887 : i32 = i_2;
  i_2 = 0i;
  i_2 = x_887;
  let x_502 : vec2<f32> = vec2<f32>(x_451.y, x_192.y);
  let x_888 : vec2<f32> = uv;
  uv = vec2<f32>(0.0f, 0.0f);
  uv = x_888;
  let x_301 : i32 = obj.numbers[8i];
  let x_889 : i32 = i_2;
  i_2 = 0i;
  i_2 = x_889;
  let x_503 : vec2<f32> = vec2<f32>(x_185.x, x_451.z);
  let x_890 : i32 = obj.numbers[8i];
  obj.numbers[8i] = 0i;
  obj.numbers[8i] = x_890;
  let x_891 : f32 = color.y;
  color.y = 0.0f;
  color.y = x_891;
  let x_504 : vec2<f32> = vec2<f32>(x_453.y, vec2<f32>().x);
  let x_892 : f32 = color.x;
  color.x = 0.0f;
  color.x = x_892;
  let x_505 : vec3<f32> = vec3<f32>(x_504.x, x_504.y, x_504.x);
  let x_893 : f32 = color.z;
  color.z = 0.0f;
  color.z = x_893;
  let x_304 : f32 = color.z;
  let x_894 : f32 = color.x;
  color.x = 0.0f;
  color.x = x_894;
  let x_506 : vec2<f32> = vec2<f32>(x_493.x, x_492.x);
  let x_895 : i32 = obj.numbers[4i];
  obj.numbers[4i] = 0i;
  obj.numbers[4i] = x_895;
  let x_896 : f32 = uv.y;
  uv.y = 0.0f;
  uv.y = x_896;
  let x_507 : vec2<f32> = vec2<f32>(x_461.x, x_447.x);
  let x_897 : f32 = color.y;
  color.y = 0.0f;
  color.y = x_897;
  color.z = (x_304 + f32(x_301));
  let x_898 : vec2<f32> = uv;
  uv = vec2<f32>(0.0f, 0.0f);
  uv = x_898;
  let x_899 : f32 = uv.x;
  uv.x = 0.0f;
  uv.x = x_899;
  let x_508 : vec3<f32> = vec3<f32>(x_461.y, x_461.x, x_506.y);
  let x_900 : f32 = uv.x;
  uv.x = 0.0f;
  uv.x = x_900;
  let x_308 : f32 = uv.x;
  let x_901 : f32 = color.y;
  color.y = 0.0f;
  color.y = x_901;
  let x_509 : vec3<f32> = vec3<f32>(x_503.y, x_503.x, x_448.z);
  let x_902 : f32 = uv.y;
  uv.y = 0.0f;
  uv.y = x_902;
  let x_310 : f32 = uv.y;
  let x_903 : f32 = uv.y;
  uv.y = 0.0f;
  uv.y = x_903;
  let x_904 : f32 = color.z;
  color.z = 0.0f;
  color.z = x_904;
  let x_510 : vec3<f32> = vec3<f32>(vec3<f32>(1.0f, 2.0f, 3.0f).y, x_485.y, x_485.z);
  let x_905 : f32 = color.z;
  color.z = 0.0f;
  color.z = x_905;
  let x_906 : i32 = i_2;
  i_2 = 0i;
  i_2 = x_906;
  let x_511 : vec2<f32> = vec2<f32>(x_485.z, x_485.y);
  let x_907 : vec3<f32> = color;
  color = vec3<f32>(0.0f, 0.0f, 0.0f);
  color = x_907;
  let x_908 : f32 = uv.y;
  uv.y = 0.0f;
  uv.y = x_908;
  let x_512 : vec3<f32> = vec3<f32>(x_455.y, x_455.y, x_455.y);
  let x_909 : i32 = obj.numbers[4i];
  obj.numbers[4i] = 0i;
  obj.numbers[4i] = x_909;
  if ((abs((x_308 - x_310)) < 0.25f)) {
    let x_910 : f32 = uv.x;
    uv.x = 0.0f;
    uv.x = x_910;
    let x_911 : QuicksortObject = obj;
    obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
    obj = x_911;
    let x_513 : vec3<f32> = vec3<f32>(x_505.z, x_505.x, x_448.x);
    let x_912 : i32 = obj.numbers[8i];
    obj.numbers[8i] = 0i;
    obj.numbers[8i] = x_912;
    let x_317 : i32 = obj.numbers[9u];
    let x_514 : vec3<f32> = vec3<f32>(x_474.y, x_474.y, x_474.y);
    let x_913 : f32 = uv.y;
    uv.y = 0.0f;
    uv.y = x_913;
    let x_320 : f32 = color.x;
    let x_914 : f32 = uv.y;
    uv.y = 0.0f;
    uv.y = x_914;
    let x_515 : vec2<f32> = vec2<f32>(x_502.x, x_502.y);
    let x_915 : f32 = color.x;
    color.x = 0.0f;
    color.x = x_915;
    let x_916 : vec3<f32> = color;
    color = vec3<f32>(0.0f, 0.0f, 0.0f);
    color = x_916;
    let x_516 : vec2<f32> = vec2<f32>(x_452.x, x_452.x);
    let x_917 : vec2<f32> = uv;
    uv = vec2<f32>(0.0f, 0.0f);
    uv = x_917;
    let x_918 : f32 = uv.x;
    uv.x = 0.0f;
    uv.x = x_918;
    let x_517 : vec3<f32> = vec3<f32>(vec2<f32>().x, vec2<f32>().x, vec2<f32>().y);
    color.x = (f32(x_317) + x_320);
    let x_919 : f32 = color.x;
    color.x = 0.0f;
    color.x = x_919;
    let x_518 : vec3<f32> = vec3<f32>(x_480.y, x_508.x, x_480.x);
    let x_920 : f32 = color.x;
    color.x = 0.0f;
    color.x = x_920;
  }
  let x_921 : f32 = uv.y;
  uv.y = 0.0f;
  uv.y = x_921;
  let x_325 : vec3<f32> = color;
  let x_922 : f32 = uv[0i];
  uv[0i] = 0.0f;
  uv[0i] = x_922;
  let x_519 : vec3<f32> = vec3<f32>(x_447.x, x_446.x, x_446.y);
  let x_326 : vec3<f32> = normalize(x_325);
  let x_923 : f32 = uv.x;
  uv.x = 0.0f;
  uv.x = x_923;
  let x_924 : QuicksortObject = obj;
  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
  obj = x_924;
  let x_925 : QuicksortObject = obj;
  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
  obj = x_925;
  let x_926 : f32 = color.y;
  color.y = 0.0f;
  color.y = x_926;
  let x_520 : vec2<f32> = vec2<f32>(x_506.y, x_519.y);
  let x_927 : f32 = color.y;
  color.y = 0.0f;
  color.y = x_927;
  let x_330 : vec4<f32> = vec4<f32>(x_326.x, x_326.y, x_326.z, 1.0f);
  let x_928 : f32 = uv.y;
  uv.y = 0.0f;
  uv.y = x_928;
  let x_521 : vec3<f32> = vec3<f32>(vec3<f32>(1.0f, 2.0f, 3.0f).y, vec3<f32>(1.0f, 2.0f, 3.0f).y, x_520.y);
  let x_929 : f32 = uv.x;
  uv.x = 0.0f;
  uv.x = x_929;
  x_GLF_color = x_330;
  let x_930 : QuicksortObject = obj;
  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
  obj = x_930;
  let x_522 : vec3<f32> = vec3<f32>(x_330.w, x_330.y, x_493.x);
  let x_931 : f32 = color.x;
  color.x = 0.0f;
  color.x = x_931;
  return;
}

struct main_out {
  @location(0)
  x_GLF_color_1 : vec4<f32>,
}

@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);
}
