#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_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 = 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);
    uint _321 = gl_GlobalInvocationID.x * 3u;
    uvec2 _322 = _13._m0[_138] >> uvec2(1u);
    uint _327 = (_321 < _322.y) ? (_321 + _322.x) : 2147483644u;
    uint16_t _329 = _36[_117]._m0[_327];
    uint16_t _332 = _36[_117]._m0[_327 + 1u];
    uint16_t _335 = _36[_117]._m0[_327 + 2u];
    f16vec3 _337 = uint16BitsToFloat16(u16vec3(_329, _332, _335));
    float _341 = float(_337.x);
    uvec2 _346 = _13._m0[_138] >> uvec2(3u);
    u16vec4 _353 = _46[_127]._m0[(gl_GlobalInvocationID.x < _346.y) ? (gl_GlobalInvocationID.x + _346.x) : 536870911u];
    f16vec4 _355 = uint16BitsToFloat16(_353);
    uvec2 _365 = _13._m0[_138] >> uvec2(1u);
    uint16_t _372 = _36[_117]._m0[(gl_GlobalInvocationID.x < _365.y) ? (gl_GlobalInvocationID.x + _365.x) : 2147483644u];
    float _373 = float(_372);
    uvec2 _375 = _13._m0[_138] >> uvec2(2u);
    uint _380 = (gl_GlobalInvocationID.x < _375.y) ? (gl_GlobalInvocationID.x + _375.x) : 1073741823u;
    u16vec2 _382 = _41[_122]._m0[_380];
    float _386 = float(_382.y);
    uint _388 = gl_GlobalInvocationID.x * 3u;
    uvec2 _389 = _13._m0[_138] >> uvec2(1u);
    uint _394 = (_388 < _389.y) ? (_388 + _389.x) : 2147483644u;
    uint16_t _396 = _36[_117]._m0[_394];
    uint16_t _399 = _36[_117]._m0[_394 + 1u];
    uint16_t _402 = _36[_117]._m0[_394 + 2u];
    u16vec3 _403 = u16vec3(_396, _399, _402);
    float _407 = float(_403.x);
    uvec2 _411 = _13._m0[_138] >> uvec2(3u);
    uint _416 = (gl_GlobalInvocationID.x < _411.y) ? (gl_GlobalInvocationID.x + _411.x) : 536870911u;
    u16vec4 _418 = _46[_127]._m0[_416];
    uvec2 _428 = _13._m0[_110] >> uvec2(1u);
    _62[_100]._m0[(gl_GlobalInvocationID.x < _428.y) ? (gl_GlobalInvocationID.x + _428.x) : 2147483644u] = float16BitsToUint16(float16_t(1.0));
    uvec2 _436 = _13._m0[_110] >> uvec2(2u);
    _67[registers._m4 + 5u]._m0[(gl_GlobalInvocationID.x < _436.y) ? (gl_GlobalInvocationID.x + _436.x) : 1073741823u] = u16vec2(float16BitsToUint16(float16_t(2.0)), float16BitsToUint16(float16_t(4.0)));
    uint _448 = gl_GlobalInvocationID.x * 3u;
    uvec2 _449 = _13._m0[_110] >> uvec2(1u);
    uint _454 = (_448 < _449.y) ? (_448 + _449.x) : 2147483644u;
    _62[_100]._m0[_454] = float16BitsToUint16(float16_t(4.0));
    _62[_100]._m0[_454 + 1u] = float16BitsToUint16(float16_t(5.0));
    _62[_100]._m0[_454 + 2u] = float16BitsToUint16(float16_t(6.0));
    uvec2 _465 = _13._m0[_110] >> uvec2(3u);
    _72[_109]._m0[(gl_GlobalInvocationID.x < _465.y) ? (gl_GlobalInvocationID.x + _465.x) : 536870911u] = u16vec4(float16BitsToUint16(float16_t(7.0)), float16BitsToUint16(float16_t(8.0)), float16BitsToUint16(float16_t(9.0)), float16BitsToUint16(float16_t(10.0)));
    uvec2 _481 = _13._m0[_91] >> uvec2(1u);
    _62[_79]._m0[(gl_GlobalInvocationID.x < _481.y) ? (gl_GlobalInvocationID.x + _481.x) : 2147483644u] = 1us;
    uvec2 _489 = _13._m0[_91] >> uvec2(2u);
    _67[registers._m4 + 6u]._m0[(gl_GlobalInvocationID.x < _489.y) ? (gl_GlobalInvocationID.x + _489.x) : 1073741823u] = u16vec2(2us, 4us);
    uint _497 = gl_GlobalInvocationID.x * 3u;
    uvec2 _498 = _13._m0[_91] >> uvec2(1u);
    uint _503 = (_497 < _498.y) ? (_497 + _498.x) : 2147483644u;
    _62[_79]._m0[_503] = 4us;
    _62[_79]._m0[_503 + 1u] = 5us;
    _62[_79]._m0[_503 + 2u] = 6us;
    uvec2 _511 = _13._m0[_91] >> uvec2(3u);
    _72[_90]._m0[(gl_GlobalInvocationID.x < _511.y) ? (gl_GlobalInvocationID.x + _511.x) : 536870911u] = u16vec4(7us, 8us, 9us, 10us);
    uvec2 _523 = _13._m0[_138] >> uvec2(2u);
    uint _532 = _51[registers._m4 + 4u]._m0[(gl_GlobalInvocationID.x < _523.y) ? (gl_GlobalInvocationID.x + _523.x) : 1073741820u];
    float _533 = uintBitsToFloat(_532);
    uint _535 = gl_GlobalInvocationID.x + 0u;
    uint _543 = registers._m4 + _535;
    uint _546 = gl_GlobalInvocationID.x * 2u;
    uvec2 _547 = _13._m0[_543] >> uvec2(1u);
    uint16_t _554 = _36[nonuniformEXT(registers._m4 + _535)]._m0[(_546 < _547.y) ? (_546 + _547.x) : 2147483644u];
    float _556 = float(uint16BitsToFloat16(_554));
    float _559 = ((float(_314.x) + _303) + _373) + float(_382.x);
    float _565 = (((((_559 + _341) + float(_355.x)) + _407) + float(_418.x)) + _533) + _556;
    float _571 = (((((_559 + float(_337.y)) + float(_355.y)) + float(_403.y)) + float(_418.y)) + _533) + _556;
    uint _575 = gl_GlobalInvocationID.x * 2u;
    uvec2 _576 = _13._m0[_543] >> uvec2(2u);
    _41[nonuniformEXT(_543)]._m0[(_575 < _576.y) ? (_575 + _576.x) : 1073741823u] = u16vec2(float16BitsToUint16(float16_t(_565)), float16BitsToUint16(float16_t(_571)));
    uvec2 _617 = _13._m0[_138] >> uvec2(4u);
    _57[_137]._m0[(gl_GlobalInvocationID.x < _617.y) ? (gl_GlobalInvocationID.x + _617.x) : 268435455u] = uvec4(uint((float(_179.y / 1u) + _565) + float(_13._m0[_110].y * 8u)), uint(_571 + 2.0), uint((((((((((_318 + _303) + float(_337.z)) + float(_355.z)) + _373) + _386) + float(_403.z)) + float(_418.z)) + _533) + _556) + float(_149.y / 1u)), uint((((((((((_303 + 8.0) + _318) + _341) + float(_355.w)) + _373) + _386) + _407) + float(_418.w)) + _533) + _556));
}


