spv.bufferhandle13.frag
// Module Version 10000
// Generated by (magic number): 80008
// Id's are bound by 58

                              Capability Shader
                              Capability PhysicalStorageBufferAddressesEXT
                              Extension  "SPV_EXT_physical_storage_buffer"
                              Extension  "SPV_KHR_storage_buffer_storage_class"
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel PhysicalStorageBuffer64EXT GLSL450
                              EntryPoint Fragment 4  "main"
                              ExecutionMode 4 OriginUpperLeft
                              Source GLSL 450
                              SourceExtension  "GL_EXT_buffer_reference"
                              Name 4  "main"
                              Name 8  "t4"
                              MemberName 8(t4) 0  "j"
                              Name 11  "f1(1;"
                              Name 10  "y"
                              Name 16  "f2(1;"
                              Name 15  "y"
                              Name 19  "f3(1;"
                              Name 18  "y"
                              Name 22  "f4(1;"
                              Name 21  "y"
                              Name 34  "a"
                              Name 35  "t5"
                              MemberName 35(t5) 0  "m"
                              Name 37  "s5"
                              Name 42  "b"
                              Name 47  "param"
                              Name 52  "param"
                              Name 56  "g1"
                              Name 57  "g2"
                              MemberDecorate 8(t4) 0 Offset 0
                              Decorate 8(t4) Block
                              Decorate 10(y) Aliased
                              Decorate 15(y) DecorationAliasedPointerEXT
                              Decorate 18(y) Restrict
                              Decorate 18(y) Restrict
                              Decorate 21(y) Restrict
                              Decorate 21(y) DecorationRestrictPointerEXT
                              Decorate 34(a) DecorationAliasedPointerEXT
                              MemberDecorate 35(t5) 0 Offset 0
                              Decorate 35(t5) Block
                              Decorate 37(s5) DescriptorSet 0
                              Decorate 37(s5) Binding 0
                              Decorate 42(b) DecorationRestrictPointerEXT
                              Decorate 56(g1) DecorationAliasedPointerEXT
                              Decorate 57(g2) DecorationRestrictPointerEXT
                              Decorate 47(param) DecorationAliasedPointerEXT
                              Decorate 52(param) DecorationAliasedPointerEXT
               2:             TypeVoid
               3:             TypeFunction 2
                              TypeForwardPointer 6 PhysicalStorageBufferEXT
               7:             TypeInt 32 1
           8(t4):             TypeStruct 7(int)
               6:             TypePointer PhysicalStorageBufferEXT 8(t4)
               9:             TypeFunction 6(ptr) 6(ptr)
              13:             TypePointer Function 6(ptr)
              14:             TypeFunction 6(ptr) 13(ptr)
          35(t5):             TypeStruct 6(ptr)
              36:             TypePointer StorageBuffer 35(t5)
          37(s5):     36(ptr) Variable StorageBuffer
              38:      7(int) Constant 0
              39:             TypePointer StorageBuffer 6(ptr)
              55:             TypePointer Private 6(ptr)
          56(g1):     55(ptr) Variable Private
         4(main):           2 Function None 3
               5:             Label
           34(a):     13(ptr) Variable Function
           42(b):     13(ptr) Variable Function
       47(param):     13(ptr) Variable Function
       52(param):     13(ptr) Variable Function
          57(g2):     13(ptr) Variable Function
              40:     39(ptr) AccessChain 37(s5) 38
              41:      6(ptr) Load 40
                              Store 34(a) 41
              43:     39(ptr) AccessChain 37(s5) 38
              44:      6(ptr) Load 43
                              Store 42(b) 44
              45:      6(ptr) Load 34(a)
              46:      6(ptr) FunctionCall 11(f1(1;) 45
              48:      6(ptr) Load 34(a)
                              Store 47(param) 48
              49:      6(ptr) FunctionCall 16(f2(1;) 47(param)
              50:      6(ptr) Load 34(a)
              51:      6(ptr) FunctionCall 19(f3(1;) 50
              53:      6(ptr) Load 34(a)
                              Store 52(param) 53
              54:      6(ptr) FunctionCall 22(f4(1;) 52(param)
                              Return
                              FunctionEnd
       11(f1(1;):      6(ptr) Function None 9
           10(y):      6(ptr) FunctionParameter
              12:             Label
                              ReturnValue 10(y)
                              FunctionEnd
       16(f2(1;):      6(ptr) Function None 14
           15(y):     13(ptr) FunctionParameter
              17:             Label
              26:      6(ptr) Load 15(y)
                              ReturnValue 26
                              FunctionEnd
       19(f3(1;):      6(ptr) Function None 9
           18(y):      6(ptr) FunctionParameter
              20:             Label
                              ReturnValue 18(y)
                              FunctionEnd
       22(f4(1;):      6(ptr) Function None 14
           21(y):     13(ptr) FunctionParameter
              23:             Label
              31:      6(ptr) Load 21(y)
                              ReturnValue 31
                              FunctionEnd
