SKIP: FAILED


enable chromium_disable_uniformity_analysis;

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
