#include <metal_stdlib>

using namespace metal;
struct tint_array_wrapper {
  int arr[10];
};
struct QuicksortObject {
  tint_array_wrapper numbers;
};
struct buf0 {
  /* 0x0000 */ packed_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;
}

