#version 460
#extension GL_EXT_buffer_reference2 : require
#extension GL_EXT_nonuniform_qualifier : require
#extension GL_KHR_shader_subgroup_ballot : require
layout(local_size_x = 64, local_size_y = 1, local_size_z = 1) in;

layout(set = 15, binding = 0, std430) restrict readonly buffer SSBO_Offsets
{
    uvec2 _m0[];
} _13;

layout(set = 1, binding = 0, std430) restrict readonly buffer SSBO
{
    uvec2 _m0[];
} _18[];

layout(set = 1, binding = 0, std430) restrict readonly buffer _21_24
{
    uvec4 _m0[];
} _24[];

layout(set = 4, binding = 0, std430) writeonly buffer _26_29
{
    uvec2 _m0[];
} _29[];

layout(set = 4, binding = 0, std430) writeonly buffer _31_34
{
    uvec4 _m0[];
} _34[];

layout(set = 4, binding = 0, std430) buffer _36_39
{
    uint _m0[];
} _39[];

layout(push_constant, std430) uniform RootConstants
{
    uint _m0;
    uint _m1;
    uint _m2;
    uint _m3;
    uint _m4;
    uint _m5;
    uint _m6;
    uint _m7;
    uint _m8;
    uint _m9;
    uint _m10;
    uint _m11;
    uint _m12;
    uint _m13;
    uint _m14;
    uint _m15;
} registers;

layout(set = 4, binding = 0) uniform writeonly uimageBuffer _43[];

