#version 310 es
precision mediump float;

struct QuicksortObject {
  int numbers[10];
};
struct buf0 {
  vec2 resolution;
};

QuicksortObject obj = QuicksortObject(int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0));
vec4 tint_symbol = vec4(0.0f, 0.0f, 0.0f, 0.0f);
layout(binding = 0) uniform buf0_1 {
  vec2 resolution;
} x_188;
vec4 x_GLF_color = vec4(0.0f, 0.0f, 0.0f, 0.0f);

void swap_i1_i1_(inout int i, inout int j) {
  int temp = 0;
  int x_932 = temp;
  temp = 0;
  temp = x_932;
  vec3 x_523 = vec3(vec3(1.0f, 2.0f, 3.0f).z, vec3(1.0f, 2.0f, 3.0f).y, vec3(1.0f, 2.0f, 3.0f).z);
  int x_933 = i;
  i = 0;
  i = x_933;
  int x_28 = i;
  int x_934 = j;
  j = 0;
  j = x_934;
  vec3 x_524 = vec3(x_523.y, x_523.x, x_523.y);
  int x_935 = temp;
  temp = 0;
  temp = x_935;
  int x_30_save = x_28;
  int x_936 = obj.numbers[x_30_save];
  obj.numbers[x_30_save] = 0;
  obj.numbers[x_30_save] = x_936;
  int x_31 = obj.numbers[x_30_save];
  int x_937 = temp;
  temp = 0;
  temp = x_937;
  temp = x_31;
  int x_938 = j;
  j = 0;
  j = x_938;
  vec3 x_525 = vec3(x_523.z, vec3(1.0f, 2.0f, 3.0f).x, x_523.y);
  int x_939 = i;
  i = 0;
  i = x_939;
  int x_32 = i;
  int x_940 = obj.numbers[x_30_save];
  obj.numbers[x_30_save] = 0;
  obj.numbers[x_30_save] = x_940;
  int x_33 = j;
  int x_941 = i;
  i = 0;
  i = x_941;
  vec3 x_526 = vec3(x_525.x, x_525.z, x_525.z);
  int x_942 = obj.numbers[x_30_save];
  obj.numbers[x_30_save] = 0;
  obj.numbers[x_30_save] = x_942;
  int x_34_save = x_33;
  int x_35 = obj.numbers[x_34_save];
  QuicksortObject x_943 = obj;
  int tint_symbol_6[10] = int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
  QuicksortObject tint_symbol_7 = QuicksortObject(tint_symbol_6);
  obj = tint_symbol_7;
  obj = x_943;
  vec2 x_527 = vec2(x_526.x, x_526.x);
  int x_36_save = x_32;
  vec3 x_528 = vec3(x_524.x, x_524.z, x_524.x);
  obj.numbers[x_36_save] = x_35;
  QuicksortObject x_944 = obj;
  int tint_symbol_8[10] = int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
  QuicksortObject tint_symbol_9 = QuicksortObject(tint_symbol_8);
  obj = tint_symbol_9;
  obj = x_944;
  vec3 x_529 = vec3(x_526.y, x_526.z, x_526.x);
  int x_945 = i;
  i = 0;
  i = x_945;
  int x_37 = j;
  int x_946 = temp;
  temp = 0;
  temp = x_946;
  vec2 x_530 = vec2(x_529.z, x_529.y);
  int x_947 = obj.numbers[x_34_save];
  obj.numbers[x_34_save] = 0;
  obj.numbers[x_34_save] = x_947;
  int x_38 = temp;
  int x_948 = j;
  j = 0;
  j = x_948;
  vec3 x_531 = vec3(x_527.x, x_526.y, x_526.x);
  int x_949 = obj.numbers[x_36_save];
  obj.numbers[x_36_save] = 0;
  obj.numbers[x_36_save] = x_949;
  QuicksortObject x_950 = obj;
  int tint_symbol_10[10] = int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
  QuicksortObject tint_symbol_11 = QuicksortObject(tint_symbol_10);
  obj = tint_symbol_11;
  obj = x_950;
  vec3 x_532 = vec3(x_528.x, x_528.y, x_528.x);
  int x_951 = obj.numbers[x_34_save];
  obj.numbers[x_34_save] = 0;
  obj.numbers[x_34_save] = x_951;
  obj.numbers[x_37] = x_38;
  return;
}