#if 0
// SPIR-V disassembly
; SPIR-V
; Version: 1.3
; Generator: Unknown(30017); 21022
; Bound: 630
; 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 %539 NonUniform
OpDecorate %536 NonUniform
OpDecorate %543 NonUniform
OpDecorate %540 NonUniform
OpDecorate %553 NonUniform
OpDecorate %585 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
%354 = OpTypeVector %196 4
%442 = OpConstant %196 0x1p+1
%444 = OpConstant %196 0x1p+2
%456 = OpConstant %196 0x1.4p+2
%458 = OpConstant %196 0x1.8p+2
%471 = OpConstant %196 0x1.cp+2
%473 = OpConstant %196 0x1p+3
%475 = OpConstant %196 0x1.2p+3
%477 = OpConstant %196 0x1.4p+3
%487 = OpConstant %14 1
%504 = OpConstant %14 5
%505 = OpConstant %14 6
%517 = OpConstant %14 7
%518 = OpConstant %14 8
%519 = OpConstant %14 9
%520 = OpConstant %14 10
%529 = OpConstant %5 1073741820
%530 = OpTypePointer StorageBuffer %5
%591 = OpConstant %302 2
%597 = OpConstant %302 8
%609 = OpConstant %5 8
%618 = OpConstantComposite %9 %77 %77
%624 = OpConstant %5 268435455
%626 = OpTypePointer StorageBuffer %52
%3 = OpFunction %1 None %2
%4 = OpLabel
OpBranch %628
%628 = 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 %318 %303
%320 = OpIMul %5 %185 %80
%321 = OpIMul %5 %185 %92
%322 = OpShiftRightLogical %9 %140 %162
%323 = OpCompositeExtract %5 %322 0
%324 = OpCompositeExtract %5 %322 1
%325 = OpIAdd %5 %321 %323
%326 = OpULessThan %189 %321 %324
%327 = OpSelect %5 %326 %325 %192
%328 = OpAccessChain %193 %114 %95 %327
%329 = OpLoad %14 %328
%331 = OpIAdd %5 %327 %161
%330 = OpAccessChain %193 %114 %95 %331
%332 = OpLoad %14 %330
%334 = OpIAdd %5 %327 %156
%333 = OpAccessChain %193 %114 %95 %334
%335 = OpLoad %14 %333
%336 = OpCompositeConstruct %242 %329 %332 %335
%337 = OpBitcast %244 %336
%338 = OpCompositeExtract %196 %337 0
%339 = OpCompositeExtract %196 %337 1
%340 = OpCompositeExtract %196 %337 2
%341 = OpFConvert %302 %338
%342 = OpFConvert %302 %339
%343 = OpFConvert %302 %340
%344 = OpFAdd %302 %319 %343
%345 = OpShiftLeftLogical %5 %185 %92
%346 = OpShiftRightLogical %9 %140 %150
%347 = OpCompositeExtract %5 %346 0
%348 = OpCompositeExtract %5 %346 1
%349 = OpIAdd %5 %185 %347
%350 = OpULessThan %189 %185 %348
%351 = OpSelect %5 %350 %349 %272
%352 = OpAccessChain %273 %124 %95 %351
%353 = OpLoad %26 %352
%355 = OpBitcast %354 %353
%356 = OpCompositeExtract %196 %355 0
%357 = OpCompositeExtract %196 %355 1
%358 = OpCompositeExtract %196 %355 2
%359 = OpCompositeExtract %196 %355 3
%360 = OpFConvert %302 %356
%361 = OpFConvert %302 %357
%362 = OpFConvert %302 %358
%363 = OpFConvert %302 %359
%364 = OpFAdd %302 %344 %362
%365 = OpShiftRightLogical %9 %140 %162
%366 = OpCompositeExtract %5 %365 0
%367 = OpCompositeExtract %5 %365 1
%368 = OpIAdd %5 %185 %366
%369 = OpULessThan %189 %185 %367
%370 = OpSelect %5 %369 %368 %192
%371 = OpAccessChain %193 %114 %95 %370
%372 = OpLoad %14 %371
%373 = OpConvertUToF %302 %372
%374 = OpFAdd %302 %364 %373
%375 = OpShiftRightLogical %9 %140 %172
%376 = OpCompositeExtract %5 %375 0
%377 = OpCompositeExtract %5 %375 1
%378 = OpIAdd %5 %185 %376
%379 = OpULessThan %189 %185 %377
%380 = OpSelect %5 %379 %378 %212
%381 = OpAccessChain %213 %119 %95 %380
%382 = OpLoad %20 %381
%383 = OpCompositeExtract %14 %382 0
%384 = OpCompositeExtract %14 %382 1
%385 = OpConvertUToF %302 %383
%386 = OpConvertUToF %302 %384
%387 = OpFAdd %302 %374 %386
%388 = OpIMul %5 %185 %92
%389 = OpShiftRightLogical %9 %140 %162
%390 = OpCompositeExtract %5 %389 0
%391 = OpCompositeExtract %5 %389 1
%392 = OpIAdd %5 %388 %390
%393 = OpULessThan %189 %388 %391
%394 = OpSelect %5 %393 %392 %192
%395 = OpAccessChain %193 %114 %95 %394
%396 = OpLoad %14 %395
%398 = OpIAdd %5 %394 %161
%397 = OpAccessChain %193 %114 %95 %398
%399 = OpLoad %14 %397
%401 = OpIAdd %5 %394 %156
%400 = OpAccessChain %193 %114 %95 %401
%402 = OpLoad %14 %400
%403 = OpCompositeConstruct %242 %396 %399 %402
%404 = OpCompositeExtract %14 %403 0
%405 = OpCompositeExtract %14 %403 1
%406 = OpCompositeExtract %14 %403 2
%407 = OpConvertUToF %302 %404
%408 = OpConvertUToF %302 %405
%409 = OpConvertUToF %302 %406
%410 = OpFAdd %302 %387 %409
%411 = OpShiftRightLogical %9 %140 %150
%412 = OpCompositeExtract %5 %411 0
%413 = OpCompositeExtract %5 %411 1
%414 = OpIAdd %5 %185 %412
%415 = OpULessThan %189 %185 %413
%416 = OpSelect %5 %415 %414 %272
%417 = OpAccessChain %273 %124 %95 %416
%418 = OpLoad %26 %417
%419 = OpCompositeExtract %14 %418 0
%420 = OpCompositeExtract %14 %418 1
%421 = OpCompositeExtract %14 %418 2
%422 = OpCompositeExtract %14 %418 3
%423 = OpConvertUToF %302 %419
%424 = OpConvertUToF %302 %420
%425 = OpConvertUToF %302 %421
%426 = OpConvertUToF %302 %422
%427 = OpFAdd %302 %410 %425
%428 = OpShiftRightLogical %9 %112 %162
%429 = OpCompositeExtract %5 %428 0
%430 = OpCompositeExtract %5 %428 1
%431 = OpIAdd %5 %185 %429
%432 = OpULessThan %189 %185 %430
%433 = OpSelect %5 %432 %431 %192
%434 = OpBitcast %14 %199
%435 = OpAccessChain %193 %97 %95 %433
OpStore %435 %434
%436 = OpShiftRightLogical %9 %112 %172
%437 = OpCompositeExtract %5 %436 0
%438 = OpCompositeExtract %5 %436 1
%439 = OpIAdd %5 %185 %437
%440 = OpULessThan %189 %185 %438
%441 = OpSelect %5 %440 %439 %212
%443 = OpBitcast %14 %442
%445 = OpBitcast %14 %444
%446 = OpCompositeConstruct %20 %443 %445
%447 = OpAccessChain %213 %102 %95 %441
OpStore %447 %446
%448 = OpIMul %5 %185 %92
%449 = OpShiftRightLogical %9 %112 %162
%450 = OpCompositeExtract %5 %449 0
%451 = OpCompositeExtract %5 %449 1
%452 = OpIAdd %5 %448 %450
%453 = OpULessThan %189 %448 %451
%454 = OpSelect %5 %453 %452 %192
%455 = OpBitcast %14 %444
%457 = OpBitcast %14 %456
%459 = OpBitcast %14 %458
%460 = OpAccessChain %193 %97 %95 %454
OpStore %460 %455
%462 = OpIAdd %5 %454 %161
%461 = OpAccessChain %193 %97 %95 %462
OpStore %461 %457
%464 = OpIAdd %5 %454 %156
%463 = OpAccessChain %193 %97 %95 %464
OpStore %463 %459
%465 = OpShiftRightLogical %9 %112 %150
%466 = OpCompositeExtract %5 %465 0
%467 = OpCompositeExtract %5 %465 1
%468 = OpIAdd %5 %185 %466
%469 = OpULessThan %189 %185 %467
%470 = OpSelect %5 %469 %468 %272
%472 = OpBitcast %14 %471
%474 = OpBitcast %14 %473
%476 = OpBitcast %14 %475
%478 = OpBitcast %14 %477
%479 = OpCompositeConstruct %26 %472 %474 %476 %478
%480 = OpAccessChain %273 %106 %95 %470
OpStore %480 %479
%481 = OpShiftRightLogical %9 %96 %162
%482 = OpCompositeExtract %5 %481 0
%483 = OpCompositeExtract %5 %481 1
%484 = OpIAdd %5 %185 %482
%485 = OpULessThan %189 %185 %483
%486 = OpSelect %5 %485 %484 %192
%488 = OpAccessChain %193 %74 %95 %486
OpStore %488 %487
%489 = OpShiftRightLogical %9 %96 %172
%490 = OpCompositeExtract %5 %489 0
%491 = OpCompositeExtract %5 %489 1
%492 = OpIAdd %5 %185 %490
%493 = OpULessThan %189 %185 %491
%494 = OpSelect %5 %493 %492 %212
%495 = OpCompositeConstruct %20 %219 %281
%496 = OpAccessChain %213 %82 %95 %494
OpStore %496 %495
%497 = OpIMul %5 %185 %92
%498 = OpShiftRightLogical %9 %96 %162
%499 = OpCompositeExtract %5 %498 0
%500 = OpCompositeExtract %5 %498 1
%501 = OpIAdd %5 %497 %499
%502 = OpULessThan %189 %497 %500
%503 = OpSelect %5 %502 %501 %192
%506 = OpAccessChain %193 %74 %95 %503
OpStore %506 %281
%508 = OpIAdd %5 %503 %161
%507 = OpAccessChain %193 %74 %95 %508
OpStore %507 %504
%510 = OpIAdd %5 %503 %156
%509 = OpAccessChain %193 %74 %95 %510
OpStore %509 %505
%511 = OpShiftRightLogical %9 %96 %150
%512 = OpCompositeExtract %5 %511 0
%513 = OpCompositeExtract %5 %511 1
%514 = OpIAdd %5 %185 %512
%515 = OpULessThan %189 %185 %513
%516 = OpSelect %5 %515 %514 %272
%521 = OpCompositeConstruct %26 %517 %518 %519 %520
%522 = OpAccessChain %273 %87 %95 %516
OpStore %522 %521
%523 = OpShiftRightLogical %9 %140 %172
%524 = OpCompositeExtract %5 %523 0
%525 = OpCompositeExtract %5 %523 1
%526 = OpIAdd %5 %185 %524
%527 = OpULessThan %189 %185 %525
%528 = OpSelect %5 %527 %526 %529
%531 = OpAccessChain %530 %129 %95 %528
%532 = OpLoad %5 %531
%533 = OpBitcast %302 %532
%534 = OpFAdd %302 %427 %533
%535 = OpIAdd %5 %185 %95
%537 = OpAccessChain %75 %8 %77
%538 = OpLoad %5 %537
%539 = OpIAdd %5 %538 %535
%536 = OpAccessChain %113 %36 %539
%541 = OpAccessChain %75 %8 %77
%542 = OpLoad %5 %541
%543 = OpIAdd %5 %542 %535
%540 = OpAccessChain %118 %41 %543
%544 = OpAccessChain %93 %13 %95 %543
%545 = OpLoad %9 %544
%546 = OpIMul %5 %185 %156
%547 = OpShiftRightLogical %9 %545 %162
%548 = OpCompositeExtract %5 %547 0
%549 = OpCompositeExtract %5 %547 1
%550 = OpIAdd %5 %546 %548
%551 = OpULessThan %189 %546 %549
%552 = OpSelect %5 %551 %550 %192
%553 = OpAccessChain %193 %536 %95 %552
%554 = OpLoad %14 %553
%555 = OpBitcast %196 %554
%556 = OpFConvert %302 %555
%557 = OpFAdd %302 %317 %303
%558 = OpFAdd %302 %557 %373
%559 = OpFAdd %302 %558 %385
%560 = OpFAdd %302 %559 %341
%561 = OpFAdd %302 %560 %360
%562 = OpFAdd %302 %561 %407
%563 = OpFAdd %302 %562 %423
%564 = OpFAdd %302 %563 %533
%565 = OpFAdd %302 %564 %556
%566 = OpFAdd %302 %559 %342
%567 = OpFAdd %302 %566 %361
%568 = OpFAdd %302 %567 %408
%569 = OpFAdd %302 %568 %424
%570 = OpFAdd %302 %569 %533
%571 = OpFAdd %302 %570 %556
%572 = OpFAdd %302 %534 %556
%573 = OpFConvert %196 %565
%574 = OpFConvert %196 %571
%575 = OpIMul %5 %185 %156
%576 = OpShiftRightLogical %9 %545 %172
%577 = OpCompositeExtract %5 %576 0
%578 = OpCompositeExtract %5 %576 1
%579 = OpIAdd %5 %575 %577
%580 = OpULessThan %189 %575 %578
%581 = OpSelect %5 %580 %579 %212
%582 = OpBitcast %14 %573
%583 = OpBitcast %14 %574
%584 = OpCompositeConstruct %20 %582 %583
%585 = OpAccessChain %213 %540 %95 %581
OpStore %585 %584
%586 = OpCompositeExtract %5 %179 1
%587 = OpUDiv %5 %586 %161
%588 = OpConvertUToF %302 %587
%589 = OpFAdd %302 %588 %565
%590 = OpFAdd %302 %571 %591
%592 = OpCompositeExtract %5 %149 1
%593 = OpUDiv %5 %592 %161
%594 = OpConvertUToF %302 %593
%595 = OpFAdd %302 %572 %594
%596 = OpFAdd %302 %303 %597
%598 = OpFAdd %302 %596 %318
%599 = OpFAdd %302 %598 %341
%600 = OpFAdd %302 %599 %363
%601 = OpFAdd %302 %600 %373
%602 = OpFAdd %302 %601 %386
%603 = OpFAdd %302 %602 %407
%604 = OpFAdd %302 %603 %426
%605 = OpFAdd %302 %604 %533
%606 = OpFAdd %302 %605 %556
%607 = OpCompositeExtract %5 %112 1
%608 = OpIMul %5 %607 %609
%610 = OpConvertUToF %302 %608
%611 = OpFAdd %302 %589 %610
%612 = OpConvertFToU %5 %611
%613 = OpConvertFToU %5 %590
%614 = OpConvertFToU %5 %595
%615 = OpConvertFToU %5 %606
%616 = OpShiftLeftLogical %5 %185 %77
%617 = OpShiftRightLogical %9 %140 %618
%619 = OpCompositeExtract %5 %617 0
%620 = OpCompositeExtract %5 %617 1
%621 = OpIAdd %5 %185 %619
%622 = OpULessThan %189 %185 %620
%623 = OpSelect %5 %622 %621 %624
%625 = OpCompositeConstruct %52 %612 %613 %614 %615
%627 = OpAccessChain %626 %134 %95 %623
OpStore %627 %625
OpReturn
OpFunctionEnd
#endif
