spv.multiStructFuncall.frag
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 66

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main"
                              ExecutionMode 4 OriginUpperLeft
                              Source GLSL 450
                              Name 4  "main"
                              Name 9  "S"
                              MemberName 9(S) 0  "m"
                              Name 12  "fooConst(struct-S-mf441;"
                              Name 11  "s"
                              Name 17  "foo(struct-S-mf441;"
                              Name 16  "s"
                              Name 20  "fooOut(struct-S-mf441;"
                              Name 19  "s"
                              Name 22  "S"
                              MemberName 22(S) 0  "m"
                              Name 23  "blockName"
                              MemberName 23(blockName) 0  "s1"
                              Name 25  ""
                              Name 31  "S"
                              MemberName 31(S) 0  "m"
                              Name 32  "arg"
                              Name 39  "s2"
                              Name 42  "param"
                              Name 48  "param"
                              Name 51  "param"
                              Name 62  "param"
                              MemberDecorate 22(S) 0 ColMajor
                              MemberDecorate 22(S) 0 Offset 0
                              MemberDecorate 22(S) 0 MatrixStride 16
                              MemberDecorate 23(blockName) 0 Offset 0
                              Decorate 23(blockName) BufferBlock
                              Decorate 25 DescriptorSet 0
                              MemberDecorate 31(S) 0 ColMajor
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 4
               8:             TypeMatrix 7(fvec4) 4
            9(S):             TypeStruct 8
              10:             TypeFunction 2 9(S)
              14:             TypePointer Function 9(S)
              15:             TypeFunction 2 14(ptr)
           22(S):             TypeStruct 8
   23(blockName):             TypeStruct 22(S)
              24:             TypePointer Uniform 23(blockName)
              25:     24(ptr) Variable Uniform
              26:             TypeInt 32 1
              27:     26(int) Constant 0
              28:             TypePointer Uniform 22(S)
           31(S):             TypeStruct 8
              34:             TypePointer Function 8
              38:             TypePointer Private 9(S)
          39(s2):     38(ptr) Variable Private
              60:             TypePointer Uniform 8
         4(main):           2 Function None 3
               5:             Label
         32(arg):     14(ptr) Variable Function
       42(param):     14(ptr) Variable Function
       48(param):     14(ptr) Variable Function
       51(param):     14(ptr) Variable Function
       62(param):     14(ptr) Variable Function
              29:     28(ptr) AccessChain 25 27
              30:       22(S) Load 29
              33:           8 CompositeExtract 30 0
              35:     34(ptr) AccessChain 32(arg) 27
                              Store 35 33
              36:        9(S) Load 32(arg)
              37:           2 FunctionCall 12(fooConst(struct-S-mf441;) 36
              40:        9(S) Load 39(s2)
              41:           2 FunctionCall 12(fooConst(struct-S-mf441;) 40
              43:     28(ptr) AccessChain 25 27
              44:       22(S) Load 43
              45:           8 CompositeExtract 44 0
              46:     34(ptr) AccessChain 42(param) 27
                              Store 46 45
              47:           2 FunctionCall 17(foo(struct-S-mf441;) 42(param)
              49:        9(S) Load 39(s2)
                              Store 48(param) 49
              50:           2 FunctionCall 17(foo(struct-S-mf441;) 48(param)
              52:     28(ptr) AccessChain 25 27
              53:       22(S) Load 52
              54:           8 CompositeExtract 53 0
              55:     34(ptr) AccessChain 51(param) 27
                              Store 55 54
              56:           2 FunctionCall 20(fooOut(struct-S-mf441;) 51(param)
              57:        9(S) Load 51(param)
              58:     28(ptr) AccessChain 25 27
              59:           8 CompositeExtract 57 0
              61:     60(ptr) AccessChain 58 27
                              Store 61 59
              63:        9(S) Load 39(s2)
                              Store 62(param) 63
              64:           2 FunctionCall 20(fooOut(struct-S-mf441;) 62(param)
              65:        9(S) Load 62(param)
                              Store 39(s2) 65
                              Return
                              FunctionEnd
12(fooConst(struct-S-mf441;):           2 Function None 10
           11(s):        9(S) FunctionParameter
              13:             Label
                              Return
                              FunctionEnd
17(foo(struct-S-mf441;):           2 Function None 15
           16(s):     14(ptr) FunctionParameter
              18:             Label
                              Return
                              FunctionEnd
20(fooOut(struct-S-mf441;):           2 Function None 15
           19(s):     14(ptr) FunctionParameter
              21:             Label
                              Return
                              FunctionEnd
