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

                              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  "arg"
                              Name 38  "s2"
                              Name 41  "param"
                              Name 47  "param"
                              Name 50  "param"
                              Name 61  "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
                              Decorate 25 Binding 0
               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)
              33:             TypePointer Function 8
              37:             TypePointer Private 9(S)
          38(s2):     37(ptr) Variable Private
              59:             TypePointer Uniform 8
         4(main):           2 Function None 3
               5:             Label
         31(arg):     14(ptr) Variable Function
       41(param):     14(ptr) Variable Function
       47(param):     14(ptr) Variable Function
       50(param):     14(ptr) Variable Function
       61(param):     14(ptr) Variable Function
              29:     28(ptr) AccessChain 25 27
              30:       22(S) Load 29
              32:           8 CompositeExtract 30 0
              34:     33(ptr) AccessChain 31(arg) 27
                              Store 34 32
              35:        9(S) Load 31(arg)
              36:           2 FunctionCall 12(fooConst(struct-S-mf441;) 35
              39:        9(S) Load 38(s2)
              40:           2 FunctionCall 12(fooConst(struct-S-mf441;) 39
              42:     28(ptr) AccessChain 25 27
              43:       22(S) Load 42
              44:           8 CompositeExtract 43 0
              45:     33(ptr) AccessChain 41(param) 27
                              Store 45 44
              46:           2 FunctionCall 17(foo(struct-S-mf441;) 41(param)
              48:        9(S) Load 38(s2)
                              Store 47(param) 48
              49:           2 FunctionCall 17(foo(struct-S-mf441;) 47(param)
              51:     28(ptr) AccessChain 25 27
              52:       22(S) Load 51
              53:           8 CompositeExtract 52 0
              54:     33(ptr) AccessChain 50(param) 27
                              Store 54 53
              55:           2 FunctionCall 20(fooOut(struct-S-mf441;) 50(param)
              56:        9(S) Load 50(param)
              57:     28(ptr) AccessChain 25 27
              58:           8 CompositeExtract 56 0
              60:     59(ptr) AccessChain 57 27
                              Store 60 58
              62:        9(S) Load 38(s2)
                              Store 61(param) 62
              63:           2 FunctionCall 20(fooOut(struct-S-mf441;) 61(param)
              64:        9(S) Load 61(param)
                              Store 38(s2) 64
                              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
