OpCapability Shader
          %1 = OpExtInstImport "GLSL.std.450"
               OpMemoryModel Logical GLSL450
               OpEntryPoint Vertex %main "main" %_GLF_pos %frag_color %__1
               OpSource ESSL 310
               OpName %main "main"
               OpName %swap_i1_i1_ "swap(i1;i1;"
               OpName %i "i"
               OpName %j "j"
               OpName %performPartition_i1_i1_ "performPartition(i1;i1;"
               OpName %l "l"
               OpName %h "h"
               OpName %quicksort_ "quicksort("
               OpName %temp "temp"
               OpName %QuicksortObject "QuicksortObject"
               OpMemberName %QuicksortObject 0 "numbers"
               OpName %obj "obj"
               OpName %pivot "pivot"
               OpName %i_0 "i"
               OpName %j_0 "j"
               OpName %param "param"
               OpName %param_0 "param"
               OpName %param_1 "param"
               OpName %param_2 "param"
               OpName %l_0 "l"
               OpName %h_0 "h"
               OpName %top "top"
               OpName %stack "stack"
               OpName %p "p"
               OpName %param_3 "param"
               OpName %param_4 "param"
               OpName %_GLF_FragCoord "_GLF_FragCoord"
               OpName %_GLF_pos "_GLF_pos"
               OpName %i_1 "i"
               OpName %uv "uv"
               OpName %buf1 "buf1"
               OpMemberName %buf1 0 "resolution"
               OpName %_ ""
               OpName %color "color"
               OpName %buf0 "buf0"
               OpMemberName %buf0 0 "injectionSwitch"
               OpName %__0 ""
               OpName %frag_color "frag_color"
               OpName %gl_PerVertex "gl_PerVertex"
               OpMemberName %gl_PerVertex 0 "gl_Position"
               OpMemberName %gl_PerVertex 1 "gl_PointSize"
               OpName %__1 ""
               OpDecorate %_GLF_pos Location 0
               OpMemberDecorate %buf1 0 Offset 0
               OpDecorate %buf1 Block
               OpDecorate %_ DescriptorSet 0
               OpDecorate %_ Binding 1
               OpMemberDecorate %buf0 0 Offset 0
               OpDecorate %buf0 Block
               OpDecorate %__0 DescriptorSet 0
               OpDecorate %__0 Binding 0
               OpDecorate %frag_color Location 0
               OpMemberDecorate %gl_PerVertex 0 BuiltIn Position
               OpMemberDecorate %gl_PerVertex 1 BuiltIn PointSize
               OpDecorate %gl_PerVertex Block
       %void = OpTypeVoid
         %40 = OpTypeFunction %void
        %int = OpTypeInt 32 1
%_ptr_Function_int = OpTypePointer Function %int
         %43 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int
         %44 = OpTypeFunction %int %_ptr_Function_int %_ptr_Function_int
       %uint = OpTypeInt 32 0
    %uint_10 = OpConstant %uint 10
%_arr_int_uint_10 = OpTypeArray %int %uint_10
%QuicksortObject = OpTypeStruct %_arr_int_uint_10
%_ptr_Private_QuicksortObject = OpTypePointer Private %QuicksortObject
        %obj = OpVariable %_ptr_Private_QuicksortObject Private
      %int_0 = OpConstant %int 0
%_ptr_Private_int = OpTypePointer Private %int
      %int_1 = OpConstant %int 1
       %bool = OpTypeBool
      %int_9 = OpConstant %int 9
     %int_n1 = OpConstant %int -1
%_ptr_Function__arr_int_uint_10 = OpTypePointer Function %_arr_int_uint_10
      %float = OpTypeFloat 32
    %v4float = OpTypeVector %float 4
