#include <metal_stdlib>

using namespace metal;
struct tint_array_wrapper {
  int arr[10];
};
struct QuicksortObject {
  tint_array_wrapper numbers;
};
struct buf0 {
  /* 0x0000 */ float2 resolution;
};
struct main_out {
  float4 x_GLF_color_1;
};
struct tint_symbol_1 {
  float4 x_GLF_color_1 [[color(0)]];
};

void swap_i1_i1_(thread int* const i, thread int* const j, float3x3 x_228, thread QuicksortObject* const tint_symbol_3) {
  int temp = 0;
  int const x_230 = *(i);
  int const x_232 = (*(tint_symbol_3)).numbers.arr[x_230];
  temp = x_232;
  int const x_233 = *(i);
  int const x_234 = *(j);
  int const x_236 = (*(tint_symbol_3)).numbers.arr[x_234];
  (*(tint_symbol_3)).numbers.arr[x_233] = x_236;
  int const x_238 = *(j);
  int const x_239 = temp;
  (*(tint_symbol_3)).numbers.arr[x_238] = x_239;
  return;
}

int performPartition_i1_i1_(thread int* const l, thread int* const h, thread QuicksortObject* const tint_symbol_4) {
  int pivot = 0;
  int i_1 = 0;
  int j_1 = 0;
  int param = 0;
  int param_1 = 0;
  int param_2 = 0;
  int param_3 = 0;
  int const x_242 = *(h);
  int const x_244 = (*(tint_symbol_4)).numbers.arr[x_242];
  pivot = x_244;
  int const x_245 = *(l);
  i_1 = as_type<int>((as_type<uint>(x_245) - as_type<uint>(1)));
  int const x_247 = *(l);
  j_1 = x_247;
  while (true) {
    int const x_252 = j_1;
    int const x_253 = *(h);
    if ((x_252 <= as_type<int>((as_type<uint>(x_253) - as_type<uint>(1))))) {
    } else {
      break;
    }
    int const x_257 = j_1;
    int const x_259 = (*(tint_symbol_4)).numbers.arr[x_257];
    int const x_260 = pivot;
    if ((x_259 <= x_260)) {
      int const x_264 = i_1;
      i_1 = as_type<int>((as_type<uint>(x_264) + as_type<uint>(1)));
      int const x_266 = i_1;
      param = x_266;
      int const x_267 = j_1;
      param_1 = x_267;
      swap_i1_i1_(&(param), &(param_1), float3x3(float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f)), tint_symbol_4);
    }
    {
      int const x_269 = j_1;
      j_1 = as_type<int>((as_type<uint>(x_269) + as_type<uint>(1)));
    }
  }
  int const x_271 = i_1;
  i_1 = as_type<int>((as_type<uint>(x_271) + as_type<uint>(1)));
  int const x_273 = i_1;
  param_2 = x_273;
  int const x_274 = *(h);
  param_3 = x_274;
  swap_i1_i1_(&(param_2), &(param_3), float3x3(float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f)), tint_symbol_4);
  int const x_276 = i_1;
  return x_276;
}

void quicksort_(thread QuicksortObject* const tint_symbol_5) {
  int l_1 = 0;
  int h_1 = 0;
  int top = 0;
  tint_array_wrapper stack = {};
  int p = 0;
  int param_4 = 0;
  int param_5 = 0;
  l_1 = 0;
  h_1 = 9;
  top = -1;
  int const x_278 = top;
  int const x_279 = as_type<int>((as_type<uint>(x_278) + as_type<uint>(1)));
  top = x_279;
  int const x_280 = l_1;
  stack.arr[x_279] = x_280;
  int const x_282 = top;
  int const x_283 = as_type<int>((as_type<uint>(x_282) + as_type<uint>(1)));
  top = x_283;
  int const x_284 = h_1;
  stack.arr[x_283] = x_284;
  while (true) {
    int const x_290 = top;
    if ((x_290 >= 0)) {
    } else {
      break;
    }
    int const x_293 = top;
    top = as_type<int>((as_type<uint>(x_293) - as_type<uint>(1)));
    int const x_296 = stack.arr[x_293];
    h_1 = x_296;
    int const x_297 = top;
    top = as_type<int>((as_type<uint>(x_297) - as_type<uint>(1)));
    int const x_300 = stack.arr[x_297];
    l_1 = x_300;
    int const x_301 = l_1;
    param_4 = x_301;
    int const x_302 = h_1;
    param_5 = x_302;
    int const x_303 = performPartition_i1_i1_(&(param_4), &(param_5), tint_symbol_5);
    p = x_303;
    int const x_304 = p;
    int const x_306 = l_1;
    if ((as_type<int>((as_type<uint>(x_304) - as_type<uint>(1))) > x_306)) {
      int const x_310 = top;
      int const x_311 = as_type<int>((as_type<uint>(x_310) + as_type<uint>(1)));
      top = x_311;
      int const x_312 = l_1;
      stack.arr[x_311] = x_312;
      int const x_314 = top;
      int const x_315 = as_type<int>((as_type<uint>(x_314) + as_type<uint>(1)));
      top = x_315;
      int const x_316 = p;
      stack.arr[x_315] = as_type<int>((as_type<uint>(x_316) - as_type<uint>(1)));
    }
    int const x_319 = p;
    int const x_321 = h_1;
    if ((as_type<int>((as_type<uint>(x_319) + as_type<uint>(1))) < x_321)) {
      int const x_325 = top;
      int const x_326 = as_type<int>((as_type<uint>(x_325) + as_type<uint>(1)));
      top = x_326;
      int const x_327 = p;
      stack.arr[x_326] = as_type<int>((as_type<uint>(x_327) + as_type<uint>(1)));
      int const x_330 = top;
      int const x_331 = as_type<int>((as_type<uint>(x_330) + as_type<uint>(1)));
      top = x_331;
      int const x_332 = h_1;
      stack.arr[x_331] = x_332;
    }
  }
  return;
}