int performPartition_i1_i1_(inout int l, inout int h) {
  int param_3 = 0;
  int i_1 = 0;
  int j_1 = 0;
  int param_2 = 0;
  int param_1 = 0;
  int param = 0;
  int pivot = 0;
  vec2 x_537 = vec2(0.0f, 0.0f);
  vec3 x_538 = vec3(0.0f, 0.0f, 0.0f);
  int x_952 = h;
  h = 0;
  h = x_952;
  int x_41 = h;
  int x_953 = l;
  l = 0;
  l = x_953;
  int x_42_save = x_41;
  int x_954 = obj.numbers[x_42_save];
  obj.numbers[x_42_save] = 0;
  obj.numbers[x_42_save] = x_954;
  int x_43 = obj.numbers[x_42_save];
  int x_955 = param_3;
  param_3 = 0;
  param_3 = x_955;
  vec3 x_534 = vec3(vec3(1.0f, 2.0f, 3.0f).z, vec3(1.0f, 2.0f, 3.0f).x, vec3(1.0f, 2.0f, 3.0f).z);
  int x_956 = param_1;
  param_1 = 0;
  param_1 = x_956;
  pivot = x_43;
  int x_45 = l;
  int x_957 = h;
  h = 0;
  h = x_957;
  int x_958 = j_1;
  j_1 = 0;
  j_1 = x_958;
  vec3 x_535 = vec3(x_534.y, x_534.z, x_534.y);
  int x_959 = l;
  l = 0;
  l = x_959;
  i_1 = (x_45 - int(1u));
  int x_49 = l;
  vec3 x_536 = vec3(x_534.x, x_534.z, x_535.x);
  j_1 = 10;
  QuicksortObject x_960 = obj;
  int tint_symbol_12[10] = int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
  QuicksortObject tint_symbol_13 = QuicksortObject(tint_symbol_12);
  obj = tint_symbol_13;
  obj = x_960;
  while (true) {
    int x_961 = pivot;
    pivot = 0;
    pivot = x_961;
    int x_962 = param_1;
    param_1 = 0;
    param_1 = x_962;
    int x_55 = j_1;
    int x_963 = pivot;
    pivot = 0;
    pivot = x_963;
    x_537 = vec2(vec3(1.0f, 2.0f, 3.0f).y, vec3(1.0f, 2.0f, 3.0f).z);
    QuicksortObject x_964 = obj;
    int tint_symbol_14[10] = int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
    QuicksortObject tint_symbol_15 = QuicksortObject(tint_symbol_14);
    obj = tint_symbol_15;
    obj = x_964;
    int x_56 = h;
    int x_965 = h;
    h = 0;
    h = x_965;
    int x_966 = param;
    param = 0;
    param = x_966;
    int x_967 = j_1;
    j_1 = 0;
    j_1 = x_967;
    x_538 = vec3(x_534.x, x_537.y, x_534.z);
    int x_968 = param;
    param = 0;
    param = x_968;
    if ((x_55 <= (x_56 - int(1u)))) {
    } else {
      break;
    }
    int x_60 = j_1;
    int x_969 = obj.numbers[x_42_save];
    obj.numbers[x_42_save] = 0;
    obj.numbers[x_42_save] = x_969;
    int x_61_save = x_60;
    int x_970 = h;
    h = 0;
    h = x_970;
    vec3 x_539 = vec3(x_537.x, x_535.z, x_537.x);
    int x_971 = param_1;
    param_1 = 0;
    param_1 = x_971;
    int x_62 = obj.numbers[x_61_save];
    QuicksortObject x_972 = obj;
    int tint_symbol_16[10] = int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
    QuicksortObject tint_symbol_17 = QuicksortObject(tint_symbol_16);
    obj = tint_symbol_17;
    obj = x_972;
    int x_63 = pivot;
    vec2 x_540 = vec2(vec3(1.0f, 2.0f, 3.0f).y, x_534.z);
    int x_973 = i_1;
    i_1 = 0;
    i_1 = x_973;
    int x_974 = l;
    l = 0;
    l = x_974;
    vec3 x_541 = vec3(x_534.y, x_534.x, x_534.y);
    int x_975 = pivot;
    pivot = 0;
    pivot = x_975;
    if ((x_62 <= x_63)) {
      vec3 x_542 = vec3(x_541.z, x_541.x, x_541.x);
      int x_976 = param_3;
      param_3 = 0;
      param_3 = x_976;
      int x_67 = i_1;
      int x_977 = pivot;
      pivot = 0;
      pivot = x_977;
      vec2 x_543 = vec2(x_539.x, x_541.y);
      int x_978 = i_1;
      i_1 = 0;
      i_1 = x_978;
      int x_979 = param;
      param = 0;
      param = x_979;
      i_1 = (x_67 + int(1u));
      int x_980 = l;
      l = 0;
      l = x_980;
      vec3 x_544 = vec3(vec3(1.0f, 2.0f, 3.0f).z, vec3(1.0f, 2.0f, 3.0f).y, x_540.x);
      int x_70 = i_1;
      vec2 x_545 = vec2(x_537.y, x_538.x);
      int x_981 = param;
      param = 0;
      param = x_981;
      param = x_70;
      int x_982 = param;
      param = 0;
      param = x_982;
      vec2 x_546 = vec2(x_545.x, x_545.x);
      int x_983 = i_1;
      i_1 = 0;
      i_1 = x_983;
      param_1 = j_1;
      int x_984 = param_3;
      param_3 = 0;
      param_3 = x_984;
      swap_i1_i1_(param, param_1);
      int x_985 = param_1;
      param_1 = 0;
      param_1 = x_985;
    }
    QuicksortObject x_986 = obj;
    int tint_symbol_18[10] = int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
    QuicksortObject tint_symbol_19 = QuicksortObject(tint_symbol_18);
    obj = tint_symbol_19;
    obj = x_986;
    {
      int x_987 = h;
      h = 0;
      h = x_987;
      int x_74 = j_1;
      int x_988 = h;
      h = 0;
      h = x_988;
      vec3 x_547 = vec3(x_539.x, x_541.z, x_541.z);
      int x_989 = obj.numbers[x_61_save];
      obj.numbers[x_61_save] = 0;
      obj.numbers[x_61_save] = x_989;
      int x_990 = param;
      param = 0;
      param = x_990;
      j_1 = (1 + x_74);
      int x_991 = param_1;
      param_1 = 0;
      param_1 = x_991;
      vec3 x_548 = vec3(x_541.y, x_541.z, x_541.x);
      int x_992 = obj.numbers[x_61_save];
      obj.numbers[x_61_save] = 0;
      obj.numbers[x_61_save] = x_992;
    }
  }
  int x_76 = i_1;
  int x_993 = obj.numbers[x_42_save];
  obj.numbers[x_42_save] = 0;
  obj.numbers[x_42_save] = x_993;
  vec2 x_549 = vec2(x_534.x, x_534.y);
  QuicksortObject x_994 = obj;
  int tint_symbol_20[10] = int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
  QuicksortObject tint_symbol_21 = QuicksortObject(tint_symbol_20);
  obj = tint_symbol_21;
  obj = x_994;
  int x_995 = h;
  h = 0;
  h = x_995;
  i_1 = (1 + x_76);
  int x_996 = param_1;
  param_1 = 0;
  param_1 = x_996;
  int x_79 = i_1;
  int x_997 = j_1;
  j_1 = 0;
  j_1 = x_997;
  vec2 x_550 = vec2(x_534.x, x_534.x);
  int x_998 = param_1;
  param_1 = 0;
  param_1 = x_998;
  param_2 = x_79;
  vec2 x_551 = vec2(x_534.y, x_536.x);
  int x_999 = pivot;
  pivot = 0;
  pivot = x_999;
  int x_81 = h;
  vec2 x_552 = vec2(x_550.x, x_549.y);
  int x_1000 = h;
  h = 0;
  h = x_1000;
  param_3 = x_81;
  int x_1001 = i_1;
  i_1 = 0;
  i_1 = x_1001;
  vec2 x_553 = vec2(x_549.y, x_552.x);
  int x_1002 = h;
  h = 0;
  h = x_1002;
  swap_i1_i1_(param_2, param_3);
  int x_1003 = l;
  l = 0;
  l = x_1003;
  vec2 x_554 = vec2(x_536.z, vec3(1.0f, 2.0f, 3.0f).y);
  int x_1004 = param_1;
  param_1 = 0;
  param_1 = x_1004;
  int x_83 = i_1;
  int x_1005 = param;
  param = 0;
  param = x_1005;
  vec2 x_555 = vec2(x_534.y, x_534.x);
  int x_1006 = j_1;
  j_1 = 0;
  j_1 = x_1006;
  return x_83;
}