%_ptr_Private_v4float = OpTypePointer Private %v4float
%_GLF_FragCoord = OpVariable %_ptr_Private_v4float Private
%_ptr_Input_v4float = OpTypePointer Input %v4float
   %_GLF_pos = OpVariable %_ptr_Input_v4float Input
    %float_1 = OpConstant %float 1
    %float_0 = OpConstant %float 0
         %62 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_0
  %float_128 = OpConstant %float 128
         %64 = OpConstantComposite %v4float %float_128 %float_128 %float_1 %float_1
     %int_10 = OpConstant %int 10
    %v2float = OpTypeVector %float 2
%_ptr_Function_v2float = OpTypePointer Function %v2float
       %buf1 = OpTypeStruct %v2float
%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
          %_ = OpVariable %_ptr_Uniform_buf1 Uniform
%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
    %v3float = OpTypeVector %float 3
%_ptr_Function_v3float = OpTypePointer Function %v3float
    %float_2 = OpConstant %float 2
    %float_3 = OpConstant %float 3
         %74 = OpConstantComposite %v3float %float_1 %float_2 %float_3
     %uint_0 = OpConstant %uint 0
%_ptr_Function_float = OpTypePointer Function %float
 %float_0_25 = OpConstant %float 0.25
  %float_0_5 = OpConstant %float 0.5
      %int_2 = OpConstant %int 2
       %buf0 = OpTypeStruct %v2float
%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
        %__0 = OpVariable %_ptr_Uniform_buf0 Uniform
     %uint_1 = OpConstant %uint 1
%_ptr_Uniform_float = OpTypePointer Uniform %float
 %float_0_75 = OpConstant %float 0.75
      %int_3 = OpConstant %int 3
     %uint_2 = OpConstant %uint 2
      %int_4 = OpConstant %int 4
      %int_5 = OpConstant %int 5
      %int_6 = OpConstant %int 6
      %int_7 = OpConstant %int 7
      %int_8 = OpConstant %int 8
%_ptr_Output_v4float = OpTypePointer Output %v4float
 %frag_color = OpVariable %_ptr_Output_v4float Output
