SKIP: FAILED


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

struct buf0 {
  /* @offset(0) */
  resolution : vec2f,
}

var<private> obj : QuicksortObject;

var<private> gl_FragCoord : vec4f;

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

var<private> x_GLF_color : vec4f;

const x_199 = vec3f(1.0f, 2.0f, 3.0f);

fn swap_i1_i1_(i : ptr<function, i32>, j : ptr<function, i32>) {
  var temp : i32;
  let x_932 = temp;
  temp = 0i;
  temp = x_932;
  let x_523 = x_199.zyz;
  let x_933 = *(i);
  *(i) = 0i;
  *(i) = x_933;
  let x_28 = *(i);
  let x_934 = *(j);
  *(j) = 0i;
  *(j) = x_934;
  let x_524 = x_523.yxy;
  let x_935 = temp;
  temp = 0i;
  temp = x_935;
  let x_30 = &(obj.numbers[x_28]);
  let x_936 = *(x_30);
  *(x_30) = 0i;
  *(x_30) = x_936;
  let x_31 = *(x_30);
  let x_937 = temp;
  temp = 0i;
  temp = x_937;
  temp = x_31;
  let x_938 = *(j);
  *(j) = 0i;
  *(j) = x_938;
  let x_525 = vec3f(x_523.z, x_199.x, x_523.y);
  let x_939 = *(i);
  *(i) = 0i;
  *(i) = x_939;
  let x_32 = *(i);
  let x_940 = *(x_30);
  *(x_30) = 0i;
  *(x_30) = x_940;
  let x_33 = *(j);
  let x_941 = *(i);
  *(i) = 0i;
  *(i) = x_941;
  let x_526 = x_525.xzz;
  let x_942 = *(x_30);
  *(x_30) = 0i;
  *(x_30) = x_942;
  let x_34 = &(obj.numbers[x_33]);
  let x_35 = *(x_34);
  let x_943 = obj;
  obj = QuicksortObject();
  obj = x_943;
  let x_527 = x_526.xx;
  let x_36 = &(obj.numbers[x_32]);
  let x_528 = x_524.xzx;
  *(x_36) = x_35;
  let x_944 = obj;
  obj = QuicksortObject();
  obj = x_944;
  let x_529 = x_526.yzx;
  let x_945 = *(i);
  *(i) = 0i;
  *(i) = x_945;
  let x_37 = *(j);
  let x_946 = temp;
  temp = 0i;
  temp = x_946;
  let x_530 = x_529.zy;
  let x_947 = *(x_34);
  *(x_34) = 0i;
  *(x_34) = x_947;
  let x_38 = temp;
  let x_948 = *(j);
  *(j) = 0i;
  *(j) = x_948;
  let x_531 = vec3f(x_527.x, x_526.yx);
  let x_949 = *(x_36);
  *(x_36) = 0i;
  *(x_36) = x_949;
  let x_950 = obj;
  obj = QuicksortObject();
  obj = x_950;
  let x_532 = x_528.xyx;
  let x_951 = *(x_34);
  *(x_34) = 0i;
  *(x_34) = 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 : vec2f;
  var x_538 : vec3f;
  let x_952 = *(h);
  *(h) = 0i;
  *(h) = x_952;
  let x_41 = *(h);
  let x_953 = *(l);
  *(l) = 0i;
  *(l) = x_953;
  let x_42 = &(obj.numbers[x_41]);
  let x_954 = *(x_42);
  *(x_42) = 0i;
  *(x_42) = x_954;
  let x_43 = *(x_42);
  let x_955 = param_3;
  param_3 = 0i;
  param_3 = x_955;
  let x_534 = x_199.zxz;
  let x_956 = param_1;
  param_1 = 0i;
  param_1 = x_956;
  pivot = x_43;
  let x_45 = *(l);
  let x_957 = *(h);
  *(h) = 0i;
  *(h) = x_957;
  let x_958 = j_1;
  j_1 = 0i;
  j_1 = x_958;
  let x_535 = x_534.yzy;
  let x_959 = *(l);
  *(l) = 0i;
  *(l) = x_959;
  i_1 = (x_45 - bitcast<i32>(1u));
  let x_49 = *(l);
  let x_536 = vec3f(x_534.xz, x_535.x);
  j_1 = 10i;
  let x_960 = obj;
  obj = QuicksortObject();
  obj = x_960;
  loop {
    var x_61 : ptr<private, i32>;
    var x_539 : vec3f;
    var x_541 : vec3f;
    let x_961 = pivot;
    pivot = 0i;
    pivot = x_961;
    let x_962 = param_1;
    param_1 = 0i;
    param_1 = x_962;
    let x_55 = j_1;
    let x_963 = pivot;
    pivot = 0i;
    pivot = x_963;
    x_537 = x_199.yz;
    let x_964 = obj;
    obj = QuicksortObject();
    obj = x_964;
    let x_56 = *(h);
    let x_965 = *(h);
    *(h) = 0i;
    *(h) = x_965;
    let x_966 = param;
    param = 0i;
    param = x_966;
    let x_967 = j_1;
    j_1 = 0i;
    j_1 = x_967;
    x_538 = vec3f(x_534.x, x_537.y, x_534.z);
    let x_968 = param;
    param = 0i;
    param = x_968;
    if ((x_55 <= (x_56 - bitcast<i32>(1u)))) {
    } else {
      break;
    }
    let x_60 = j_1;
    let x_969 = *(x_42);
    *(x_42) = 0i;
    *(x_42) = x_969;
    x_61 = obj.numbers[x_60];
    let x_970 = *(h);
    *(h) = 0i;
    *(h) = x_970;
    x_539 = vec3f(x_537.x, x_535.z, x_537.x);
    let x_971 = param_1;
    param_1 = 0i;
    param_1 = x_971;
    let x_62 = x_61;
    let x_972 = obj;
    obj = QuicksortObject();
    obj = x_972;
    let x_63 = pivot;
    let x_540 = vec2f(x_199.y, x_534.z);
    let x_973 = i_1;
    i_1 = 0i;
    i_1 = x_973;
    let x_974 = *(l);
    *(l) = 0i;
    *(l) = x_974;
    x_541 = x_534.yxy;
    let x_975 = pivot;
    pivot = 0i;
    pivot = x_975;
    if ((x_62 <= x_63)) {
      let x_542 = x_541.zxx;
      let x_976 = param_3;
      param_3 = 0i;
      param_3 = x_976;
      let x_67 = i_1;
      let x_977 = pivot;
      pivot = 0i;
      pivot = x_977;
      let x_543 = vec2f(x_539.x, x_541.y);
      let x_978 = i_1;
      i_1 = 0i;
      i_1 = x_978;
      let x_979 = param;
      param = 0i;
      param = x_979;
      i_1 = (x_67 + bitcast<i32>(1u));
      let x_980 = *(l);
      *(l) = 0i;
      *(l) = x_980;
      let x_544 = vec3f(x_199.zy, x_540.x);
      let x_70 = i_1;
      let x_545 = vec2f(x_537.y, x_538.x);
      let x_981 = param;
      param = 0i;
      param = x_981;
      param = x_70;
      let x_982 = param;
      param = 0i;
      param = x_982;
      let x_546 = x_545.xx;
      let x_983 = i_1;
      i_1 = 0i;
      i_1 = x_983;
      let x_72 = j_1;
      param_1 = x_72;
      let x_984 = param_3;
      param_3 = 0i;
      param_3 = x_984;
      swap_i1_i1_(&(param), &(param_1));
      let x_985 = param_1;
      param_1 = 0i;
      param_1 = x_985;
    }
    let x_986 = obj;
    obj = QuicksortObject();
    obj = x_986;

    continuing {
      let x_987 = *(h);
      *(h) = 0i;
      *(h) = x_987;
      let x_74 = j_1;
      let x_988 = *(h);
      *(h) = 0i;
      *(h) = x_988;
      let x_547 = vec3f(x_539.x, x_541.zz);
      let x_989 = x_61;
      x_61 = 0i;
      x_61 = x_989;
      let x_990 = param;
      param = 0i;
      param = x_990;
      j_1 = (1i + x_74);
      let x_991 = param_1;
      param_1 = 0i;
      param_1 = x_991;
      let x_548 = x_541.yzx;
      let x_992 = x_61;
      x_61 = 0i;
      x_61 = x_992;
    }
  }
  let x_76 = i_1;
  let x_993 = *(x_42);
  *(x_42) = 0i;
  *(x_42) = x_993;
  let x_549 = x_534.xy;
  let x_994 = obj;
  obj = QuicksortObject();
  obj = x_994;
  let x_995 = *(h);
  *(h) = 0i;
  *(h) = x_995;
  i_1 = (1i + x_76);
  let x_996 = param_1;
  param_1 = 0i;
  param_1 = x_996;
  let x_79 = i_1;
  let x_997 = j_1;
  j_1 = 0i;
  j_1 = x_997;
  let x_550 = x_534.xx;
  let x_998 = param_1;
  param_1 = 0i;
  param_1 = x_998;
  param_2 = x_79;
  let x_551 = vec2f(x_534.y, x_536.x);
  let x_999 = pivot;
  pivot = 0i;
  pivot = x_999;
  let x_81 = *(h);
  let x_552 = vec2f(x_550.x, x_549.y);
  let x_1000 = *(h);
  *(h) = 0i;
  *(h) = x_1000;
  param_3 = x_81;
  let x_1001 = i_1;
  i_1 = 0i;
  i_1 = x_1001;
  let x_553 = vec2f(x_549.y, x_552.x);
  let x_1002 = *(h);
  *(h) = 0i;
  *(h) = x_1002;
  swap_i1_i1_(&(param_2), &(param_3));
  let x_1003 = *(l);
  *(l) = 0i;
  *(l) = x_1003;
  let x_554 = vec2f(x_536.z, x_199.y);
  let x_1004 = param_1;
  param_1 = 0i;
  param_1 = x_1004;
  let x_83 = i_1;
  let x_1005 = param;
  param = 0i;
  param = x_1005;
  let x_555 = x_534.yx;
  let x_1006 = 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 = param_5;
  param_5 = 0i;
  param_5 = x_1007;
  h_1 = 9i;
  let x_1008 = stack;
  stack = array<i32, 10u>();
  stack = x_1008;
  let x_556 = x_199.yy;
  let x_1009 = param_5;
  param_5 = 0i;
  param_5 = x_1009;
  top = -1i;
  let x_1010 = p;
  p = 0i;
  p = x_1010;
  let x_93 = top;
  let x_557 = x_199.xx;
  let x_1011 = p;
  p = 0i;
  p = x_1011;
  let x_94 = (x_93 + bitcast<i32>(1u));
  let x_1012 = top;
  top = 0i;
  top = x_1012;
  let x_558 = vec2f(x_556.y, x_557.y);
  let x_1013 = param_4;
  param_4 = 0i;
  param_4 = x_1013;
  top = x_94;
  let x_1014 = h_1;
  h_1 = 0i;
  h_1 = x_1014;
  let x_559 = x_557.yxx;
  let x_1015 = param_4;
  param_4 = 0i;
  param_4 = x_1015;
  let x_95 = l_1;
  let x_1016 = obj;
  obj = QuicksortObject();
  obj = x_1016;
  let x_560 = vec3f(x_559.yx, x_557.x);
  let x_96 = &(stack[x_94]);
  let x_1017 = stack;
  stack = array<i32, 10u>();
  stack = x_1017;
  let x_561 = x_556.yyy;
  let x_1018 = l_1;
  l_1 = 0i;
  l_1 = 0i;
  *(x_96) = x_95;
  let x_1019 = param_5;
  param_5 = 0i;
  param_5 = x_1019;
  let x_97 = top;
  let x_1020 = param_4;
  param_4 = 0i;
  param_4 = x_1020;
  let x_562 = vec3f(x_199.z, x_558.y, x_199.y);
  let x_1021 = *(x_96);
  *(x_96) = 0i;
  *(x_96) = x_1021;
  let x_98 = (x_97 + 1i);
  let x_1022 = *(x_96);
  *(x_96) = 0i;
  *(x_96) = x_1022;
  let x_563 = vec3f(x_559.xz, x_556.y);
  top = x_98;
  let x_1023 = param_4;
  param_4 = 0i;
  param_4 = x_1023;
  let x_99 = h_1;
  let x_1024 = param_4;
  param_4 = 0i;
  param_4 = x_1024;
  let x_564 = vec3f(x_558.x, x_561.x, x_558.y);
  let x_1025 = l_1;
  l_1 = 0i;
  l_1 = x_1025;
  let x_100 = &(stack[x_98]);
  let x_1026 = param_5;
  param_5 = 0i;
  param_5 = x_1026;
  let x_565 = x_564.zz;
  let x_1027 = p;
  p = 0i;
  p = x_1027;
  *(x_100) = x_99;
  loop {
    let x_566 = x_563.xxx;
    let x_1028 = h_1;
    h_1 = 0i;
    h_1 = x_1028;
    let x_1029 = stack;
    stack = array<i32, 10u>();
    stack = x_1029;
    let x_106 = top;
    let x_1030 = stack;
    stack = array<i32, 10u>();
    stack = x_1030;
    let x_567 = vec2f(x_558.x, x_564.z);
    let x_1031 = param_4;
    param_4 = 0i;
    param_4 = x_1031;
    if ((x_106 >= bitcast<i32>(0u))) {
    } else {
      break;
    }
    let x_1032 = obj;
    obj = QuicksortObject();
    obj = x_1032;
    let x_568 = vec3f(x_559.yx, x_563.y);
    let x_1033 = param_4;
    param_4 = 0i;
    param_4 = x_1033;
    let x_108 = top;
    let x_569 = vec3f(x_565.x, x_567.y, x_565.x);
    let x_1034 = h_1;
    h_1 = 0i;
    h_1 = x_1034;
    let x_570 = x_556.xx;
    let x_1035 = p;
    p = 0i;
    p = x_1035;
    top = (x_108 - bitcast<i32>(1u));
    let x_1036 = p;
    p = 0i;
    p = x_1036;
    let x_110 = &(stack[x_108]);
    let x_1037 = *(x_96);
    *(x_96) = 0i;
    *(x_96) = x_1037;
    let x_111 = *(x_110);
    let x_1038 = stack;
    stack = array<i32, 10u>();
    stack = x_1038;
    let x_571 = vec3f(x_559.yx, x_564.y);
    let x_1039 = l_1;
    l_1 = 0i;
    l_1 = x_1039;
    h_1 = x_111;
    let x_1040 = stack;
    stack = array<i32, 10u>();
    stack = x_1040;
    let x_572 = vec2f(x_562.y, x_561.y);
    let x_1041 = p;
    p = 0i;
    p = x_1041;
    let x_112 = top;
    let x_1042 = param_4;
    param_4 = 0i;
    param_4 = x_1042;
    let x_1043 = *(x_100);
    *(x_100) = 0i;
    *(x_100) = x_1043;
    let x_573 = x_199.yz;
    top = (x_112 - 1i);
    let x_1044 = param_5;
    param_5 = 0i;
    param_5 = x_1044;
    let x_574 = vec3f(x_570.y, x_565.x, x_570.y);
    let x_1045 = h_1;
    h_1 = 0i;
    h_1 = x_1045;
    let x_114 = &(stack[x_112]);
    let x_575 = x_564.yz;
    let x_1046 = *(x_100);
    *(x_100) = 0i;
    *(x_100) = x_1046;
    let x_115 = *(x_114);
    let x_1047 = p;
    p = 0i;
    p = x_1047;
    let x_576 = vec3f(x_573.yy, x_565.x);
    let x_1048 = param_5;
    param_5 = 0i;
    param_5 = x_1048;
    l_1 = x_115;
    let x_1049 = top;
    top = 0i;
    top = x_1049;
    let x_118 = l_1;
    param_4 = x_118;
    let x_1050 = *(x_110);
    *(x_110) = 0i;
    *(x_110) = x_1050;
    let x_577 = x_569.yz;
    let x_120 = h_1;
    let x_578 = vec2f(x_558.x, x_199.y);
    param_5 = x_120;
    let x_1051 = *(x_100);
    *(x_100) = 0i;
    *(x_100) = x_1051;
    let x_121 = performPartition_i1_i1_(&(param_4), &(param_5));
    let x_579 = vec2f(x_567.x, x_568.x);
    let x_1052 = param_5;
    param_5 = 0i;
    param_5 = x_1052;
    p = x_121;
    let x_1053 = param_4;
    param_4 = 0i;
    param_4 = x_1053;
    let x_122 = p;
    let x_1054 = h_1;
    h_1 = 0i;
    h_1 = x_1054;
    let x_580 = x_568.yy;
    let x_1055 = l_1;
    l_1 = 0i;
    l_1 = x_1055;
    let x_1056 = h_1;
    h_1 = 0i;
    h_1 = x_1056;
    let x_124 = l_1;
    let x_1057 = *(x_110);
    *(x_110) = 0i;
    *(x_110) = x_1057;
    let x_1058 = h_1;
    h_1 = 0i;
    h_1 = x_1058;
    let x_582 = vec2f(x_567.y, x_573.x);
    let x_1059 = *(x_100);
    *(x_100) = 0i;
    *(x_100) = x_1059;
    if (((x_122 - bitcast<i32>(1u)) > x_124)) {
      let x_1060 = param_4;
      param_4 = 0i;
      param_4 = x_1060;
      let x_128 = top;
      let x_583 = vec2f(x_571.y, x_556.y);
      let x_1061 = *(x_100);
      *(x_100) = 0i;
      *(x_100) = x_1061;
      let x_1062 = stack;
      stack = array<i32, 10u>();
      stack = x_1062;
      let x_584 = x_569.zy;
      let x_585 = vec3f(x_580.y, x_577.xx);
      let x_130 = l_1;
      let x_1063 = *(x_114);
      *(x_114) = 0i;
      *(x_114) = x_1063;
      let x_586 = vec2f(x_564.x, x_585.x);
      let x_1064 = param_5;
      param_5 = 0i;
      param_5 = x_1064;
      let x_131 = &(stack[(1i + x_128)]);
      let x_1065 = *(x_110);
      *(x_110) = 0i;
      *(x_110) = x_1065;
      let x_587 = vec3f(x_566.yy, x_563.x);
      let x_1066 = param_5;
      param_5 = 0i;
      param_5 = x_1066;
      *(x_131) = x_130;
      let x_132 = top;
      let x_1067 = *(x_100);
      *(x_100) = 0i;
      *(x_100) = x_1067;
      let x_588 = x_575.yx;
      let x_1068 = *(x_131);
      *(x_131) = 0i;
      *(x_131) = x_1068;
      let x_133 = bitcast<i32>((1u + bitcast<u32>(x_132)));
      let x_1069 = *(x_100);
      *(x_100) = 0i;
      *(x_100) = x_1069;
      let x_589 = vec3f(x_576.z, x_588.y, x_576.z);
      let x_1070 = h_1;
      h_1 = 0i;
      h_1 = x_1070;
      top = x_133;
      let x_1071 = stack;
      stack = array<i32, 10u>();
      stack = x_1071;
      let x_134 = p;
      let x_590 = vec2f(x_576.x, x_573.y);
      let x_1072 = *(x_114);
      *(x_114) = 0i;
      *(x_114) = x_1072;
      let x_136 = &(stack[x_133]);
      let x_1073 = *(x_114);
      *(x_114) = 0i;
      *(x_114) = x_1073;
      *(x_136) = (x_134 - bitcast<i32>(1u));
      let x_1074 = *(x_96);
      *(x_96) = 0i;
      *(x_96) = x_1074;
      let x_591 = x_569.zy;
      let x_1075 = *(x_136);
      *(x_136) = 0i;
      *(x_136) = x_1075;
    }
    let x_1076 = *(x_96);
    *(x_96) = 0i;
    *(x_96) = x_1076;
    let x_592 = x_199.xy;
    let x_1077 = obj;
    obj = QuicksortObject();
    obj = x_1077;
    let x_137 = p;
    let x_1078 = *(x_114);
    *(x_114) = 0i;
    *(x_114) = x_1078;
    let x_593 = vec3f(x_571.z, x_556.xy);
    let x_1079 = p;
    p = 0i;
    p = x_1079;
    let x_594 = vec3f(x_563.zx, x_575.x);
    let x_1080 = *(x_114);
    *(x_114) = 0i;
    *(x_114) = x_1080;
    let x_139 = h_1;
    let x_1081 = top;
    top = 0i;
    top = x_1081;
    let x_595 = vec3f(x_560.z, x_568.x, x_560.x);
    let x_1082 = *(x_100);
    *(x_100) = 0i;
    *(x_100) = x_1082;
    let x_1083 = p;
    p = 0i;
    p = x_1083;
    if ((bitcast<i32>((1u + bitcast<u32>(x_137))) < x_139)) {
      let x_1084 = *(x_114);
      *(x_114) = 0i;
      *(x_114) = x_1084;
      let x_596 = vec2f(x_592.y, x_582.x);
      let x_1085 = l_1;
      l_1 = 0i;
      l_1 = x_1085;
      let x_143 = top;
      let x_1086 = *(x_114);
      *(x_114) = 0i;
      *(x_114) = x_1086;
      let x_597 = vec3f(x_562.y, x_560.yy);
      let x_144 = (x_143 + 1i);
      let x_1087 = param_5;
      param_5 = 0i;
      param_5 = x_1087;
      top = x_144;
      let x_1088 = *(x_114);
      *(x_114) = 0i;
      *(x_114) = x_1088;
      let x_145 = p;
      let x_1089 = param_5;
      param_5 = 0i;
      param_5 = x_1089;
      let x_599 = vec3f(x_560.zx, x_568.x);
      let x_1090 = p;
      p = 0i;
      p = x_1090;
      let x_600 = vec3f(x_556.x, x_580.xx);
      let x_1091 = *(x_100);
      *(x_100) = 0i;
      *(x_100) = x_1091;
      let x_147 = &(stack[x_144]);
      let x_1092 = *(x_110);
      *(x_110) = 0i;
      *(x_110) = x_1092;
      let x_601 = x_563.xy;
      *(x_147) = bitcast<i32>((1u + bitcast<u32>(x_145)));
      let x_1093 = stack;
      stack = array<i32, 10u>();
      stack = x_1093;
      let x_148 = top;
      let x_1094 = *(x_114);
      *(x_114) = 0i;
      *(x_114) = x_1094;
      let x_602 = vec2f(x_565.y, x_599.y);
      let x_1095 = stack;
      stack = array<i32, 10u>();
      stack = x_1095;
      let x_149 = (x_148 + bitcast<i32>(1u));
      let x_1096 = *(x_147);
      *(x_147) = 0i;
      *(x_147) = x_1096;
      top = x_149;
      let x_1097 = param_4;
      param_4 = 0i;
      param_4 = x_1097;
      let x_150 = h_1;
      let x_1098 = *(x_100);
      *(x_100) = 0i;
      *(x_100) = x_1098;
      let x_1099 = *(x_96);
      *(x_96) = 0i;
      *(x_96) = x_1099;
      stack[x_149] = x_150;
      let x_1100 = *(x_114);
      *(x_114) = 0i;
      *(x_114) = x_1100;
      let x_603 = vec3f(x_568.y, x_564.xx);
      let x_1101 = l_1;
      l_1 = 0i;
      l_1 = x_1101;
    }
    let x_1102 = *(x_100);
    *(x_100) = 0i;
    *(x_100) = x_1102;

    continuing {
      let x_1103 = l_1;
      l_1 = 0i;
      l_1 = x_1103;
      let x_604 = vec2f(x_563.z, x_564.x);
      let x_1104 = obj;
      obj = QuicksortObject();
      obj = x_1104;
    }
  }
  let x_1105 = h_1;
  h_1 = 0i;
  h_1 = x_1105;
  return;
}

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

struct main_out {
  @location(0)
  x_GLF_color_1 : vec4f,
}

@fragment
fn main(@builtin(position) gl_FragCoord_param : vec4f) -> main_out {
  gl_FragCoord = gl_FragCoord_param;
  main_1();
  return main_out(x_GLF_color);
}

error: function-scope 'var' must have a constructible type
