#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_EXT_scalar_block_layout : require
layout(local_size_x = 64, local_size_y = 1, local_size_z = 1) in;

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

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

layout(set = 4, binding = 0, scalar) buffer _23_26
{
    u16vec3 _m0[];
} _26[];

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

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

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

layout(set = 4, binding = 0, scalar) buffer _44_47
{
    u16vec3 _m0[];
} _47[];

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

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

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

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

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

layout(set = 4, binding = 0, scalar) writeonly buffer _75_78
{
    u16vec3 _m0[];
} _78[];

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

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 _123 = registers._m4 + 5u;
    uint _128 = registers._m4 + 4u;
    uint _133 = registers._m4 + 4u;
    uint _138 = registers._m4 + 4u;
    uint _143 = registers._m4 + 4u;
    uint _158 = registers._m4 + 3u;
    uint _164 = registers._m4 + 2u;
    uint _170 = registers._m4 + 1u;
    _14[registers._m4]._m0[gl_GlobalInvocationID.x] = float16BitsToUint16(uint16BitsToFloat16(_14[registers._m4]._m0[gl_GlobalInvocationID.x]) + float16_t(1.0));
    _20[_170]._m0[gl_GlobalInvocationID.x] = u16vec2(_20[_170]._m0[gl_GlobalInvocationID.x].x + 2us, _20[_170]._m0[gl_GlobalInvocationID.x].y + 2us);
    f16vec3 _206 = uint16BitsToFloat16(_26[_164]._m0[gl_GlobalInvocationID.x]);
    _26[_164]._m0[gl_GlobalInvocationID.x] = u16vec3(float16BitsToUint16(_206.x + float16_t(3.0)), float16BitsToUint16(_206.y + float16_t(3.0)), float16BitsToUint16(_206.z + float16_t(3.0)));
    _32[_158]._m0[gl_GlobalInvocationID.x] = u16vec4(_32[_158]._m0[gl_GlobalInvocationID.x].x + 4us, _32[_158]._m0[gl_GlobalInvocationID.x].y + 4us, _32[_158]._m0[gl_GlobalInvocationID.x].z + 4us, _32[_158]._m0[gl_GlobalInvocationID.x].w + 4us);
    uint16_t _235 = _37[_128]._m0[gl_GlobalInvocationID.x];
    float _238 = float(uint16BitsToFloat16(_235));
    u16vec2 _241 = _42[_133]._m0[gl_GlobalInvocationID.x];
    f16vec2 _243 = uint16BitsToFloat16(_241);
    float _247 = float(_243.y);
    float _248 = float(_243.x) + _238;
    u16vec3 _252 = _47[_138]._m0[gl_GlobalInvocationID.x];
    f16vec3 _253 = uint16BitsToFloat16(_252);
    float _257 = float(_253.x);
    u16vec4 _265 = _52[_143]._m0[gl_GlobalInvocationID.x];
    f16vec4 _267 = uint16BitsToFloat16(_265);
    uint16_t _280 = _37[_128]._m0[gl_GlobalInvocationID.x];
    float _281 = float(_280);
    u16vec2 _286 = _42[_133]._m0[gl_GlobalInvocationID.x];
    float _289 = float(_286.x);
    float _290 = float(_286.y);
    u16vec3 _295 = _47[_138]._m0[gl_GlobalInvocationID.x];
    float _299 = float(_295.x);
    u16vec4 _306 = _52[_143]._m0[gl_GlobalInvocationID.x];
    _68[registers._m4 + 5u]._m0[gl_GlobalInvocationID.x] = float16BitsToUint16(float16_t(1.0));
    _73[registers._m4 + 5u]._m0[gl_GlobalInvocationID.x] = u16vec2(float16BitsToUint16(float16_t(2.0)), float16BitsToUint16(float16_t(4.0)));
    _78[registers._m4 + 5u]._m0[gl_GlobalInvocationID.x] = u16vec3(float16BitsToUint16(float16_t(4.0)), float16BitsToUint16(float16_t(5.0)), float16BitsToUint16(float16_t(6.0)));
    _83[_123]._m0[gl_GlobalInvocationID.x] = u16vec4(float16BitsToUint16(float16_t(7.0)), float16BitsToUint16(float16_t(8.0)), float16BitsToUint16(float16_t(9.0)), float16BitsToUint16(float16_t(10.0)));
    _68[registers._m4 + 6u]._m0[gl_GlobalInvocationID.x] = 1us;
    _73[registers._m4 + 6u]._m0[gl_GlobalInvocationID.x] = u16vec2(2us, 4us);
    _78[registers._m4 + 6u]._m0[gl_GlobalInvocationID.x] = u16vec3(4us, 5us, 6us);
    _83[registers._m4 + 6u]._m0[gl_GlobalInvocationID.x] = u16vec4(7us, 8us, 9us, 10us);
    uint _359 = _57[registers._m4 + 4u]._m0[gl_GlobalInvocationID.x];
    float _360 = uintBitsToFloat(_359);
    uint _364 = gl_GlobalInvocationID.x + 0u;
    uint16_t _375 = _37[nonuniformEXT(registers._m4 + _364)]._m0[gl_GlobalInvocationID.x * 2u];
    float _377 = float(uint16BitsToFloat16(_375));
    float _378 = (((((((_248 + _257) + float(_267.x)) + _281) + _289) + _299) + float(_306.x)) + _360) + _377;
    float _379 = (((((((_248 + float(_253.y)) + float(_267.y)) + _281) + _289) + float(_295.y)) + float(_306.y)) + _360) + _377;
    _42[nonuniformEXT(registers._m4 + _364)]._m0[gl_GlobalInvocationID.x * 2u] = u16vec2(float16BitsToUint16(float16_t(_378)), float16BitsToUint16(float16_t(_379)));
    _63[registers._m4 + 4u]._m0[gl_GlobalInvocationID.x] = uvec4(uint((float(uint(_14[registers._m4]._m0.length()) / 1u) + _378) + float(uint(_83[_123]._m0.length()) * 8u)), uint(_379 + 2.0), uint((((((((((_247 + _238) + float(_253.z)) + float(_267.z)) + _281) + _290) + float(_295.z)) + float(_306.z)) + _360) + _377) + float(uint(_32[_158]._m0.length()) / 1u)), uint((((((((((_238 + 8.0) + _247) + _257) + float(_267.w)) + _281) + _290) + _299) + float(_306.w)) + _360) + _377));
}


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