void main()
{
    uint _55 = (subgroupBroadcastFirst(registers._m4) * 2u) + 1u;
    uvec2 _69 = _13._m0[subgroupBroadcastFirst(registers._m4) * 2u] >> uvec2(2u);
    uint _75 = registers._m4 + 1u;
    uvec2 _80 = _13._m0[subgroupBroadcastFirst(_75) * 2u] >> uvec2(4u);
    uvec2 _90 = _13._m0[subgroupBroadcastFirst(registers._m4) * 2u] >> uvec2(3u);
    uint _96 = registers._m1 + 1u;
    uvec2 _101 = _13._m0[subgroupBroadcastFirst(_96) * 2u] >> uvec2(4u);
    uvec2 _110 = _13._m0[subgroupBroadcastFirst(registers._m1) * 2u] >> uvec2(3u);
    vec2 _131 = uintBitsToFloat(_18[registers._m1]._m0[(gl_GlobalInvocationID.x < _110.y) ? (gl_GlobalInvocationID.x + _110.x) : 536870911u]);
    _29[registers._m4]._m0[(gl_GlobalInvocationID.x < _90.y) ? (gl_GlobalInvocationID.x + _90.x) : 536870911u] = uvec2(floatBitsToUint(_131.x), floatBitsToUint(_131.y));
    _34[_75]._m0[(gl_GlobalInvocationID.x < _80.y) ? (gl_GlobalInvocationID.x + _80.x) : 268435455u] = uvec4(_24[_96]._m0[(gl_GlobalInvocationID.x < _101.y) ? (gl_GlobalInvocationID.x + _101.x) : 268435455u]);
    vec2 _171 = uintBitsToFloat(_18[registers._m1]._m0[(gl_GlobalInvocationID.x < _110.y) ? (gl_GlobalInvocationID.x + _110.x) : 536870911u]);
    _29[registers._m4]._m0[(gl_GlobalInvocationID.x < _90.y) ? (gl_GlobalInvocationID.x + _90.x) : 536870911u] = uvec2(floatBitsToUint(_171.x), floatBitsToUint(_171.y));
    _34[_75]._m0[(gl_GlobalInvocationID.x < _80.y) ? (gl_GlobalInvocationID.x + _80.x) : 268435455u] = uvec4(_24[_96]._m0[(gl_GlobalInvocationID.x < _101.y) ? (gl_GlobalInvocationID.x + _101.x) : 268435455u]);
    uint _205 = registers._m1 + (gl_WorkGroupID.x + 2u);
    uvec2 _210 = _13._m0[subgroupBroadcastFirst(_205) * 2u] >> uvec2(3u);
    vec2 _218 = uintBitsToFloat(_18[_205]._m0[(gl_GlobalInvocationID.x < _210.y) ? (gl_GlobalInvocationID.x + _210.x) : 536870911u]);
    uint _225 = registers._m4 + (gl_WorkGroupID.x + 0u);
    uvec2 _230 = _13._m0[subgroupBroadcastFirst(_225) * 2u] >> uvec2(3u);
    _29[_225]._m0[(gl_GlobalInvocationID.x < _230.y) ? (gl_GlobalInvocationID.x + _230.x) : 536870911u] = uvec2(floatBitsToUint(_218.x), floatBitsToUint(_218.y));
    uint _244 = registers._m1 + (gl_GlobalInvocationID.x + 2u);
    uvec2 _248 = _13._m0[_244 * 2u] >> uvec2(3u);
    vec2 _256 = uintBitsToFloat(_18[nonuniformEXT(_244)]._m0[(gl_GlobalInvocationID.x < _248.y) ? (gl_GlobalInvocationID.x + _248.x) : 536870911u]);
    uint _263 = registers._m4 + (gl_GlobalInvocationID.x + 0u);
    uvec2 _267 = _13._m0[_263 * 2u] >> uvec2(3u);
    _29[nonuniformEXT(_263)]._m0[(gl_GlobalInvocationID.x < _267.y) ? (gl_GlobalInvocationID.x + _267.x) : 536870911u] = uvec2(floatBitsToUint(_256.x), floatBitsToUint(_256.y));
    uint _281 = registers._m1 + (gl_WorkGroupID.x + 3u);
    uvec2 _286 = _13._m0[subgroupBroadcastFirst(_281) * 2u] >> uvec2(4u);
    uint _302 = registers._m4 + (gl_WorkGroupID.x + 1u);
    uvec2 _307 = _13._m0[subgroupBroadcastFirst(_302) * 2u] >> uvec2(4u);
    _34[_302]._m0[(gl_GlobalInvocationID.x < _307.y) ? (gl_GlobalInvocationID.x + _307.x) : 268435455u] = uvec4(_24[_281]._m0[(gl_GlobalInvocationID.x < _286.y) ? (gl_GlobalInvocationID.x + _286.x) : 268435455u]);
    uint _319 = registers._m1 + (gl_GlobalInvocationID.x + 3u);
    uvec2 _323 = _13._m0[_319 * 2u] >> uvec2(4u);
    uint _339 = registers._m4 + (gl_GlobalInvocationID.x + 1u);
    uvec2 _343 = _13._m0[_339 * 2u] >> uvec2(4u);
    _34[nonuniformEXT(_339)]._m0[(gl_GlobalInvocationID.x < _343.y) ? (gl_GlobalInvocationID.x + _343.x) : 268435455u] = uvec4(_24[nonuniformEXT(_319)]._m0[(gl_GlobalInvocationID.x < _323.y) ? (gl_GlobalInvocationID.x + _323.x) : 268435455u]);
    uint _352 = (gl_GlobalInvocationID.x * 2u) + 1u;
    uint _361 = atomicAdd(_39[registers._m4]._m0[(_352 < _69.y) ? (_352 + _69.x) : 1073741820u], 1u);
    uint _364 = gl_GlobalInvocationID.x * 2u;
    uint _371 = atomicAdd(_39[registers._m4]._m0[(_364 < _69.y) ? (_364 + _69.x) : 1073741820u], _90.y / 1u);
    uint _372 = gl_GlobalInvocationID.x << 2u;
    imageStore(_43[registers._m4], int((gl_GlobalInvocationID.x < _13._m0[_55].y) ? (gl_GlobalInvocationID.x + _13._m0[_55].x) : 4294967295u), uvec4(_372, _372 | 1u, _372 | 2u, _372 | 3u));
}


