#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 = 1, local_size_y = 1, local_size_z = 1) in;

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

layout(push_constant, std430) uniform RootConstants
{
    uint _m0;
    uint _m1;
    uint _m2;
    uint _m3;
    uint _m4;
    uint _m5;
    uint _m6;
    uint _m7;
} registers;

layout(set = 1, binding = 0) uniform usamplerBuffer _17[];
layout(set = 4, binding = 0, r32ui) uniform uimageBuffer _21[];
layout(set = 4, binding = 0, r32ui) uniform uimageBuffer _24[];

void main()
{
    uint _31 = registers._m4 + 2u;
    uint _34 = subgroupBroadcastFirst(_31);
    uint _44 = subgroupBroadcastFirst(registers._m4);
    uint _52 = registers._m1 + 1u;
    uint _54 = subgroupBroadcastFirst(_52);
    uint _70 = (gl_GlobalInvocationID.x * 4u) + 16u;
    uint _76 = (_70 < _13._m0[_44].y) ? (_70 + _13._m0[_44].x) : 1073741820u;
    uvec4 _79 = imageLoad(_21[registers._m4], int(_76));
    uvec4 _81 = imageLoad(_21[registers._m4], int(_76 + 1u));
    uvec4 _84 = imageLoad(_21[registers._m4], int(_76 + 2u));
    uvec4 _87 = imageLoad(_21[registers._m4], int(_76 + 3u));
    vec4 _93 = uintBitsToFloat(uvec4(_79.x, _81.x, _84.x, _87.x));
    uint _102 = (gl_GlobalInvocationID.x * 4u) + 4096u;
    uint _107 = (_102 < _13._m0[_44].y) ? (_102 + _13._m0[_44].x) : 1073741820u;
    imageStore(_21[registers._m4], int(_107), uvec4(floatBitsToUint(_93.x)));
    imageStore(_21[registers._m4], int(_107 + 1u), uvec4(floatBitsToUint(_93.y)));
    imageStore(_21[registers._m4], int(_107 + 2u), uvec4(floatBitsToUint(_93.z)));
    imageStore(_21[registers._m4], int(_107 + 3u), uvec4(floatBitsToUint(_93.w)));
    uint _122 = (gl_GlobalInvocationID.x * 4u) + 8u;
    uint _127 = (_122 < _13._m0[_54].y) ? (_122 + _13._m0[_54].x) : 1073741820u;
    vec4 _140 = uintBitsToFloat(uvec4(texelFetch(_17[_52], int(_127)).x, texelFetch(_17[_52], int(_127 + 1u)).x, texelFetch(_17[_52], int(_127 + 2u)).x, texelFetch(_17[_52], int(_127 + 3u)).x));
    uint _149 = (gl_GlobalInvocationID.x * 4u) + 8192u;
    uint _154 = (_149 < _13._m0[_44].y) ? (_149 + _13._m0[_44].x) : 1073741820u;
    imageStore(_21[registers._m4], int(_154), uvec4(floatBitsToUint(_140.x)));
    imageStore(_21[registers._m4], int(_154 + 1u), uvec4(floatBitsToUint(_140.y)));
    imageStore(_21[registers._m4], int(_154 + 2u), uvec4(floatBitsToUint(_140.z)));
    imageStore(_21[registers._m4], int(_154 + 3u), uvec4(floatBitsToUint(_140.w)));
    uint _174 = imageAtomicAdd(_24[_31], int((gl_GlobalInvocationID.x < _13._m0[_34].y) ? (gl_GlobalInvocationID.x + _13._m0[_34].x) : 1073741820u), 40u);
    uint _183 = imageAtomicCompSwap(_24[_31], int((gl_GlobalInvocationID.y < _13._m0[_34].y) ? (gl_GlobalInvocationID.y + _13._m0[_34].x) : 1073741820u), 40u, 50u);
    float _187 = float(_13._m0[_44].y / 4u);
    uint _192 = (0u < _13._m0[_44].y) ? (0u + _13._m0[_44].x) : 1073741820u;
    imageStore(_21[registers._m4], int(_192), uvec4(floatBitsToUint(_187)));
    imageStore(_21[registers._m4], int(_192 + 1u), uvec4(floatBitsToUint(_187)));
    imageStore(_21[registers._m4], int(_192 + 2u), uvec4(floatBitsToUint(_187)));
    imageStore(_21[registers._m4], int(_192 + 3u), uvec4(floatBitsToUint(_187)));
    float _206 = float(_13._m0[_54].y / 4u);
    uint _211 = (4u < _13._m0[_44].y) ? (4u + _13._m0[_44].x) : 1073741820u;
    imageStore(_21[registers._m4], int(_211), uvec4(floatBitsToUint(_206)));
    imageStore(_21[registers._m4], int(_211 + 1u), uvec4(floatBitsToUint(_206)));
    imageStore(_21[registers._m4], int(_211 + 2u), uvec4(floatBitsToUint(_206)));
    imageStore(_21[registers._m4], int(_211 + 3u), uvec4(floatBitsToUint(_206)));
    uint _227 = registers._m4 + (gl_GlobalInvocationID.z + 0u);
    uint _232 = (gl_GlobalInvocationID.x * 4u) + 16u;
    uint _237 = (_232 < _13._m0[_227].y) ? (_232 + _13._m0[_227].x) : 1073741820u;
    uvec4 _238 = imageLoad(_21[nonuniformEXT(_227)], int(_237));
    uvec4 _240 = imageLoad(_21[nonuniformEXT(_227)], int(_237 + 1u));
    uvec4 _243 = imageLoad(_21[nonuniformEXT(_227)], int(_237 + 2u));
    uvec4 _246 = imageLoad(_21[nonuniformEXT(_227)], int(_237 + 3u));
    vec4 _250 = uintBitsToFloat(uvec4(_238.x, _240.x, _243.x, _246.x));
    uint _256 = (gl_GlobalInvocationID.x * 4u) + 4096u;
    uint _261 = (_256 < _13._m0[_227].y) ? (_256 + _13._m0[_227].x) : 1073741820u;
    imageStore(_21[nonuniformEXT(_227)], int(_261), uvec4(floatBitsToUint(_250.x)));
    imageStore(_21[nonuniformEXT(_227)], int(_261 + 1u), uvec4(floatBitsToUint(_250.y)));
    imageStore(_21[nonuniformEXT(_227)], int(_261 + 2u), uvec4(floatBitsToUint(_250.z)));
    imageStore(_21[nonuniformEXT(_227)], int(_261 + 3u), uvec4(floatBitsToUint(_250.w)));
    uint _277 = registers._m1 + (gl_GlobalInvocationID.z + 0u);
    uint _282 = (gl_GlobalInvocationID.x * 4u) + 16u;
    uint _287 = (_282 < _13._m0[_277].y) ? (_282 + _13._m0[_277].x) : 1073741820u;
    vec4 _300 = uintBitsToFloat(uvec4(texelFetch(_17[nonuniformEXT(_277)], int(_287)).x, texelFetch(_17[nonuniformEXT(_277)], int(_287 + 1u)).x, texelFetch(_17[nonuniformEXT(_277)], int(_287 + 2u)).x, texelFetch(_17[nonuniformEXT(_277)], int(_287 + 3u)).x));
    uint _306 = (gl_GlobalInvocationID.x * 4u) + 8192u;
    uint _311 = (_306 < _13._m0[_227].y) ? (_306 + _13._m0[_227].x) : 1073741820u;
    imageStore(_21[nonuniformEXT(_227)], int(_311), uvec4(floatBitsToUint(_300.x)));
    imageStore(_21[nonuniformEXT(_227)], int(_311 + 1u), uvec4(floatBitsToUint(_300.y)));
    imageStore(_21[nonuniformEXT(_227)], int(_311 + 2u), uvec4(floatBitsToUint(_300.z)));
    imageStore(_21[nonuniformEXT(_227)], int(_311 + 3u), uvec4(floatBitsToUint(_300.w)));
    uint _327 = registers._m4 + (gl_GlobalInvocationID.z + 0u);
    uint _337 = imageAtomicAdd(_24[nonuniformEXT(_327)], int((gl_GlobalInvocationID.y < _13._m0[_327].y) ? (gl_GlobalInvocationID.y + _13._m0[_327].x) : 1073741820u), 40u);
    uint _344 = imageAtomicCompSwap(_24[nonuniformEXT(_327)], int((gl_GlobalInvocationID.y < _13._m0[_327].y) ? (gl_GlobalInvocationID.y + _13._m0[_327].x) : 1073741820u), 40u, 70u);
    float _348 = float(_13._m0[_227].y / 4u);
    uint _353 = (8u < _13._m0[_44].y) ? (8u + _13._m0[_44].x) : 1073741820u;
    imageStore(_21[registers._m4], int(_353), uvec4(floatBitsToUint(_348)));
    imageStore(_21[registers._m4], int(_353 + 1u), uvec4(floatBitsToUint(_348)));
    imageStore(_21[registers._m4], int(_353 + 2u), uvec4(floatBitsToUint(_348)));
    imageStore(_21[registers._m4], int(_353 + 3u), uvec4(floatBitsToUint(_348)));
    float _367 = float(_13._m0[_277].y / 4u);
    uint _373 = (12u < _13._m0[_44].y) ? (12u + _13._m0[_44].x) : 1073741820u;
    imageStore(_21[registers._m4], int(_373), uvec4(floatBitsToUint(_367)));
    imageStore(_21[registers._m4], int(_373 + 1u), uvec4(floatBitsToUint(_367)));
    imageStore(_21[registers._m4], int(_373 + 2u), uvec4(floatBitsToUint(_367)));
    imageStore(_21[registers._m4], int(_373 + 3u), uvec4(floatBitsToUint(_367)));
}


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