spv.earlyReturnDiscard.frag
// Module Version 10000
// Generated by (magic number): 80005
// 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 105(gl_FragColor) Location 0
               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
                                Branch 67
              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
