#version 460
#extension GL_EXT_shader_explicit_arithmetic_types_int16 : require
#extension GL_EXT_shader_16bit_storage : require
#if defined(GL_AMD_gpu_shader_half_float)
#extension GL_AMD_gpu_shader_half_float : require
#elif defined(GL_EXT_shader_explicit_arithmetic_types_float16)
#extension GL_EXT_shader_explicit_arithmetic_types_float16 : require
#else
#error No extension available for FP16.
#endif
#extension GL_EXT_buffer_reference : 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 = 4, binding = 0, std430) buffer SSBO
{
    uint16_t _m0[];
} _19[];

layout(set = 4, binding = 0, std430) buffer _22_25
{
    u16vec2 _m0[];
} _25[];

layout(set = 4, binding = 0, std430) buffer _28_31
{
    u16vec4 _m0[];
} _31[];

layout(set = 4, binding = 0, std430) buffer _33_36
{
    uint16_t _m0[];
} _36[];

layout(set = 4, binding = 0, std430) buffer _38_41
{
    u16vec2 _m0[];
} _41[];

layout(set = 4, binding = 0, std430) buffer _43_46
{
    u16vec4 _m0[];
} _46[];

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

layout(set = 4, binding = 0, std430) buffer _54_57
{
    uvec4 _m0[];
} _57[];

layout(set = 4, binding = 0, std430) writeonly buffer _59_62
{
    uint16_t _m0[];
} _62[];

layout(set = 4, binding = 0, std430) writeonly buffer _64_67
{
    u16vec2 _m0[];
} _67[];

layout(set = 4, binding = 0, std430) writeonly buffer _69_72
{
    u16vec4 _m0[];
} _72[];

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

