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