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

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

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

struct main_out {
  [[location(0)]]
  x_GLF_color_1 : vec4<f32>;
};

[[stage(fragment)]]
fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
  gl_FragCoord = gl_FragCoord_param;
  main_1();
  return main_out(x_GLF_color);
}