void quicksort_() {
  int param_4 = 0;
  int h_1 = 0;
  int p = 0;
  int l_1 = 0;
  int top = 0;
  int stack[10] = int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
  int param_5 = 0;
  l_1 = 0;
  int x_1007 = param_5;
  param_5 = 0;
  param_5 = x_1007;
  h_1 = 9;
  int x_1008[10] = stack;
  int tint_symbol_22[10] = int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
  stack = tint_symbol_22;
  stack = x_1008;
  vec2 x_556 = vec2(vec3(1.0f, 2.0f, 3.0f).y, vec3(1.0f, 2.0f, 3.0f).y);
  int x_1009 = param_5;
  param_5 = 0;
  param_5 = x_1009;
  top = -1;
  int x_1010 = p;
  p = 0;
  p = x_1010;
  int x_93 = top;
  vec2 x_557 = vec2(vec3(1.0f, 2.0f, 3.0f).x, vec3(1.0f, 2.0f, 3.0f).x);
  int x_1011 = p;
  p = 0;
  p = x_1011;
  int x_94 = (x_93 + int(1u));
  int x_1012 = top;
  top = 0;
  top = x_1012;
  vec2 x_558 = vec2(x_556.y, x_557.y);
  int x_1013 = param_4;
  param_4 = 0;
  param_4 = x_1013;
  top = x_94;
  int x_1014 = h_1;
  h_1 = 0;
  h_1 = x_1014;
  vec3 x_559 = vec3(x_557.y, x_557.x, x_557.x);
  int x_1015 = param_4;
  param_4 = 0;
  param_4 = x_1015;
  int x_95 = l_1;
  QuicksortObject x_1016 = obj;
  int tint_symbol_23[10] = int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
  QuicksortObject tint_symbol_24 = QuicksortObject(tint_symbol_23);
  obj = tint_symbol_24;
  obj = x_1016;
  vec3 x_560 = vec3(x_559.y, x_559.x, x_557.x);
  int x_96_save = x_94;
  int x_1017[10] = stack;
  int tint_symbol_25[10] = int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
  stack = tint_symbol_25;
  stack = x_1017;
  vec3 x_561 = vec3(x_556.y, x_556.y, x_556.y);
  int x_1018 = l_1;
  l_1 = 0;
  l_1 = 0;
  stack[x_96_save] = x_95;
  int x_1019 = param_5;
  param_5 = 0;
  param_5 = x_1019;
  int x_97 = top;
  int x_1020 = param_4;
  param_4 = 0;
  param_4 = x_1020;
  vec3 x_562 = vec3(vec3(1.0f, 2.0f, 3.0f).z, x_558.y, vec3(1.0f, 2.0f, 3.0f).y);
  int x_1021 = stack[x_96_save];
  stack[x_96_save] = 0;
  stack[x_96_save] = x_1021;
  int x_98 = (x_97 + 1);
  int x_1022 = stack[x_96_save];
  stack[x_96_save] = 0;
  stack[x_96_save] = x_1022;
  vec3 x_563 = vec3(x_559.x, x_559.z, x_556.y);
  top = x_98;
  int x_1023 = param_4;
  param_4 = 0;
  param_4 = x_1023;
  int x_99 = h_1;
  int x_1024 = param_4;
  param_4 = 0;
  param_4 = x_1024;
  vec3 x_564 = vec3(x_558.x, x_561.x, x_558.y);
  int x_1025 = l_1;
  l_1 = 0;
  l_1 = x_1025;
  int x_100_save = x_98;
  int x_1026 = param_5;
  param_5 = 0;
  param_5 = x_1026;
  vec2 x_565 = vec2(x_564.z, x_564.z);
  int x_1027 = p;
  p = 0;
  p = x_1027;
  stack[x_100_save] = x_99;
  while (true) {
    vec3 x_566 = vec3(x_563.x, x_563.x, x_563.x);
    int x_1028 = h_1;
    h_1 = 0;
    h_1 = x_1028;
    int x_1029[10] = stack;
    int tint_symbol_26[10] = int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
    stack = tint_symbol_26;
    stack = x_1029;
    int x_106 = top;
    int x_1030[10] = stack;
    int tint_symbol_27[10] = int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
    stack = tint_symbol_27;
    stack = x_1030;
    vec2 x_567 = vec2(x_558.x, x_564.z);
    int x_1031 = param_4;
    param_4 = 0;
    param_4 = x_1031;
    if ((x_106 >= int(0u))) {
    } else {
      break;
    }
    QuicksortObject x_1032 = obj;
    int tint_symbol_28[10] = int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
    QuicksortObject tint_symbol_29 = QuicksortObject(tint_symbol_28);
    obj = tint_symbol_29;
    obj = x_1032;
    vec3 x_568 = vec3(x_559.y, x_559.x, x_563.y);
    int x_1033 = param_4;
    param_4 = 0;
    param_4 = x_1033;
    int x_108 = top;
    vec3 x_569 = vec3(x_565.x, x_567.y, x_565.x);
    int x_1034 = h_1;
    h_1 = 0;
    h_1 = x_1034;
    vec2 x_570 = vec2(x_556.x, x_556.x);
    int x_1035 = p;
    p = 0;
    p = x_1035;
    top = (x_108 - int(1u));
    int x_1036 = p;
    p = 0;
    p = x_1036;
    int x_110_save = x_108;
    int x_1037 = stack[x_96_save];
    stack[x_96_save] = 0;
    stack[x_96_save] = x_1037;
    int x_111 = stack[x_110_save];
    int x_1038[10] = stack;
    int tint_symbol_30[10] = int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
    stack = tint_symbol_30;
    stack = x_1038;
    vec3 x_571 = vec3(x_559.y, x_559.x, x_564.y);
    int x_1039 = l_1;
    l_1 = 0;
    l_1 = x_1039;
    h_1 = x_111;
    int x_1040[10] = stack;
    int tint_symbol_31[10] = int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
    stack = tint_symbol_31;
    stack = x_1040;
    vec2 x_572 = vec2(x_562.y, x_561.y);
    int x_1041 = p;
    p = 0;
    p = x_1041;
    int x_112 = top;
    int x_1042 = param_4;
    param_4 = 0;
    param_4 = x_1042;
    int x_1043 = stack[x_100_save];
    stack[x_100_save] = 0;
    stack[x_100_save] = x_1043;
    vec2 x_573 = vec2(vec3(1.0f, 2.0f, 3.0f).y, vec3(1.0f, 2.0f, 3.0f).z);
    top = (x_112 - 1);
    int x_1044 = param_5;
    param_5 = 0;
    param_5 = x_1044;
    vec3 x_574 = vec3(x_570.y, x_565.x, x_570.y);
    int x_1045 = h_1;
    h_1 = 0;
    h_1 = x_1045;
    int x_114_save = x_112;
    vec2 x_575 = vec2(x_564.y, x_564.z);
    int x_1046 = stack[x_100_save];
    stack[x_100_save] = 0;
    stack[x_100_save] = x_1046;
    int x_115 = stack[x_114_save];
    int x_1047 = p;
    p = 0;
    p = x_1047;
    vec3 x_576 = vec3(x_573.y, x_573.y, x_565.x);
    int x_1048 = param_5;
    param_5 = 0;
    param_5 = x_1048;
    l_1 = x_115;
    int x_1049 = top;
    top = 0;
    top = x_1049;
    param_4 = l_1;
    int x_1050 = stack[x_110_save];
    stack[x_110_save] = 0;
    stack[x_110_save] = x_1050;
    vec2 x_577 = vec2(x_569.y, x_569.z);
    int x_120 = h_1;
    vec2 x_578 = vec2(x_558.x, vec3(1.0f, 2.0f, 3.0f).y);
    param_5 = x_120;
    int x_1051 = stack[x_100_save];
    stack[x_100_save] = 0;
    stack[x_100_save] = x_1051;
    int x_121 = performPartition_i1_i1_(param_4, param_5);
    vec2 x_579 = vec2(x_567.x, x_568.x);
    int x_1052 = param_5;
    param_5 = 0;
    param_5 = x_1052;
    p = x_121;
    int x_1053 = param_4;
    param_4 = 0;
    param_4 = x_1053;
    int x_122 = p;
    int x_1054 = h_1;
    h_1 = 0;
    h_1 = x_1054;
    vec2 x_580 = vec2(x_568.y, x_568.y);
    int x_1055 = l_1;
    l_1 = 0;
    l_1 = x_1055;
    int x_1056 = h_1;
    h_1 = 0;
    h_1 = x_1056;
    int x_124 = l_1;
    int x_1057 = stack[x_110_save];
    stack[x_110_save] = 0;
    stack[x_110_save] = x_1057;
    int x_1058 = h_1;
    h_1 = 0;
    h_1 = x_1058;
    vec2 x_582 = vec2(x_567.y, x_573.x);
    int x_1059 = stack[x_100_save];
    stack[x_100_save] = 0;
    stack[x_100_save] = x_1059;
    if (((x_122 - int(1u)) > x_124)) {
      int x_1060 = param_4;
      param_4 = 0;
      param_4 = x_1060;
      int x_128 = top;
      vec2 x_583 = vec2(x_571.y, x_556.y);
      int x_1061 = stack[x_100_save];
      stack[x_100_save] = 0;
      stack[x_100_save] = x_1061;
      int x_1062[10] = stack;
      int tint_symbol_32[10] = int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
      stack = tint_symbol_32;
      stack = x_1062;
      vec2 x_584 = vec2(x_569.z, x_569.y);
      vec3 x_585 = vec3(x_580.y, x_577.x, x_577.x);
      int x_130 = l_1;
      int x_1063 = stack[x_114_save];
      stack[x_114_save] = 0;
      stack[x_114_save] = x_1063;
      vec2 x_586 = vec2(x_564.x, x_585.x);
      int x_1064 = param_5;
      param_5 = 0;
      param_5 = x_1064;
      int x_131_save = (1 + x_128);
      int x_1065 = stack[x_110_save];
      stack[x_110_save] = 0;
      stack[x_110_save] = x_1065;
      vec3 x_587 = vec3(x_566.y, x_566.y, x_563.x);
      int x_1066 = param_5;
      param_5 = 0;
      param_5 = x_1066;
      stack[x_131_save] = x_130;
      int x_132 = top;
      int x_1067 = stack[x_100_save];
      stack[x_100_save] = 0;
      stack[x_100_save] = x_1067;
      vec2 x_588 = vec2(x_575.y, x_575.x);
      int x_1068 = stack[x_131_save];
      stack[x_131_save] = 0;
      stack[x_131_save] = x_1068;
      int x_133 = int((1u + uint(x_132)));
      int x_1069 = stack[x_100_save];
      stack[x_100_save] = 0;
      stack[x_100_save] = x_1069;
      vec3 x_589 = vec3(x_576.z, x_588.y, x_576.z);
      int x_1070 = h_1;
      h_1 = 0;
      h_1 = x_1070;
      top = x_133;
      int x_1071[10] = stack;
      int tint_symbol_33[10] = int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
      stack = tint_symbol_33;
      stack = x_1071;
      int x_134 = p;
      vec2 x_590 = vec2(x_576.x, x_573.y);
      int x_1072 = stack[x_114_save];
      stack[x_114_save] = 0;
      stack[x_114_save] = x_1072;
      int x_136_save = x_133;
      int x_1073 = stack[x_114_save];
      stack[x_114_save] = 0;
      stack[x_114_save] = x_1073;
      stack[x_136_save] = (x_134 - int(1u));
      int x_1074 = stack[x_96_save];
      stack[x_96_save] = 0;
      stack[x_96_save] = x_1074;
      vec2 x_591 = vec2(x_569.z, x_569.y);
      int x_1075 = stack[x_136_save];
      stack[x_136_save] = 0;
      stack[x_136_save] = x_1075;
    }
    int x_1076 = stack[x_96_save];
    stack[x_96_save] = 0;
    stack[x_96_save] = x_1076;
    vec2 x_592 = vec2(vec3(1.0f, 2.0f, 3.0f).x, vec3(1.0f, 2.0f, 3.0f).y);
    QuicksortObject x_1077 = obj;
    int tint_symbol_34[10] = int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
    QuicksortObject tint_symbol_35 = QuicksortObject(tint_symbol_34);
    obj = tint_symbol_35;
    obj = x_1077;
    int x_137 = p;
    int x_1078 = stack[x_114_save];
    stack[x_114_save] = 0;
    stack[x_114_save] = x_1078;
    vec3 x_593 = vec3(x_571.z, x_556.x, x_556.y);
    int x_1079 = p;
    p = 0;
    p = x_1079;
    vec3 x_594 = vec3(x_563.z, x_563.x, x_575.x);
    int x_1080 = stack[x_114_save];
    stack[x_114_save] = 0;
    stack[x_114_save] = x_1080;
    int x_139 = h_1;
    int x_1081 = top;
    top = 0;
    top = x_1081;
    vec3 x_595 = vec3(x_560.z, x_568.x, x_560.x);
    int x_1082 = stack[x_100_save];
    stack[x_100_save] = 0;
    stack[x_100_save] = x_1082;
    int x_1083 = p;
    p = 0;
    p = x_1083;
    if ((int((1u + uint(x_137))) < x_139)) {
      int x_1084 = stack[x_114_save];
      stack[x_114_save] = 0;
      stack[x_114_save] = x_1084;
      vec2 x_596 = vec2(x_592.y, x_582.x);
      int x_1085 = l_1;
      l_1 = 0;
      l_1 = x_1085;
      int x_143 = top;
      int x_1086 = stack[x_114_save];
      stack[x_114_save] = 0;
      stack[x_114_save] = x_1086;
      vec3 x_597 = vec3(x_562.y, x_560.y, x_560.y);
      int x_144 = (x_143 + 1);
      int x_1087 = param_5;
      param_5 = 0;
      param_5 = x_1087;
      top = x_144;
      int x_1088 = stack[x_114_save];
      stack[x_114_save] = 0;
      stack[x_114_save] = x_1088;
      int x_145 = p;
      int x_1089 = param_5;
      param_5 = 0;
      param_5 = x_1089;
      vec3 x_599 = vec3(x_560.z, x_560.x, x_568.x);
      int x_1090 = p;
      p = 0;
      p = x_1090;
      vec3 x_600 = vec3(x_556.x, x_580.x, x_580.x);
      int x_1091 = stack[x_100_save];
      stack[x_100_save] = 0;
      stack[x_100_save] = x_1091;
      int x_147_save = x_144;
      int x_1092 = stack[x_110_save];
      stack[x_110_save] = 0;
      stack[x_110_save] = x_1092;
      vec2 x_601 = vec2(x_563.x, x_563.y);
      stack[x_147_save] = int((1u + uint(x_145)));
      int x_1093[10] = stack;
      int tint_symbol_36[10] = int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
      stack = tint_symbol_36;
      stack = x_1093;
      int x_148 = top;
      int x_1094 = stack[x_114_save];
      stack[x_114_save] = 0;
      stack[x_114_save] = x_1094;
      vec2 x_602 = vec2(x_565.y, x_599.y);
      int x_1095[10] = stack;
      int tint_symbol_37[10] = int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
      stack = tint_symbol_37;
      stack = x_1095;
      int x_149 = (x_148 + int(1u));
      int x_1096 = stack[x_147_save];
      stack[x_147_save] = 0;
      stack[x_147_save] = x_1096;
      top = x_149;
      int x_1097 = param_4;
      param_4 = 0;
      param_4 = x_1097;
      int x_150 = h_1;
      int x_1098 = stack[x_100_save];
      stack[x_100_save] = 0;
      stack[x_100_save] = x_1098;
      int x_1099 = stack[x_96_save];
      stack[x_96_save] = 0;
      stack[x_96_save] = x_1099;
      stack[x_149] = x_150;
      int x_1100 = stack[x_114_save];
      stack[x_114_save] = 0;
      stack[x_114_save] = x_1100;
      vec3 x_603 = vec3(x_568.y, x_564.x, x_564.x);
      int x_1101 = l_1;
      l_1 = 0;
      l_1 = x_1101;
    }
    int x_1102 = stack[x_100_save];
    stack[x_100_save] = 0;
    stack[x_100_save] = x_1102;
    {
      int x_1103 = l_1;
      l_1 = 0;
      l_1 = x_1103;
      vec2 x_604 = vec2(x_563.z, x_564.x);
      QuicksortObject x_1104 = obj;
      int tint_symbol_38[10] = int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
      QuicksortObject tint_symbol_39 = QuicksortObject(tint_symbol_38);
      obj = tint_symbol_39;
      obj = x_1104;
    }
  }
  int x_1105 = h_1;
  h_1 = 0;
  h_1 = x_1105;
  return;
}

