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

                              Capability Shader
                              Capability CapabilityPhysicalStorageBufferAddressesEXT
                              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
