spv.1.4.OpCopyLogical.funcall.frag
// Module Version 10400
// Generated by (magic number): 8000b
// Id's are bound by 59

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 25 36
                              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 36  "s2"
                              Name 39  "param"
                              Name 44  "param"
                              Name 47  "param"
                              Name 55  "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) Block
                              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 StorageBuffer 23(blockName)
              25:     24(ptr) Variable StorageBuffer
              26:             TypeInt 32 1
              27:     26(int) Constant 0
              28:             TypePointer StorageBuffer 22(S)
              35:             TypePointer Private 9(S)
          36(s2):     35(ptr) Variable Private
         4(main):           2 Function None 3
               5:             Label
         31(arg):     14(ptr) Variable Function
       39(param):     14(ptr) Variable Function
       44(param):     14(ptr) Variable Function
       47(param):     14(ptr) Variable Function
       55(param):     14(ptr) Variable Function
              29:     28(ptr) AccessChain 25 27
              30:       22(S) Load 29
              32:        9(S) CopyLogical 30
                              Store 31(arg) 32
              33:        9(S) Load 31(arg)
              34:           2 FunctionCall 12(fooConst(struct-S-mf441;) 33
              37:        9(S) Load 36(s2)
              38:           2 FunctionCall 12(fooConst(struct-S-mf441;) 37
              40:     28(ptr) AccessChain 25 27
              41:       22(S) Load 40
              42:        9(S) CopyLogical 41
                              Store 39(param) 42
              43:           2 FunctionCall 17(foo(struct-S-mf441;) 39(param)
              45:        9(S) Load 36(s2)
                              Store 44(param) 45
              46:           2 FunctionCall 17(foo(struct-S-mf441;) 44(param)
              48:     28(ptr) AccessChain 25 27
              49:       22(S) Load 48
              50:        9(S) CopyLogical 49
                              Store 47(param) 50
              51:           2 FunctionCall 20(fooOut(struct-S-mf441;) 47(param)
              52:        9(S) Load 47(param)
              53:     28(ptr) AccessChain 25 27
              54:       22(S) CopyLogical 52
                              Store 53 54
              56:        9(S) Load 36(s2)
                              Store 55(param) 56
              57:           2 FunctionCall 20(fooOut(struct-S-mf441;) 55(param)
              58:        9(S) Load 55(param)
                              Store 36(s2) 58
                              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