void main_1() {
  vec3 color = vec3(0.0f, 0.0f, 0.0f);
  int i_2 = 0;
  vec2 uv = vec2(0.0f, 0.0f);
  vec2 x_717 = uv;
  uv = vec2(0.0f, 0.0f);
  uv = x_717;
  i_2 = 0;
  QuicksortObject x_721 = obj;
  int tint_symbol_40[10] = int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
  QuicksortObject tint_symbol_41 = QuicksortObject(tint_symbol_40);
  obj = tint_symbol_41;
  obj = x_721;
  if (true) {
    QuicksortObject x_722 = obj;
    int tint_symbol_42[10] = int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
    QuicksortObject tint_symbol_43 = QuicksortObject(tint_symbol_42);
    obj = tint_symbol_43;
    obj = x_722;
    vec2 x_431 = vec2(vec3(1.0f, 2.0f, 3.0f).x, vec3(1.0f, 2.0f, 3.0f).x);
    int x_158 = i_2;
    vec2 x_723 = uv;
    uv = vec2(0.0f, 0.0f);
    uv = x_723;
    vec3 x_725 = color;
    color = vec3(0.0f, 0.0f, 0.0f);
    color = x_725;
    vec2 x_432 = vec2(x_431.y, x_431.y);
    QuicksortObject x_726 = obj;
    int tint_symbol_44[10] = int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
    QuicksortObject tint_symbol_45 = QuicksortObject(tint_symbol_44);
    obj = tint_symbol_45;
    obj = x_726;
  }
  QuicksortObject x_756 = obj;
  int tint_symbol_46[10] = int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
  QuicksortObject tint_symbol_47 = QuicksortObject(tint_symbol_46);
  obj = tint_symbol_47;
  obj = x_756;
  vec2 x_446 = vec2(vec2(0.0f, 0.0f).x, vec2(0.0f, 0.0f).x);
  int x_757 = i_2;
  i_2 = 0;
  i_2 = x_757;
  quicksort_();
  QuicksortObject x_758 = obj;
  int tint_symbol_48[10] = int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
  QuicksortObject tint_symbol_49 = QuicksortObject(tint_symbol_48);
  obj = tint_symbol_49;
  obj = x_758;
  vec4 x_184 = tint_symbol;
  vec2 x_759 = uv;
  uv = vec2(0.0f, 0.0f);
  uv = x_759;
  vec2 x_447 = vec2(vec2(0.0f, 0.0f).y, vec2(0.0f, 0.0f).y);
  vec2 x_760 = uv;
  uv = vec2(0.0f, 0.0f);
  uv = x_760;
  vec2 x_185 = vec2(x_184.x, x_184.y);
  vec3 x_448 = vec3(x_185.y, x_446.y, x_446.y);
  QuicksortObject x_761 = obj;
  int tint_symbol_50[10] = int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
  QuicksortObject tint_symbol_51 = QuicksortObject(tint_symbol_50);
  obj = tint_symbol_51;
  obj = x_761;
  vec2 x_762 = uv;
  uv = vec2(0.0f, 0.0f);
  uv = x_762;
  vec2 x_191 = x_188.resolution;
  QuicksortObject x_763 = obj;
  int tint_symbol_52[10] = int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
  QuicksortObject tint_symbol_53 = QuicksortObject(tint_symbol_52);
  obj = tint_symbol_53;
  obj = x_763;
  vec3 x_449 = vec3(x_184.y, vec3(1.0f, 2.0f, 3.0f).z, x_184.w);
  vec3 x_764 = color;
  color = vec3(0.0f, 0.0f, 0.0f);
  color = x_764;
  vec2 x_192 = (x_185 / x_191);
  QuicksortObject x_765 = obj;
  int tint_symbol_54[10] = int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
  QuicksortObject tint_symbol_55 = QuicksortObject(tint_symbol_54);
  obj = tint_symbol_55;
  obj = x_765;
  vec2 x_450 = vec2(x_447.x, x_185.y);
  vec3 x_766 = color;
  color = vec3(0.0f, 0.0f, 0.0f);
  vec3 x_767 = color;
  color = vec3(0.0f, 0.0f, 0.0f);
  color = x_767;
  color = x_766;
  uv = x_192;
  color = vec3(1.0f, 2.0f, 3.0f);
  vec3 x_768 = color;
  color = vec3(0.0f, 0.0f, 0.0f);
  color = x_768;
  vec3 x_451 = vec3(x_185.x, x_185.y, x_446.y);
  QuicksortObject x_769 = obj;
  int tint_symbol_56[10] = int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
  QuicksortObject tint_symbol_57 = QuicksortObject(tint_symbol_56);
  obj = tint_symbol_57;
  obj = x_769;
  int x_770 = obj.numbers[0u];
  obj.numbers[0u] = 0;
  obj.numbers[0u] = x_770;
  int x_201 = obj.numbers[0u];
  QuicksortObject x_771 = obj;
  int tint_symbol_58[10] = int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
  QuicksortObject tint_symbol_59 = QuicksortObject(tint_symbol_58);
  obj = tint_symbol_59;
  obj = x_771;
  int x_772 = obj.numbers[0u];
  obj.numbers[0u] = 0;
  obj.numbers[0u] = x_772;
  float x_206 = color.x;
  float x_773 = color.x;
  color.x = 0.0f;
  color.x = x_773;
  vec2 x_452 = vec2(vec3(1.0f, 2.0f, 3.0f).z, vec3(1.0f, 2.0f, 3.0f).y);
  int x_774 = i_2;
  i_2 = 0;
  i_2 = x_774;
  QuicksortObject x_775 = obj;
  int tint_symbol_60[10] = int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
  QuicksortObject tint_symbol_61 = QuicksortObject(tint_symbol_60);
  obj = tint_symbol_61;
  obj = x_775;
  vec3 x_453 = vec3(x_451.x, x_450.x, x_450.y);
  color.x = (x_206 + float(x_201));
  vec2 x_776 = uv;
  uv = vec2(0.0f, 0.0f);
  uv = x_776;
  vec2 x_777 = uv;
  uv = vec2(0.0f, 0.0f);
  uv = x_777;
  vec2 x_454 = vec2(x_184.y, x_184.y);
  float x_210 = uv.x;
  vec2 x_455 = vec2(x_192.y, x_192.x);
  float x_778 = uv.x;
  uv.x = 0.0f;
  uv.x = x_778;
  QuicksortObject x_779 = obj;
  int tint_symbol_62[10] = int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
  QuicksortObject tint_symbol_63 = QuicksortObject(tint_symbol_62);
  obj = tint_symbol_63;
  obj = x_779;
  if ((x_210 > 0.25f)) {
    int x_780 = i_2;
    i_2 = 0;
    i_2 = x_780;
    int x_781 = obj.numbers[0u];
    obj.numbers[0u] = 0;
    obj.numbers[0u] = x_781;
    vec3 x_456 = vec3(vec2(0.0f, 0.0f).y, x_448.y, x_448.y);
    float x_782 = uv.x;
    uv.x = 0.0f;
    uv.x = x_782;
    int x_216 = obj.numbers[1];
    QuicksortObject x_783 = obj;
    int tint_symbol_64[10] = int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
    QuicksortObject tint_symbol_65 = QuicksortObject(tint_symbol_64);
    obj = tint_symbol_65;
    obj = x_783;
    vec2 x_457 = vec2(x_454.x, x_454.x);
    vec2 x_784 = uv;
    uv = vec2(0.0f, 0.0f);
    uv = x_784;
    QuicksortObject x_785 = obj;
    int tint_symbol_66[10] = int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
    QuicksortObject tint_symbol_67 = QuicksortObject(tint_symbol_66);
    obj = tint_symbol_67;
    obj = x_785;
    vec2 x_458 = vec2(vec3(1.0f, 2.0f, 3.0f).z, vec2(0.0f, 0.0f).y);
    int x_786 = i_2;
    i_2 = 0;
    i_2 = x_786;
    float x_219 = color[0];
    float x_787 = color[0];
    color[0] = 0.0f;
    color[0] = x_787;
    vec3 x_788 = color;
    color = vec3(0.0f, 0.0f, 0.0f);
    color = x_788;
    vec3 x_789 = color;
    color = vec3(0.0f, 0.0f, 0.0f);
    color = x_789;
    vec3 x_459 = vec3(x_454.y, x_454.y, x_447.y);
    float x_790 = color[0];
    color[0] = 0.0f;
    color[0] = x_790;
    color.x = (float(x_216) + x_219);
    int x_791 = obj.numbers[0u];
    obj.numbers[0u] = 0;
    obj.numbers[0u] = x_791;
  }
  float x_792 = uv.x;
  uv.x = 0.0f;
  uv.x = x_792;
  float x_793 = uv.x;
  uv.x = 0.0f;
  uv.x = x_793;
  float x_223 = uv.x;
  float x_794 = uv.x;
  uv.x = 0.0f;
  uv.x = x_794;
  vec3 x_460 = vec3(x_453.z, x_453.y, x_453.y);
  vec2 x_795 = uv;
  uv = vec2(0.0f, 0.0f);
  uv = x_795;
  float x_796 = uv.x;
  uv.x = 0.0f;
  uv.x = x_796;
  vec2 x_461 = vec2(vec2(0.0f, 0.0f).y, vec2(0.0f, 0.0f).y);
  float x_797 = uv.x;
  uv.x = 0.0f;
  uv.x = x_797;
  if ((x_223 > 0.5f)) {
    float x_798 = uv.x;
    uv.x = 0.0f;
    uv.x = x_798;
    vec2 x_462 = vec2(x_446.x, x_446.x);
    float x_799 = color.x;
    color.x = 0.0f;
    color.x = x_799;
    float x_800 = color.x;
    color.x = 0.0f;
    color.x = x_800;
    vec3 x_463 = vec3(x_453.x, x_453.z, x_461.y);
    float x_801 = color.x;
    color.x = 0.0f;
    color.x = x_801;
    int x_230 = obj.numbers[2u];
    float x_802 = uv.x;
    uv.x = 0.0f;
    uv.x = x_802;
    float x_803 = color.x;
    color.x = 0.0f;
    color.x = x_803;
    int x_804 = obj.numbers[2u];
    obj.numbers[2u] = 0;
    obj.numbers[2u] = x_804;
    vec2 x_464 = vec2(x_450.y, x_191.x);
    float x_805 = color.y;
    color.y = 0.0f;
    color.y = x_805;
    float x_234 = color.y;
    int x_806 = obj.numbers[2u];
    obj.numbers[2u] = 0;
    obj.numbers[2u] = x_806;
    vec2 x_465 = vec2(x_463.x, x_185.x);
    float x_807 = color.x;
    color.x = 0.0f;
    color.x = x_807;
    int x_808 = i_2;
    i_2 = 0;
    i_2 = x_808;
    vec2 x_466 = vec2(x_455.y, vec2(0.0f, 0.0f).y);
    int x_809 = i_2;
    i_2 = 0;
    i_2 = x_809;
    color.y = (float(x_230) + x_234);
    float x_810 = uv.x;
    uv.x = 0.0f;
    uv.x = x_810;
  }
  int x_811 = i_2;
  i_2 = 0;
  i_2 = x_811;
  vec2 x_467 = vec2(x_191.x, x_191.x);
  float x_812 = uv.x;
  uv.x = 0.0f;
  uv.x = x_812;
  float x_238 = uv[0];
  vec3 x_813 = color;
  color = vec3(0.0f, 0.0f, 0.0f);
  color = x_813;
  float x_814 = color.x;
  color.x = 0.0f;
  color.x = x_814;
  if ((x_238 > 0.75f)) {
    float x_815 = color.x;
    color.x = 0.0f;
    color.x = x_815;
    int x_245 = obj.numbers[3];
    float x_816 = color.x;
    color.x = 0.0f;
    color.x = x_816;
    QuicksortObject x_817 = obj;
    int tint_symbol_68[10] = int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
    QuicksortObject tint_symbol_69 = QuicksortObject(tint_symbol_68);
    obj = tint_symbol_69;
    obj = x_817;
    vec3 x_468 = vec3(x_467.x, x_467.x, x_467.x);
    float x_818 = uv[0];
    uv[0] = 0.0f;
    uv[0] = x_818;
    float x_819 = uv.x;
    uv.x = 0.0f;
    uv.x = x_819;
    float x_249 = color.z;
    vec3 x_820 = color;
    color = vec3(0.0f, 0.0f, 0.0f);
    color = x_820;
    vec3 x_469 = vec3(x_467.x, x_191.y, x_467.y);
    float x_821 = color.z;
    color.z = 0.0f;
    color.z = x_821;
    int x_822 = obj.numbers[0u];
    obj.numbers[0u] = 0;
    obj.numbers[0u] = x_822;
    vec2 x_470 = vec2(vec2(0.0f, 0.0f).x, vec2(0.0f, 0.0f).y);
    float x_823 = color.z;
    color.z = 0.0f;
    color.z = x_823;
    color.z = (x_249 + float(x_245));
    vec2 x_824 = uv;
    uv = vec2(0.0f, 0.0f);
    uv = x_824;
    vec2 x_471 = vec2(x_470.y, x_470.y);
  }
  float x_825 = uv[0];
  uv[0] = 0.0f;
  uv[0] = x_825;
  vec3 x_472 = vec3(x_454.x, x_454.y, x_454.y);
  int x_254 = obj.numbers[4];
  float x_826 = uv[0];
  uv[0] = 0.0f;
  uv[0] = x_826;
  vec3 x_827 = color;
  color = vec3(0.0f, 0.0f, 0.0f);
  color = x_827;
  vec3 x_473 = vec3(x_446.y, x_453.x, x_453.x);
  int x_828 = obj.numbers[4];
  obj.numbers[4] = 0;
  obj.numbers[4] = x_828;
  vec2 x_474 = vec2(x_191.x, x_184.z);
  float x_829 = uv.x;
  uv.x = 0.0f;
  uv.x = x_829;
  float x_257 = color.y;
  float x_830 = color.y;
  color.y = 0.0f;
  color.y = x_830;
  vec2 x_475 = vec2(x_467.x, x_450.x);
  float x_831 = uv.x;
  uv.x = 0.0f;
  uv.x = x_831;
  float x_832 = color.x;
  color.x = 0.0f;
  color.x = x_832;
  vec2 x_476 = vec2(x_451.z, x_460.y);
  color.y = (x_257 + float(x_254));
  vec3 x_477 = vec3(vec2(0.0f, 0.0f).x, x_472.x, vec2(0.0f, 0.0f).y);
  float x_833 = uv.x;
  uv.x = 0.0f;
  uv.x = x_833;
  float x_834 = color.x;
  color.x = 0.0f;
  color.x = x_834;
  vec2 x_478 = vec2(x_472.x, x_472.y);
  float x_835 = uv.y;
  uv.y = 0.0f;
  uv.y = x_835;
  float x_261 = uv.y;
  int x_836 = i_2;
  i_2 = 0;
  i_2 = x_836;
  vec3 x_479 = vec3(vec2(0.0f, 0.0f).y, x_454.y, vec2(0.0f, 0.0f).x);
  int x_837 = obj.numbers[0u];
  obj.numbers[0u] = 0;
  obj.numbers[0u] = x_837;
  float x_838 = color.y;
  color.y = 0.0f;
  color.y = x_838;
  vec3 x_480 = vec3(x_446.x, x_446.x, vec2(0.0f, 0.0f).y);
  float x_839 = uv.x;
  uv.x = 0.0f;
  uv.x = x_839;
  if ((x_261 > 0.25f)) {
    vec2 x_481 = vec2(x_447.x, x_480.z);
    vec3 x_840 = color;
    color = vec3(0.0f, 0.0f, 0.0f);
    color = x_840;
    int x_267 = obj.numbers[5u];
    float x_841 = color.x;
    color.x = 0.0f;
    color.x = x_841;
    int x_842 = i_2;
    i_2 = 0;
    i_2 = x_842;
    int x_843 = i_2;
    i_2 = 0;
    i_2 = x_843;
    float x_270 = color.x;
    float x_844 = uv[0];
    uv[0] = 0.0f;
    uv[0] = x_844;
    vec3 x_482 = vec3(x_455.x, x_475.y, x_455.y);
    QuicksortObject x_845 = obj;
    int tint_symbol_70[10] = int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
    QuicksortObject tint_symbol_71 = QuicksortObject(tint_symbol_70);
    obj = tint_symbol_71;
    obj = x_845;
    float x_846 = uv.y;
    uv.y = 0.0f;
    uv.y = x_846;
    int x_847 = i_2;
    i_2 = 0;
    i_2 = x_847;
    vec3 x_483 = vec3(x_184.w, x_184.w, x_192.x);
    float x_848 = uv.x;
    uv.x = 0.0f;
    uv.x = x_848;
    color.x = (float(x_267) + x_270);
    vec3 x_484 = vec3(x_454.y, x_450.x, x_454.y);
    float x_849 = uv.x;
    uv.x = 0.0f;
    uv.x = x_849;
  }
  float x_850 = color.x;
  color.x = 0.0f;
  color.x = x_850;
  vec3 x_485 = vec3(x_467.x, x_450.y, x_450.x);
  float x_851 = uv.y;
  uv.y = 0.0f;
  uv.y = x_851;
  int x_852 = obj.numbers[4];
  obj.numbers[4] = 0;
  obj.numbers[4] = x_852;
  float x_274 = uv.y;
  int x_853 = obj.numbers[0u];
  obj.numbers[0u] = 0;
  obj.numbers[0u] = x_853;
  if ((x_274 > 0.5f)) {
    float x_854 = uv.x;
    uv.x = 0.0f;
    uv.x = x_854;
    vec2 x_486 = vec2(x_480.y, x_455.y);
    float x_855 = color.y;
    color.y = 0.0f;
    color.y = x_855;
    vec2 x_487 = vec2(x_449.z, x_449.y);
    float x_856 = uv.y;
    uv.y = 0.0f;
    uv.y = x_856;
    int x_280 = obj.numbers[6u];
    float x_857 = uv.y;
    uv.y = 0.0f;
    uv.y = x_857;
    int x_858 = i_2;
    i_2 = 0;
    i_2 = x_858;
    int x_859 = obj.numbers[4];
    obj.numbers[4] = 0;
    obj.numbers[4] = x_859;
    vec2 x_488 = vec2(x_473.z, x_473.y);
    float x_283 = color.y;
    vec2 x_860 = uv;
    uv = vec2(0.0f, 0.0f);
    uv = x_860;
    float x_861 = color.x;
    color.x = 0.0f;
    color.x = x_861;
    vec2 x_489 = vec2(x_475.y, x_475.x);
    int x_862 = obj.numbers[6u];
    obj.numbers[6u] = 0;
    obj.numbers[6u] = x_862;
    int x_863 = obj.numbers[6u];
    obj.numbers[6u] = 0;
    obj.numbers[6u] = x_863;
    vec2 x_490 = vec2(x_480.z, x_480.z);
    QuicksortObject x_864 = obj;
    int tint_symbol_72[10] = int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
    QuicksortObject tint_symbol_73 = QuicksortObject(tint_symbol_72);
    obj = tint_symbol_73;
    obj = x_864;
    color.y = (float(x_280) + x_283);
    float x_865 = color.x;
    color.x = 0.0f;
    color.x = x_865;
    vec2 x_491 = vec2(vec3(1.0f, 2.0f, 3.0f).y, x_454.x);
    float x_866 = color.y;
    color.y = 0.0f;
    color.y = x_866;
  }
  vec2 x_492 = vec2(x_455.y, x_455.y);
  float x_867 = color.x;
  color.x = 0.0f;
  color.x = x_867;
  float x_287 = uv.y;
  QuicksortObject x_868 = obj;
  int tint_symbol_74[10] = int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
  QuicksortObject tint_symbol_75 = QuicksortObject(tint_symbol_74);
  obj = tint_symbol_75;
  obj = x_868;
  vec2 x_493 = vec2(x_475.x, x_475.y);
  float x_869 = uv[0];
  uv[0] = 0.0f;
  uv[0] = x_869;
  float x_870 = color.y;
  color.y = 0.0f;
  color.y = x_870;
  vec3 x_494 = vec3(x_191.x, x_191.y, x_191.y);
  int x_871 = obj.numbers[4];
  obj.numbers[4] = 0;
  obj.numbers[4] = x_871;
  if ((x_287 > 0.75f)) {
    vec3 x_872 = color;
    color = vec3(0.0f, 0.0f, 0.0f);
    color = x_872;
    float x_873 = color.x;
    color.x = 0.0f;
    color.x = x_873;
    vec3 x_495 = vec3(x_192.y, x_192.x, x_192.y);
    vec3 x_874 = color;
    color = vec3(0.0f, 0.0f, 0.0f);
    color = x_874;
    int x_293 = obj.numbers[7];
    float x_875 = uv.x;
    uv.x = 0.0f;
    uv.x = x_875;
    vec3 x_496 = vec3(x_475.x, x_467.y, x_467.x);
    float x_876 = color.y;
    color.y = 0.0f;
    color.y = x_876;
    vec2 x_497 = vec2(x_477.x, x_461.y);
    int x_877 = obj.numbers[0u];
    obj.numbers[0u] = 0;
    obj.numbers[0u] = x_877;
    float x_878 = color.y;
    color.y = 0.0f;
    color.y = x_878;
    vec3 x_498 = vec3(x_478.x, x_478.y, x_478.x);
    float x_879 = color.x;
    color.x = 0.0f;
    color.x = x_879;
    float x_296 = color.z;
    float x_880 = uv.y;
    uv.y = 0.0f;
    uv.y = x_880;
    vec2 x_499 = vec2(x_184.x, x_184.y);
    float x_881 = uv.x;
    uv.x = 0.0f;
    uv.x = x_881;
    float x_882 = uv.y;
    uv.y = 0.0f;
    uv.y = x_882;
    float x_883 = uv.y;
    uv.y = 0.0f;
    uv.y = x_883;
    vec3 x_500 = vec3(x_499.y, x_499.y, x_494.z);
    float x_884 = color.z;
    color.z = 0.0f;
    color.z = x_884;
    color.z = (float(x_293) + x_296);
    float x_885 = color.y;
    color.y = 0.0f;
    color.y = x_885;
    vec2 x_501 = vec2(x_453.x, x_453.z);
    float x_886 = color.x;
    color.x = 0.0f;
    color.x = x_886;
  }
  int x_887 = i_2;
  i_2 = 0;
  i_2 = x_887;
  vec2 x_502 = vec2(x_451.y, x_192.y);
  vec2 x_888 = uv;
  uv = vec2(0.0f, 0.0f);
  uv = x_888;
  int x_301 = obj.numbers[8];
  int x_889 = i_2;
  i_2 = 0;
  i_2 = x_889;
  vec2 x_503 = vec2(x_185.x, x_451.z);
  int x_890 = obj.numbers[8];
  obj.numbers[8] = 0;
  obj.numbers[8] = x_890;
  float x_891 = color.y;
  color.y = 0.0f;
  color.y = x_891;
  vec2 x_504 = vec2(x_453.y, vec2(0.0f, 0.0f).x);
  float x_892 = color.x;
  color.x = 0.0f;
  color.x = x_892;
  vec3 x_505 = vec3(x_504.x, x_504.y, x_504.x);
  float x_893 = color.z;
  color.z = 0.0f;
  color.z = x_893;
  float x_304 = color.z;
  float x_894 = color.x;
  color.x = 0.0f;
  color.x = x_894;
  vec2 x_506 = vec2(x_493.x, x_492.x);
  int x_895 = obj.numbers[4];
  obj.numbers[4] = 0;
  obj.numbers[4] = x_895;
  float x_896 = uv.y;
  uv.y = 0.0f;
  uv.y = x_896;
  vec2 x_507 = vec2(x_461.x, x_447.x);
  float x_897 = color.y;
  color.y = 0.0f;
  color.y = x_897;
  color.z = (x_304 + float(x_301));
  vec2 x_898 = uv;
  uv = vec2(0.0f, 0.0f);
  uv = x_898;
  float x_899 = uv.x;
  uv.x = 0.0f;
  uv.x = x_899;
  vec3 x_508 = vec3(x_461.y, x_461.x, x_506.y);
  float x_900 = uv.x;
  uv.x = 0.0f;
  uv.x = x_900;
  float x_308 = uv.x;
  float x_901 = color.y;
  color.y = 0.0f;
  color.y = x_901;
  vec3 x_509 = vec3(x_503.y, x_503.x, x_448.z);
  float x_902 = uv.y;
  uv.y = 0.0f;
  uv.y = x_902;
  float x_310 = uv.y;
  float x_903 = uv.y;
  uv.y = 0.0f;
  uv.y = x_903;
  float x_904 = color.z;
  color.z = 0.0f;
  color.z = x_904;
  vec3 x_510 = vec3(vec3(1.0f, 2.0f, 3.0f).y, x_485.y, x_485.z);
  float x_905 = color.z;
  color.z = 0.0f;
  color.z = x_905;
  int x_906 = i_2;
  i_2 = 0;
  i_2 = x_906;
  vec2 x_511 = vec2(x_485.z, x_485.y);
  vec3 x_907 = color;
  color = vec3(0.0f, 0.0f, 0.0f);
  color = x_907;
  float x_908 = uv.y;
  uv.y = 0.0f;
  uv.y = x_908;
  vec3 x_512 = vec3(x_455.y, x_455.y, x_455.y);
  int x_909 = obj.numbers[4];
  obj.numbers[4] = 0;
  obj.numbers[4] = x_909;
  if ((abs((x_308 - x_310)) < 0.25f)) {
    float x_910 = uv.x;
    uv.x = 0.0f;
    uv.x = x_910;
    QuicksortObject x_911 = obj;
    int tint_symbol_76[10] = int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
    QuicksortObject tint_symbol_77 = QuicksortObject(tint_symbol_76);
    obj = tint_symbol_77;
    obj = x_911;
    vec3 x_513 = vec3(x_505.z, x_505.x, x_448.x);
    int x_912 = obj.numbers[8];
    obj.numbers[8] = 0;
    obj.numbers[8] = x_912;
    int x_317 = obj.numbers[9u];
    vec3 x_514 = vec3(x_474.y, x_474.y, x_474.y);
    float x_913 = uv.y;
    uv.y = 0.0f;
    uv.y = x_913;
    float x_320 = color.x;
    float x_914 = uv.y;
    uv.y = 0.0f;
    uv.y = x_914;
    vec2 x_515 = vec2(x_502.x, x_502.y);
    float x_915 = color.x;
    color.x = 0.0f;
    color.x = x_915;
    vec3 x_916 = color;
    color = vec3(0.0f, 0.0f, 0.0f);
    color = x_916;
    vec2 x_516 = vec2(x_452.x, x_452.x);
    vec2 x_917 = uv;
    uv = vec2(0.0f, 0.0f);
    uv = x_917;
    float x_918 = uv.x;
    uv.x = 0.0f;
    uv.x = x_918;
    vec3 x_517 = vec3(vec2(0.0f, 0.0f).x, vec2(0.0f, 0.0f).x, vec2(0.0f, 0.0f).y);
    color.x = (float(x_317) + x_320);
    float x_919 = color.x;
    color.x = 0.0f;
    color.x = x_919;
    vec3 x_518 = vec3(x_480.y, x_508.x, x_480.x);
    float x_920 = color.x;
    color.x = 0.0f;
    color.x = x_920;
  }
  float x_921 = uv.y;
  uv.y = 0.0f;
  uv.y = x_921;
  vec3 x_325 = color;
  float x_922 = uv[0];
  uv[0] = 0.0f;
  uv[0] = x_922;
  vec3 x_519 = vec3(x_447.x, x_446.x, x_446.y);
  vec3 x_326 = normalize(x_325);
  float x_923 = uv.x;
  uv.x = 0.0f;
  uv.x = x_923;
  QuicksortObject x_924 = obj;
  int tint_symbol_78[10] = int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
  QuicksortObject tint_symbol_79 = QuicksortObject(tint_symbol_78);
  obj = tint_symbol_79;
  obj = x_924;
  QuicksortObject x_925 = obj;
  int tint_symbol_80[10] = int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
  QuicksortObject tint_symbol_81 = QuicksortObject(tint_symbol_80);
  obj = tint_symbol_81;
  obj = x_925;
  float x_926 = color.y;
  color.y = 0.0f;
  color.y = x_926;
  vec2 x_520 = vec2(x_506.y, x_519.y);
  float x_927 = color.y;
  color.y = 0.0f;
  color.y = x_927;
  vec4 x_330 = vec4(x_326.x, x_326.y, x_326.z, 1.0f);
  float x_928 = uv.y;
  uv.y = 0.0f;
  uv.y = x_928;
  vec3 x_521 = vec3(vec3(1.0f, 2.0f, 3.0f).y, vec3(1.0f, 2.0f, 3.0f).y, x_520.y);
  float x_929 = uv.x;
  uv.x = 0.0f;
  uv.x = x_929;
  x_GLF_color = x_330;
  QuicksortObject x_930 = obj;
  int tint_symbol_82[10] = int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
  QuicksortObject tint_symbol_83 = QuicksortObject(tint_symbol_82);
  obj = tint_symbol_83;
  obj = x_930;
  vec3 x_522 = vec3(x_330.w, x_330.y, x_493.x);
  float x_931 = color.x;
  color.x = 0.0f;
  color.x = x_931;
  return;
}

struct main_out {
  vec4 x_GLF_color_1;
};
struct tint_symbol_4 {
  vec4 tint_symbol_2;
};
struct tint_symbol_5 {
  vec4 x_GLF_color_1;
};

main_out tint_symbol_1_inner(vec4 tint_symbol_2) {
  tint_symbol = tint_symbol_2;
  main_1();
  main_out tint_symbol_84 = main_out(x_GLF_color);
  return tint_symbol_84;
}

tint_symbol_5 tint_symbol_1(tint_symbol_4 tint_symbol_3) {
  main_out inner_result = tint_symbol_1_inner(tint_symbol_3.tint_symbol_2);
  tint_symbol_5 wrapper_result = tint_symbol_5(vec4(0.0f, 0.0f, 0.0f, 0.0f));
  wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
  return wrapper_result;
}
layout(location = 0) out vec4 x_GLF_color_1;
void main() {
  tint_symbol_4 inputs;
  inputs.tint_symbol_2 = gl_FragCoord;
  tint_symbol_5 outputs;
  outputs = tint_symbol_1(inputs);
  x_GLF_color_1 = outputs.x_GLF_color_1;
}


