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

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