spv.150.vert
// Module Version 10000
// Generated by (magic number): 8000a
// Id's are bound by 63

                              Capability Shader
                              Capability ClipDistance
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Vertex 4  "main" 13 17 23 38 62
                              Source GLSL 150
                              Name 4  "main"
                              Name 11  "gl_PerVertex"
                              MemberName 11(gl_PerVertex) 0  "gl_Position"
                              MemberName 11(gl_PerVertex) 1  "gl_PointSize"
                              MemberName 11(gl_PerVertex) 2  "gl_ClipDistance"
                              Name 13  ""
                              Name 17  "iv4"
                              Name 23  "ps"
                              Name 34  "s1"
                              MemberName 34(s1) 0  "a"
                              MemberName 34(s1) 1  "a2"
                              MemberName 34(s1) 2  "b"
                              Name 36  "s2"
                              MemberName 36(s2) 0  "c"
                              MemberName 36(s2) 1  "d"
                              Name 38  "s2out"
                              Name 40  "i"
                              Name 47  "s2D"
                              Name 62  "ui"
                              MemberDecorate 11(gl_PerVertex) 0 Invariant
                              MemberDecorate 11(gl_PerVertex) 0 BuiltIn Position
                              MemberDecorate 11(gl_PerVertex) 1 BuiltIn PointSize
                              MemberDecorate 11(gl_PerVertex) 2 BuiltIn ClipDistance
                              Decorate 11(gl_PerVertex) Block
                              Decorate 17(iv4) Location 0
                              Decorate 23(ps) Location 1
                              Decorate 38(s2out) Location 0
                              Decorate 47(s2D) DescriptorSet 0
                              Decorate 47(s2D) Binding 0
                              Decorate 62(ui) Location 2
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 4
               8:             TypeInt 32 0
               9:      8(int) Constant 4
              10:             TypeArray 6(float) 9
11(gl_PerVertex):             TypeStruct 7(fvec4) 6(float) 10
              12:             TypePointer Output 11(gl_PerVertex)
              13:     12(ptr) Variable Output
              14:             TypeInt 32 1
              15:     14(int) Constant 0
              16:             TypePointer Input 7(fvec4)
         17(iv4):     16(ptr) Variable Input
              19:             TypePointer Output 7(fvec4)
              21:     14(int) Constant 1
              22:             TypePointer Input 6(float)
          23(ps):     22(ptr) Variable Input
              25:             TypePointer Output 6(float)
              27:     14(int) Constant 2
              28:      8(int) Constant 0
              32:      8(int) Constant 3
              33:             TypeArray 7(fvec4) 32
          34(s1):             TypeStruct 14(int) 14(int) 33
              35:             TypeArray 34(s1) 9
          36(s2):             TypeStruct 14(int) 35
              37:             TypePointer Output 36(s2)
       38(s2out):     37(ptr) Variable Output
              39:             TypePointer Function 14(int)
              44:             TypeImage 6(float) 2D sampled format:Unknown
              45:             TypeSampledImage 44
              46:             TypePointer UniformConstant 45
         47(s2D):     46(ptr) Variable UniformConstant
              49:             TypeVector 6(float) 2
              50:    6(float) Constant 1056964608
              51:   49(fvec2) ConstantComposite 50 50
              52:    6(float) Constant 0
              55:             TypeVector 6(float) 3
              56:   55(fvec3) ConstantComposite 50 50 50
              59:    6(float) Constant 1078774989
              61:             TypePointer Input 14(int)
          62(ui):     61(ptr) Variable Input
         4(main):           2 Function None 3
               5:             Label
           40(i):     39(ptr) Variable Function
              18:    7(fvec4) Load 17(iv4)
              20:     19(ptr) AccessChain 13 15
                              Store 20 18
              24:    6(float) Load 23(ps)
              26:     25(ptr) AccessChain 13 21
                              Store 26 24
              29:     22(ptr) AccessChain 17(iv4) 28
              30:    6(float) Load 29
              31:     25(ptr) AccessChain 13 27 27
                              Store 31 30
              41:     14(int) Load 40(i)
              42:    6(float) Load 23(ps)
              43:     25(ptr) AccessChain 38(s2out) 21 41 27 27 32
                              Store 43 42
              48:          45 Load 47(s2D)
              53:    7(fvec4) ImageSampleExplicitLod 48 51 Lod 52
              54:          45 Load 47(s2D)
              57:    7(fvec4) ImageSampleProjExplicitLod 54 56 Lod 52
              58:          45 Load 47(s2D)
              60:    7(fvec4) ImageSampleExplicitLod 58 51 Lod 59
                              Return
                              FunctionEnd