%gl_PerVertex = OpTypeStruct %v4float %float
%_ptr_Output_gl_PerVertex = OpTypePointer Output %gl_PerVertex
        %__1 = OpVariable %_ptr_Output_gl_PerVertex Output
       %main = OpFunction %void None %40
         %93 = OpLabel
        %i_1 = OpVariable %_ptr_Function_int Function
         %uv = OpVariable %_ptr_Function_v2float Function
      %color = OpVariable %_ptr_Function_v3float Function
         %94 = OpLoad %v4float %_GLF_pos
         %95 = OpFAdd %v4float %94 %62
         %96 = OpFMul %v4float %95 %64
               OpStore %_GLF_FragCoord %96
               OpStore %i_1 %int_0
               OpBranch %97
         %97 = OpLabel
               OpLoopMerge %98 %99 None
               OpBranch %100
        %100 = OpLabel
        %101 = OpLoad %int %i_1
        %102 = OpSLessThan %bool %101 %int_10
               OpBranchConditional %102 %103 %98
        %103 = OpLabel
        %104 = OpLoad %int %i_1
        %105 = OpLoad %int %i_1
        %106 = OpISub %int %int_10 %105
        %107 = OpAccessChain %_ptr_Private_int %obj %int_0 %104
               OpStore %107 %106
        %108 = OpLoad %int %i_1
        %109 = OpLoad %int %i_1
        %110 = OpAccessChain %_ptr_Private_int %obj %int_0 %109
        %111 = OpLoad %int %110
        %112 = OpLoad %int %i_1
        %113 = OpAccessChain %_ptr_Private_int %obj %int_0 %112
        %114 = OpLoad %int %113
        %115 = OpIMul %int %111 %114
        %116 = OpAccessChain %_ptr_Private_int %obj %int_0 %108
               OpStore %116 %115
               OpBranch %99
         %99 = OpLabel
        %117 = OpLoad %int %i_1
        %118 = OpIAdd %int %117 %int_1
               OpStore %i_1 %118
               OpBranch %97
         %98 = OpLabel
        %119 = OpFunctionCall %void %quicksort_
        %120 = OpLoad %v4float %_GLF_FragCoord
        %121 = OpVectorShuffle %v2float %120 %120 0 1
        %122 = OpAccessChain %_ptr_Uniform_v2float %_ %int_0
        %123 = OpLoad %v2float %122
        %124 = OpFDiv %v2float %121 %123
               OpStore %uv %124
               OpStore %color %74
        %125 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_0
        %126 = OpLoad %int %125
        %127 = OpConvertSToF %float %126
        %128 = OpAccessChain %_ptr_Function_float %color %uint_0
        %129 = OpLoad %float %128
        %130 = OpFAdd %float %129 %127
        %131 = OpAccessChain %_ptr_Function_float %color %uint_0
               OpStore %131 %130
        %132 = OpAccessChain %_ptr_Function_float %uv %uint_0
        %133 = OpLoad %float %132
        %134 = OpFOrdGreaterThan %bool %133 %float_0_25
               OpSelectionMerge %135 None
               OpBranchConditional %134 %136 %135
        %136 = OpLabel
        %137 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_1
        %138 = OpLoad %int %137
        %139 = OpConvertSToF %float %138
        %140 = OpAccessChain %_ptr_Function_float %color %uint_0
        %141 = OpLoad %float %140
        %142 = OpFAdd %float %141 %139
        %143 = OpAccessChain %_ptr_Function_float %color %uint_0
               OpStore %143 %142
               OpBranch %135
        %135 = OpLabel
        %144 = OpAccessChain %_ptr_Function_float %uv %uint_0
        %145 = OpLoad %float %144
        %146 = OpFOrdGreaterThan %bool %145 %float_0_5
               OpSelectionMerge %147 None
               OpBranchConditional %146 %148 %147
        %148 = OpLabel
        %149 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %uint_1
        %150 = OpLoad %float %149
        %151 = OpConvertFToS %int %150
        %152 = OpIMul %int %int_2 %151
        %153 = OpExtInst %int %1 SMax %152 %int_2
        %154 = OpAccessChain %_ptr_Private_int %obj %int_0 %153
        %155 = OpLoad %int %154
        %156 = OpConvertSToF %float %155
        %157 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %uint_1
        %158 = OpLoad %float %157
        %159 = OpConvertFToS %int %158
        %160 = OpIMul %int %int_2 %159
        %161 = OpExtInst %int %1 SMax %160 %int_2
        %162 = OpAccessChain %_ptr_Private_int %obj %int_0 %161
        %163 = OpLoad %int %162
        %164 = OpConvertSToF %float %163
        %165 = OpExtInst %float %1 FMax %156 %164
        %166 = OpAccessChain %_ptr_Function_float %color %uint_1
        %167 = OpLoad %float %166
        %168 = OpFAdd %float %167 %165
        %169 = OpAccessChain %_ptr_Function_float %color %uint_1
               OpStore %169 %168
               OpBranch %147
        %147 = OpLabel
        %170 = OpAccessChain %_ptr_Function_float %uv %uint_0
        %171 = OpLoad %float %170
        %172 = OpFOrdGreaterThan %bool %171 %float_0_75
               OpSelectionMerge %173 None
               OpBranchConditional %172 %174 %173
        %174 = OpLabel
        %175 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_3
        %176 = OpLoad %int %175
        %177 = OpConvertSToF %float %176
        %178 = OpAccessChain %_ptr_Function_float %color %uint_2
        %179 = OpLoad %float %178
        %180 = OpFAdd %float %179 %177
        %181 = OpAccessChain %_ptr_Function_float %color %uint_2
               OpStore %181 %180
               OpBranch %173
        %173 = OpLabel
        %182 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_4
        %183 = OpLoad %int %182
        %184 = OpConvertSToF %float %183
        %185 = OpAccessChain %_ptr_Function_float %color %uint_1
        %186 = OpLoad %float %185
        %187 = OpFAdd %float %186 %184
        %188 = OpAccessChain %_ptr_Function_float %color %uint_1
               OpStore %188 %187
        %189 = OpAccessChain %_ptr_Function_float %uv %uint_1
        %190 = OpLoad %float %189
        %191 = OpFOrdGreaterThan %bool %190 %float_0_25
               OpSelectionMerge %192 None
               OpBranchConditional %191 %193 %192
        %193 = OpLabel
        %194 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_5
        %195 = OpLoad %int %194
        %196 = OpConvertSToF %float %195
        %197 = OpAccessChain %_ptr_Function_float %color %uint_0
        %198 = OpLoad %float %197
        %199 = OpFAdd %float %198 %196
        %200 = OpAccessChain %_ptr_Function_float %color %uint_0
               OpStore %200 %199
               OpBranch %192
        %192 = OpLabel
        %201 = OpAccessChain %_ptr_Function_float %uv %uint_1
        %202 = OpLoad %float %201
        %203 = OpFOrdGreaterThan %bool %202 %float_0_5
               OpSelectionMerge %204 None
               OpBranchConditional %203 %205 %204
        %205 = OpLabel
        %206 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_6
        %207 = OpLoad %int %206
        %208 = OpConvertSToF %float %207
        %209 = OpAccessChain %_ptr_Function_float %color %uint_1
        %210 = OpLoad %float %209
        %211 = OpFAdd %float %210 %208
        %212 = OpAccessChain %_ptr_Function_float %color %uint_1
               OpStore %212 %211
               OpBranch %204
        %204 = OpLabel
        %213 = OpAccessChain %_ptr_Function_float %uv %uint_1
        %214 = OpLoad %float %213
        %215 = OpFOrdGreaterThan %bool %214 %float_0_75
               OpSelectionMerge %216 None
               OpBranchConditional %215 %217 %216
        %217 = OpLabel
        %218 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_7
        %219 = OpLoad %int %218
        %220 = OpConvertSToF %float %219
        %221 = OpAccessChain %_ptr_Function_float %color %uint_2
        %222 = OpLoad %float %221
        %223 = OpFAdd %float %222 %220
        %224 = OpAccessChain %_ptr_Function_float %color %uint_2
               OpStore %224 %223
               OpBranch %216
        %216 = OpLabel
        %225 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_8
        %226 = OpLoad %int %225
        %227 = OpConvertSToF %float %226
        %228 = OpAccessChain %_ptr_Function_float %color %uint_2
        %229 = OpLoad %float %228
        %230 = OpFAdd %float %229 %227
        %231 = OpAccessChain %_ptr_Function_float %color %uint_2
               OpStore %231 %230
        %232 = OpAccessChain %_ptr_Function_float %uv %uint_0
        %233 = OpLoad %float %232
        %234 = OpAccessChain %_ptr_Function_float %uv %uint_1
        %235 = OpLoad %float %234
        %236 = OpFSub %float %233 %235
        %237 = OpExtInst %float %1 FAbs %236
        %238 = OpFOrdLessThan %bool %237 %float_0_25
               OpSelectionMerge %239 None
               OpBranchConditional %238 %240 %239
        %240 = OpLabel
        %241 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_9
        %242 = OpLoad %int %241
        %243 = OpConvertSToF %float %242
        %244 = OpAccessChain %_ptr_Function_float %color %uint_0
        %245 = OpLoad %float %244
        %246 = OpFAdd %float %245 %243
        %247 = OpAccessChain %_ptr_Function_float %color %uint_0
               OpStore %247 %246
               OpBranch %239
        %239 = OpLabel
        %248 = OpLoad %v3float %color
        %249 = OpExtInst %v3float %1 Normalize %248
        %250 = OpCompositeExtract %float %249 0
        %251 = OpCompositeExtract %float %249 1
        %252 = OpCompositeExtract %float %249 2
        %253 = OpCompositeConstruct %v4float %250 %251 %252 %float_1
               OpStore %frag_color %253
        %254 = OpLoad %v4float %_GLF_pos
        %255 = OpAccessChain %_ptr_Output_v4float %__1 %int_0
               OpStore %255 %254
               OpReturn
               OpFunctionEnd
