hlsl.dashI.vert
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 40

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Vertex 4  "main" 38
                              Source HLSL 500
                              Name 4  "main"
                              Name 9  "@main("
                              Name 11  "$Global"
                              MemberName 11($Global) 0  "i1"
                              MemberName 11($Global) 1  "p1"
                              MemberName 11($Global) 2  "p2"
                              MemberName 11($Global) 3  "p3"
                              MemberName 11($Global) 4  "i4"
                              Name 13  ""
                              Name 38  "@entryPointOutput"
                              MemberDecorate 11($Global) 0 Offset 0
                              MemberDecorate 11($Global) 1 Offset 16
                              MemberDecorate 11($Global) 2 Offset 32
                              MemberDecorate 11($Global) 3 Offset 48
                              MemberDecorate 11($Global) 4 Offset 64
                              Decorate 11($Global) Block
                              Decorate 13 DescriptorSet 0
                              Decorate 38(@entryPointOutput) BuiltIn Position
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 4
               8:             TypeFunction 7(fvec4)
     11($Global):             TypeStruct 7(fvec4) 7(fvec4) 7(fvec4) 7(fvec4) 7(fvec4)
              12:             TypePointer Uniform 11($Global)
              13:     12(ptr) Variable Uniform
              14:             TypeInt 32 1
              15:     14(int) Constant 0
              16:             TypePointer Uniform 7(fvec4)
              19:     14(int) Constant 4
              23:     14(int) Constant 1
              27:     14(int) Constant 2
              31:     14(int) Constant 3
              37:             TypePointer Output 7(fvec4)
38(@entryPointOutput):     37(ptr) Variable Output
         4(main):           2 Function None 3
               5:             Label
              39:    7(fvec4) FunctionCall 9(@main()
                              Store 38(@entryPointOutput) 39
                              Return
                              FunctionEnd
       9(@main():    7(fvec4) Function None 8
              10:             Label
              17:     16(ptr) AccessChain 13 15
              18:    7(fvec4) Load 17
              20:     16(ptr) AccessChain 13 19
              21:    7(fvec4) Load 20
              22:    7(fvec4) FAdd 18 21
              24:     16(ptr) AccessChain 13 23
              25:    7(fvec4) Load 24
              26:    7(fvec4) FAdd 22 25
              28:     16(ptr) AccessChain 13 27
              29:    7(fvec4) Load 28
              30:    7(fvec4) FAdd 26 29
              32:     16(ptr) AccessChain 13 31
              33:    7(fvec4) Load 32
              34:    7(fvec4) FAdd 30 33
                              ReturnValue 34
                              FunctionEnd
