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>().x, vec2<f32>().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>().y, vec2<f32>().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>().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>().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>().y, vec2<f32>().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>().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>().x, vec2<f32>().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>().x, x_472.x, vec2<f32>().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>().y, x_454.y, vec2<f32>().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>().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>().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>().x, vec2<f32>().x, vec2<f32>().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);
}
