spv.variableArrayIndex.frag
// Module Version 10000
// Generated by (magic number): 8000a
// Id's are bound by 93

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 10 20 34 36 54 63
                              ExecutionMode 4 OriginUpperLeft
                              Source GLSL 400
                              Name 4  "main"
                              Name 8  "iLocal"
                              Name 10  "Count"
                              Name 13  "lunarStruct1"
                              MemberName 13(lunarStruct1) 0  "i"
                              MemberName 13(lunarStruct1) 1  "f"
                              Name 14  "lunarStruct2"
                              MemberName 14(lunarStruct2) 0  "i"
                              MemberName 14(lunarStruct2) 1  "f"
                              MemberName 14(lunarStruct2) 2  "s1_1"
                              Name 18  "lunarStruct3"
                              MemberName 18(lunarStruct3) 0  "s2_1"
                              MemberName 18(lunarStruct3) 1  "i"
                              MemberName 18(lunarStruct3) 2  "f"
                              MemberName 18(lunarStruct3) 3  "s1_1"
                              Name 20  "foo3"
                              Name 30  "scale"
                              Name 34  "foo2"
                              Name 36  "foo"
                              Name 54  "gl_FragColor"
                              Name 59  "samp2D"
                              Name 63  "coord"
                              Name 69  "constructed"
                              Decorate 10(Count) Flat
                              Decorate 10(Count) Location 39
                              Decorate 20(foo3) Flat
                              Decorate 20(foo3) Location 23
                              Decorate 34(foo2) Flat
                              Decorate 34(foo2) Location 3
                              Decorate 36(foo) Flat
                              Decorate 36(foo) Location 1
                              Decorate 54(gl_FragColor) Location 0
                              Decorate 59(samp2D) DescriptorSet 0
                              Decorate 59(samp2D) Binding 0
                              Decorate 63(coord) Location 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeInt 32 1
               7:             TypePointer Function 6(int)
               9:             TypePointer Input 6(int)
       10(Count):      9(ptr) Variable Input
              12:             TypeFloat 32
13(lunarStruct1):             TypeStruct 6(int) 12(float)
14(lunarStruct2):             TypeStruct 6(int) 12(float) 13(lunarStruct1)
              15:             TypeInt 32 0
              16:     15(int) Constant 3
              17:             TypeArray 14(lunarStruct2) 16
18(lunarStruct3):             TypeStruct 17 6(int) 12(float) 13(lunarStruct1)
              19:             TypePointer Input 18(lunarStruct3)
        20(foo3):     19(ptr) Variable Input
              21:      6(int) Constant 0
              22:      6(int) Constant 1
              25:             TypeBool
              29:             TypePointer Function 12(float)
              31:     15(int) Constant 5
              32:             TypeArray 14(lunarStruct2) 31
              33:             TypePointer Input 32
        34(foo2):     33(ptr) Variable Input
              35:             TypePointer Input 13(lunarStruct1)
         36(foo):     35(ptr) Variable Input
              41:      6(int) Constant 2
              46:             TypePointer Input 12(float)
              52:             TypeVector 12(float) 4
              53:             TypePointer Output 52(fvec4)
54(gl_FragColor):     53(ptr) Variable Output
              56:             TypeImage 12(float) 2D sampled format:Unknown
              57:             TypeSampledImage 56
              58:             TypePointer UniformConstant 57
      59(samp2D):     58(ptr) Variable UniformConstant
              61:             TypeVector 12(float) 2
              62:             TypePointer Input 61(fvec2)
       63(coord):     62(ptr) Variable Input
              67:             TypeArray 61(fvec2) 16
              68:             TypePointer Function 67
              73:   12(float) Constant 1065353216
              74:   12(float) Constant 1073741824
              75:   61(fvec2) ConstantComposite 73 74
              79:             TypePointer Function 61(fvec2)
         4(main):           2 Function None 3
               5:             Label
       8(iLocal):      7(ptr) Variable Function
       30(scale):     29(ptr) Variable Function
 69(constructed):     68(ptr) Variable Function
              11:      6(int) Load 10(Count)
                              Store 8(iLocal) 11
              23:      9(ptr) AccessChain 20(foo3) 21 22 21
              24:      6(int) Load 23
              26:    25(bool) SGreaterThan 24 21
                              SelectionMerge 28 None
                              BranchConditional 26 27 49
              27:               Label
              37:      9(ptr)   AccessChain 36(foo) 21
              38:      6(int)   Load 37
              39:      9(ptr)   AccessChain 20(foo3) 21 38 21
              40:      6(int)   Load 39
              42:      6(int)   IAdd 40 41
              43:      6(int)   Load 8(iLocal)
              44:      6(int)   IAdd 43 22
                                Store 8(iLocal) 44
              45:      6(int)   IAdd 42 44
              47:     46(ptr)   AccessChain 34(foo2) 45 41 22
              48:   12(float)   Load 47
                                Store 30(scale) 48
                                Branch 28
              49:               Label
              50:     46(ptr)   AccessChain 20(foo3) 21 21 41 22
              51:   12(float)   Load 50
                                Store 30(scale) 51
                                Branch 28
              28:             Label
              55:   12(float) Load 30(scale)
              60:          57 Load 59(samp2D)
              64:   61(fvec2) Load 63(coord)
              65:   52(fvec4) ImageSampleImplicitLod 60 64
              66:   52(fvec4) VectorTimesScalar 65 55
                              Store 54(gl_FragColor) 66
              70:   61(fvec2) Load 63(coord)
              71:   12(float) Load 30(scale)
              72:   61(fvec2) CompositeConstruct 71 71
              76:          67 CompositeConstruct 70 72 75
                              Store 69(constructed) 76
              77:      9(ptr) AccessChain 36(foo) 21
              78:      6(int) Load 77
              80:     79(ptr) AccessChain 69(constructed) 78
              81:   61(fvec2) Load 80
              82:      9(ptr) AccessChain 36(foo) 21
              83:      6(int) Load 82
              84:     79(ptr) AccessChain 69(constructed) 83
              85:   61(fvec2) Load 84
              86:   12(float) CompositeExtract 81 0
              87:   12(float) CompositeExtract 81 1
              88:   12(float) CompositeExtract 85 0
              89:   12(float) CompositeExtract 85 1
              90:   52(fvec4) CompositeConstruct 86 87 88 89
              91:   52(fvec4) Load 54(gl_FragColor)
              92:   52(fvec4) FAdd 91 90
                              Store 54(gl_FragColor) 92
                              Return
                              FunctionEnd
