OpCapability Shader %1 = OpExtInstImport "GLSL.std.450" OpMemoryModel Logical GLSL450 OpEntryPoint Fragment %main "main" %_GLF_color OpExecutionMode %main OriginUpperLeft OpSource ESSL 310 OpName %main "main" OpName %identity_i1_ "identity(i1;" OpName %a "a" OpName %BST "BST" OpMemberName %BST 0 "data" OpMemberName %BST 1 "leftIndex" OpMemberName %BST 2 "rightIndex" OpName %makeTreeNode_struct_BST_i1_i1_i11_i1_ "makeTreeNode(struct-BST-i1-i1-i11;i1;" OpName %node "node" OpName %data "data" OpName %insert_i1_i1_ "insert(i1;i1;" OpName %treeIndex "treeIndex" OpName %data_0 "data" OpName %search_i1_ "search(i1;" OpName %t "t" OpName %QuicksortObject "QuicksortObject" OpMemberName %QuicksortObject 0 "numbers" OpName %obj "obj" OpName %baseIndex "baseIndex" OpName %tree "tree" OpName %param "param" OpName %param_0 "param" OpName %param_1 "param" OpName %param_2 "param" OpName %index "index" OpName %currentNode "currentNode" OpName %treeIndex_0 "treeIndex" OpName %param_3 "param" OpName %param_4 "param" OpName %param_5 "param" OpName %param_6 "param" OpName %param_7 "param" OpName %param_8 "param" OpName %param_9 "param" OpName %param_10 "param" OpName %param_11 "param" OpName %param_12 "param" OpName %param_13 "param" OpName %param_14 "param" OpName %param_15 "param" OpName %param_16 "param" OpName %param_17 "param" OpName %param_18 "param" OpName %param_19 "param" OpName %param_20 "param" OpName %param_21 "param" OpName %param_22 "param" OpName %pp "pp" OpName %looplimiter0 "looplimiter0" OpName %i "i" OpName %buf0 "buf0" OpMemberName %buf0 0 "injectionSwitch" OpName %_ "" OpName %param_23 "param" OpName %count "count" OpName %i_0 "i" OpName %result "result" OpName %param_24 "param" OpName %_GLF_color "_GLF_color" OpMemberDecorate %buf0 0 Offset 0 OpDecorate %buf0 Block OpDecorate %_ DescriptorSet 0 OpDecorate %_ Binding 0 OpDecorate %_GLF_color Location 0 %void = OpTypeVoid %57 = OpTypeFunction %void %int = OpTypeInt 32 1 %_ptr_Function_int = OpTypePointer Function %int %60 = OpTypeFunction %int %_ptr_Function_int %BST = OpTypeStruct %int %int %int %_ptr_Function_BST = OpTypePointer Function %BST %62 = OpTypeFunction %void %_ptr_Function_BST %_ptr_Function_int %63 = OpTypeFunction %void %_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_2 = OpConstant %int 2 %int_1 = OpConstant %int 1 %int_n1 = OpConstant %int -1 %bool = OpTypeBool %_arr_BST_uint_10 = OpTypeArray %BST %uint_10 %_ptr_Private__arr_BST_uint_10 = OpTypePointer Private %_arr_BST_uint_10 %tree = OpVariable %_ptr_Private__arr_BST_uint_10 Private %_ptr_Private_BST = OpTypePointer Private %BST %int_9 = OpConstant %int 9 %int_5 = OpConstant %int 5 %int_12 = OpConstant %int 12 %int_15 = OpConstant %int 15 %int_7 = OpConstant %int 7 %int_8 = OpConstant %int 8 %int_6 = OpConstant %int 6 %int_17 = OpConstant %int 17 %int_13 = OpConstant %int 13 %int_10000 = OpConstant %int 10000 %float = OpTypeFloat 32 %v2float = OpTypeVector %float 2 %buf0 = OpTypeStruct %v2float %_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0 %_ = OpVariable %_ptr_Uniform_buf0 Uniform %uint_1 = OpConstant %uint 1 %_ptr_Uniform_float = OpTypePointer Uniform %float %int_20 = OpConstant %int 20 %v4float = OpTypeVector %float 4 %_ptr_Output_v4float = OpTypePointer Output %v4float %_GLF_color = OpVariable %_ptr_Output_v4float Output %float_1 = OpConstant %float 1 %float_0 = OpConstant %float 0 %97 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1 %98 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1 %main = OpFunction %void None %57 %99 = OpLabel %treeIndex_0 = OpVariable %_ptr_Function_int Function %param_3 = OpVariable %_ptr_Function_BST Function %param_4 = OpVariable %_ptr_Function_int Function %param_5 = OpVariable %_ptr_Function_int Function %param_6 = OpVariable %_ptr_Function_int Function %param_7 = OpVariable %_ptr_Function_int Function %param_8 = OpVariable %_ptr_Function_int Function %param_9 = OpVariable %_ptr_Function_int Function %param_10 = OpVariable %_ptr_Function_int Function %param_11 = OpVariable %_ptr_Function_int Function %param_12 = OpVariable %_ptr_Function_int Function %param_13 = OpVariable %_ptr_Function_int Function %param_14 = OpVariable %_ptr_Function_int Function %param_15 = OpVariable %_ptr_Function_int Function %param_16 = OpVariable %_ptr_Function_int Function %param_17 = OpVariable %_ptr_Function_int Function %param_18 = OpVariable %_ptr_Function_int Function %param_19 = OpVariable %_ptr_Function_int Function %param_20 = OpVariable %_ptr_Function_int Function %param_21 = OpVariable %_ptr_Function_int Function %param_22 = OpVariable %_ptr_Function_int Function %pp = OpVariable %_ptr_Function_int Function %looplimiter0 = OpVariable %_ptr_Function_int Function %i = OpVariable %_ptr_Function_int Function %param_23 = OpVariable %_ptr_Function_int Function %count = OpVariable %_ptr_Function_int Function %i_0 = OpVariable %_ptr_Function_int Function %result = OpVariable %_ptr_Function_int Function %param_24 = OpVariable %_ptr_Function_int Function OpStore %treeIndex_0 %int_0 %100 = OpAccessChain %_ptr_Private_BST %tree %int_0 %101 = OpLoad %BST %100 OpStore %param_3 %101 OpStore %param_4 %int_9 %102 = OpFunctionCall %void %makeTreeNode_struct_BST_i1_i1_i11_i1_ %param_3 %param_4 %103 = OpLoad %BST %param_3 %104 = OpAccessChain %_ptr_Private_BST %tree %int_0 OpStore %104 %103 %105 = OpLoad %int %treeIndex_0 %106 = OpIAdd %int %105 %int_1 OpStore %treeIndex_0 %106 %107 = OpLoad %int %treeIndex_0 OpStore %param_5 %107 OpStore %param_6 %int_5 %108 = OpFunctionCall %void %insert_i1_i1_ %param_5 %param_6 %109 = OpLoad %int %treeIndex_0 %110 = OpIAdd %int %109 %int_1 OpStore %treeIndex_0 %110 %111 = OpLoad %int %treeIndex_0 OpStore %param_7 %111 OpStore %param_8 %int_12 %112 = OpFunctionCall %void %insert_i1_i1_ %param_7 %param_8 %113 = OpLoad %int %treeIndex_0 %114 = OpIAdd %int %113 %int_1 OpStore %treeIndex_0 %114 %115 = OpLoad %int %treeIndex_0 OpStore %param_9 %115 OpStore %param_10 %int_15 %116 = OpFunctionCall %void %insert_i1_i1_ %param_9 %param_10 %117 = OpLoad %int %treeIndex_0 %118 = OpIAdd %int %117 %int_1 OpStore %treeIndex_0 %118 %119 = OpLoad %int %treeIndex_0 OpStore %param_11 %119 OpStore %param_12 %int_7 %120 = OpFunctionCall %void %insert_i1_i1_ %param_11 %param_12 %121 = OpLoad %int %treeIndex_0 %122 = OpIAdd %int %121 %int_1 OpStore %treeIndex_0 %122 %123 = OpLoad %int %treeIndex_0 OpStore %param_13 %123 OpStore %param_14 %int_8 %124 = OpFunctionCall %void %insert_i1_i1_ %param_13 %param_14 %125 = OpLoad %int %treeIndex_0 %126 = OpIAdd %int %125 %int_1 OpStore %treeIndex_0 %126 %127 = OpLoad %int %treeIndex_0 OpStore %param_15 %127 OpStore %param_16 %int_2 %128 = OpFunctionCall %void %insert_i1_i1_ %param_15 %param_16 %129 = OpLoad %int %treeIndex_0 %130 = OpIAdd %int %129 %int_1 OpStore %treeIndex_0 %130 %131 = OpLoad %int %treeIndex_0 OpStore %param_17 %131 OpStore %param_18 %int_6 %132 = OpFunctionCall %void %insert_i1_i1_ %param_17 %param_18 %133 = OpLoad %int %treeIndex_0 %134 = OpIAdd %int %133 %int_1 OpStore %treeIndex_0 %134 %135 = OpLoad %int %treeIndex_0 OpStore %param_19 %135 OpStore %param_20 %int_17 %136 = OpFunctionCall %void %insert_i1_i1_ %param_19 %param_20 %137 = OpLoad %int %treeIndex_0 %138 = OpIAdd %int %137 %int_1 OpStore %treeIndex_0 %138 %139 = OpLoad %int %treeIndex_0 OpStore %param_21 %139 OpStore %param_22 %int_13 %140 = OpFunctionCall %void %insert_i1_i1_ %param_21 %param_22 OpStore %pp %int_0 OpStore %looplimiter0 %int_0 OpStore %i %int_0 OpBranch %141 %141 = OpLabel OpLoopMerge %142 %143 None OpBranch %144 %144 = OpLabel %145 = OpLoad %int %i %146 = OpSLessThan %bool %145 %int_10000 OpBranchConditional %146 %147 %142 %147 = OpLabel %148 = OpLoad %int %looplimiter0 %149 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1 %150 = OpLoad %float %149 %151 = OpConvertFToS %int %150 %152 = OpSGreaterThanEqual %bool %148 %151 OpSelectionMerge %153 None OpBranchConditional %152 %154 %153 %154 = OpLabel %155 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1 %156 = OpLoad %float %155 %157 = OpConvertFToS %int %156 %158 = OpIAdd %int %int_1 %157 OpStore %param_23 %158 %159 = OpFunctionCall %int %identity_i1_ %param_23 OpStore %pp %159 OpBranch %142 %153 = OpLabel %160 = OpLoad %int %looplimiter0 %161 = OpIAdd %int %160 %int_1 OpStore %looplimiter0 %161 OpBranch %143 %143 = OpLabel %162 = OpLoad %int %i %163 = OpIAdd %int %162 %int_1 OpStore %i %163 OpBranch %141 %142 = OpLabel %164 = OpLoad %int %pp %165 = OpINotEqual %bool %164 %int_2 OpSelectionMerge %166 None OpBranchConditional %165 %167 %166 %167 = OpLabel OpReturn %166 = OpLabel OpStore %count %int_0 OpStore %i_0 %int_0 OpBranch %168 %168 = OpLabel OpLoopMerge %169 %170 None OpBranch %171 %171 = OpLabel %172 = OpLoad %int %i_0 %173 = OpSLessThan %bool %172 %int_20 OpBranchConditional %173 %174 %169 %174 = OpLabel %175 = OpLoad %int %i_0 OpStore %param_24 %175 %176 = OpFunctionCall %int %search_i1_ %param_24 OpStore %result %176 %177 = OpLoad %int %i_0 OpSelectionMerge %178 None OpSwitch %177 %179 9 %180 5 %180 12 %180 15 %180 7 %180 8 %180 2 %180 6 %180 17 %180 13 %180 %179 = OpLabel %181 = OpLoad %int %result %182 = OpIEqual %bool %181 %int_n1 OpSelectionMerge %183 None OpBranchConditional %182 %184 %183 %184 = OpLabel %185 = OpLoad %int %count %186 = OpIAdd %int %185 %int_1 OpStore %count %186 OpBranch %183 %183 = OpLabel OpBranch %178 %180 = OpLabel %187 = OpLoad %int %result %188 = OpLoad %int %i_0 %189 = OpIEqual %bool %187 %188 OpSelectionMerge %190 None OpBranchConditional %189 %191 %190 %191 = OpLabel %192 = OpLoad %int %count %193 = OpIAdd %int %192 %int_1 OpStore %count %193 OpBranch %190 %190 = OpLabel OpBranch %178 %178 = OpLabel OpBranch %170 %170 = OpLabel %194 = OpLoad %int %i_0 %195 = OpIAdd %int %194 %int_1 OpStore %i_0 %195 OpBranch %168 %169 = OpLabel %196 = OpLoad %int %count %197 = OpIEqual %bool %196 %int_20 OpSelectionMerge %198 None OpBranchConditional %197 %199 %200 %199 = OpLabel OpStore %_GLF_color %97 OpBranch %198 %200 = OpLabel OpStore %_GLF_color %98 OpBranch %198 %198 = OpLabel OpReturn OpFunctionEnd %identity_i1_ = OpFunction %int None %60 %a = OpFunctionParameter %_ptr_Function_int %201 = OpLabel %202 = OpLoad %int %a %203 = OpLoad %int %a %204 = OpAccessChain %_ptr_Private_int %obj %int_0 %202 OpStore %204 %203 %205 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_2 %206 = OpLoad %int %205 OpReturnValue %206 OpFunctionEnd %makeTreeNode_struct_BST_i1_i1_i11_i1_ = OpFunction %void None %62 %node = OpFunctionParameter %_ptr_Function_BST %data = OpFunctionParameter %_ptr_Function_int %207 = OpLabel %208 = OpLoad %int %data %209 = OpAccessChain %_ptr_Function_int %node %int_0 OpStore %209 %208 %210 = OpAccessChain %_ptr_Function_int %node %int_1 OpStore %210 %int_n1 %211 = OpAccessChain %_ptr_Function_int %node %int_2 OpStore %211 %int_n1 OpReturn OpFunctionEnd %insert_i1_i1_ = OpFunction %void None %63 %treeIndex = OpFunctionParameter %_ptr_Function_int %data_0 = OpFunctionParameter %_ptr_Function_int %212 = OpLabel %baseIndex = OpVariable %_ptr_Function_int Function %param = OpVariable %_ptr_Function_BST Function %param_0 = OpVariable %_ptr_Function_int Function %param_1 = OpVariable %_ptr_Function_BST Function %param_2 = OpVariable %_ptr_Function_int Function OpStore %baseIndex %int_0 OpBranch %213 %213 = OpLabel OpLoopMerge %214 %215 None OpBranch %216 %216 = OpLabel %217 = OpLoad %int %baseIndex %218 = OpLoad %int %treeIndex %219 = OpSLessThanEqual %bool %217 %218 OpBranchConditional %219 %220 %214 %220 = OpLabel %221 = OpLoad %int %data_0 %222 = OpLoad %int %baseIndex %223 = OpAccessChain %_ptr_Private_int %tree %222 %int_0 %224 = OpLoad %int %223 %225 = OpSLessThanEqual %bool %221 %224 OpSelectionMerge %226 None OpBranchConditional %225 %227 %228 %227 = OpLabel %229 = OpLoad %int %baseIndex %230 = OpAccessChain %_ptr_Private_int %tree %229 %int_1 %231 = OpLoad %int %230 %232 = OpIEqual %bool %231 %int_n1 OpSelectionMerge %233 None OpBranchConditional %232 %234 %235 %234 = OpLabel %236 = OpLoad %int %baseIndex %237 = OpLoad %int %treeIndex %238 = OpAccessChain %_ptr_Private_int %tree %236 %int_1 OpStore %238 %237 %239 = OpLoad %int %treeIndex %240 = OpAccessChain %_ptr_Private_BST %tree %239 %241 = OpLoad %BST %240 OpStore %param %241 %242 = OpLoad %int %data_0 OpStore %param_0 %242 %243 = OpFunctionCall %void %makeTreeNode_struct_BST_i1_i1_i11_i1_ %param %param_0 %244 = OpLoad %BST %param %245 = OpAccessChain %_ptr_Private_BST %tree %239 OpStore %245 %244 OpReturn %235 = OpLabel %246 = OpLoad %int %baseIndex %247 = OpAccessChain %_ptr_Private_int %tree %246 %int_1 %248 = OpLoad %int %247 OpStore %baseIndex %248 OpBranch %215 %233 = OpLabel OpUnreachable %228 = OpLabel %249 = OpLoad %int %baseIndex %250 = OpAccessChain %_ptr_Private_int %tree %249 %int_2 %251 = OpLoad %int %250 %252 = OpIEqual %bool %251 %int_n1 OpSelectionMerge %253 None OpBranchConditional %252 %254 %255 %254 = OpLabel %256 = OpLoad %int %baseIndex %257 = OpLoad %int %treeIndex %258 = OpAccessChain %_ptr_Private_int %tree %256 %int_2 OpStore %258 %257 %259 = OpLoad %int %treeIndex %260 = OpAccessChain %_ptr_Private_BST %tree %259 %261 = OpLoad %BST %260 OpStore %param_1 %261 %262 = OpLoad %int %data_0 OpStore %param_2 %262 %263 = OpFunctionCall %void %makeTreeNode_struct_BST_i1_i1_i11_i1_ %param_1 %param_2 %264 = OpLoad %BST %param_1 %265 = OpAccessChain %_ptr_Private_BST %tree %259 OpStore %265 %264 OpReturn %255 = OpLabel %266 = OpLoad %int %baseIndex %267 = OpAccessChain %_ptr_Private_int %tree %266 %int_2 %268 = OpLoad %int %267 OpStore %baseIndex %268 OpBranch %215 %253 = OpLabel OpUnreachable %226 = OpLabel OpUnreachable %215 = OpLabel OpBranch %213 %214 = OpLabel OpReturn OpFunctionEnd %search_i1_ = OpFunction %int None %60 %t = OpFunctionParameter %_ptr_Function_int %269 = OpLabel %index = OpVariable %_ptr_Function_int Function %currentNode = OpVariable %_ptr_Function_BST Function %270 = OpVariable %_ptr_Function_int Function OpStore %index %int_0 OpBranch %271 %271 = OpLabel OpLoopMerge %272 %273 None OpBranch %274 %274 = OpLabel %275 = OpLoad %int %index %276 = OpINotEqual %bool %275 %int_n1 OpBranchConditional %276 %277 %272 %277 = OpLabel %278 = OpLoad %int %index %279 = OpAccessChain %_ptr_Private_BST %tree %278 %280 = OpLoad %BST %279 OpStore %currentNode %280 %281 = OpAccessChain %_ptr_Function_int %currentNode %int_0 %282 = OpLoad %int %281 %283 = OpLoad %int %t %284 = OpIEqual %bool %282 %283 OpSelectionMerge %285 None OpBranchConditional %284 %286 %285 %286 = OpLabel %287 = OpLoad %int %t OpReturnValue %287 %285 = OpLabel %288 = OpLoad %int %t %289 = OpAccessChain %_ptr_Function_int %currentNode %int_0 %290 = OpLoad %int %289 %291 = OpSGreaterThan %bool %288 %290 OpSelectionMerge %292 None OpBranchConditional %291 %293 %294 %293 = OpLabel %295 = OpAccessChain %_ptr_Function_int %currentNode %int_2 %296 = OpLoad %int %295 OpStore %270 %296 OpBranch %292 %294 = OpLabel %297 = OpAccessChain %_ptr_Function_int %currentNode %int_1 %298 = OpLoad %int %297 OpStore %270 %298 OpBranch %292 %292 = OpLabel %299 = OpLoad %int %270 OpStore %index %299 OpBranch %273 %273 = OpLabel OpBranch %271 %272 = OpLabel OpReturnValue %int_n1 OpFunctionEnd