spv.matFun.vert
// Module Version 10000
// Generated by (magic number): 80008
// Id's are bound by 103

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Vertex 4  "main" 76 81
                              Source GLSL 400
                              Name 4  "main"
                              Name 14  "xf(mf33;vf3;"
                              Name 12  "m"
                              Name 13  "v"
                              Name 21  "Mat3(mf44;"
                              Name 20  "m"
                              Name 26  "mxv(mf44;vf3;"
                              Name 24  "m4"
                              Name 25  "v"
                              Name 65  "param"
                              Name 74  "gl_PerVertex"
                              MemberName 74(gl_PerVertex) 0  "gl_Position"
                              MemberName 74(gl_PerVertex) 1  "gl_PointSize"
                              MemberName 74(gl_PerVertex) 2  "gl_ClipDistance"
                              Name 76  ""
                              Name 77  "bl"
                              MemberName 77(bl) 0  "m4"
                              MemberName 77(bl) 1  "m3"
                              Name 79  "bName"
                              Name 81  "v3"
                              Name 82  "param"
                              Name 86  "param"
                              Name 89  "param"
                              Name 93  "param"
                              MemberDecorate 74(gl_PerVertex) 0 BuiltIn Position
                              MemberDecorate 74(gl_PerVertex) 1 BuiltIn PointSize
                              MemberDecorate 74(gl_PerVertex) 2 BuiltIn ClipDistance
                              Decorate 74(gl_PerVertex) Block
                              MemberDecorate 77(bl) 0 ColMajor
                              MemberDecorate 77(bl) 0 Offset 0
                              MemberDecorate 77(bl) 0 MatrixStride 16
                              MemberDecorate 77(bl) 1 ColMajor
                              MemberDecorate 77(bl) 1 Offset 64
                              MemberDecorate 77(bl) 1 MatrixStride 16
                              Decorate 77(bl) Block
                              Decorate 79(bName) DescriptorSet 0
                              Decorate 79(bName) Binding 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 3
               8:             TypeMatrix 7(fvec3) 3
               9:             TypePointer Function 8
              10:             TypePointer Function 7(fvec3)
              11:             TypeFunction 7(fvec3) 9(ptr) 10(ptr)
              16:             TypeVector 6(float) 4
              17:             TypeMatrix 16(fvec4) 4
              18:             TypePointer Function 17
              19:             TypeFunction 8 18(ptr)
              23:             TypeFunction 7(fvec3) 18(ptr) 10(ptr)
              33:             TypeInt 32 1
              34:     33(int) Constant 0
              35:             TypePointer Function 16(fvec4)
              39:     33(int) Constant 1
              43:     33(int) Constant 2
              47:    6(float) Constant 1065353216
              48:    6(float) Constant 0
              71:             TypeInt 32 0
              72:     71(int) Constant 1
              73:             TypeArray 6(float) 72
74(gl_PerVertex):             TypeStruct 16(fvec4) 6(float) 73
              75:             TypePointer Output 74(gl_PerVertex)
              76:     75(ptr) Variable Output
          77(bl):             TypeStruct 17 8
              78:             TypePointer Uniform 77(bl)
       79(bName):     78(ptr) Variable Uniform
              80:             TypePointer Input 7(fvec3)
          81(v3):     80(ptr) Variable Input
              83:             TypePointer Uniform 17
              90:             TypePointer Uniform 8
             101:             TypePointer Output 16(fvec4)
         4(main):           2 Function None 3
               5:             Label
       82(param):     18(ptr) Variable Function
       86(param):     10(ptr) Variable Function
       89(param):      9(ptr) Variable Function
       93(param):     10(ptr) Variable Function
              84:     83(ptr) AccessChain 79(bName) 34
              85:          17 Load 84
                              Store 82(param) 85
              87:    7(fvec3) Load 81(v3)
                              Store 86(param) 87
              88:    7(fvec3) FunctionCall 26(mxv(mf44;vf3;) 82(param) 86(param)
              91:     90(ptr) AccessChain 79(bName) 39
              92:           8 Load 91
                              Store 89(param) 92
              94:    7(fvec3) Load 81(v3)
                              Store 93(param) 94
              95:    7(fvec3) FunctionCall 14(xf(mf33;vf3;) 89(param) 93(param)
              96:    7(fvec3) FAdd 88 95
              97:    6(float) CompositeExtract 96 0
              98:    6(float) CompositeExtract 96 1
              99:    6(float) CompositeExtract 96 2
             100:   16(fvec4) CompositeConstruct 97 98 99 47
             102:    101(ptr) AccessChain 76 34
                              Store 102 100
                              Return
                              FunctionEnd
14(xf(mf33;vf3;):    7(fvec3) Function None 11
           12(m):      9(ptr) FunctionParameter
           13(v):     10(ptr) FunctionParameter
              15:             Label
              28:    7(fvec3) Load 13(v)
              29:           8 Load 12(m)
              30:    7(fvec3) VectorTimesMatrix 28 29
                              ReturnValue 30
                              FunctionEnd
  21(Mat3(mf44;):           8 Function None 19
           20(m):     18(ptr) FunctionParameter
              22:             Label
              36:     35(ptr) AccessChain 20(m) 34
              37:   16(fvec4) Load 36
              38:    7(fvec3) VectorShuffle 37 37 0 1 2
              40:     35(ptr) AccessChain 20(m) 39
              41:   16(fvec4) Load 40
              42:    7(fvec3) VectorShuffle 41 41 0 1 2
              44:     35(ptr) AccessChain 20(m) 43
              45:   16(fvec4) Load 44
              46:    7(fvec3) VectorShuffle 45 45 0 1 2
              49:    6(float) CompositeExtract 38 0
              50:    6(float) CompositeExtract 38 1
              51:    6(float) CompositeExtract 38 2
              52:    6(float) CompositeExtract 42 0
              53:    6(float) CompositeExtract 42 1
              54:    6(float) CompositeExtract 42 2
              55:    6(float) CompositeExtract 46 0
              56:    6(float) CompositeExtract 46 1
              57:    6(float) CompositeExtract 46 2
              58:    7(fvec3) CompositeConstruct 49 50 51
              59:    7(fvec3) CompositeConstruct 52 53 54
              60:    7(fvec3) CompositeConstruct 55 56 57
              61:           8 CompositeConstruct 58 59 60
                              ReturnValue 61
                              FunctionEnd
26(mxv(mf44;vf3;):    7(fvec3) Function None 23
          24(m4):     18(ptr) FunctionParameter
           25(v):     10(ptr) FunctionParameter
              27:             Label
       65(param):     18(ptr) Variable Function
              64:    7(fvec3) Load 25(v)
              66:          17 Load 24(m4)
                              Store 65(param) 66
              67:           8 FunctionCall 21(Mat3(mf44;) 65(param)
              68:    7(fvec3) VectorTimesMatrix 64 67
                              ReturnValue 68
                              FunctionEnd
