spv.xfb.vert
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 16

                              Capability Shader
                              Capability TransformFeedback
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Vertex 4  "main" 8 11 14 15
                              ExecutionMode 4 Xfb
                              Source GLSL 450
                              Name 4  "main"
                              Name 8  "out1"
                              Name 9  "outXfb"
                              MemberName 9(outXfb) 0  "out2"
                              Name 11  ""
                              Name 12  "outXfb2"
                              MemberName 12(outXfb2) 0  "out3"
                              Name 14  ""
                              Name 15  "out4"
                              Decorate 8(out1) Location 0
                              Decorate 8(out1) XfbBuffer 3
                              Decorate 8(out1) XfbStride 48
                              Decorate 8(out1) Offset 12
                              MemberDecorate 9(outXfb) 0 Offset 8
                              Decorate 9(outXfb) Block
                              Decorate 11 Location 1
                              Decorate 11 XfbBuffer 2
                              Decorate 11 XfbStride 32
                              MemberDecorate 12(outXfb2) 0 Offset 60
                              Decorate 12(outXfb2) Block
                              Decorate 14 Location 3
                              Decorate 14 XfbBuffer 1
                              Decorate 14 XfbStride 64
                              Decorate 15(out4) Location 4
                              Decorate 15(out4) XfbBuffer 0
                              Decorate 15(out4) XfbStride 8
                              Decorate 15(out4) Offset 4
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypePointer Output 6(float)
         8(out1):      7(ptr) Variable Output
       9(outXfb):             TypeStruct 6(float)
              10:             TypePointer Output 9(outXfb)
              11:     10(ptr) Variable Output
     12(outXfb2):             TypeStruct 6(float)
              13:             TypePointer Output 12(outXfb2)
              14:     13(ptr) Variable Output
        15(out4):      7(ptr) Variable Output
         4(main):           2 Function None 3
               5:             Label
                              Return
                              FunctionEnd