%swap_i1_i1_ = OpFunction %void None %43
          %i = OpFunctionParameter %_ptr_Function_int
          %j = OpFunctionParameter %_ptr_Function_int
        %256 = OpLabel
       %temp = OpVariable %_ptr_Function_int Function
        %257 = OpLoad %int %i
        %258 = OpAccessChain %_ptr_Private_int %obj %int_0 %257
        %259 = OpLoad %int %258
               OpStore %temp %259
        %260 = OpLoad %int %i
        %261 = OpLoad %int %j
        %262 = OpAccessChain %_ptr_Private_int %obj %int_0 %261
        %263 = OpLoad %int %262
        %264 = OpAccessChain %_ptr_Private_int %obj %int_0 %260
               OpStore %264 %263
        %265 = OpLoad %int %j
        %266 = OpLoad %int %temp
        %267 = OpAccessChain %_ptr_Private_int %obj %int_0 %265
               OpStore %267 %266
               OpReturn
               OpFunctionEnd
%performPartition_i1_i1_ = OpFunction %int None %44
          %l = OpFunctionParameter %_ptr_Function_int
          %h = OpFunctionParameter %_ptr_Function_int
        %268 = OpLabel
      %pivot = OpVariable %_ptr_Function_int Function
        %i_0 = OpVariable %_ptr_Function_int Function
        %j_0 = OpVariable %_ptr_Function_int Function
      %param = OpVariable %_ptr_Function_int Function
    %param_0 = OpVariable %_ptr_Function_int Function
    %param_1 = OpVariable %_ptr_Function_int Function
    %param_2 = OpVariable %_ptr_Function_int Function
        %269 = OpLoad %int %h
        %270 = OpAccessChain %_ptr_Private_int %obj %int_0 %269
        %271 = OpLoad %int %270
               OpStore %pivot %271
        %272 = OpLoad %int %l
        %273 = OpISub %int %272 %int_1
               OpStore %i_0 %273
        %274 = OpLoad %int %l
               OpStore %j_0 %274
               OpBranch %275
        %275 = OpLabel
               OpLoopMerge %276 %277 None
               OpBranch %278
        %278 = OpLabel
        %279 = OpLoad %int %j_0
        %280 = OpLoad %int %h
        %281 = OpISub %int %280 %int_1
        %282 = OpSLessThanEqual %bool %279 %281
               OpBranchConditional %282 %283 %276
        %283 = OpLabel
        %284 = OpLoad %int %j_0
        %285 = OpAccessChain %_ptr_Private_int %obj %int_0 %284
        %286 = OpLoad %int %285
        %287 = OpLoad %int %pivot
        %288 = OpSLessThanEqual %bool %286 %287
               OpSelectionMerge %289 None
               OpBranchConditional %288 %290 %289
        %290 = OpLabel
        %291 = OpLoad %int %i_0
        %292 = OpIAdd %int %291 %int_1
               OpStore %i_0 %292
        %293 = OpLoad %int %i_0
               OpStore %param %293
        %294 = OpLoad %int %j_0
               OpStore %param_0 %294
        %295 = OpFunctionCall %void %swap_i1_i1_ %param %param_0
               OpBranch %289
        %289 = OpLabel
               OpBranch %277
        %277 = OpLabel
        %296 = OpLoad %int %j_0
        %297 = OpIAdd %int %296 %int_1
               OpStore %j_0 %297
               OpBranch %275
        %276 = OpLabel
        %298 = OpLoad %int %i_0
        %299 = OpIAdd %int %298 %int_1
               OpStore %param_1 %299
        %300 = OpLoad %int %h
               OpStore %param_2 %300
        %301 = OpFunctionCall %void %swap_i1_i1_ %param_1 %param_2
        %302 = OpLoad %int %i_0
        %303 = OpIAdd %int %302 %int_1
               OpReturnValue %303
               OpFunctionEnd
 %quicksort_ = OpFunction %void None %40
        %304 = OpLabel
        %l_0 = OpVariable %_ptr_Function_int Function
        %h_0 = OpVariable %_ptr_Function_int Function
        %top = OpVariable %_ptr_Function_int Function
      %stack = OpVariable %_ptr_Function__arr_int_uint_10 Function
          %p = OpVariable %_ptr_Function_int Function
    %param_3 = OpVariable %_ptr_Function_int Function
    %param_4 = OpVariable %_ptr_Function_int Function
               OpStore %l_0 %int_0
               OpStore %h_0 %int_9
               OpStore %top %int_n1
        %305 = OpLoad %int %top
        %306 = OpIAdd %int %305 %int_1
               OpStore %top %306
        %307 = OpLoad %int %l_0
        %308 = OpAccessChain %_ptr_Function_int %stack %306
               OpStore %308 %307
        %309 = OpLoad %int %top
        %310 = OpIAdd %int %309 %int_1
               OpStore %top %310
        %311 = OpLoad %int %h_0
        %312 = OpAccessChain %_ptr_Function_int %stack %310
               OpStore %312 %311
               OpBranch %313
        %313 = OpLabel
               OpLoopMerge %314 %315 None
               OpBranch %316
        %316 = OpLabel
        %317 = OpLoad %int %top
        %318 = OpSGreaterThanEqual %bool %317 %int_0
               OpBranchConditional %318 %319 %314
        %319 = OpLabel
        %320 = OpLoad %int %top
        %321 = OpISub %int %320 %int_1
               OpStore %top %321
        %322 = OpAccessChain %_ptr_Function_int %stack %320
        %323 = OpLoad %int %322
               OpStore %h_0 %323
        %324 = OpLoad %int %top
        %325 = OpISub %int %324 %int_1
               OpStore %top %325
        %326 = OpAccessChain %_ptr_Function_int %stack %324
        %327 = OpLoad %int %326
               OpStore %l_0 %327
        %328 = OpLoad %int %l_0
               OpStore %param_3 %328
        %329 = OpLoad %int %h_0
               OpStore %param_4 %329
        %330 = OpFunctionCall %int %performPartition_i1_i1_ %param_3 %param_4
               OpStore %p %330
        %331 = OpLoad %int %p
        %332 = OpISub %int %331 %int_1
        %333 = OpLoad %int %l_0
        %334 = OpSGreaterThan %bool %332 %333
               OpSelectionMerge %335 None
               OpBranchConditional %334 %336 %335
        %336 = OpLabel
        %337 = OpLoad %int %top
        %338 = OpIAdd %int %337 %int_1
               OpStore %top %338
        %339 = OpLoad %int %l_0
        %340 = OpAccessChain %_ptr_Function_int %stack %338
               OpStore %340 %339
        %341 = OpLoad %int %top
        %342 = OpIAdd %int %341 %int_1
               OpStore %top %342
        %343 = OpLoad %int %p
        %344 = OpISub %int %343 %int_1
        %345 = OpAccessChain %_ptr_Function_int %stack %342
               OpStore %345 %344
               OpBranch %335
        %335 = OpLabel
        %346 = OpLoad %int %p
        %347 = OpIAdd %int %346 %int_1
        %348 = OpLoad %int %h_0
        %349 = OpSLessThan %bool %347 %348
               OpSelectionMerge %350 None
               OpBranchConditional %349 %351 %350
        %351 = OpLabel
        %352 = OpLoad %int %top
        %353 = OpIAdd %int %352 %int_1
               OpStore %top %353
        %354 = OpLoad %int %p
        %355 = OpIAdd %int %354 %int_1
        %356 = OpAccessChain %_ptr_Function_int %stack %353
               OpStore %356 %355
        %357 = OpLoad %int %top
        %358 = OpIAdd %int %357 %int_1
               OpStore %top %358
        %359 = OpLoad %int %h_0
        %360 = OpAccessChain %_ptr_Function_int %stack %358
               OpStore %360 %359
               OpBranch %350
        %350 = OpLabel
               OpBranch %315
        %315 = OpLabel
               OpBranch %313
        %314 = OpLabel
               OpReturn
               OpFunctionEnd