#if 0
// SPIR-V disassembly
; SPIR-V
; Version: 1.3
; Generator: Unknown(30017); 21022
; Bound: 385
; Schema: 0
OpCapability Shader
OpCapability StorageBufferArrayDynamicIndexing
OpCapability ImageBuffer
OpCapability ImageQuery
OpCapability StorageImageWriteWithoutFormat
OpCapability GroupNonUniformBallot
OpCapability RuntimeDescriptorArray
OpCapability StorageBufferArrayNonUniformIndexing
OpCapability PhysicalStorageBufferAddresses
OpExtension "SPV_EXT_descriptor_indexing"
OpExtension "SPV_KHR_physical_storage_buffer"
OpMemoryModel PhysicalStorageBuffer64 GLSL450
OpEntryPoint GLCompute %3 "main" %113 %117
OpExecutionMode %3 LocalSize 64 1 1
OpName %3 "main"
OpName %6 "RootConstants"
OpName %8 "registers"
OpName %11 "SSBO_Offsets"
OpName %15 "SSBO"
OpName %21 "SSBO"
OpName %26 "SSBO"
OpName %31 "SSBO"
OpName %36 "SSBO"
OpDecorate %6 Block
OpMemberDecorate %6 0 Offset 0
OpMemberDecorate %6 1 Offset 4
OpMemberDecorate %6 2 Offset 8
OpMemberDecorate %6 3 Offset 12
OpMemberDecorate %6 4 Offset 16
OpMemberDecorate %6 5 Offset 20
OpMemberDecorate %6 6 Offset 24
OpMemberDecorate %6 7 Offset 28
OpMemberDecorate %6 8 Offset 32
OpMemberDecorate %6 9 Offset 36
OpMemberDecorate %6 10 Offset 40
OpMemberDecorate %6 11 Offset 44
OpMemberDecorate %6 12 Offset 48
OpMemberDecorate %6 13 Offset 52
OpMemberDecorate %6 14 Offset 56
OpMemberDecorate %6 15 Offset 60
OpDecorate %10 ArrayStride 8
OpMemberDecorate %11 0 Offset 0
OpDecorate %11 Block
OpDecorate %13 DescriptorSet 15
OpDecorate %13 Binding 0
OpDecorate %13 NonWritable
OpDecorate %13 Restrict
OpDecorate %14 ArrayStride 8
OpMemberDecorate %15 0 Offset 0
OpDecorate %15 Block
OpDecorate %18 DescriptorSet 1
OpDecorate %18 Binding 0
OpDecorate %18 NonWritable
OpDecorate %18 Restrict
OpDecorate %20 ArrayStride 16
OpMemberDecorate %21 0 Offset 0
OpDecorate %21 Block
OpDecorate %24 DescriptorSet 1
OpDecorate %24 Binding 0
OpDecorate %24 NonWritable
OpDecorate %24 Restrict
OpDecorate %25 ArrayStride 8
OpMemberDecorate %26 0 Offset 0
OpDecorate %26 Block
OpDecorate %29 DescriptorSet 4
OpDecorate %29 Binding 0
OpDecorate %29 NonReadable
OpDecorate %30 ArrayStride 16
OpMemberDecorate %31 0 Offset 0
OpDecorate %31 Block
OpDecorate %34 DescriptorSet 4
OpDecorate %34 Binding 0
OpDecorate %34 NonReadable
OpDecorate %35 ArrayStride 4
OpMemberDecorate %36 0 Offset 0
OpDecorate %36 Block
OpDecorate %39 DescriptorSet 4
OpDecorate %39 Binding 0
OpDecorate %43 DescriptorSet 4
OpDecorate %43 Binding 0
OpDecorate %43 NonReadable
OpDecorate %113 BuiltIn GlobalInvocationId
OpDecorate %117 BuiltIn WorkgroupId
OpDecorate %244 NonUniform
OpDecorate %241 NonUniform
OpDecorate %254 NonUniform
OpDecorate %263 NonUniform
OpDecorate %260 NonUniform
OpDecorate %276 NonUniform
OpDecorate %319 NonUniform
OpDecorate %316 NonUniform
OpDecorate %329 NonUniform
OpDecorate %339 NonUniform
OpDecorate %336 NonUniform
OpDecorate %350 NonUniform
%1 = OpTypeVoid
%2 = OpTypeFunction %1
%5 = OpTypeInt 32 0
%6 = OpTypeStruct %5 %5 %5 %5 %5 %5 %5 %5 %5 %5 %5 %5 %5 %5 %5 %5
%7 = OpTypePointer PushConstant %6
%8 = OpVariable %7 PushConstant
%9 = OpTypeVector %5 2
%10 = OpTypeRuntimeArray %9
%11 = OpTypeStruct %10
%12 = OpTypePointer StorageBuffer %11
%13 = OpVariable %12 StorageBuffer
%14 = OpTypeRuntimeArray %9
%15 = OpTypeStruct %14
%16 = OpTypeRuntimeArray %15
%17 = OpTypePointer StorageBuffer %16
%18 = OpVariable %17 StorageBuffer
%19 = OpTypeVector %5 4
%20 = OpTypeRuntimeArray %19
%21 = OpTypeStruct %20
%22 = OpTypeRuntimeArray %21
%23 = OpTypePointer StorageBuffer %22
%24 = OpVariable %23 StorageBuffer
%25 = OpTypeRuntimeArray %9
%26 = OpTypeStruct %25
%27 = OpTypeRuntimeArray %26
%28 = OpTypePointer StorageBuffer %27
%29 = OpVariable %28 StorageBuffer
%30 = OpTypeRuntimeArray %19
%31 = OpTypeStruct %30
%32 = OpTypeRuntimeArray %31
%33 = OpTypePointer StorageBuffer %32
%34 = OpVariable %33 StorageBuffer
%35 = OpTypeRuntimeArray %5
%36 = OpTypeStruct %35
%37 = OpTypeRuntimeArray %36
%38 = OpTypePointer StorageBuffer %37
%39 = OpVariable %38 StorageBuffer
%40 = OpTypeImage %5 Buffer 0 0 0 2 Unknown
%41 = OpTypeRuntimeArray %40
%42 = OpTypePointer UniformConstant %41
%43 = OpVariable %42 UniformConstant
%44 = OpTypePointer UniformConstant %40
%46 = OpTypePointer PushConstant %5
%48 = OpConstant %5 4
%52 = OpConstant %5 3
%54 = OpConstant %5 2
%56 = OpConstant %5 1
%57 = OpTypePointer StorageBuffer %9
%59 = OpConstant %5 0
%61 = OpTypePointer StorageBuffer %36
%70 = OpConstantComposite %9 %54 %54
%71 = OpTypePointer StorageBuffer %31
%81 = OpConstantComposite %9 %48 %48
%82 = OpTypePointer StorageBuffer %26
%91 = OpConstantComposite %9 %52 %52
%92 = OpTypePointer StorageBuffer %21
%102 = OpTypePointer StorageBuffer %15
%111 = OpTypeVector %5 3
%112 = OpTypePointer Input %111
%113 = OpVariable %112 Input
%114 = OpTypePointer Input %5
%117 = OpVariable %112 Input
%123 = OpTypeBool
%126 = OpConstant %5 536870911
%129 = OpTypeFloat 32
%130 = OpTypeVector %129 2
%149 = OpConstant %5 268435455
%150 = OpTypePointer StorageBuffer %19
%358 = OpConstant %5 1073741820
%359 = OpTypePointer StorageBuffer %5
%381 = OpConstant %5 4294967295
%3 = OpFunction %1 None %2
%4 = OpLabel
OpBranch %383
%383 = OpLabel
%47 = OpAccessChain %46 %8 %48
%49 = OpLoad %5 %47
%45 = OpAccessChain %44 %43 %49
%50 = OpLoad %40 %45
%51 = OpGroupNonUniformBroadcastFirst %5 %52 %49
%53 = OpIMul %5 %51 %54
%55 = OpIAdd %5 %53 %56
%58 = OpAccessChain %57 %13 %59 %55
%60 = OpLoad %9 %58
%63 = OpAccessChain %46 %8 %48
%64 = OpLoad %5 %63
%62 = OpAccessChain %61 %39 %64
%65 = OpGroupNonUniformBroadcastFirst %5 %52 %64
%66 = OpIMul %5 %65 %54
%67 = OpAccessChain %57 %13 %59 %66
%68 = OpLoad %9 %67
%69 = OpShiftRightLogical %9 %68 %70
%73 = OpAccessChain %46 %8 %48
%74 = OpLoad %5 %73
%75 = OpIAdd %5 %74 %56
%72 = OpAccessChain %71 %34 %75
%76 = OpGroupNonUniformBroadcastFirst %5 %52 %75
%77 = OpIMul %5 %76 %54
%78 = OpAccessChain %57 %13 %59 %77
%79 = OpLoad %9 %78
%80 = OpShiftRightLogical %9 %79 %81
%84 = OpAccessChain %46 %8 %48
%85 = OpLoad %5 %84
%83 = OpAccessChain %82 %29 %85
%86 = OpGroupNonUniformBroadcastFirst %5 %52 %85
%87 = OpIMul %5 %86 %54
%88 = OpAccessChain %57 %13 %59 %87
%89 = OpLoad %9 %88
%90 = OpShiftRightLogical %9 %89 %91
%94 = OpAccessChain %46 %8 %56
%95 = OpLoad %5 %94
%96 = OpIAdd %5 %95 %56
%93 = OpAccessChain %92 %24 %96
%97 = OpGroupNonUniformBroadcastFirst %5 %52 %96
%98 = OpIMul %5 %97 %54
%99 = OpAccessChain %57 %13 %59 %98
%100 = OpLoad %9 %99
%101 = OpShiftRightLogical %9 %100 %81
%104 = OpAccessChain %46 %8 %56
%105 = OpLoad %5 %104
%103 = OpAccessChain %102 %18 %105
%106 = OpGroupNonUniformBroadcastFirst %5 %52 %105
%107 = OpIMul %5 %106 %54
%108 = OpAccessChain %57 %13 %59 %107
%109 = OpLoad %9 %108
%110 = OpShiftRightLogical %9 %109 %91
%115 = OpAccessChain %114 %113 %59
%116 = OpLoad %5 %115
%118 = OpAccessChain %114 %117 %59
%119 = OpLoad %5 %118
%120 = OpCompositeExtract %5 %110 0
%121 = OpCompositeExtract %5 %110 1
%122 = OpIAdd %5 %116 %120
%124 = OpULessThan %123 %116 %121
%125 = OpSelect %5 %124 %122 %126
%127 = OpAccessChain %57 %103 %59 %125
%128 = OpLoad %9 %127
%131 = OpBitcast %130 %128
%132 = OpCompositeExtract %129 %131 0
%133 = OpCompositeExtract %129 %131 1
%134 = OpCompositeExtract %5 %90 0
%135 = OpCompositeExtract %5 %90 1
%136 = OpIAdd %5 %116 %134
%137 = OpULessThan %123 %116 %135
%138 = OpSelect %5 %137 %136 %126
%139 = OpBitcast %5 %132
%140 = OpBitcast %5 %133
%141 = OpCompositeConstruct %9 %139 %140
%142 = OpAccessChain %57 %83 %59 %138
OpStore %142 %141
%143 = OpShiftLeftLogical %5 %116 %48
%144 = OpCompositeExtract %5 %101 0
%145 = OpCompositeExtract %5 %101 1
%146 = OpIAdd %5 %116 %144
%147 = OpULessThan %123 %116 %145
%148 = OpSelect %5 %147 %146 %149
%151 = OpAccessChain %150 %93 %59 %148
%152 = OpLoad %19 %151
%153 = OpCompositeExtract %5 %152 0
%154 = OpCompositeExtract %5 %152 1
%155 = OpCompositeExtract %5 %152 2
%156 = OpCompositeExtract %5 %152 3
%157 = OpCompositeExtract %5 %80 0
%158 = OpCompositeExtract %5 %80 1
%159 = OpIAdd %5 %116 %157
%160 = OpULessThan %123 %116 %158
%161 = OpSelect %5 %160 %159 %149
%162 = OpCompositeConstruct %19 %153 %154 %155 %156
%163 = OpAccessChain %150 %72 %59 %161
OpStore %163 %162
%164 = OpCompositeExtract %5 %110 0
%165 = OpCompositeExtract %5 %110 1
%166 = OpIAdd %5 %116 %164
%167 = OpULessThan %123 %116 %165
%168 = OpSelect %5 %167 %166 %126
%169 = OpAccessChain %57 %103 %59 %168
%170 = OpLoad %9 %169
%171 = OpBitcast %130 %170
%172 = OpCompositeExtract %129 %171 0
%173 = OpCompositeExtract %129 %171 1
%174 = OpCompositeExtract %5 %90 0
%175 = OpCompositeExtract %5 %90 1
%176 = OpIAdd %5 %116 %174
%177 = OpULessThan %123 %116 %175
%178 = OpSelect %5 %177 %176 %126
%179 = OpBitcast %5 %172
%180 = OpBitcast %5 %173
%181 = OpCompositeConstruct %9 %179 %180
%182 = OpAccessChain %57 %83 %59 %178
OpStore %182 %181
%183 = OpCompositeExtract %5 %101 0
%184 = OpCompositeExtract %5 %101 1
%185 = OpIAdd %5 %116 %183
%186 = OpULessThan %123 %116 %184
%187 = OpSelect %5 %186 %185 %149
%188 = OpAccessChain %150 %93 %59 %187
%189 = OpLoad %19 %188
%190 = OpCompositeExtract %5 %189 0
%191 = OpCompositeExtract %5 %189 1
%192 = OpCompositeExtract %5 %189 2
%193 = OpCompositeExtract %5 %189 3
%194 = OpCompositeExtract %5 %80 0
%195 = OpCompositeExtract %5 %80 1
%196 = OpIAdd %5 %116 %194
%197 = OpULessThan %123 %116 %195
%198 = OpSelect %5 %197 %196 %149
%199 = OpCompositeConstruct %19 %190 %191 %192 %193
%200 = OpAccessChain %150 %72 %59 %198
OpStore %200 %199
%201 = OpIAdd %5 %119 %54
%203 = OpAccessChain %46 %8 %56
%204 = OpLoad %5 %203
%205 = OpIAdd %5 %204 %201
%202 = OpAccessChain %102 %18 %205
%206 = OpGroupNonUniformBroadcastFirst %5 %52 %205
%207 = OpIMul %5 %206 %54
%208 = OpAccessChain %57 %13 %59 %207
%209 = OpLoad %9 %208
%210 = OpShiftRightLogical %9 %209 %91
%211 = OpCompositeExtract %5 %210 0
%212 = OpCompositeExtract %5 %210 1
%213 = OpIAdd %5 %116 %211
%214 = OpULessThan %123 %116 %212
%215 = OpSelect %5 %214 %213 %126
%216 = OpAccessChain %57 %202 %59 %215
%217 = OpLoad %9 %216
%218 = OpBitcast %130 %217
%219 = OpCompositeExtract %129 %218 0
%220 = OpCompositeExtract %129 %218 1
%221 = OpIAdd %5 %119 %59
%223 = OpAccessChain %46 %8 %48
%224 = OpLoad %5 %223
%225 = OpIAdd %5 %224 %221
%222 = OpAccessChain %82 %29 %225
%226 = OpGroupNonUniformBroadcastFirst %5 %52 %225
%227 = OpIMul %5 %226 %54
%228 = OpAccessChain %57 %13 %59 %227
%229 = OpLoad %9 %228
%230 = OpShiftRightLogical %9 %229 %91
%231 = OpCompositeExtract %5 %230 0
%232 = OpCompositeExtract %5 %230 1
%233 = OpIAdd %5 %116 %231
%234 = OpULessThan %123 %116 %232
%235 = OpSelect %5 %234 %233 %126
%236 = OpBitcast %5 %219
%237 = OpBitcast %5 %220
%238 = OpCompositeConstruct %9 %236 %237
%239 = OpAccessChain %57 %222 %59 %235
OpStore %239 %238
%240 = OpIAdd %5 %116 %54
%242 = OpAccessChain %46 %8 %56
%243 = OpLoad %5 %242
%244 = OpIAdd %5 %243 %240
%241 = OpAccessChain %102 %18 %244
%245 = OpIMul %5 %244 %54
%246 = OpAccessChain %57 %13 %59 %245
%247 = OpLoad %9 %246
%248 = OpShiftRightLogical %9 %247 %91
%249 = OpCompositeExtract %5 %248 0
%250 = OpCompositeExtract %5 %248 1
%251 = OpIAdd %5 %116 %249
%252 = OpULessThan %123 %116 %250
%253 = OpSelect %5 %252 %251 %126
%254 = OpAccessChain %57 %241 %59 %253
%255 = OpLoad %9 %254
%256 = OpBitcast %130 %255
%257 = OpCompositeExtract %129 %256 0
%258 = OpCompositeExtract %129 %256 1
%259 = OpIAdd %5 %116 %59
%261 = OpAccessChain %46 %8 %48
%262 = OpLoad %5 %261
%263 = OpIAdd %5 %262 %259
%260 = OpAccessChain %82 %29 %263
%264 = OpIMul %5 %263 %54
%265 = OpAccessChain %57 %13 %59 %264
%266 = OpLoad %9 %265
%267 = OpShiftRightLogical %9 %266 %91
%268 = OpCompositeExtract %5 %267 0
%269 = OpCompositeExtract %5 %267 1
%270 = OpIAdd %5 %116 %268
%271 = OpULessThan %123 %116 %269
%272 = OpSelect %5 %271 %270 %126
%273 = OpBitcast %5 %257
%274 = OpBitcast %5 %258
%275 = OpCompositeConstruct %9 %273 %274
%276 = OpAccessChain %57 %260 %59 %272
OpStore %276 %275
%277 = OpIAdd %5 %119 %52
%279 = OpAccessChain %46 %8 %56
%280 = OpLoad %5 %279
%281 = OpIAdd %5 %280 %277
%278 = OpAccessChain %92 %24 %281
%282 = OpGroupNonUniformBroadcastFirst %5 %52 %281
%283 = OpIMul %5 %282 %54
%284 = OpAccessChain %57 %13 %59 %283
%285 = OpLoad %9 %284
%286 = OpShiftRightLogical %9 %285 %81
%287 = OpCompositeExtract %5 %286 0
%288 = OpCompositeExtract %5 %286 1
%289 = OpIAdd %5 %116 %287
%290 = OpULessThan %123 %116 %288
%291 = OpSelect %5 %290 %289 %149
%292 = OpAccessChain %150 %278 %59 %291
%293 = OpLoad %19 %292
%294 = OpCompositeExtract %5 %293 0
%295 = OpCompositeExtract %5 %293 1
%296 = OpCompositeExtract %5 %293 2
%297 = OpCompositeExtract %5 %293 3
%298 = OpIAdd %5 %119 %56
%300 = OpAccessChain %46 %8 %48
%301 = OpLoad %5 %300
%302 = OpIAdd %5 %301 %298
%299 = OpAccessChain %71 %34 %302
%303 = OpGroupNonUniformBroadcastFirst %5 %52 %302
%304 = OpIMul %5 %303 %54
%305 = OpAccessChain %57 %13 %59 %304
%306 = OpLoad %9 %305
%307 = OpShiftRightLogical %9 %306 %81
%308 = OpCompositeExtract %5 %307 0
%309 = OpCompositeExtract %5 %307 1
%310 = OpIAdd %5 %116 %308
%311 = OpULessThan %123 %116 %309
%312 = OpSelect %5 %311 %310 %149
%313 = OpCompositeConstruct %19 %294 %295 %296 %297
%314 = OpAccessChain %150 %299 %59 %312
OpStore %314 %313
%315 = OpIAdd %5 %116 %52
%317 = OpAccessChain %46 %8 %56
%318 = OpLoad %5 %317
%319 = OpIAdd %5 %318 %315
%316 = OpAccessChain %92 %24 %319
%320 = OpIMul %5 %319 %54
%321 = OpAccessChain %57 %13 %59 %320
%322 = OpLoad %9 %321
%323 = OpShiftRightLogical %9 %322 %81
%324 = OpCompositeExtract %5 %323 0
%325 = OpCompositeExtract %5 %323 1
%326 = OpIAdd %5 %116 %324
%327 = OpULessThan %123 %116 %325
%328 = OpSelect %5 %327 %326 %149
%329 = OpAccessChain %150 %316 %59 %328
%330 = OpLoad %19 %329
%331 = OpCompositeExtract %5 %330 0
%332 = OpCompositeExtract %5 %330 1
%333 = OpCompositeExtract %5 %330 2
%334 = OpCompositeExtract %5 %330 3
%335 = OpIAdd %5 %116 %56
%337 = OpAccessChain %46 %8 %48
%338 = OpLoad %5 %337
%339 = OpIAdd %5 %338 %335
%336 = OpAccessChain %71 %34 %339
%340 = OpIMul %5 %339 %54
%341 = OpAccessChain %57 %13 %59 %340
%342 = OpLoad %9 %341
%343 = OpShiftRightLogical %9 %342 %81
%344 = OpCompositeExtract %5 %343 0
%345 = OpCompositeExtract %5 %343 1
%346 = OpIAdd %5 %116 %344
%347 = OpULessThan %123 %116 %345
%348 = OpSelect %5 %347 %346 %149
%349 = OpCompositeConstruct %19 %331 %332 %333 %334
%350 = OpAccessChain %150 %336 %59 %348
OpStore %350 %349
%351 = OpIMul %5 %116 %54
%352 = OpIAdd %5 %351 %56
%353 = OpCompositeExtract %5 %69 0
%354 = OpCompositeExtract %5 %69 1
%355 = OpIAdd %5 %352 %353
%356 = OpULessThan %123 %352 %354
%357 = OpSelect %5 %356 %355 %358
%360 = OpAccessChain %359 %62 %59 %357
%361 = OpAtomicIAdd %5 %360 %56 %59 %56
%362 = OpCompositeExtract %5 %90 1
%363 = OpUDiv %5 %362 %56
%364 = OpIMul %5 %116 %54
%365 = OpCompositeExtract %5 %69 0
%366 = OpCompositeExtract %5 %69 1
%367 = OpIAdd %5 %364 %365
%368 = OpULessThan %123 %364 %366
%369 = OpSelect %5 %368 %367 %358
%370 = OpAccessChain %359 %62 %59 %369
%371 = OpAtomicIAdd %5 %370 %56 %59 %363
%372 = OpShiftLeftLogical %5 %116 %54
%373 = OpBitwiseOr %5 %372 %56
%374 = OpBitwiseOr %5 %372 %54
%375 = OpBitwiseOr %5 %372 %52
%376 = OpCompositeExtract %5 %60 0
%377 = OpCompositeExtract %5 %60 1
%378 = OpIAdd %5 %116 %376
%379 = OpULessThan %123 %116 %377
%380 = OpSelect %5 %379 %378 %381
%382 = OpCompositeConstruct %19 %372 %373 %374 %375
OpImageWrite %50 %380 %382
OpReturn
OpFunctionEnd
#endif
