spv.variableArrayIndex.frag
// Module Version 10000
// Generated by (magic number): 80008
// 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 20(foo3) Flat
                              Decorate 34(foo2) Flat
                              Decorate 36(foo) Flat
                              Decorate 54(gl_FragColor) Location 0
                              Decorate 59(samp2D) DescriptorSet 0
                              Decorate 59(samp2D) Binding 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