void main()
{
    uint _79 = registers._m4 + 6u;
    uint _90 = registers._m4 + 6u;
    uint _91 = subgroupBroadcastFirst(_90);
    uint _100 = registers._m4 + 5u;
    uint _109 = registers._m4 + 5u;
    uint _110 = subgroupBroadcastFirst(_109);
    uint _117 = registers._m4 + 4u;
    uint _122 = registers._m4 + 4u;
    uint _127 = registers._m4 + 4u;
    uint _137 = registers._m4 + 4u;
    uint _138 = subgroupBroadcastFirst(_137);
    uint _145 = registers._m4 + 3u;
    uvec2 _149 = _13._m0[subgroupBroadcastFirst(_145)] >> uvec2(3u);
    uint _155 = registers._m4 + 2u;
    uvec2 _160 = _13._m0[subgroupBroadcastFirst(_155)] >> uvec2(1u);
    uint _167 = registers._m4 + 1u;
    uvec2 _171 = _13._m0[subgroupBroadcastFirst(_167)] >> uvec2(2u);
    uvec2 _179 = _13._m0[subgroupBroadcastFirst(registers._m4)] >> uvec2(1u);
    _19[registers._m4]._m0[(gl_GlobalInvocationID.x < _179.y) ? (gl_GlobalInvocationID.x + _179.x) : 2147483644u] = float16BitsToUint16(uint16BitsToFloat16(_19[registers._m4]._m0[(gl_GlobalInvocationID.x < _179.y) ? (gl_GlobalInvocationID.x + _179.x) : 2147483644u]) + float16_t(1.0));
    uint _211 = (gl_GlobalInvocationID.x < _171.y) ? (gl_GlobalInvocationID.x + _171.x) : 1073741823u;
    _25[_167]._m0[(gl_GlobalInvocationID.x < _171.y) ? (gl_GlobalInvocationID.x + _171.x) : 1073741823u] = u16vec2(_25[_167]._m0[_211].x + 2us, _25[_167]._m0[_211].y + 2us);
    uint _228 = gl_GlobalInvocationID.x * 3u;
    uint _233 = (_228 < _160.y) ? (_228 + _160.x) : 2147483644u;
    uint16_t _235 = _19[_155]._m0[_233];
    uint16_t _238 = _19[_155]._m0[_233 + 1u];
    uint16_t _241 = _19[_155]._m0[_233 + 2u];
    f16vec3 _245 = uint16BitsToFloat16(u16vec3(_235, _238, _241));
    uint _253 = gl_GlobalInvocationID.x * 3u;
    uint _258 = (_253 < _160.y) ? (_253 + _160.x) : 2147483644u;
    _19[_155]._m0[_258] = float16BitsToUint16(_245.x + float16_t(3.0));
    _19[_155]._m0[_258 + 1u] = float16BitsToUint16(_245.y + float16_t(3.0));
    _19[_155]._m0[_258 + 2u] = float16BitsToUint16(_245.z + float16_t(3.0));
    uint _271 = (gl_GlobalInvocationID.x < _149.y) ? (gl_GlobalInvocationID.x + _149.x) : 536870911u;
    _31[_145]._m0[(gl_GlobalInvocationID.x < _149.y) ? (gl_GlobalInvocationID.x + _149.x) : 536870911u] = u16vec4(_31[_145]._m0[_271].x + 4us, _31[_145]._m0[_271].y + 4us, _31[_145]._m0[_271].z + 4us, _31[_145]._m0[_271].w + 4us);
    uvec2 _293 = _13._m0[_138] >> uvec2(1u);
    uint16_t _300 = _36[_117]._m0[(gl_GlobalInvocationID.x < _293.y) ? (gl_GlobalInvocationID.x + _293.x) : 2147483644u];
    float _303 = float(uint16BitsToFloat16(_300));
    uvec2 _305 = _13._m0[_138] >> uvec2(2u);
    u16vec2 _312 = _41[_122]._m0[(gl_GlobalInvocationID.x < _305.y) ? (gl_GlobalInvocationID.x + _305.x) : 1073741823u];
    f16vec2 _314 = uint16BitsToFloat16(_312);
    float _318 = float(_314.y);
    float _319 = float(_314.x) + _303;
    uint _322 = gl_GlobalInvocationID.x * 3u;
    uvec2 _323 = _13._m0[_138] >> uvec2(1u);
    uint _328 = (_322 < _323.y) ? (_322 + _323.x) : 2147483644u;
    uint16_t _330 = _36[_117]._m0[_328];
    uint16_t _333 = _36[_117]._m0[_328 + 1u];
    uint16_t _336 = _36[_117]._m0[_328 + 2u];
    f16vec3 _338 = uint16BitsToFloat16(u16vec3(_330, _333, _336));
    float _342 = float(_338.x);
    uvec2 _349 = _13._m0[_138] >> uvec2(3u);
    u16vec4 _356 = _46[_127]._m0[(gl_GlobalInvocationID.x < _349.y) ? (gl_GlobalInvocationID.x + _349.x) : 536870911u];
    f16vec4 _358 = uint16BitsToFloat16(_356);
    uvec2 _370 = _13._m0[_138] >> uvec2(1u);
    uint16_t _377 = _36[_117]._m0[(gl_GlobalInvocationID.x < _370.y) ? (gl_GlobalInvocationID.x + _370.x) : 2147483644u];
    float _378 = float(_377);
    uvec2 _382 = _13._m0[_138] >> uvec2(2u);
    uint _387 = (gl_GlobalInvocationID.x < _382.y) ? (gl_GlobalInvocationID.x + _382.x) : 1073741823u;
    u16vec2 _389 = _41[_122]._m0[_387];
    float _392 = float(_389.x);
    float _393 = float(_389.y);
    uint _397 = gl_GlobalInvocationID.x * 3u;
    uvec2 _398 = _13._m0[_138] >> uvec2(1u);
    uint _403 = (_397 < _398.y) ? (_397 + _398.x) : 2147483644u;
    uint16_t _405 = _36[_117]._m0[_403];
    uint16_t _408 = _36[_117]._m0[_403 + 1u];
    uint16_t _411 = _36[_117]._m0[_403 + 2u];
    u16vec3 _412 = u16vec3(_405, _408, _411);
    float _416 = float(_412.x);
    uvec2 _422 = _13._m0[_138] >> uvec2(3u);
    uint _427 = (gl_GlobalInvocationID.x < _422.y) ? (gl_GlobalInvocationID.x + _422.x) : 536870911u;
    u16vec4 _429 = _46[_127]._m0[_427];
    uvec2 _441 = _13._m0[_110] >> uvec2(1u);
    _62[_100]._m0[(gl_GlobalInvocationID.x < _441.y) ? (gl_GlobalInvocationID.x + _441.x) : 2147483644u] = float16BitsToUint16(float16_t(1.0));
    uvec2 _449 = _13._m0[_110] >> uvec2(2u);
    _67[registers._m4 + 5u]._m0[(gl_GlobalInvocationID.x < _449.y) ? (gl_GlobalInvocationID.x + _449.x) : 1073741823u] = u16vec2(float16BitsToUint16(float16_t(2.0)), float16BitsToUint16(float16_t(4.0)));
    uint _461 = gl_GlobalInvocationID.x * 3u;
    uvec2 _462 = _13._m0[_110] >> uvec2(1u);
    uint _467 = (_461 < _462.y) ? (_461 + _462.x) : 2147483644u;
    _62[_100]._m0[_467] = float16BitsToUint16(float16_t(4.0));
    _62[_100]._m0[_467 + 1u] = float16BitsToUint16(float16_t(5.0));
    _62[_100]._m0[_467 + 2u] = float16BitsToUint16(float16_t(6.0));
    uvec2 _478 = _13._m0[_110] >> uvec2(3u);
    _72[_109]._m0[(gl_GlobalInvocationID.x < _478.y) ? (gl_GlobalInvocationID.x + _478.x) : 536870911u] = u16vec4(float16BitsToUint16(float16_t(7.0)), float16BitsToUint16(float16_t(8.0)), float16BitsToUint16(float16_t(9.0)), float16BitsToUint16(float16_t(10.0)));
    uvec2 _494 = _13._m0[_91] >> uvec2(1u);
    _62[_79]._m0[(gl_GlobalInvocationID.x < _494.y) ? (gl_GlobalInvocationID.x + _494.x) : 2147483644u] = 1us;
    uvec2 _502 = _13._m0[_91] >> uvec2(2u);
    _67[registers._m4 + 6u]._m0[(gl_GlobalInvocationID.x < _502.y) ? (gl_GlobalInvocationID.x + _502.x) : 1073741823u] = u16vec2(2us, 4us);
    uint _510 = gl_GlobalInvocationID.x * 3u;
    uvec2 _511 = _13._m0[_91] >> uvec2(1u);
    uint _516 = (_510 < _511.y) ? (_510 + _511.x) : 2147483644u;
    _62[_79]._m0[_516] = 4us;
    _62[_79]._m0[_516 + 1u] = 5us;
    _62[_79]._m0[_516 + 2u] = 6us;
    uvec2 _524 = _13._m0[_91] >> uvec2(3u);
    _72[_90]._m0[(gl_GlobalInvocationID.x < _524.y) ? (gl_GlobalInvocationID.x + _524.x) : 536870911u] = u16vec4(7us, 8us, 9us, 10us);
    uvec2 _536 = _13._m0[_138] >> uvec2(2u);
    uint _545 = _51[registers._m4 + 4u]._m0[(gl_GlobalInvocationID.x < _536.y) ? (gl_GlobalInvocationID.x + _536.x) : 1073741820u];
    float _546 = uintBitsToFloat(_545);
    uint _550 = gl_GlobalInvocationID.x + 0u;
    uint _558 = registers._m4 + _550;
    uint _561 = gl_GlobalInvocationID.x * 2u;
    uvec2 _562 = _13._m0[_558] >> uvec2(1u);
    uint16_t _569 = _36[nonuniformEXT(registers._m4 + _550)]._m0[(_561 < _562.y) ? (_561 + _562.x) : 2147483644u];
    float _571 = float(uint16BitsToFloat16(_569));
    float _572 = (((((((_319 + _342) + float(_358.x)) + _378) + _392) + _416) + float(_429.x)) + _546) + _571;
    float _573 = (((((((_319 + float(_338.y)) + float(_358.y)) + _378) + _392) + float(_412.y)) + float(_429.y)) + _546) + _571;
    uint _577 = gl_GlobalInvocationID.x * 2u;
    uvec2 _578 = _13._m0[_558] >> uvec2(2u);
    _41[nonuniformEXT(_558)]._m0[(_577 < _578.y) ? (_577 + _578.x) : 1073741823u] = u16vec2(float16BitsToUint16(float16_t(_572)), float16BitsToUint16(float16_t(_573)));
    uvec2 _619 = _13._m0[_138] >> uvec2(4u);
    _57[_137]._m0[(gl_GlobalInvocationID.x < _619.y) ? (gl_GlobalInvocationID.x + _619.x) : 268435455u] = uvec4(uint((float(_179.y / 1u) + _572) + float(_13._m0[_110].y * 8u)), uint(_573 + 2.0), uint((((((((((_318 + _303) + float(_338.z)) + float(_358.z)) + _378) + _393) + float(_412.z)) + float(_429.z)) + _546) + _571) + float(_149.y / 1u)), uint((((((((((_303 + 8.0) + _318) + _342) + float(_358.w)) + _378) + _393) + _416) + float(_429.w)) + _546) + _571));
}


