| ; SPIR-V | 
 | ; Version: 1.3 | 
 | ; Generator: Google Tint Compiler; 0 | 
 | ; Bound: 279 | 
 | ; Schema: 0 | 
 |                OpCapability Shader | 
 |          %39 = OpExtInstImport "GLSL.std.450" | 
 |                OpMemoryModel Logical GLSL450 | 
 |                OpEntryPoint Vertex %vert_main "vert_main" %a_particlePos_1 %a_particleVel_1 %a_pos_1 %value %vertex_point_size | 
 |                OpEntryPoint Fragment %frag_main "frag_main" %value_1 | 
 |                OpEntryPoint GLCompute %comp_main "comp_main" %gl_GlobalInvocationID_1 | 
 |                OpExecutionMode %frag_main OriginUpperLeft | 
 |                OpExecutionMode %comp_main LocalSize 1 1 1 | 
 |                OpName %a_particlePos_1 "a_particlePos_1" | 
 |                OpName %a_particleVel_1 "a_particleVel_1" | 
 |                OpName %a_pos_1 "a_pos_1" | 
 |                OpName %value "value" | 
 |                OpName %vertex_point_size "vertex_point_size" | 
 |                OpName %value_1 "value_1" | 
 |                OpName %gl_GlobalInvocationID_1 "gl_GlobalInvocationID_1" | 
 |                OpName %params_block "params_block" | 
 |                OpMemberName %params_block 0 "inner" | 
 |                OpName %SimParams "SimParams" | 
 |                OpMemberName %SimParams 0 "deltaT" | 
 |                OpMemberName %SimParams 1 "rule1Distance" | 
 |                OpMemberName %SimParams 2 "rule2Distance" | 
 |                OpMemberName %SimParams 3 "rule3Distance" | 
 |                OpMemberName %SimParams 4 "rule1Scale" | 
 |                OpMemberName %SimParams 5 "rule2Scale" | 
 |                OpMemberName %SimParams 6 "rule3Scale" | 
 |                OpName %params "params" | 
 |                OpName %particlesA_block "particlesA_block" | 
 |                OpMemberName %particlesA_block 0 "inner" | 
 |                OpName %Particles "Particles" | 
 |                OpMemberName %Particles 0 "particles" | 
 |                OpName %Particle "Particle" | 
 |                OpMemberName %Particle 0 "pos" | 
 |                OpMemberName %Particle 1 "vel" | 
 |                OpName %particlesA "particlesA" | 
 |                OpName %particlesB "particlesB" | 
 |                OpName %vert_main_inner "vert_main_inner" | 
 |                OpName %a_particlePos "a_particlePos" | 
 |                OpName %a_particleVel "a_particleVel" | 
 |                OpName %a_pos "a_pos" | 
 |                OpName %angle "angle" | 
 |                OpName %pos "pos" | 
 |                OpName %vert_main "vert_main" | 
 |                OpName %frag_main_inner "frag_main_inner" | 
 |                OpName %frag_main "frag_main" | 
 |                OpName %comp_main_inner "comp_main_inner" | 
 |                OpName %gl_GlobalInvocationID "gl_GlobalInvocationID" | 
 |                OpName %index "index" | 
 |                OpName %vPos "vPos" | 
 |                OpName %vVel "vVel" | 
 |                OpName %cMass "cMass" | 
 |                OpName %cVel "cVel" | 
 |                OpName %colVel "colVel" | 
 |                OpName %cMassCount "cMassCount" | 
 |                OpName %cVelCount "cVelCount" | 
 |                OpName %pos_0 "pos" | 
 |                OpName %vel "vel" | 
 |                OpName %i "i" | 
 |                OpName %comp_main "comp_main" | 
 |                OpDecorate %a_particlePos_1 Location 0 | 
 |                OpDecorate %a_particleVel_1 Location 1 | 
 |                OpDecorate %a_pos_1 Location 2 | 
 |                OpDecorate %value BuiltIn Position | 
 |                OpDecorate %vertex_point_size BuiltIn PointSize | 
 |                OpDecorate %value_1 Location 0 | 
 |                OpDecorate %gl_GlobalInvocationID_1 BuiltIn GlobalInvocationId | 
 |                OpDecorate %params_block Block | 
 |                OpMemberDecorate %params_block 0 Offset 0 | 
 |                OpMemberDecorate %SimParams 0 Offset 0 | 
 |                OpMemberDecorate %SimParams 1 Offset 4 | 
 |                OpMemberDecorate %SimParams 2 Offset 8 | 
 |                OpMemberDecorate %SimParams 3 Offset 12 | 
 |                OpMemberDecorate %SimParams 4 Offset 16 | 
 |                OpMemberDecorate %SimParams 5 Offset 20 | 
 |                OpMemberDecorate %SimParams 6 Offset 24 | 
 |                OpDecorate %params NonWritable | 
 |                OpDecorate %params Binding 0 | 
 |                OpDecorate %params DescriptorSet 0 | 
 |                OpDecorate %particlesA_block Block | 
 |                OpMemberDecorate %particlesA_block 0 Offset 0 | 
 |                OpMemberDecorate %Particles 0 Offset 0 | 
 |                OpMemberDecorate %Particle 0 Offset 0 | 
 |                OpMemberDecorate %Particle 1 Offset 8 | 
 |                OpDecorate %_arr_Particle_uint_5 ArrayStride 16 | 
 |                OpDecorate %particlesA Binding 1 | 
 |                OpDecorate %particlesA DescriptorSet 0 | 
 |                OpDecorate %particlesB Binding 2 | 
 |                OpDecorate %particlesB DescriptorSet 0 | 
 |       %float = OpTypeFloat 32 | 
 |     %v2float = OpTypeVector %float 2 | 
 | %_ptr_Input_v2float = OpTypePointer Input %v2float | 
 | %a_particlePos_1 = OpVariable %_ptr_Input_v2float Input | 
 | %a_particleVel_1 = OpVariable %_ptr_Input_v2float Input | 
 |     %a_pos_1 = OpVariable %_ptr_Input_v2float Input | 
 |     %v4float = OpTypeVector %float 4 | 
 | %_ptr_Output_v4float = OpTypePointer Output %v4float | 
 |          %10 = OpConstantNull %v4float | 
 |       %value = OpVariable %_ptr_Output_v4float Output %10 | 
 | %_ptr_Output_float = OpTypePointer Output %float | 
 |          %13 = OpConstantNull %float | 
 | %vertex_point_size = OpVariable %_ptr_Output_float Output %13 | 
 |     %value_1 = OpVariable %_ptr_Output_v4float Output %10 | 
 |        %uint = OpTypeInt 32 0 | 
 |      %v3uint = OpTypeVector %uint 3 | 
 | %_ptr_Input_v3uint = OpTypePointer Input %v3uint | 
 | %gl_GlobalInvocationID_1 = OpVariable %_ptr_Input_v3uint Input | 
 |   %SimParams = OpTypeStruct %float %float %float %float %float %float %float | 
 | %params_block = OpTypeStruct %SimParams | 
 | %_ptr_Uniform_params_block = OpTypePointer Uniform %params_block | 
 |      %params = OpVariable %_ptr_Uniform_params_block Uniform | 
 |    %Particle = OpTypeStruct %v2float %v2float | 
 |      %uint_5 = OpConstant %uint 5 | 
 | %_arr_Particle_uint_5 = OpTypeArray %Particle %uint_5 | 
 |   %Particles = OpTypeStruct %_arr_Particle_uint_5 | 
 | %particlesA_block = OpTypeStruct %Particles | 
 | %_ptr_StorageBuffer_particlesA_block = OpTypePointer StorageBuffer %particlesA_block | 
 |  %particlesA = OpVariable %_ptr_StorageBuffer_particlesA_block StorageBuffer | 
 |  %particlesB = OpVariable %_ptr_StorageBuffer_particlesA_block StorageBuffer | 
 |          %31 = OpTypeFunction %v4float %v2float %v2float %v2float | 
 | %_ptr_Function_float = OpTypePointer Function %float | 
 | %_ptr_Function_v2float = OpTypePointer Function %v2float | 
 |          %65 = OpConstantNull %v2float | 
 |     %float_1 = OpConstant %float 1 | 
 |        %void = OpTypeVoid | 
 |          %72 = OpTypeFunction %void | 
 |          %80 = OpTypeFunction %v4float | 
 |          %83 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1 | 
 |          %87 = OpTypeFunction %void %v3uint | 
 | %_ptr_Function_uint = OpTypePointer Function %uint | 
 |          %94 = OpConstantNull %uint | 
 |        %bool = OpTypeBool | 
 |      %uint_0 = OpConstant %uint 0 | 
 | %_ptr_StorageBuffer_v2float = OpTypePointer StorageBuffer %v2float | 
 |      %uint_1 = OpConstant %uint 1 | 
 |         %int = OpTypeInt 32 1 | 
 |         %115 = OpConstantNull %int | 
 | %_ptr_Function_int = OpTypePointer Function %int | 
 | %_ptr_Uniform_float = OpTypePointer Uniform %float | 
 |       %int_1 = OpConstant %int 1 | 
 |      %uint_2 = OpConstant %uint 2 | 
 |      %uint_3 = OpConstant %uint 3 | 
 |      %uint_4 = OpConstant %uint 4 | 
 |      %uint_6 = OpConstant %uint 6 | 
 | %float_0_100000001 = OpConstant %float 0.100000001 | 
 |    %float_n1 = OpConstant %float -1 | 
 | %vert_main_inner = OpFunction %v4float None %31 | 
 | %a_particlePos = OpFunctionParameter %v2float | 
 | %a_particleVel = OpFunctionParameter %v2float | 
 |       %a_pos = OpFunctionParameter %v2float | 
 |          %36 = OpLabel | 
 |       %angle = OpVariable %_ptr_Function_float Function %13 | 
 |         %pos = OpVariable %_ptr_Function_v2float Function %65 | 
 |          %40 = OpCompositeExtract %float %a_particleVel 0 | 
 |          %41 = OpCompositeExtract %float %a_particleVel 1 | 
 |          %38 = OpExtInst %float %39 Atan2 %40 %41 | 
 |          %37 = OpFNegate %float %38 | 
 |                OpStore %angle %37 | 
 |          %44 = OpCompositeExtract %float %a_pos 0 | 
 |          %46 = OpLoad %float %angle | 
 |          %45 = OpExtInst %float %39 Cos %46 | 
 |          %47 = OpFMul %float %44 %45 | 
 |          %48 = OpCompositeExtract %float %a_pos 1 | 
 |          %50 = OpLoad %float %angle | 
 |          %49 = OpExtInst %float %39 Sin %50 | 
 |          %51 = OpFMul %float %48 %49 | 
 |          %52 = OpFSub %float %47 %51 | 
 |          %53 = OpCompositeExtract %float %a_pos 0 | 
 |          %55 = OpLoad %float %angle | 
 |          %54 = OpExtInst %float %39 Sin %55 | 
 |          %56 = OpFMul %float %53 %54 | 
 |          %57 = OpCompositeExtract %float %a_pos 1 | 
 |          %59 = OpLoad %float %angle | 
 |          %58 = OpExtInst %float %39 Cos %59 | 
 |          %60 = OpFMul %float %57 %58 | 
 |          %61 = OpFAdd %float %56 %60 | 
 |          %62 = OpCompositeConstruct %v2float %52 %61 | 
 |                OpStore %pos %62 | 
 |          %66 = OpLoad %v2float %pos | 
 |          %67 = OpFAdd %v2float %66 %a_particlePos | 
 |          %68 = OpCompositeExtract %float %67 0 | 
 |          %69 = OpCompositeExtract %float %67 1 | 
 |          %71 = OpCompositeConstruct %v4float %68 %69 %13 %float_1 | 
 |                OpReturnValue %71 | 
 |                OpFunctionEnd | 
 |   %vert_main = OpFunction %void None %72 | 
 |          %75 = OpLabel | 
 |          %77 = OpLoad %v2float %a_particlePos_1 | 
 |          %78 = OpLoad %v2float %a_particleVel_1 | 
 |          %79 = OpLoad %v2float %a_pos_1 | 
 |          %76 = OpFunctionCall %v4float %vert_main_inner %77 %78 %79 | 
 |                OpStore %value %76 | 
 |                OpStore %vertex_point_size %float_1 | 
 |                OpReturn | 
 |                OpFunctionEnd | 
 | %frag_main_inner = OpFunction %v4float None %80 | 
 |          %82 = OpLabel | 
 |                OpReturnValue %83 | 
 |                OpFunctionEnd | 
 |   %frag_main = OpFunction %void None %72 | 
 |          %85 = OpLabel | 
 |          %86 = OpFunctionCall %v4float %frag_main_inner | 
 |                OpStore %value_1 %86 | 
 |                OpReturn | 
 |                OpFunctionEnd | 
 | %comp_main_inner = OpFunction %void None %87 | 
 | %gl_GlobalInvocationID = OpFunctionParameter %v3uint | 
 |          %90 = OpLabel | 
 |       %index = OpVariable %_ptr_Function_uint Function %94 | 
 |        %vPos = OpVariable %_ptr_Function_v2float Function %65 | 
 |        %vVel = OpVariable %_ptr_Function_v2float Function %65 | 
 |       %cMass = OpVariable %_ptr_Function_v2float Function %65 | 
 |        %cVel = OpVariable %_ptr_Function_v2float Function %65 | 
 |      %colVel = OpVariable %_ptr_Function_v2float Function %65 | 
 |  %cMassCount = OpVariable %_ptr_Function_int Function %115 | 
 |   %cVelCount = OpVariable %_ptr_Function_int Function %115 | 
 |       %pos_0 = OpVariable %_ptr_Function_v2float Function %65 | 
 |         %vel = OpVariable %_ptr_Function_v2float Function %65 | 
 |           %i = OpVariable %_ptr_Function_uint Function %94 | 
 |          %91 = OpCompositeExtract %uint %gl_GlobalInvocationID 0 | 
 |                OpStore %index %91 | 
 |          %95 = OpLoad %uint %index | 
 |          %96 = OpUGreaterThanEqual %bool %95 %uint_5 | 
 |                OpSelectionMerge %98 None | 
 |                OpBranchConditional %96 %99 %98 | 
 |          %99 = OpLabel | 
 |                OpReturn | 
 |          %98 = OpLabel | 
 |         %101 = OpLoad %uint %index | 
 |         %103 = OpAccessChain %_ptr_StorageBuffer_v2float %particlesA %uint_0 %uint_0 %101 %uint_0 | 
 |         %104 = OpLoad %v2float %103 | 
 |                OpStore %vPos %104 | 
 |         %106 = OpLoad %uint %index | 
 |         %108 = OpAccessChain %_ptr_StorageBuffer_v2float %particlesA %uint_0 %uint_0 %106 %uint_1 | 
 |         %109 = OpLoad %v2float %108 | 
 |                OpStore %vVel %109 | 
 |                OpStore %cMass %65 | 
 |                OpStore %cVel %65 | 
 |                OpStore %colVel %65 | 
 |                OpStore %cMassCount %115 | 
 |                OpStore %cVelCount %115 | 
 |                OpStore %i %94 | 
 |                OpBranch %122 | 
 |         %122 = OpLabel | 
 |                OpLoopMerge %123 %124 None | 
 |                OpBranch %125 | 
 |         %125 = OpLabel | 
 |         %127 = OpLoad %uint %i | 
 |         %128 = OpULessThan %bool %127 %uint_5 | 
 |         %126 = OpLogicalNot %bool %128 | 
 |                OpSelectionMerge %129 None | 
 |                OpBranchConditional %126 %130 %129 | 
 |         %130 = OpLabel | 
 |                OpBranch %123 | 
 |         %129 = OpLabel | 
 |         %131 = OpLoad %uint %i | 
 |         %132 = OpLoad %uint %index | 
 |         %133 = OpIEqual %bool %131 %132 | 
 |                OpSelectionMerge %134 None | 
 |                OpBranchConditional %133 %135 %134 | 
 |         %135 = OpLabel | 
 |                OpBranch %124 | 
 |         %134 = OpLabel | 
 |         %136 = OpLoad %uint %i | 
 |         %137 = OpAccessChain %_ptr_StorageBuffer_v2float %particlesA %uint_0 %uint_0 %136 %uint_0 | 
 |         %138 = OpLoad %v2float %137 | 
 |         %139 = OpVectorShuffle %v2float %138 %138 0 1 | 
 |                OpStore %pos_0 %139 | 
 |         %140 = OpLoad %uint %i | 
 |         %141 = OpAccessChain %_ptr_StorageBuffer_v2float %particlesA %uint_0 %uint_0 %140 %uint_1 | 
 |         %142 = OpLoad %v2float %141 | 
 |         %143 = OpVectorShuffle %v2float %142 %142 0 1 | 
 |                OpStore %vel %143 | 
 |         %145 = OpLoad %v2float %pos_0 | 
 |         %146 = OpLoad %v2float %vPos | 
 |         %144 = OpExtInst %float %39 Distance %145 %146 | 
 |         %148 = OpAccessChain %_ptr_Uniform_float %params %uint_0 %uint_1 | 
 |         %149 = OpLoad %float %148 | 
 |         %150 = OpFOrdLessThan %bool %144 %149 | 
 |                OpSelectionMerge %151 None | 
 |                OpBranchConditional %150 %152 %151 | 
 |         %152 = OpLabel | 
 |         %153 = OpLoad %v2float %cMass | 
 |         %154 = OpLoad %v2float %pos_0 | 
 |         %155 = OpFAdd %v2float %153 %154 | 
 |                OpStore %cMass %155 | 
 |         %156 = OpLoad %int %cMassCount | 
 |         %158 = OpIAdd %int %156 %int_1 | 
 |                OpStore %cMassCount %158 | 
 |                OpBranch %151 | 
 |         %151 = OpLabel | 
 |         %160 = OpLoad %v2float %pos_0 | 
 |         %161 = OpLoad %v2float %vPos | 
 |         %159 = OpExtInst %float %39 Distance %160 %161 | 
 |         %163 = OpAccessChain %_ptr_Uniform_float %params %uint_0 %uint_2 | 
 |         %164 = OpLoad %float %163 | 
 |         %165 = OpFOrdLessThan %bool %159 %164 | 
 |                OpSelectionMerge %166 None | 
 |                OpBranchConditional %165 %167 %166 | 
 |         %167 = OpLabel | 
 |         %168 = OpLoad %v2float %colVel | 
 |         %169 = OpLoad %v2float %pos_0 | 
 |         %170 = OpLoad %v2float %vPos | 
 |         %171 = OpFSub %v2float %169 %170 | 
 |         %172 = OpFSub %v2float %168 %171 | 
 |                OpStore %colVel %172 | 
 |                OpBranch %166 | 
 |         %166 = OpLabel | 
 |         %174 = OpLoad %v2float %pos_0 | 
 |         %175 = OpLoad %v2float %vPos | 
 |         %173 = OpExtInst %float %39 Distance %174 %175 | 
 |         %177 = OpAccessChain %_ptr_Uniform_float %params %uint_0 %uint_3 | 
 |         %178 = OpLoad %float %177 | 
 |         %179 = OpFOrdLessThan %bool %173 %178 | 
 |                OpSelectionMerge %180 None | 
 |                OpBranchConditional %179 %181 %180 | 
 |         %181 = OpLabel | 
 |         %182 = OpLoad %v2float %cVel | 
 |         %183 = OpLoad %v2float %vel | 
 |         %184 = OpFAdd %v2float %182 %183 | 
 |                OpStore %cVel %184 | 
 |         %185 = OpLoad %int %cVelCount | 
 |         %186 = OpIAdd %int %185 %int_1 | 
 |                OpStore %cVelCount %186 | 
 |                OpBranch %180 | 
 |         %180 = OpLabel | 
 |                OpBranch %124 | 
 |         %124 = OpLabel | 
 |         %187 = OpLoad %uint %i | 
 |         %188 = OpIAdd %uint %187 %uint_1 | 
 |                OpStore %i %188 | 
 |                OpBranch %122 | 
 |         %123 = OpLabel | 
 |         %189 = OpLoad %int %cMassCount | 
 |         %190 = OpSGreaterThan %bool %189 %115 | 
 |                OpSelectionMerge %191 None | 
 |                OpBranchConditional %190 %192 %191 | 
 |         %192 = OpLabel | 
 |         %193 = OpLoad %v2float %cMass | 
 |         %195 = OpLoad %int %cMassCount | 
 |         %194 = OpConvertSToF %float %195 | 
 |         %197 = OpLoad %int %cMassCount | 
 |         %196 = OpConvertSToF %float %197 | 
 |         %198 = OpCompositeConstruct %v2float %194 %196 | 
 |         %199 = OpFDiv %v2float %193 %198 | 
 |         %200 = OpLoad %v2float %vPos | 
 |         %201 = OpFSub %v2float %199 %200 | 
 |                OpStore %cMass %201 | 
 |                OpBranch %191 | 
 |         %191 = OpLabel | 
 |         %202 = OpLoad %int %cVelCount | 
 |         %203 = OpSGreaterThan %bool %202 %115 | 
 |                OpSelectionMerge %204 None | 
 |                OpBranchConditional %203 %205 %204 | 
 |         %205 = OpLabel | 
 |         %206 = OpLoad %v2float %cVel | 
 |         %208 = OpLoad %int %cVelCount | 
 |         %207 = OpConvertSToF %float %208 | 
 |         %210 = OpLoad %int %cVelCount | 
 |         %209 = OpConvertSToF %float %210 | 
 |         %211 = OpCompositeConstruct %v2float %207 %209 | 
 |         %212 = OpFDiv %v2float %206 %211 | 
 |                OpStore %cVel %212 | 
 |                OpBranch %204 | 
 |         %204 = OpLabel | 
 |         %213 = OpLoad %v2float %vVel | 
 |         %214 = OpLoad %v2float %cMass | 
 |         %216 = OpAccessChain %_ptr_Uniform_float %params %uint_0 %uint_4 | 
 |         %217 = OpLoad %float %216 | 
 |         %218 = OpVectorTimesScalar %v2float %214 %217 | 
 |         %219 = OpFAdd %v2float %213 %218 | 
 |         %220 = OpLoad %v2float %colVel | 
 |         %221 = OpAccessChain %_ptr_Uniform_float %params %uint_0 %uint_5 | 
 |         %222 = OpLoad %float %221 | 
 |         %223 = OpVectorTimesScalar %v2float %220 %222 | 
 |         %224 = OpFAdd %v2float %219 %223 | 
 |         %225 = OpLoad %v2float %cVel | 
 |         %227 = OpAccessChain %_ptr_Uniform_float %params %uint_0 %uint_6 | 
 |         %228 = OpLoad %float %227 | 
 |         %229 = OpVectorTimesScalar %v2float %225 %228 | 
 |         %230 = OpFAdd %v2float %224 %229 | 
 |                OpStore %vVel %230 | 
 |         %232 = OpLoad %v2float %vVel | 
 |         %231 = OpExtInst %v2float %39 Normalize %232 | 
 |         %235 = OpLoad %v2float %vVel | 
 |         %234 = OpExtInst %float %39 Length %235 | 
 |         %233 = OpExtInst %float %39 NClamp %234 %13 %float_0_100000001 | 
 |         %237 = OpVectorTimesScalar %v2float %231 %233 | 
 |                OpStore %vVel %237 | 
 |         %238 = OpLoad %v2float %vPos | 
 |         %239 = OpLoad %v2float %vVel | 
 |         %240 = OpAccessChain %_ptr_Uniform_float %params %uint_0 %uint_0 | 
 |         %241 = OpLoad %float %240 | 
 |         %242 = OpVectorTimesScalar %v2float %239 %241 | 
 |         %243 = OpFAdd %v2float %238 %242 | 
 |                OpStore %vPos %243 | 
 |         %244 = OpAccessChain %_ptr_Function_float %vPos %uint_0 | 
 |         %245 = OpLoad %float %244 | 
 |         %247 = OpFOrdLessThan %bool %245 %float_n1 | 
 |                OpSelectionMerge %248 None | 
 |                OpBranchConditional %247 %249 %248 | 
 |         %249 = OpLabel | 
 |         %250 = OpAccessChain %_ptr_Function_float %vPos %uint_0 | 
 |                OpStore %250 %float_1 | 
 |                OpBranch %248 | 
 |         %248 = OpLabel | 
 |         %251 = OpAccessChain %_ptr_Function_float %vPos %uint_0 | 
 |         %252 = OpLoad %float %251 | 
 |         %253 = OpFOrdGreaterThan %bool %252 %float_1 | 
 |                OpSelectionMerge %254 None | 
 |                OpBranchConditional %253 %255 %254 | 
 |         %255 = OpLabel | 
 |         %256 = OpAccessChain %_ptr_Function_float %vPos %uint_0 | 
 |                OpStore %256 %float_n1 | 
 |                OpBranch %254 | 
 |         %254 = OpLabel | 
 |         %257 = OpAccessChain %_ptr_Function_float %vPos %uint_1 | 
 |         %258 = OpLoad %float %257 | 
 |         %259 = OpFOrdLessThan %bool %258 %float_n1 | 
 |                OpSelectionMerge %260 None | 
 |                OpBranchConditional %259 %261 %260 | 
 |         %261 = OpLabel | 
 |         %262 = OpAccessChain %_ptr_Function_float %vPos %uint_1 | 
 |                OpStore %262 %float_1 | 
 |                OpBranch %260 | 
 |         %260 = OpLabel | 
 |         %263 = OpAccessChain %_ptr_Function_float %vPos %uint_1 | 
 |         %264 = OpLoad %float %263 | 
 |         %265 = OpFOrdGreaterThan %bool %264 %float_1 | 
 |                OpSelectionMerge %266 None | 
 |                OpBranchConditional %265 %267 %266 | 
 |         %267 = OpLabel | 
 |         %268 = OpAccessChain %_ptr_Function_float %vPos %uint_1 | 
 |                OpStore %268 %float_n1 | 
 |                OpBranch %266 | 
 |         %266 = OpLabel | 
 |         %269 = OpLoad %uint %index | 
 |         %270 = OpAccessChain %_ptr_StorageBuffer_v2float %particlesB %uint_0 %uint_0 %269 %uint_0 | 
 |         %271 = OpLoad %v2float %vPos | 
 |                OpStore %270 %271 | 
 |         %272 = OpLoad %uint %index | 
 |         %273 = OpAccessChain %_ptr_StorageBuffer_v2float %particlesB %uint_0 %uint_0 %272 %uint_1 | 
 |         %274 = OpLoad %v2float %vVel | 
 |                OpStore %273 %274 | 
 |                OpReturn | 
 |                OpFunctionEnd | 
 |   %comp_main = OpFunction %void None %72 | 
 |         %276 = OpLabel | 
 |         %278 = OpLoad %v3uint %gl_GlobalInvocationID_1 | 
 |         %277 = OpFunctionCall %void %comp_main_inner %278 | 
 |                OpReturn | 
 |                OpFunctionEnd |