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

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 11 14 17 19 25 30 39 51 63 105 109
                              ExecutionMode 4 OriginUpperLeft
                              Source GLSL 140
                              Name 4  "main"
                              Name 9  "color"
                              Name 11  "BaseColor"
                              Name 13  "color2"
                              Name 14  "otherColor"
                              Name 17  "c"
                              Name 19  "d"
                              Name 25  "bigColor"
                              Name 30  "smallColor"
                              Name 39  "minimum"
                              Name 51  "threshhold"
                              Name 63  "threshhold2"
                              Name 77  "b"
                              Name 105  "gl_FragColor"
                              Name 109  "threshhold3"
                              Decorate 11(BaseColor) Location 9
                              Decorate 14(otherColor) Location 3
                              Decorate 17(c) Location 4
                              Decorate 19(d) Location 0
                              Decorate 25(bigColor) Location 1
                              Decorate 30(smallColor) Location 2
                              Decorate 39(minimum) Location 8
                              Decorate 51(threshhold) Location 5
                              Decorate 63(threshhold2) Location 6
                              Decorate 105(gl_FragColor) Location 0
                              Decorate 109(threshhold3) Location 7
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 4
               8:             TypePointer Function 7(fvec4)
              10:             TypePointer Input 7(fvec4)
   11(BaseColor):     10(ptr) Variable Input
  14(otherColor):     10(ptr) Variable Input
              16:             TypePointer Input 6(float)
           17(c):     16(ptr) Variable Input
           19(d):     16(ptr) Variable Input
              21:             TypeBool
    25(bigColor):     10(ptr) Variable Input
  30(smallColor):     10(ptr) Variable Input
              34:             TypeInt 32 0
              35:     34(int) Constant 2
              36:             TypePointer Function 6(float)
     39(minimum):     16(ptr) Variable Input
              47:    6(float) Constant 1065353216
  51(threshhold):     16(ptr) Variable Input
              60:     34(int) Constant 3
 63(threshhold2):     16(ptr) Variable Input
              76:             TypePointer Private 21(bool)
           77(b):     76(ptr) Variable Private
              85:     34(int) Constant 0
             104:             TypePointer Output 7(fvec4)
105(gl_FragColor):    104(ptr) Variable Output
109(threshhold3):     16(ptr) Variable Input
         4(main):           2 Function None 3
               5:             Label
        9(color):      8(ptr) Variable Function
      13(color2):      8(ptr) Variable Function
              12:    7(fvec4) Load 11(BaseColor)
                              Store 9(color) 12
              15:    7(fvec4) Load 14(otherColor)
                              Store 13(color2) 15
              18:    6(float) Load 17(c)
              20:    6(float) Load 19(d)
              22:    21(bool) FOrdGreaterThan 18 20
                              SelectionMerge 24 None
                              BranchConditional 22 23 29
              23:               Label
              26:    7(fvec4)   Load 25(bigColor)
              27:    7(fvec4)   Load 9(color)
              28:    7(fvec4)   FAdd 27 26
                                Store 9(color) 28
                                Branch 24
              29:               Label
              31:    7(fvec4)   Load 30(smallColor)
              32:    7(fvec4)   Load 9(color)
              33:    7(fvec4)   FAdd 32 31
                                Store 9(color) 33
                                Branch 24
              24:             Label
              37:     36(ptr) AccessChain 9(color) 35
              38:    6(float) Load 37
              40:    6(float) Load 39(minimum)
              41:    21(bool) FOrdLessThan 38 40
                              SelectionMerge 43 None
                              BranchConditional 41 42 43
              42:               Label
                                Return
              43:             Label
              45:     36(ptr) AccessChain 9(color) 35
              46:    6(float) Load 45
              48:    6(float) FAdd 46 47
                              Store 45 48
              49:     36(ptr) AccessChain 9(color) 35
              50:    6(float) Load 49
              52:    6(float) Load 51(threshhold)
              53:    21(bool) FOrdGreaterThan 50 52
                              SelectionMerge 55 None
                              BranchConditional 53 54 55
              54:               Label
                                Kill
              55:             Label
              57:    7(fvec4) Load 9(color)
              58:    7(fvec4) CompositeConstruct 47 47 47 47
              59:    7(fvec4) FAdd 57 58
                              Store 9(color) 59
              61:     36(ptr) AccessChain 9(color) 60
              62:    6(float) Load 61
              64:    6(float) Load 63(threshhold2)
              65:    21(bool) FOrdGreaterThan 62 64
                              SelectionMerge 67 None
                              BranchConditional 65 66 97
              66:               Label
              68:     36(ptr)   AccessChain 9(color) 35
              69:    6(float)   Load 68
              70:    6(float)   Load 63(threshhold2)
              71:    21(bool)   FOrdGreaterThan 69 70
                                SelectionMerge 73 None
                                BranchConditional 71 72 75
              72:                 Label
                                  Return
              75:                 Label
              78:    21(bool)     Load 77(b)
                                  SelectionMerge 80 None
                                  BranchConditional 78 79 84
              79:                   Label
              81:     36(ptr)       AccessChain 9(color) 35
              82:    6(float)       Load 81
              83:    6(float)       FAdd 82 47
                                    Store 81 83
                                    Branch 80
              84:                   Label
              86:     36(ptr)       AccessChain 9(color) 85
              87:    6(float)       Load 86
              88:    6(float)       Load 39(minimum)
              89:    21(bool)       FOrdLessThan 87 88
                                    SelectionMerge 91 None
                                    BranchConditional 89 90 93
              90:                     Label
                                      Kill
              93:                     Label
              94:    7(fvec4)         Load 9(color)
              95:    7(fvec4)         CompositeConstruct 47 47 47 47
              96:    7(fvec4)         FAdd 94 95
                                      Store 9(color) 96
                                      Branch 91
              91:                   Label
                                    Branch 80
              80:                 Label
                                  Branch 73
              73:               Label
                                Branch 67
              97:               Label
              98:    21(bool)   Load 77(b)
                                SelectionMerge 100 None
                                BranchConditional 98 99 102
              99:                 Label
                                  Kill
             102:                 Label
                                  Return
             100:               Label
                                Unreachable
              67:             Label
             106:    7(fvec4) Load 9(color)
             107:    7(fvec4) Load 13(color2)
             108:    7(fvec4) FMul 106 107
                              Store 105(gl_FragColor) 108
                              Return
                              FunctionEnd
