spv.varyingArrayIndirect.frag
// Module Version 10000
// Generated by (magic number): 80006
// Id's are bound by 70

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 19 22 30 31 45 50 56
                              ExecutionMode 4 OriginUpperLeft
                              Source GLSL 140
                              Name 4  "main"
                              Name 9  "texColor"
                              Name 13  "texSampler2D"
                              Name 19  "userIn"
                              Name 22  "b"
                              Name 30  "TexCoord"
                              Name 31  "a"
                              Name 45  "color"
                              Name 50  "alpha"
                              Name 56  "gl_FragColor"
                              Decorate 13(texSampler2D) DescriptorSet 0
                              Decorate 22(b) Flat
                              Decorate 31(a) Flat
                              Decorate 56(gl_FragColor) Location 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 4
               8:             TypePointer Function 7(fvec4)
              10:             TypeImage 6(float) 2D sampled format:Unknown
              11:             TypeSampledImage 10
              12:             TypePointer UniformConstant 11
13(texSampler2D):     12(ptr) Variable UniformConstant
              15:             TypeInt 32 0
              16:     15(int) Constant 2
              17:             TypeArray 7(fvec4) 16
              18:             TypePointer Input 17
      19(userIn):     18(ptr) Variable Input
              20:             TypeInt 32 1
              21:             TypePointer Input 20(int)
           22(b):     21(ptr) Variable Input
              24:             TypePointer Input 7(fvec4)
              27:     15(int) Constant 6
              28:             TypeArray 7(fvec4) 27
              29:             TypePointer Input 28
    30(TexCoord):     29(ptr) Variable Input
           31(a):     21(ptr) Variable Input
              36:     20(int) Constant 5
              40:             TypeVector 6(float) 2
       45(color):     24(ptr) Variable Input
              49:             TypePointer Input 6(float)
       50(alpha):     49(ptr) Variable Input
              52:     15(int) Constant 3
              53:             TypePointer Function 6(float)
              55:             TypePointer Output 7(fvec4)
56(gl_FragColor):     55(ptr) Variable Output
              57:     20(int) Constant 0
         4(main):           2 Function None 3
               5:             Label
     9(texColor):      8(ptr) Variable Function
              14:          11 Load 13(texSampler2D)
              23:     20(int) Load 22(b)
              25:     24(ptr) AccessChain 19(userIn) 23
              26:    7(fvec4) Load 25
              32:     20(int) Load 31(a)
              33:     24(ptr) AccessChain 30(TexCoord) 32
              34:    7(fvec4) Load 33
              35:    7(fvec4) FAdd 26 34
              37:     24(ptr) AccessChain 30(TexCoord) 36
              38:    7(fvec4) Load 37
              39:    7(fvec4) FAdd 35 38
              41:    6(float) CompositeExtract 39 0
              42:    6(float) CompositeExtract 39 1
              43:   40(fvec2) CompositeConstruct 41 42
              44:    7(fvec4) ImageSampleImplicitLod 14 43
                              Store 9(texColor) 44
              46:    7(fvec4) Load 45(color)
              47:    7(fvec4) Load 9(texColor)
              48:    7(fvec4) FAdd 47 46
                              Store 9(texColor) 48
              51:    6(float) Load 50(alpha)
              54:     53(ptr) AccessChain 9(texColor) 52
                              Store 54 51
              58:     24(ptr) AccessChain 30(TexCoord) 57
              59:    7(fvec4) Load 58
              60:     20(int) Load 22(b)
              61:     24(ptr) AccessChain 30(TexCoord) 60
              62:    7(fvec4) Load 61
              63:    7(fvec4) FAdd 59 62
              64:    7(fvec4) Load 9(texColor)
              65:    7(fvec4) FAdd 63 64
              66:     20(int) Load 31(a)
              67:     24(ptr) AccessChain 19(userIn) 66
              68:    7(fvec4) Load 67
              69:    7(fvec4) FAdd 65 68
                              Store 56(gl_FragColor) 69
                              Return
                              FunctionEnd
