; SPIR-V
; Version: 1.1
; Generator: rspirv
; Bound: 200
OpCapability Shader
OpCapability Linkage
OpExtension "SPV_KHR_storage_buffer_storage_class"
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpDecorate %4 ArrayStride 4
OpDecorate %9 ArrayStride 4
OpMemberDecorate %10 0 Offset 0
OpMemberDecorate %10 1 Offset 48
OpMemberDecorate %10 2 Offset 64
OpMemberDecorate %10 2 ColMajor
OpMemberDecorate %10 2 MatrixStride 16
OpMemberDecorate %10 3 Offset 112
OpDecorate %10 Block
OpDecorate %12 DescriptorSet 0
OpDecorate %12 Binding 0
%2 = OpTypeVoid
%3 = OpTypeFloat 32
%6 = OpTypeInt 32 0
%5 = OpConstant  %6  10
%4 = OpTypeArray %3 %5
%7 = OpTypeVector %3 4
%8 = OpTypeMatrix %7 3
%9 = OpTypeRuntimeArray %3
%10 = OpTypeStruct %4 %7 %8 %9
%11 = OpTypeInt 32 1
%13 = OpTypePointer StorageBuffer %10
%12 = OpVariable  %13  StorageBuffer
%17 = OpTypeFunction %3 %11
%19 = OpTypePointer StorageBuffer %4
%20 = OpTypePointer StorageBuffer %3
%22 = OpTypeBool
%23 = OpConstant  %6  0
%25 = OpConstantNull  %3
%34 = OpTypePointer StorageBuffer %9
%37 = OpConstant  %6  3
%47 = OpTypePointer StorageBuffer %7
%48 = OpTypePointer StorageBuffer %3
%49 = OpConstant  %6  4
%51 = OpConstant  %6  1
%61 = OpTypeFunction %3 %7 %11
%71 = OpTypeFunction %7 %11
%73 = OpTypePointer StorageBuffer %8
%74 = OpTypePointer StorageBuffer %7
%76 = OpConstant  %6  2
%78 = OpConstantNull  %7
%87 = OpTypeFunction %3 %11 %11
%100 = OpConstant  %3  100.0
%115 = OpTypeFunction %3
%117 = OpConstant  %6  9
%130 = OpTypeFunction %2 %11 %3
%159 = OpTypeFunction %2 %11 %7
%170 = OpTypeFunction %2 %11 %11 %3
%195 = OpTypeFunction %2 %3
%16 = OpFunction  %3  None %17
%15 = OpFunctionParameter  %11
%14 = OpLabel
OpBranch %18
%18 = OpLabel
%21 = OpULessThan  %22  %15 %5
OpSelectionMerge %26 None
OpBranchConditional %21 %27 %26
%27 = OpLabel
%24 = OpAccessChain  %20  %12 %23 %15
%28 = OpLoad  %3  %24
OpBranch %26
%26 = OpLabel
%29 = OpPhi  %3  %25 %18 %28 %27
OpReturnValue %29
OpFunctionEnd
%32 = OpFunction  %3  None %17
%31 = OpFunctionParameter  %11
%30 = OpLabel
OpBranch %33
%33 = OpLabel
%35 = OpArrayLength  %6  %12 3
%36 = OpULessThan  %22  %31 %35
OpSelectionMerge %39 None
OpBranchConditional %36 %40 %39
%40 = OpLabel
%38 = OpAccessChain  %20  %12 %37 %31
%41 = OpLoad  %3  %38
OpBranch %39
%39 = OpLabel
%42 = OpPhi  %3  %25 %33 %41 %40
OpReturnValue %42
OpFunctionEnd
%45 = OpFunction  %3  None %17
%44 = OpFunctionParameter  %11
%43 = OpLabel
OpBranch %46
%46 = OpLabel
%50 = OpULessThan  %22  %44 %49
OpSelectionMerge %53 None
OpBranchConditional %50 %54 %53
%54 = OpLabel
%52 = OpAccessChain  %48  %12 %51 %44
%55 = OpLoad  %3  %52
OpBranch %53
%53 = OpLabel
%56 = OpPhi  %3  %25 %46 %55 %54
OpReturnValue %56
OpFunctionEnd
%60 = OpFunction  %3  None %61
%58 = OpFunctionParameter  %7
%59 = OpFunctionParameter  %11
%57 = OpLabel
OpBranch %62
%62 = OpLabel
%63 = OpULessThan  %22  %59 %49
OpSelectionMerge %64 None
OpBranchConditional %63 %65 %64
%65 = OpLabel
%66 = OpVectorExtractDynamic  %3  %58 %59
OpBranch %64
%64 = OpLabel
%67 = OpPhi  %3  %25 %62 %66 %65
OpReturnValue %67
OpFunctionEnd
%70 = OpFunction  %7  None %71
%69 = OpFunctionParameter  %11
%68 = OpLabel
OpBranch %72
%72 = OpLabel
%75 = OpULessThan  %22  %69 %37
OpSelectionMerge %79 None
OpBranchConditional %75 %80 %79
%80 = OpLabel
%77 = OpAccessChain  %74  %12 %76 %69
%81 = OpLoad  %7  %77
OpBranch %79
%79 = OpLabel
%82 = OpPhi  %7  %78 %72 %81 %80
OpReturnValue %82
OpFunctionEnd
%86 = OpFunction  %3  None %87
%84 = OpFunctionParameter  %11
%85 = OpFunctionParameter  %11
%83 = OpLabel
OpBranch %88
%88 = OpLabel
%89 = OpULessThan  %22  %85 %49
%90 = OpULessThan  %22  %84 %37
%91 = OpLogicalAnd  %22  %89 %90
OpSelectionMerge %93 None
OpBranchConditional %91 %94 %93
%94 = OpLabel
%92 = OpAccessChain  %48  %12 %76 %84 %85
%95 = OpLoad  %3  %92
OpBranch %93
%93 = OpLabel
%96 = OpPhi  %3  %25 %88 %95 %94
OpReturnValue %96
OpFunctionEnd
%99 = OpFunction  %3  None %17
%98 = OpFunctionParameter  %11
%97 = OpLabel
OpBranch %101
%101 = OpLabel
%102 = OpConvertSToF  %3  %98
%103 = OpFDiv  %3  %102 %100
%104 = OpExtInst  %3  %1 Sin %103
%105 = OpFMul  %3  %104 %100
%106 = OpConvertFToS  %11  %105
%107 = OpULessThan  %22  %106 %5
OpSelectionMerge %109 None
OpBranchConditional %107 %110 %109
%110 = OpLabel
%108 = OpAccessChain  %20  %12 %23 %106
%111 = OpLoad  %3  %108
OpBranch %109
%109 = OpLabel
%112 = OpPhi  %3  %25 %101 %111 %110
OpReturnValue %112
OpFunctionEnd
%114 = OpFunction  %3  None %115
%113 = OpLabel
OpBranch %116
%116 = OpLabel
%118 = OpAccessChain  %20  %12 %23 %117
%119 = OpLoad  %3  %118
%120 = OpAccessChain  %48  %12 %51 %37
%121 = OpLoad  %3  %120
%122 = OpFAdd  %3  %119 %121
%123 = OpAccessChain  %48  %12 %76 %76 %37
%124 = OpLoad  %3  %123
%125 = OpFAdd  %3  %122 %124
OpReturnValue %125
OpFunctionEnd
%129 = OpFunction  %2  None %130
%127 = OpFunctionParameter  %11
%128 = OpFunctionParameter  %3
%126 = OpLabel
OpBranch %131
%131 = OpLabel
%132 = OpULessThan  %22  %127 %5
OpSelectionMerge %134 None
OpBranchConditional %132 %135 %134
%135 = OpLabel
%133 = OpAccessChain  %20  %12 %23 %127
OpStore %133 %128
OpBranch %134
%134 = OpLabel
OpReturn
OpFunctionEnd
%139 = OpFunction  %2  None %130
%137 = OpFunctionParameter  %11
%138 = OpFunctionParameter  %3
%136 = OpLabel
OpBranch %140
%140 = OpLabel
%141 = OpArrayLength  %6  %12 3
%142 = OpULessThan  %22  %137 %141
OpSelectionMerge %144 None
OpBranchConditional %142 %145 %144
%145 = OpLabel
%143 = OpAccessChain  %20  %12 %37 %137
OpStore %143 %138
OpBranch %144
%144 = OpLabel
OpReturn
OpFunctionEnd
%149 = OpFunction  %2  None %130
%147 = OpFunctionParameter  %11
%148 = OpFunctionParameter  %3
%146 = OpLabel
OpBranch %150
%150 = OpLabel
%151 = OpULessThan  %22  %147 %49
OpSelectionMerge %153 None
OpBranchConditional %151 %154 %153
%154 = OpLabel
%152 = OpAccessChain  %48  %12 %51 %147
OpStore %152 %148
OpBranch %153
%153 = OpLabel
OpReturn
OpFunctionEnd
%158 = OpFunction  %2  None %159
%156 = OpFunctionParameter  %11
%157 = OpFunctionParameter  %7
%155 = OpLabel
OpBranch %160
%160 = OpLabel
%161 = OpULessThan  %22  %156 %37
OpSelectionMerge %163 None
OpBranchConditional %161 %164 %163
%164 = OpLabel
%162 = OpAccessChain  %74  %12 %76 %156
OpStore %162 %157
OpBranch %163
%163 = OpLabel
OpReturn
OpFunctionEnd
%169 = OpFunction  %2  None %170
%166 = OpFunctionParameter  %11
%167 = OpFunctionParameter  %11
%168 = OpFunctionParameter  %3
%165 = OpLabel
OpBranch %171
%171 = OpLabel
%172 = OpULessThan  %22  %167 %49
%173 = OpULessThan  %22  %166 %37
%174 = OpLogicalAnd  %22  %172 %173
OpSelectionMerge %176 None
OpBranchConditional %174 %177 %176
%177 = OpLabel
%175 = OpAccessChain  %48  %12 %76 %166 %167
OpStore %175 %168
OpBranch %176
%176 = OpLabel
OpReturn
OpFunctionEnd
%181 = OpFunction  %2  None %130
%179 = OpFunctionParameter  %11
%180 = OpFunctionParameter  %3
%178 = OpLabel
OpBranch %182
%182 = OpLabel
%183 = OpConvertSToF  %3  %179
%184 = OpFDiv  %3  %183 %100
%185 = OpExtInst  %3  %1 Sin %184
%186 = OpFMul  %3  %185 %100
%187 = OpConvertFToS  %11  %186
%188 = OpULessThan  %22  %187 %5
OpSelectionMerge %190 None
OpBranchConditional %188 %191 %190
%191 = OpLabel
%189 = OpAccessChain  %20  %12 %23 %187
OpStore %189 %180
OpBranch %190
%190 = OpLabel
OpReturn
OpFunctionEnd
%194 = OpFunction  %2  None %195
%193 = OpFunctionParameter  %3
%192 = OpLabel
OpBranch %196
%196 = OpLabel
%197 = OpAccessChain  %20  %12 %23 %117
OpStore %197 %193
%198 = OpAccessChain  %48  %12 %51 %37
OpStore %198 %193
%199 = OpAccessChain  %48  %12 %76 %76 %37
OpStore %199 %193
OpReturn
OpFunctionEnd