#if 0
// SPIR-V disassembly
; SPIR-V
; Version: 1.3
; Generator: Unknown(30017); 21022
; Bound: 632
; Schema: 0
OpCapability Shader
OpCapability Float16
OpCapability Int16
OpCapability StorageBufferArrayDynamicIndexing
OpCapability ImageQuery
OpCapability GroupNonUniformBallot
OpCapability StorageBuffer16BitAccess
OpCapability DenormPreserve
OpCapability RuntimeDescriptorArray
OpCapability StorageBufferArrayNonUniformIndexing
OpCapability PhysicalStorageBufferAddresses
OpExtension "SPV_EXT_descriptor_indexing"
OpExtension "SPV_KHR_float_controls"
OpExtension "SPV_KHR_physical_storage_buffer"
OpMemoryModel PhysicalStorageBuffer64 GLSL450
OpEntryPoint GLCompute %3 "main" %182
OpExecutionMode %3 LocalSize 64 1 1
OpExecutionMode %3 DenormPreserve 16
OpName %3 "main"
OpName %6 "RootConstants"
OpName %8 "registers"
OpName %11 "SSBO_Offsets"
OpName %16 "SSBO"
OpName %22 "SSBO"
OpName %28 "SSBO"
OpName %33 "SSBO"
OpName %38 "SSBO"
OpName %43 "SSBO"
OpName %48 "SSBO"
OpName %54 "SSBO"
OpName %59 "SSBO"
OpName %64 "SSBO"
OpName %69 "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
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 %15 ArrayStride 2
OpMemberDecorate %16 0 Offset 0
OpDecorate %16 Block
OpDecorate %19 DescriptorSet 4
OpDecorate %19 Binding 0
OpDecorate %21 ArrayStride 4
OpMemberDecorate %22 0 Offset 0
OpDecorate %22 Block
OpDecorate %25 DescriptorSet 4
OpDecorate %25 Binding 0
OpDecorate %27 ArrayStride 8
OpMemberDecorate %28 0 Offset 0
OpDecorate %28 Block
OpDecorate %31 DescriptorSet 4
OpDecorate %31 Binding 0
OpDecorate %32 ArrayStride 2
OpMemberDecorate %33 0 Offset 0
OpDecorate %33 Block
OpDecorate %36 DescriptorSet 4
OpDecorate %36 Binding 0
OpDecorate %36 Aliased
OpDecorate %37 ArrayStride 4
OpMemberDecorate %38 0 Offset 0
OpDecorate %38 Block
OpDecorate %41 DescriptorSet 4
OpDecorate %41 Binding 0
OpDecorate %41 Aliased
OpDecorate %42 ArrayStride 8
OpMemberDecorate %43 0 Offset 0
OpDecorate %43 Block
OpDecorate %46 DescriptorSet 4
OpDecorate %46 Binding 0
OpDecorate %46 Aliased
OpDecorate %47 ArrayStride 4
OpMemberDecorate %48 0 Offset 0
OpDecorate %48 Block
OpDecorate %51 DescriptorSet 4
OpDecorate %51 Binding 0
OpDecorate %51 Aliased
OpDecorate %53 ArrayStride 16
OpMemberDecorate %54 0 Offset 0
OpDecorate %54 Block
OpDecorate %57 DescriptorSet 4
OpDecorate %57 Binding 0
OpDecorate %57 Aliased
OpDecorate %58 ArrayStride 2
OpMemberDecorate %59 0 Offset 0
OpDecorate %59 Block
OpDecorate %62 DescriptorSet 4
OpDecorate %62 Binding 0
OpDecorate %62 NonReadable
OpDecorate %62 Aliased
OpDecorate %63 ArrayStride 4
OpMemberDecorate %64 0 Offset 0
OpDecorate %64 Block
OpDecorate %67 DescriptorSet 4
OpDecorate %67 Binding 0
OpDecorate %67 NonReadable
OpDecorate %67 Aliased
OpDecorate %68 ArrayStride 8
OpMemberDecorate %69 0 Offset 0
OpDecorate %69 Block
OpDecorate %72 DescriptorSet 4
OpDecorate %72 Binding 0
OpDecorate %72 NonReadable
OpDecorate %72 Aliased
OpDecorate %182 BuiltIn GlobalInvocationId
OpDecorate %554 NonUniform
OpDecorate %551 NonUniform
OpDecorate %558 NonUniform
OpDecorate %555 NonUniform
OpDecorate %568 NonUniform
OpDecorate %587 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 = OpTypeInt 16 0
%15 = OpTypeRuntimeArray %14
%16 = OpTypeStruct %15
%17 = OpTypeRuntimeArray %16
%18 = OpTypePointer StorageBuffer %17
%19 = OpVariable %18 StorageBuffer
%20 = OpTypeVector %14 2
%21 = OpTypeRuntimeArray %20
%22 = OpTypeStruct %21
%23 = OpTypeRuntimeArray %22
%24 = OpTypePointer StorageBuffer %23
%25 = OpVariable %24 StorageBuffer
%26 = OpTypeVector %14 4
%27 = OpTypeRuntimeArray %26
%28 = OpTypeStruct %27
%29 = OpTypeRuntimeArray %28
%30 = OpTypePointer StorageBuffer %29
%31 = OpVariable %30 StorageBuffer
%32 = OpTypeRuntimeArray %14
%33 = OpTypeStruct %32
%34 = OpTypeRuntimeArray %33
%35 = OpTypePointer StorageBuffer %34
%36 = OpVariable %35 StorageBuffer
%37 = OpTypeRuntimeArray %20
%38 = OpTypeStruct %37
%39 = OpTypeRuntimeArray %38
%40 = OpTypePointer StorageBuffer %39
%41 = OpVariable %40 StorageBuffer
%42 = OpTypeRuntimeArray %26
%43 = OpTypeStruct %42
%44 = OpTypeRuntimeArray %43
%45 = OpTypePointer StorageBuffer %44
%46 = OpVariable %45 StorageBuffer
%47 = OpTypeRuntimeArray %5
%48 = OpTypeStruct %47
%49 = OpTypeRuntimeArray %48
%50 = OpTypePointer StorageBuffer %49
%51 = OpVariable %50 StorageBuffer
%52 = OpTypeVector %5 4
%53 = OpTypeRuntimeArray %52
%54 = OpTypeStruct %53
%55 = OpTypeRuntimeArray %54
%56 = OpTypePointer StorageBuffer %55
%57 = OpVariable %56 StorageBuffer
%58 = OpTypeRuntimeArray %14
%59 = OpTypeStruct %58
%60 = OpTypeRuntimeArray %59
%61 = OpTypePointer StorageBuffer %60
%62 = OpVariable %61 StorageBuffer
%63 = OpTypeRuntimeArray %20
%64 = OpTypeStruct %63
%65 = OpTypeRuntimeArray %64
%66 = OpTypePointer StorageBuffer %65
%67 = OpVariable %66 StorageBuffer
%68 = OpTypeRuntimeArray %26
%69 = OpTypeStruct %68
%70 = OpTypeRuntimeArray %69
%71 = OpTypePointer StorageBuffer %70
%72 = OpVariable %71 StorageBuffer
%73 = OpTypePointer StorageBuffer %59
%75 = OpTypePointer PushConstant %5
%77 = OpConstant %5 4
%80 = OpConstant %5 6
%81 = OpTypePointer StorageBuffer %64
%86 = OpTypePointer StorageBuffer %69
%92 = OpConstant %5 3
%93 = OpTypePointer StorageBuffer %9
%95 = OpConstant %5 0
%101 = OpConstant %5 5
%113 = OpTypePointer StorageBuffer %33
%118 = OpTypePointer StorageBuffer %38
%123 = OpTypePointer StorageBuffer %43
%128 = OpTypePointer StorageBuffer %48
%133 = OpTypePointer StorageBuffer %54
%141 = OpTypePointer StorageBuffer %28
%150 = OpConstantComposite %9 %92 %92
%151 = OpTypePointer StorageBuffer %16
%156 = OpConstant %5 2
%161 = OpConstant %5 1
%162 = OpConstantComposite %9 %161 %161
%163 = OpTypePointer StorageBuffer %22
%172 = OpConstantComposite %9 %156 %156
%180 = OpTypeVector %5 3
%181 = OpTypePointer Input %180
%182 = OpVariable %181 Input
%183 = OpTypePointer Input %5
%189 = OpTypeBool
%192 = OpConstant %5 2147483644
%193 = OpTypePointer StorageBuffer %14
%196 = OpTypeFloat 16
%199 = OpConstant %196 0x1p+0
%212 = OpConstant %5 1073741823
%213 = OpTypePointer StorageBuffer %20
%219 = OpConstant %14 2
%242 = OpTypeVector %14 3
%244 = OpTypeVector %196 3
%250 = OpConstant %196 0x1.8p+1
%272 = OpConstant %5 536870911
%273 = OpTypePointer StorageBuffer %26
%281 = OpConstant %14 4
%302 = OpTypeFloat 32
%313 = OpTypeVector %196 2
%357 = OpTypeVector %196 4
%455 = OpConstant %196 0x1p+1
%457 = OpConstant %196 0x1p+2
%469 = OpConstant %196 0x1.4p+2
%471 = OpConstant %196 0x1.8p+2
%484 = OpConstant %196 0x1.cp+2
%486 = OpConstant %196 0x1p+3
%488 = OpConstant %196 0x1.2p+3
%490 = OpConstant %196 0x1.4p+3
%500 = OpConstant %14 1
%517 = OpConstant %14 5
%518 = OpConstant %14 6
%530 = OpConstant %14 7
%531 = OpConstant %14 8
%532 = OpConstant %14 9
%533 = OpConstant %14 10
%542 = OpConstant %5 1073741820
%543 = OpTypePointer StorageBuffer %5
%593 = OpConstant %302 2
%599 = OpConstant %302 8
%611 = OpConstant %5 8
%620 = OpConstantComposite %9 %77 %77
%626 = OpConstant %5 268435455
%628 = OpTypePointer StorageBuffer %52
%3 = OpFunction %1 None %2
%4 = OpLabel
OpBranch %630
%630 = OpLabel
%76 = OpAccessChain %75 %8 %77
%78 = OpLoad %5 %76
%79 = OpIAdd %5 %78 %80
%74 = OpAccessChain %73 %62 %79
%83 = OpAccessChain %75 %8 %77
%84 = OpLoad %5 %83
%85 = OpIAdd %5 %84 %80
%82 = OpAccessChain %81 %67 %85
%88 = OpAccessChain %75 %8 %77
%89 = OpLoad %5 %88
%90 = OpIAdd %5 %89 %80
%87 = OpAccessChain %86 %72 %90
%91 = OpGroupNonUniformBroadcastFirst %5 %92 %90
%94 = OpAccessChain %93 %13 %95 %91
%96 = OpLoad %9 %94
%98 = OpAccessChain %75 %8 %77
%99 = OpLoad %5 %98
%100 = OpIAdd %5 %99 %101
%97 = OpAccessChain %73 %62 %100
%103 = OpAccessChain %75 %8 %77
%104 = OpLoad %5 %103
%105 = OpIAdd %5 %104 %101
%102 = OpAccessChain %81 %67 %105
%107 = OpAccessChain %75 %8 %77
%108 = OpLoad %5 %107
%109 = OpIAdd %5 %108 %101
%106 = OpAccessChain %86 %72 %109
%110 = OpGroupNonUniformBroadcastFirst %5 %92 %109
%111 = OpAccessChain %93 %13 %95 %110
%112 = OpLoad %9 %111
%115 = OpAccessChain %75 %8 %77
%116 = OpLoad %5 %115
%117 = OpIAdd %5 %116 %77
%114 = OpAccessChain %113 %36 %117
%120 = OpAccessChain %75 %8 %77
%121 = OpLoad %5 %120
%122 = OpIAdd %5 %121 %77
%119 = OpAccessChain %118 %41 %122
%125 = OpAccessChain %75 %8 %77
%126 = OpLoad %5 %125
%127 = OpIAdd %5 %126 %77
%124 = OpAccessChain %123 %46 %127
%130 = OpAccessChain %75 %8 %77
%131 = OpLoad %5 %130
%132 = OpIAdd %5 %131 %77
%129 = OpAccessChain %128 %51 %132
%135 = OpAccessChain %75 %8 %77
%136 = OpLoad %5 %135
%137 = OpIAdd %5 %136 %77
%134 = OpAccessChain %133 %57 %137
%138 = OpGroupNonUniformBroadcastFirst %5 %92 %137
%139 = OpAccessChain %93 %13 %95 %138
%140 = OpLoad %9 %139
%143 = OpAccessChain %75 %8 %77
%144 = OpLoad %5 %143
%145 = OpIAdd %5 %144 %92
%142 = OpAccessChain %141 %31 %145
%146 = OpGroupNonUniformBroadcastFirst %5 %92 %145
%147 = OpAccessChain %93 %13 %95 %146
%148 = OpLoad %9 %147
%149 = OpShiftRightLogical %9 %148 %150
%153 = OpAccessChain %75 %8 %77
%154 = OpLoad %5 %153
%155 = OpIAdd %5 %154 %156
%152 = OpAccessChain %151 %19 %155
%157 = OpGroupNonUniformBroadcastFirst %5 %92 %155
%158 = OpAccessChain %93 %13 %95 %157
%159 = OpLoad %9 %158
%160 = OpShiftRightLogical %9 %159 %162
%165 = OpAccessChain %75 %8 %77
%166 = OpLoad %5 %165
%167 = OpIAdd %5 %166 %161
%164 = OpAccessChain %163 %25 %167
%168 = OpGroupNonUniformBroadcastFirst %5 %92 %167
%169 = OpAccessChain %93 %13 %95 %168
%170 = OpLoad %9 %169
%171 = OpShiftRightLogical %9 %170 %172
%174 = OpAccessChain %75 %8 %77
%175 = OpLoad %5 %174
%173 = OpAccessChain %151 %19 %175
%176 = OpGroupNonUniformBroadcastFirst %5 %92 %175
%177 = OpAccessChain %93 %13 %95 %176
%178 = OpLoad %9 %177
%179 = OpShiftRightLogical %9 %178 %162
%184 = OpAccessChain %183 %182 %95
%185 = OpLoad %5 %184
%186 = OpCompositeExtract %5 %179 0
%187 = OpCompositeExtract %5 %179 1
%188 = OpIAdd %5 %185 %186
%190 = OpULessThan %189 %185 %187
%191 = OpSelect %5 %190 %188 %192
%194 = OpAccessChain %193 %173 %95 %191
%195 = OpLoad %14 %194
%197 = OpBitcast %196 %195
%198 = OpFAdd %196 %197 %199
%200 = OpCompositeExtract %5 %179 0
%201 = OpCompositeExtract %5 %179 1
%202 = OpIAdd %5 %185 %200
%203 = OpULessThan %189 %185 %201
%204 = OpSelect %5 %203 %202 %192
%205 = OpBitcast %14 %198
%206 = OpAccessChain %193 %173 %95 %204
OpStore %206 %205
%207 = OpCompositeExtract %5 %171 0
%208 = OpCompositeExtract %5 %171 1
%209 = OpIAdd %5 %185 %207
%210 = OpULessThan %189 %185 %208
%211 = OpSelect %5 %210 %209 %212
%214 = OpAccessChain %213 %164 %95 %211
%215 = OpLoad %20 %214
%216 = OpCompositeExtract %14 %215 0
%217 = OpCompositeExtract %14 %215 1
%218 = OpIAdd %14 %216 %219
%220 = OpIAdd %14 %217 %219
%221 = OpCompositeExtract %5 %171 0
%222 = OpCompositeExtract %5 %171 1
%223 = OpIAdd %5 %185 %221
%224 = OpULessThan %189 %185 %222
%225 = OpSelect %5 %224 %223 %212
%226 = OpCompositeConstruct %20 %218 %220
%227 = OpAccessChain %213 %164 %95 %225
OpStore %227 %226
%228 = OpIMul %5 %185 %92
%229 = OpCompositeExtract %5 %160 0
%230 = OpCompositeExtract %5 %160 1
%231 = OpIAdd %5 %228 %229
%232 = OpULessThan %189 %228 %230
%233 = OpSelect %5 %232 %231 %192
%234 = OpAccessChain %193 %152 %95 %233
%235 = OpLoad %14 %234
%237 = OpIAdd %5 %233 %161
%236 = OpAccessChain %193 %152 %95 %237
%238 = OpLoad %14 %236
%240 = OpIAdd %5 %233 %156
%239 = OpAccessChain %193 %152 %95 %240
%241 = OpLoad %14 %239
%243 = OpCompositeConstruct %242 %235 %238 %241
%245 = OpBitcast %244 %243
%246 = OpCompositeExtract %196 %245 0
%247 = OpCompositeExtract %196 %245 1
%248 = OpCompositeExtract %196 %245 2
%249 = OpFAdd %196 %246 %250
%251 = OpFAdd %196 %247 %250
%252 = OpFAdd %196 %248 %250
%253 = OpIMul %5 %185 %92
%254 = OpCompositeExtract %5 %160 0
%255 = OpCompositeExtract %5 %160 1
%256 = OpIAdd %5 %253 %254
%257 = OpULessThan %189 %253 %255
%258 = OpSelect %5 %257 %256 %192
%259 = OpBitcast %14 %249
%260 = OpBitcast %14 %251
%261 = OpBitcast %14 %252
%262 = OpAccessChain %193 %152 %95 %258
OpStore %262 %259
%264 = OpIAdd %5 %258 %161
%263 = OpAccessChain %193 %152 %95 %264
OpStore %263 %260
%266 = OpIAdd %5 %258 %156
%265 = OpAccessChain %193 %152 %95 %266
OpStore %265 %261
%267 = OpCompositeExtract %5 %149 0
%268 = OpCompositeExtract %5 %149 1
%269 = OpIAdd %5 %185 %267
%270 = OpULessThan %189 %185 %268
%271 = OpSelect %5 %270 %269 %272
%274 = OpAccessChain %273 %142 %95 %271
%275 = OpLoad %26 %274
%276 = OpCompositeExtract %14 %275 0
%277 = OpCompositeExtract %14 %275 1
%278 = OpCompositeExtract %14 %275 2
%279 = OpCompositeExtract %14 %275 3
%280 = OpIAdd %14 %276 %281
%282 = OpIAdd %14 %277 %281
%283 = OpIAdd %14 %278 %281
%284 = OpIAdd %14 %279 %281
%285 = OpCompositeExtract %5 %149 0
%286 = OpCompositeExtract %5 %149 1
%287 = OpIAdd %5 %185 %285
%288 = OpULessThan %189 %185 %286
%289 = OpSelect %5 %288 %287 %272
%290 = OpCompositeConstruct %26 %280 %282 %283 %284
%291 = OpAccessChain %273 %142 %95 %289
OpStore %291 %290
%292 = OpShiftLeftLogical %5 %185 %161
%293 = OpShiftRightLogical %9 %140 %162
%294 = OpCompositeExtract %5 %293 0
%295 = OpCompositeExtract %5 %293 1
%296 = OpIAdd %5 %185 %294
%297 = OpULessThan %189 %185 %295
%298 = OpSelect %5 %297 %296 %192
%299 = OpAccessChain %193 %114 %95 %298
%300 = OpLoad %14 %299
%301 = OpBitcast %196 %300
%303 = OpFConvert %302 %301
%304 = OpShiftLeftLogical %5 %185 %156
%305 = OpShiftRightLogical %9 %140 %172
%306 = OpCompositeExtract %5 %305 0
%307 = OpCompositeExtract %5 %305 1
%308 = OpIAdd %5 %185 %306
%309 = OpULessThan %189 %185 %307
%310 = OpSelect %5 %309 %308 %212
%311 = OpAccessChain %213 %119 %95 %310
%312 = OpLoad %20 %311
%314 = OpBitcast %313 %312
%315 = OpCompositeExtract %196 %314 0
%316 = OpCompositeExtract %196 %314 1
%317 = OpFConvert %302 %315
%318 = OpFConvert %302 %316
%319 = OpFAdd %302 %317 %303
%320 = OpFAdd %302 %318 %303
%321 = OpIMul %5 %185 %80
%322 = OpIMul %5 %185 %92
%323 = OpShiftRightLogical %9 %140 %162
%324 = OpCompositeExtract %5 %323 0
%325 = OpCompositeExtract %5 %323 1
%326 = OpIAdd %5 %322 %324
%327 = OpULessThan %189 %322 %325
%328 = OpSelect %5 %327 %326 %192
%329 = OpAccessChain %193 %114 %95 %328
%330 = OpLoad %14 %329
%332 = OpIAdd %5 %328 %161
%331 = OpAccessChain %193 %114 %95 %332
%333 = OpLoad %14 %331
%335 = OpIAdd %5 %328 %156
%334 = OpAccessChain %193 %114 %95 %335
%336 = OpLoad %14 %334
%337 = OpCompositeConstruct %242 %330 %333 %336
%338 = OpBitcast %244 %337
%339 = OpCompositeExtract %196 %338 0
%340 = OpCompositeExtract %196 %338 1
%341 = OpCompositeExtract %196 %338 2
%342 = OpFConvert %302 %339
%343 = OpFConvert %302 %340
%344 = OpFConvert %302 %341
%345 = OpFAdd %302 %319 %342
%346 = OpFAdd %302 %319 %343
%347 = OpFAdd %302 %320 %344
%348 = OpShiftLeftLogical %5 %185 %92
%349 = OpShiftRightLogical %9 %140 %150
%350 = OpCompositeExtract %5 %349 0
%351 = OpCompositeExtract %5 %349 1
%352 = OpIAdd %5 %185 %350
%353 = OpULessThan %189 %185 %351
%354 = OpSelect %5 %353 %352 %272
%355 = OpAccessChain %273 %124 %95 %354
%356 = OpLoad %26 %355
%358 = OpBitcast %357 %356
%359 = OpCompositeExtract %196 %358 0
%360 = OpCompositeExtract %196 %358 1
%361 = OpCompositeExtract %196 %358 2
%362 = OpCompositeExtract %196 %358 3
%363 = OpFConvert %302 %359
%364 = OpFConvert %302 %360
%365 = OpFConvert %302 %361
%366 = OpFConvert %302 %362
%367 = OpFAdd %302 %345 %363
%368 = OpFAdd %302 %346 %364
%369 = OpFAdd %302 %347 %365
%370 = OpShiftRightLogical %9 %140 %162
%371 = OpCompositeExtract %5 %370 0
%372 = OpCompositeExtract %5 %370 1
%373 = OpIAdd %5 %185 %371
%374 = OpULessThan %189 %185 %372
%375 = OpSelect %5 %374 %373 %192
%376 = OpAccessChain %193 %114 %95 %375
%377 = OpLoad %14 %376
%378 = OpConvertUToF %302 %377
%379 = OpFAdd %302 %367 %378
%380 = OpFAdd %302 %368 %378
%381 = OpFAdd %302 %369 %378
%382 = OpShiftRightLogical %9 %140 %172
%383 = OpCompositeExtract %5 %382 0
%384 = OpCompositeExtract %5 %382 1
%385 = OpIAdd %5 %185 %383
%386 = OpULessThan %189 %185 %384
%387 = OpSelect %5 %386 %385 %212
%388 = OpAccessChain %213 %119 %95 %387
%389 = OpLoad %20 %388
%390 = OpCompositeExtract %14 %389 0
%391 = OpCompositeExtract %14 %389 1
%392 = OpConvertUToF %302 %390
%393 = OpConvertUToF %302 %391
%394 = OpFAdd %302 %379 %392
%395 = OpFAdd %302 %380 %392
%396 = OpFAdd %302 %381 %393
%397 = OpIMul %5 %185 %92
%398 = OpShiftRightLogical %9 %140 %162
%399 = OpCompositeExtract %5 %398 0
%400 = OpCompositeExtract %5 %398 1
%401 = OpIAdd %5 %397 %399
%402 = OpULessThan %189 %397 %400
%403 = OpSelect %5 %402 %401 %192
%404 = OpAccessChain %193 %114 %95 %403
%405 = OpLoad %14 %404
%407 = OpIAdd %5 %403 %161
%406 = OpAccessChain %193 %114 %95 %407
%408 = OpLoad %14 %406
%410 = OpIAdd %5 %403 %156
%409 = OpAccessChain %193 %114 %95 %410
%411 = OpLoad %14 %409
%412 = OpCompositeConstruct %242 %405 %408 %411
%413 = OpCompositeExtract %14 %412 0
%414 = OpCompositeExtract %14 %412 1
%415 = OpCompositeExtract %14 %412 2
%416 = OpConvertUToF %302 %413
%417 = OpConvertUToF %302 %414
%418 = OpConvertUToF %302 %415
%419 = OpFAdd %302 %394 %416
%420 = OpFAdd %302 %395 %417
%421 = OpFAdd %302 %396 %418
%422 = OpShiftRightLogical %9 %140 %150
%423 = OpCompositeExtract %5 %422 0
%424 = OpCompositeExtract %5 %422 1
%425 = OpIAdd %5 %185 %423
%426 = OpULessThan %189 %185 %424
%427 = OpSelect %5 %426 %425 %272
%428 = OpAccessChain %273 %124 %95 %427
%429 = OpLoad %26 %428
%430 = OpCompositeExtract %14 %429 0
%431 = OpCompositeExtract %14 %429 1
%432 = OpCompositeExtract %14 %429 2
%433 = OpCompositeExtract %14 %429 3
%434 = OpConvertUToF %302 %430
%435 = OpConvertUToF %302 %431
%436 = OpConvertUToF %302 %432
%437 = OpConvertUToF %302 %433
%438 = OpFAdd %302 %419 %434
%439 = OpFAdd %302 %420 %435
%440 = OpFAdd %302 %421 %436
%441 = OpShiftRightLogical %9 %112 %162
%442 = OpCompositeExtract %5 %441 0
%443 = OpCompositeExtract %5 %441 1
%444 = OpIAdd %5 %185 %442
%445 = OpULessThan %189 %185 %443
%446 = OpSelect %5 %445 %444 %192
%447 = OpBitcast %14 %199
%448 = OpAccessChain %193 %97 %95 %446
OpStore %448 %447
%449 = OpShiftRightLogical %9 %112 %172
%450 = OpCompositeExtract %5 %449 0
%451 = OpCompositeExtract %5 %449 1
%452 = OpIAdd %5 %185 %450
%453 = OpULessThan %189 %185 %451
%454 = OpSelect %5 %453 %452 %212
%456 = OpBitcast %14 %455
%458 = OpBitcast %14 %457
%459 = OpCompositeConstruct %20 %456 %458
%460 = OpAccessChain %213 %102 %95 %454
OpStore %460 %459
%461 = OpIMul %5 %185 %92
%462 = OpShiftRightLogical %9 %112 %162
%463 = OpCompositeExtract %5 %462 0
%464 = OpCompositeExtract %5 %462 1
%465 = OpIAdd %5 %461 %463
%466 = OpULessThan %189 %461 %464
%467 = OpSelect %5 %466 %465 %192
%468 = OpBitcast %14 %457
%470 = OpBitcast %14 %469
%472 = OpBitcast %14 %471
%473 = OpAccessChain %193 %97 %95 %467
OpStore %473 %468
%475 = OpIAdd %5 %467 %161
%474 = OpAccessChain %193 %97 %95 %475
OpStore %474 %470
%477 = OpIAdd %5 %467 %156
%476 = OpAccessChain %193 %97 %95 %477
OpStore %476 %472
%478 = OpShiftRightLogical %9 %112 %150
%479 = OpCompositeExtract %5 %478 0
%480 = OpCompositeExtract %5 %478 1
%481 = OpIAdd %5 %185 %479
%482 = OpULessThan %189 %185 %480
%483 = OpSelect %5 %482 %481 %272
%485 = OpBitcast %14 %484
%487 = OpBitcast %14 %486
%489 = OpBitcast %14 %488
%491 = OpBitcast %14 %490
%492 = OpCompositeConstruct %26 %485 %487 %489 %491
%493 = OpAccessChain %273 %106 %95 %483
OpStore %493 %492
%494 = OpShiftRightLogical %9 %96 %162
%495 = OpCompositeExtract %5 %494 0
%496 = OpCompositeExtract %5 %494 1
%497 = OpIAdd %5 %185 %495
%498 = OpULessThan %189 %185 %496
%499 = OpSelect %5 %498 %497 %192
%501 = OpAccessChain %193 %74 %95 %499
OpStore %501 %500
%502 = OpShiftRightLogical %9 %96 %172
%503 = OpCompositeExtract %5 %502 0
%504 = OpCompositeExtract %5 %502 1
%505 = OpIAdd %5 %185 %503
%506 = OpULessThan %189 %185 %504
%507 = OpSelect %5 %506 %505 %212
%508 = OpCompositeConstruct %20 %219 %281
%509 = OpAccessChain %213 %82 %95 %507
OpStore %509 %508
%510 = OpIMul %5 %185 %92
%511 = OpShiftRightLogical %9 %96 %162
%512 = OpCompositeExtract %5 %511 0
%513 = OpCompositeExtract %5 %511 1
%514 = OpIAdd %5 %510 %512
%515 = OpULessThan %189 %510 %513
%516 = OpSelect %5 %515 %514 %192
%519 = OpAccessChain %193 %74 %95 %516
OpStore %519 %281
%521 = OpIAdd %5 %516 %161
%520 = OpAccessChain %193 %74 %95 %521
OpStore %520 %517
%523 = OpIAdd %5 %516 %156
%522 = OpAccessChain %193 %74 %95 %523
OpStore %522 %518
%524 = OpShiftRightLogical %9 %96 %150
%525 = OpCompositeExtract %5 %524 0
%526 = OpCompositeExtract %5 %524 1
%527 = OpIAdd %5 %185 %525
%528 = OpULessThan %189 %185 %526
%529 = OpSelect %5 %528 %527 %272
%534 = OpCompositeConstruct %26 %530 %531 %532 %533
%535 = OpAccessChain %273 %87 %95 %529
OpStore %535 %534
%536 = OpShiftRightLogical %9 %140 %172
%537 = OpCompositeExtract %5 %536 0
%538 = OpCompositeExtract %5 %536 1
%539 = OpIAdd %5 %185 %537
%540 = OpULessThan %189 %185 %538
%541 = OpSelect %5 %540 %539 %542
%544 = OpAccessChain %543 %129 %95 %541
%545 = OpLoad %5 %544
%546 = OpBitcast %302 %545
%547 = OpFAdd %302 %438 %546
%548 = OpFAdd %302 %439 %546
%549 = OpFAdd %302 %440 %546
%550 = OpIAdd %5 %185 %95
%552 = OpAccessChain %75 %8 %77
%553 = OpLoad %5 %552
%554 = OpIAdd %5 %553 %550
%551 = OpAccessChain %113 %36 %554
%556 = OpAccessChain %75 %8 %77
%557 = OpLoad %5 %556
%558 = OpIAdd %5 %557 %550
%555 = OpAccessChain %118 %41 %558
%559 = OpAccessChain %93 %13 %95 %558
%560 = OpLoad %9 %559
%561 = OpIMul %5 %185 %156
%562 = OpShiftRightLogical %9 %560 %162
%563 = OpCompositeExtract %5 %562 0
%564 = OpCompositeExtract %5 %562 1
%565 = OpIAdd %5 %561 %563
%566 = OpULessThan %189 %561 %564
%567 = OpSelect %5 %566 %565 %192
%568 = OpAccessChain %193 %551 %95 %567
%569 = OpLoad %14 %568
%570 = OpBitcast %196 %569
%571 = OpFConvert %302 %570
%572 = OpFAdd %302 %547 %571
%573 = OpFAdd %302 %548 %571
%574 = OpFAdd %302 %549 %571
%575 = OpFConvert %196 %572
%576 = OpFConvert %196 %573
%577 = OpIMul %5 %185 %156
%578 = OpShiftRightLogical %9 %560 %172
%579 = OpCompositeExtract %5 %578 0
%580 = OpCompositeExtract %5 %578 1
%581 = OpIAdd %5 %577 %579
%582 = OpULessThan %189 %577 %580
%583 = OpSelect %5 %582 %581 %212
%584 = OpBitcast %14 %575
%585 = OpBitcast %14 %576
%586 = OpCompositeConstruct %20 %584 %585
%587 = OpAccessChain %213 %555 %95 %583
OpStore %587 %586
%588 = OpCompositeExtract %5 %179 1
%589 = OpUDiv %5 %588 %161
%590 = OpConvertUToF %302 %589
%591 = OpFAdd %302 %590 %572
%592 = OpFAdd %302 %573 %593
%594 = OpCompositeExtract %5 %149 1
%595 = OpUDiv %5 %594 %161
%596 = OpConvertUToF %302 %595
%597 = OpFAdd %302 %574 %596
%598 = OpFAdd %302 %303 %599
%600 = OpFAdd %302 %598 %318
%601 = OpFAdd %302 %600 %342
%602 = OpFAdd %302 %601 %366
%603 = OpFAdd %302 %602 %378
%604 = OpFAdd %302 %603 %393
%605 = OpFAdd %302 %604 %416
%606 = OpFAdd %302 %605 %437
%607 = OpFAdd %302 %606 %546
%608 = OpFAdd %302 %607 %571
%609 = OpCompositeExtract %5 %112 1
%610 = OpIMul %5 %609 %611
%612 = OpConvertUToF %302 %610
%613 = OpFAdd %302 %591 %612
%614 = OpConvertFToU %5 %613
%615 = OpConvertFToU %5 %592
%616 = OpConvertFToU %5 %597
%617 = OpConvertFToU %5 %608
%618 = OpShiftLeftLogical %5 %185 %77
%619 = OpShiftRightLogical %9 %140 %620
%621 = OpCompositeExtract %5 %619 0
%622 = OpCompositeExtract %5 %619 1
%623 = OpIAdd %5 %185 %621
%624 = OpULessThan %189 %185 %622
%625 = OpSelect %5 %624 %623 %626
%627 = OpCompositeConstruct %52 %614 %615 %616 %617
%629 = OpAccessChain %628 %134 %95 %625
OpStore %629 %627
OpReturn
OpFunctionEnd
#endif