void main_1(constant buf0& x_32, thread QuicksortObject* const tint_symbol_6, thread float4* const tint_symbol_7, thread float4* const tint_symbol_8) {
  int i_2 = 0;
  float2 uv = 0.0f;
  float3 color = 0.0f;
  i_2 = 0;
  while (true) {
    int const x_89 = i_2;
    if ((x_89 < 10)) {
    } else {
      break;
    }
    int const x_92 = i_2;
    int const x_93 = i_2;
    (*(tint_symbol_6)).numbers.arr[x_92] = as_type<int>((as_type<uint>(10) - as_type<uint>(x_93)));
    int const x_96 = i_2;
    int const x_97 = i_2;
    int const x_99 = (*(tint_symbol_6)).numbers.arr[x_97];
    int const x_100 = i_2;
    int const x_102 = (*(tint_symbol_6)).numbers.arr[x_100];
    (*(tint_symbol_6)).numbers.arr[x_96] = as_type<int>((as_type<uint>(x_99) * as_type<uint>(x_102)));
    {
      int const x_105 = i_2;
      i_2 = as_type<int>((as_type<uint>(x_105) + as_type<uint>(1)));
    }
  }
  quicksort_(tint_symbol_6);
  float4 const x_108 = *(tint_symbol_7);
  float2 const x_111 = x_32.resolution;
  uv = (float2(x_108.x, x_108.y) / x_111);
  color = float3(1.0f, 2.0f, 3.0f);
  int const x_114 = (*(tint_symbol_6)).numbers.arr[0];
  float const x_117 = color.x;
  color.x = (x_117 + float(x_114));
  float const x_121 = uv.x;
  if ((x_121 > 0.25f)) {
    int const x_126 = (*(tint_symbol_6)).numbers.arr[1];
    float const x_129 = color.x;
    color.x = (x_129 + float(x_126));
  }
  float const x_133 = uv.x;
  if ((x_133 > 0.5f)) {
    int const x_138 = (*(tint_symbol_6)).numbers.arr[2];
    float const x_141 = color.y;
    color.y = (x_141 + float(x_138));
  }
  float const x_145 = uv.x;
  if ((x_145 > 0.75f)) {
    int const x_150 = (*(tint_symbol_6)).numbers.arr[3];
    float const x_153 = color.z;
    color.z = (x_153 + float(x_150));
  }
  int const x_157 = (*(tint_symbol_6)).numbers.arr[4];
  float const x_160 = color.y;
  color.y = (x_160 + float(x_157));
  float const x_164 = uv.y;
  if ((x_164 > 0.25f)) {
    int const x_169 = (*(tint_symbol_6)).numbers.arr[5];
    float const x_172 = color.x;
    color.x = (x_172 + float(x_169));
  }
  float const x_176 = uv.y;
  if ((x_176 > 0.5f)) {
    int const x_181 = (*(tint_symbol_6)).numbers.arr[6];
    float const x_184 = color.y;
    color.y = (x_184 + float(x_181));
  }
  float const x_188 = uv.y;
  if ((x_188 > 0.75f)) {
    int const x_193 = (*(tint_symbol_6)).numbers.arr[7];
    float const x_196 = color.z;
    color.z = (x_196 + float(x_193));
  }
  int const x_200 = (*(tint_symbol_6)).numbers.arr[8];
  float const x_203 = color.z;
  color.z = (x_203 + float(x_200));
  float const x_207 = uv.x;
  float const x_209 = uv.y;
  if ((fabs((x_207 - x_209)) < 0.25f)) {
    int const x_216 = (*(tint_symbol_6)).numbers.arr[9];
    float const x_219 = color.x;
    color.x = (x_219 + float(x_216));
  }
  float3 const x_222 = color;
  float3 const x_223 = normalize(x_222);
  *(tint_symbol_8) = float4(x_223.x, x_223.y, x_223.z, 1.0f);
  return;
}

main_out tint_symbol_inner(constant buf0& x_32, float4 gl_FragCoord_param, thread float4* const tint_symbol_9, thread QuicksortObject* const tint_symbol_10, thread float4* const tint_symbol_11) {
  *(tint_symbol_9) = gl_FragCoord_param;
  main_1(x_32, tint_symbol_10, tint_symbol_9, tint_symbol_11);
  main_out const tint_symbol_2 = {.x_GLF_color_1=*(tint_symbol_11)};
  return tint_symbol_2;
}

fragment tint_symbol_1 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_32 [[buffer(0)]]) {
  thread float4 tint_symbol_12 = 0.0f;
  thread QuicksortObject tint_symbol_13 = {};
  thread float4 tint_symbol_14 = 0.0f;
  main_out const inner_result = tint_symbol_inner(x_32, gl_FragCoord_param, &(tint_symbol_12), &(tint_symbol_13), &(tint_symbol_14));
  tint_symbol_1 wrapper_result = {};
  wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
  return wrapper_result;
}

