Merge remote-tracking branch 'GitHub/master'
diff --git a/CMakeLists.txt b/CMakeLists.txt
index dbe4308..0d453cc 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,6 +1,9 @@
 # increase to 3.1 once all major distributions
 # include a version of CMake >= 3.1
 cmake_minimum_required(VERSION 2.8.12)
+if (POLICY CMP0048)
+  cmake_policy(SET CMP0048 NEW)
+endif()
 set_property(GLOBAL PROPERTY USE_FOLDERS ON)
 
 # Adhere to GNU filesystem layout conventions
diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp
index 0662787..b606389 100644
--- a/SPIRV/GlslangToSpv.cpp
+++ b/SPIRV/GlslangToSpv.cpp
@@ -3339,7 +3339,9 @@
                 operands.push_back(spv::ImageOperandsSampleMask);
                 operands.push_back(*(opIt++));
             }
-            return builder.createOp(spv::OpImageRead, resultType(), operands);
+            spv::Id result = builder.createOp(spv::OpImageRead, resultType(), operands);
+            builder.setPrecision(result, precision);
+            return result;
         }
 
         operands.push_back(*(opIt++));
@@ -3362,7 +3364,10 @@
             }
             if (builder.getImageTypeFormat(builder.getImageType(operands.front())) == spv::ImageFormatUnknown)
                 builder.addCapability(spv::CapabilityStorageImageReadWithoutFormat);
-            return builder.createOp(spv::OpImageRead, resultType(), operands);
+
+            spv::Id result = builder.createOp(spv::OpImageRead, resultType(), operands);
+            builder.setPrecision(result, precision);
+            return result;
 #ifdef AMD_EXTENSIONS
         } else if (node->getOp() == glslang::EOpImageStore || node->getOp() == glslang::EOpImageStoreLod) {
 #else
diff --git a/SPIRV/SpvBuilder.cpp b/SPIRV/SpvBuilder.cpp
index d7b28bc..035f531 100644
--- a/SPIRV/SpvBuilder.cpp
+++ b/SPIRV/SpvBuilder.cpp
@@ -471,7 +471,10 @@
 
     if (ms) {
         if (sampled == 2) {
-            addCapability(CapabilityStorageImageMultisample);
+            // Images used with subpass data are not storage
+            // images, so don't require the capability for them.
+            if (dim != Dim::DimSubpassData)
+                addCapability(CapabilityStorageImageMultisample);
             if (arrayed)
                 addCapability(CapabilityImageMSArray);
         }
diff --git a/Test/baseResults/cppDeepNest.frag.out b/Test/baseResults/cppDeepNest.frag.out
new file mode 100755
index 0000000..969a256
--- /dev/null
+++ b/Test/baseResults/cppDeepNest.frag.out
@@ -0,0 +1,20 @@
+cppDeepNest.frag
+ERROR: 0:66: '#if/#ifdef/#ifndef' : maximum nesting depth exceeded 
+ERROR: 0:66: '' : missing #endif 
+ERROR: 0:66: '' :  syntax error, unexpected $end
+ERROR: 3 compilation errors.  No code generated.
+
+
+Shader version: 100
+ERROR: node is still EOpNull!
+0:?   Linker Objects
+
+
+Linked fragment stage:
+
+ERROR: Linking fragment stage: Missing entry point: Each stage requires one entry point
+
+Shader version: 100
+ERROR: node is still EOpNull!
+0:?   Linker Objects
+
diff --git a/Test/baseResults/cppIntMinOverNegativeOne.frag.out b/Test/baseResults/cppIntMinOverNegativeOne.frag.out
new file mode 100644
index 0000000..5dce7c3
--- /dev/null
+++ b/Test/baseResults/cppIntMinOverNegativeOne.frag.out
@@ -0,0 +1,14 @@
+cppIntMinOverNegativeOne.frag
+Shader version: 100
+0:? Sequence
+0:?   Linker Objects
+
+
+Linked fragment stage:
+
+ERROR: Linking fragment stage: Missing entry point: Each stage requires one entry point
+
+Shader version: 100
+0:? Sequence
+0:?   Linker Objects
+
diff --git a/Test/baseResults/hlsl.attributeGlobalBuffer.frag.out b/Test/baseResults/hlsl.attributeGlobalBuffer.frag.out
new file mode 100755
index 0000000..e00ae52
--- /dev/null
+++ b/Test/baseResults/hlsl.attributeGlobalBuffer.frag.out
@@ -0,0 +1,109 @@
+hlsl.attributeGlobalBuffer.frag
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:6  Function Definition: @main( ( temp 4-component vector of float)
+0:6    Function Parameters: 
+0:?     Sequence
+0:7      Branch: Return with expression
+0:7        add ( temp 4-component vector of float)
+0:7          u1: direct index for structure ( uniform 4-component vector of float)
+0:7            'anon@0' (layout( set=2 binding=5 row_major std140) uniform block{ uniform 4-component vector of float u1,  uniform 4-component vector of float u2})
+0:7            Constant:
+0:7              0 (const uint)
+0:7          u2: direct index for structure ( uniform 4-component vector of float)
+0:7            'anon@0' (layout( set=2 binding=5 row_major std140) uniform block{ uniform 4-component vector of float u1,  uniform 4-component vector of float u2})
+0:7            Constant:
+0:7              1 (const uint)
+0:6  Function Definition: main( ( temp void)
+0:6    Function Parameters: 
+0:?     Sequence
+0:6      move second child to first child ( temp 4-component vector of float)
+0:?         '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:6        Function Call: @main( ( temp 4-component vector of float)
+0:?   Linker Objects
+0:?     'anon@0' (layout( set=2 binding=5 row_major std140) uniform block{ uniform 4-component vector of float u1,  uniform 4-component vector of float u2})
+0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+
+
+Linked fragment stage:
+
+
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:6  Function Definition: @main( ( temp 4-component vector of float)
+0:6    Function Parameters: 
+0:?     Sequence
+0:7      Branch: Return with expression
+0:7        add ( temp 4-component vector of float)
+0:7          u1: direct index for structure ( uniform 4-component vector of float)
+0:7            'anon@0' (layout( set=2 binding=5 row_major std140) uniform block{ uniform 4-component vector of float u1,  uniform 4-component vector of float u2})
+0:7            Constant:
+0:7              0 (const uint)
+0:7          u2: direct index for structure ( uniform 4-component vector of float)
+0:7            'anon@0' (layout( set=2 binding=5 row_major std140) uniform block{ uniform 4-component vector of float u1,  uniform 4-component vector of float u2})
+0:7            Constant:
+0:7              1 (const uint)
+0:6  Function Definition: main( ( temp void)
+0:6    Function Parameters: 
+0:?     Sequence
+0:6      move second child to first child ( temp 4-component vector of float)
+0:?         '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:6        Function Call: @main( ( temp 4-component vector of float)
+0:?   Linker Objects
+0:?     'anon@0' (layout( set=2 binding=5 row_major std140) uniform block{ uniform 4-component vector of float u1,  uniform 4-component vector of float u2})
+0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 28
+
+                              Capability Shader
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Fragment 4  "main" 26
+                              ExecutionMode 4 OriginUpperLeft
+                              Source HLSL 500
+                              Name 4  "main"
+                              Name 9  "@main("
+                              Name 11  "$Global"
+                              MemberName 11($Global) 0  "u1"
+                              MemberName 11($Global) 1  "u2"
+                              Name 13  ""
+                              Name 26  "@entryPointOutput"
+                              MemberDecorate 11($Global) 0 Offset 0
+                              MemberDecorate 11($Global) 1 Offset 16
+                              Decorate 11($Global) Block
+                              Decorate 13 DescriptorSet 2
+                              Decorate 13 Binding 5
+                              Decorate 26(@entryPointOutput) Location 0
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeFloat 32
+               7:             TypeVector 6(float) 4
+               8:             TypeFunction 7(fvec4)
+     11($Global):             TypeStruct 7(fvec4) 7(fvec4)
+              12:             TypePointer Uniform 11($Global)
+              13:     12(ptr) Variable Uniform
+              14:             TypeInt 32 1
+              15:     14(int) Constant 0
+              16:             TypePointer Uniform 7(fvec4)
+              19:     14(int) Constant 1
+              25:             TypePointer Output 7(fvec4)
+26(@entryPointOutput):     25(ptr) Variable Output
+         4(main):           2 Function None 3
+               5:             Label
+              27:    7(fvec4) FunctionCall 9(@main()
+                              Store 26(@entryPointOutput) 27
+                              Return
+                              FunctionEnd
+       9(@main():    7(fvec4) Function None 8
+              10:             Label
+              17:     16(ptr) AccessChain 13 15
+              18:    7(fvec4) Load 17
+              20:     16(ptr) AccessChain 13 19
+              21:    7(fvec4) Load 20
+              22:    7(fvec4) FAdd 18 21
+                              ReturnValue 22
+                              FunctionEnd
diff --git a/Test/baseResults/hlsl.intrinsics.frag.out b/Test/baseResults/hlsl.intrinsics.frag.out
index 5346d2f..105800b 100644
--- a/Test/baseResults/hlsl.intrinsics.frag.out
+++ b/Test/baseResults/hlsl.intrinsics.frag.out
@@ -83,2034 +83,2075 @@
 0:33            0.000000
 0:33        true case
 0:33        Branch: Kill
-0:34      Sequence
-0:34        move second child to first child ( temp float)
-0:34          'r014' ( temp float)
-0:34          cosine ( temp float)
-0:34            'inF0' ( in float)
+0:34      Test condition and select ( temp void)
+0:34        Condition
+0:34        Compare Less Than ( temp bool)
+0:34          'r005' ( temp int)
+0:34          Constant:
+0:34            0 (const int)
+0:34        true case
+0:34        Branch: Kill
 0:35      Sequence
 0:35        move second child to first child ( temp float)
-0:35          'r015' ( temp float)
-0:35          hyp. cosine ( temp float)
+0:35          'r014' ( temp float)
+0:35          cosine ( temp float)
 0:35            'inF0' ( in float)
 0:36      Sequence
-0:36        move second child to first child ( temp int)
-0:36          'r016' ( temp int)
-0:36          bitCount ( temp int)
-0:36            Constant:
-0:36              7 (const int)
+0:36        move second child to first child ( temp float)
+0:36          'r015' ( temp float)
+0:36          hyp. cosine ( temp float)
+0:36            'inF0' ( in float)
 0:37      Sequence
-0:37        move second child to first child ( temp float)
-0:37          'r017' ( temp float)
-0:37          dPdx ( temp float)
-0:37            'inF0' ( in float)
+0:37        move second child to first child ( temp int)
+0:37          'r016' ( temp int)
+0:37          bitCount ( temp int)
+0:37            Constant:
+0:37              7 (const int)
 0:38      Sequence
 0:38        move second child to first child ( temp float)
-0:38          'r018' ( temp float)
-0:38          dPdxCoarse ( temp float)
+0:38          'r017' ( temp float)
+0:38          dPdx ( temp float)
 0:38            'inF0' ( in float)
 0:39      Sequence
 0:39        move second child to first child ( temp float)
-0:39          'r019' ( temp float)
-0:39          dPdxFine ( temp float)
+0:39          'r018' ( temp float)
+0:39          dPdxCoarse ( temp float)
 0:39            'inF0' ( in float)
 0:40      Sequence
 0:40        move second child to first child ( temp float)
-0:40          'r020' ( temp float)
-0:40          dPdy ( temp float)
+0:40          'r019' ( temp float)
+0:40          dPdxFine ( temp float)
 0:40            'inF0' ( in float)
 0:41      Sequence
 0:41        move second child to first child ( temp float)
-0:41          'r021' ( temp float)
-0:41          dPdyCoarse ( temp float)
+0:41          'r020' ( temp float)
+0:41          dPdy ( temp float)
 0:41            'inF0' ( in float)
 0:42      Sequence
 0:42        move second child to first child ( temp float)
-0:42          'r022' ( temp float)
-0:42          dPdyFine ( temp float)
+0:42          'r021' ( temp float)
+0:42          dPdyCoarse ( temp float)
 0:42            'inF0' ( in float)
 0:43      Sequence
 0:43        move second child to first child ( temp float)
-0:43          'r023' ( temp float)
-0:43          degrees ( temp float)
+0:43          'r022' ( temp float)
+0:43          dPdyFine ( temp float)
 0:43            'inF0' ( in float)
-0:47      Sequence
-0:47        move second child to first child ( temp float)
-0:47          'r027' ( temp float)
-0:47          exp ( temp float)
-0:47            'inF0' ( in float)
+0:44      Sequence
+0:44        move second child to first child ( temp float)
+0:44          'r023' ( temp float)
+0:44          degrees ( temp float)
+0:44            'inF0' ( in float)
 0:48      Sequence
 0:48        move second child to first child ( temp float)
-0:48          'r028' ( temp float)
-0:48          exp2 ( temp float)
+0:48          'r027' ( temp float)
+0:48          exp ( temp float)
 0:48            'inF0' ( in float)
 0:49      Sequence
-0:49        move second child to first child ( temp uint)
-0:49          'r029' ( temp uint)
-0:49          Convert int to uint ( temp uint)
-0:49            findMSB ( temp int)
-0:49              Constant:
-0:49                7 (const int)
+0:49        move second child to first child ( temp float)
+0:49          'r028' ( temp float)
+0:49          exp2 ( temp float)
+0:49            'inF0' ( in float)
 0:50      Sequence
 0:50        move second child to first child ( temp uint)
-0:50          'r030' ( temp uint)
+0:50          'r029' ( temp uint)
 0:50          Convert int to uint ( temp uint)
-0:50            findLSB ( temp int)
+0:50            findMSB ( temp int)
 0:50              Constant:
 0:50                7 (const int)
 0:51      Sequence
-0:51        move second child to first child ( temp float)
-0:51          'r031' ( temp float)
-0:51          Floor ( temp float)
-0:51            'inF0' ( in float)
-0:53      Sequence
-0:53        move second child to first child ( temp float)
-0:53          'r033' ( temp float)
-0:53          mod ( temp float)
-0:53            'inF0' ( in float)
-0:53            'inF1' ( in float)
+0:51        move second child to first child ( temp uint)
+0:51          'r030' ( temp uint)
+0:51          Convert int to uint ( temp uint)
+0:51            findLSB ( temp int)
+0:51              Constant:
+0:51                7 (const int)
+0:52      Sequence
+0:52        move second child to first child ( temp float)
+0:52          'r031' ( temp float)
+0:52          Floor ( temp float)
+0:52            'inF0' ( in float)
 0:54      Sequence
 0:54        move second child to first child ( temp float)
-0:54          'r034' ( temp float)
-0:54          Fraction ( temp float)
+0:54          'r033' ( temp float)
+0:54          mod ( temp float)
 0:54            'inF0' ( in float)
+0:54            'inF1' ( in float)
 0:55      Sequence
 0:55        move second child to first child ( temp float)
-0:55          'r036' ( temp float)
-0:55          fwidth ( temp float)
+0:55          'r034' ( temp float)
+0:55          Fraction ( temp float)
 0:55            'inF0' ( in float)
 0:56      Sequence
-0:56        move second child to first child ( temp bool)
-0:56          'r037' ( temp bool)
-0:56          isinf ( temp bool)
+0:56        move second child to first child ( temp float)
+0:56          'r036' ( temp float)
+0:56          fwidth ( temp float)
 0:56            'inF0' ( in float)
 0:57      Sequence
 0:57        move second child to first child ( temp bool)
-0:57          'r038' ( temp bool)
-0:57          isnan ( temp bool)
+0:57          'r037' ( temp bool)
+0:57          isinf ( temp bool)
 0:57            'inF0' ( in float)
 0:58      Sequence
-0:58        move second child to first child ( temp float)
-0:58          'r039' ( temp float)
-0:58          ldexp ( temp float)
+0:58        move second child to first child ( temp bool)
+0:58          'r038' ( temp bool)
+0:58          isnan ( temp bool)
 0:58            'inF0' ( in float)
-0:58            'inF1' ( in float)
 0:59      Sequence
 0:59        move second child to first child ( temp float)
-0:59          'r039a' ( temp float)
-0:59          mix ( temp float)
+0:59          'r039' ( temp float)
+0:59          ldexp ( temp float)
 0:59            'inF0' ( in float)
 0:59            'inF1' ( in float)
-0:59            'inF2' ( in float)
 0:60      Sequence
 0:60        move second child to first child ( temp float)
-0:60          'r040' ( temp float)
-0:60          log ( temp float)
+0:60          'r039a' ( temp float)
+0:60          mix ( temp float)
 0:60            'inF0' ( in float)
+0:60            'inF1' ( in float)
+0:60            'inF2' ( in float)
 0:61      Sequence
 0:61        move second child to first child ( temp float)
-0:61          'r041' ( temp float)
-0:61          component-wise multiply ( temp float)
-0:61            log2 ( temp float)
-0:61              'inF0' ( in float)
-0:61            Constant:
-0:61              0.301030
+0:61          'r040' ( temp float)
+0:61          log ( temp float)
+0:61            'inF0' ( in float)
 0:62      Sequence
 0:62        move second child to first child ( temp float)
-0:62          'r042' ( temp float)
-0:62          log2 ( temp float)
-0:62            'inF0' ( in float)
+0:62          'r041' ( temp float)
+0:62          component-wise multiply ( temp float)
+0:62            log2 ( temp float)
+0:62              'inF0' ( in float)
+0:62            Constant:
+0:62              0.301030
 0:63      Sequence
 0:63        move second child to first child ( temp float)
-0:63          'r043' ( temp float)
-0:63          max ( temp float)
+0:63          'r042' ( temp float)
+0:63          log2 ( temp float)
 0:63            'inF0' ( in float)
-0:63            'inF1' ( in float)
 0:64      Sequence
 0:64        move second child to first child ( temp float)
-0:64          'r044' ( temp float)
-0:64          min ( temp float)
+0:64          'r043' ( temp float)
+0:64          max ( temp float)
 0:64            'inF0' ( in float)
 0:64            'inF1' ( in float)
 0:65      Sequence
 0:65        move second child to first child ( temp float)
-0:65          'r045' ( temp float)
-0:65          pow ( temp float)
+0:65          'r044' ( temp float)
+0:65          min ( temp float)
 0:65            'inF0' ( in float)
 0:65            'inF1' ( in float)
 0:66      Sequence
 0:66        move second child to first child ( temp float)
-0:66          'r046' ( temp float)
-0:66          radians ( temp float)
+0:66          'r045' ( temp float)
+0:66          pow ( temp float)
 0:66            'inF0' ( in float)
+0:66            'inF1' ( in float)
 0:67      Sequence
 0:67        move second child to first child ( temp float)
-0:67          'r047' ( temp float)
-0:67          divide ( temp float)
-0:67            Constant:
-0:67              1.000000
+0:67          'r046' ( temp float)
+0:67          radians ( temp float)
 0:67            'inF0' ( in float)
 0:68      Sequence
-0:68        move second child to first child ( temp uint)
-0:68          'r048' ( temp uint)
-0:68          Convert int to uint ( temp uint)
-0:68            bitFieldReverse ( temp int)
-0:68              Constant:
-0:68                2 (const int)
+0:68        move second child to first child ( temp float)
+0:68          'r047' ( temp float)
+0:68          divide ( temp float)
+0:68            Constant:
+0:68              1.000000
+0:68            'inF0' ( in float)
 0:69      Sequence
-0:69        move second child to first child ( temp float)
-0:69          'r049' ( temp float)
-0:69          roundEven ( temp float)
-0:69            'inF0' ( in float)
+0:69        move second child to first child ( temp uint)
+0:69          'r048' ( temp uint)
+0:69          Convert int to uint ( temp uint)
+0:69            bitFieldReverse ( temp int)
+0:69              Constant:
+0:69                2 (const int)
 0:70      Sequence
 0:70        move second child to first child ( temp float)
-0:70          'r050' ( temp float)
-0:70          inverse sqrt ( temp float)
+0:70          'r049' ( temp float)
+0:70          roundEven ( temp float)
 0:70            'inF0' ( in float)
 0:71      Sequence
 0:71        move second child to first child ( temp float)
-0:71          'r051' ( temp float)
-0:71          clamp ( temp float)
+0:71          'r050' ( temp float)
+0:71          inverse sqrt ( temp float)
 0:71            'inF0' ( in float)
-0:71            Constant:
-0:71              0.000000
-0:71            Constant:
-0:71              1.000000
 0:72      Sequence
 0:72        move second child to first child ( temp float)
-0:72          'r052' ( temp float)
-0:72          Sign ( temp float)
+0:72          'r051' ( temp float)
+0:72          clamp ( temp float)
 0:72            'inF0' ( in float)
+0:72            Constant:
+0:72              0.000000
+0:72            Constant:
+0:72              1.000000
 0:73      Sequence
 0:73        move second child to first child ( temp float)
-0:73          'r053' ( temp float)
-0:73          sine ( temp float)
+0:73          'r052' ( temp float)
+0:73          Sign ( temp float)
 0:73            'inF0' ( in float)
 0:74      Sequence
 0:74        move second child to first child ( temp float)
-0:74          'inF1' ( in float)
+0:74          'r053' ( temp float)
 0:74          sine ( temp float)
 0:74            'inF0' ( in float)
-0:74        move second child to first child ( temp float)
-0:74          'inF2' ( in float)
-0:74          cosine ( temp float)
-0:74            'inF0' ( in float)
 0:75      Sequence
 0:75        move second child to first child ( temp float)
-0:75          'r055' ( temp float)
-0:75          hyp. sine ( temp float)
+0:75          'inF1' ( in float)
+0:75          sine ( temp float)
+0:75            'inF0' ( in float)
+0:75        move second child to first child ( temp float)
+0:75          'inF2' ( in float)
+0:75          cosine ( temp float)
 0:75            'inF0' ( in float)
 0:76      Sequence
 0:76        move second child to first child ( temp float)
-0:76          'r056' ( temp float)
-0:76          smoothstep ( temp float)
+0:76          'r055' ( temp float)
+0:76          hyp. sine ( temp float)
 0:76            'inF0' ( in float)
-0:76            'inF1' ( in float)
-0:76            'inF2' ( in float)
 0:77      Sequence
 0:77        move second child to first child ( temp float)
-0:77          'r057' ( temp float)
-0:77          sqrt ( temp float)
+0:77          'r056' ( temp float)
+0:77          smoothstep ( temp float)
 0:77            'inF0' ( in float)
+0:77            'inF1' ( in float)
+0:77            'inF2' ( in float)
 0:78      Sequence
 0:78        move second child to first child ( temp float)
-0:78          'r058' ( temp float)
-0:78          step ( temp float)
+0:78          'r057' ( temp float)
+0:78          sqrt ( temp float)
 0:78            'inF0' ( in float)
-0:78            'inF1' ( in float)
 0:79      Sequence
 0:79        move second child to first child ( temp float)
-0:79          'r059' ( temp float)
-0:79          tangent ( temp float)
+0:79          'r058' ( temp float)
+0:79          step ( temp float)
 0:79            'inF0' ( in float)
+0:79            'inF1' ( in float)
 0:80      Sequence
 0:80        move second child to first child ( temp float)
-0:80          'r060' ( temp float)
-0:80          hyp. tangent ( temp float)
+0:80          'r059' ( temp float)
+0:80          tangent ( temp float)
 0:80            'inF0' ( in float)
-0:82      Sequence
-0:82        move second child to first child ( temp float)
-0:82          'r061' ( temp float)
-0:82          trunc ( temp float)
-0:82            'inF0' ( in float)
-0:84      Branch: Return with expression
-0:84        Constant:
-0:84          0.000000
-0:88  Function Definition: PixelShaderFunction1(vf1;vf1;vf1; ( temp 1-component vector of float)
-0:88    Function Parameters: 
-0:88      'inF0' ( in 1-component vector of float)
-0:88      'inF1' ( in 1-component vector of float)
-0:88      'inF2' ( in 1-component vector of float)
+0:81      Sequence
+0:81        move second child to first child ( temp float)
+0:81          'r060' ( temp float)
+0:81          hyp. tangent ( temp float)
+0:81            'inF0' ( in float)
+0:83      Sequence
+0:83        move second child to first child ( temp float)
+0:83          'r061' ( temp float)
+0:83          trunc ( temp float)
+0:83            'inF0' ( in float)
+0:85      Branch: Return with expression
+0:85        Constant:
+0:85          0.000000
+0:89  Function Definition: PixelShaderFunction1(vf1;vf1;vf1; ( temp 1-component vector of float)
+0:89    Function Parameters: 
+0:89      'inF0' ( in 1-component vector of float)
+0:89      'inF1' ( in 1-component vector of float)
+0:89      'inF2' ( in 1-component vector of float)
 0:?     Sequence
-0:90      Branch: Return with expression
-0:90        Constant:
-0:90          0.000000
-0:94  Function Definition: PixelShaderFunction2(vf2;vf2;vf2;vu2;vu2; ( temp 2-component vector of float)
-0:94    Function Parameters: 
-0:94      'inF0' ( in 2-component vector of float)
-0:94      'inF1' ( in 2-component vector of float)
-0:94      'inF2' ( in 2-component vector of float)
-0:94      'inU0' ( in 2-component vector of uint)
-0:94      'inU1' ( in 2-component vector of uint)
+0:91      Branch: Return with expression
+0:91        Constant:
+0:91          0.000000
+0:95  Function Definition: PixelShaderFunction2(vf2;vf2;vf2;vu2;vu2; ( temp 2-component vector of float)
+0:95    Function Parameters: 
+0:95      'inF0' ( in 2-component vector of float)
+0:95      'inF1' ( in 2-component vector of float)
+0:95      'inF2' ( in 2-component vector of float)
+0:95      'inU0' ( in 2-component vector of uint)
+0:95      'inU1' ( in 2-component vector of uint)
 0:?     Sequence
-0:97      Sequence
-0:97        move second child to first child ( temp bool)
-0:97          'r000' ( temp bool)
-0:97          all ( temp bool)
-0:97            Convert float to bool ( temp 2-component vector of bool)
-0:97              'inF0' ( in 2-component vector of float)
 0:98      Sequence
-0:98        move second child to first child ( temp 2-component vector of float)
-0:98          'r001' ( temp 2-component vector of float)
-0:98          Absolute value ( temp 2-component vector of float)
-0:98            'inF0' ( in 2-component vector of float)
+0:98        move second child to first child ( temp bool)
+0:98          'r000' ( temp bool)
+0:98          all ( temp bool)
+0:98            Convert float to bool ( temp 2-component vector of bool)
+0:98              'inF0' ( in 2-component vector of float)
 0:99      Sequence
 0:99        move second child to first child ( temp 2-component vector of float)
-0:99          'r002' ( temp 2-component vector of float)
-0:99          arc cosine ( temp 2-component vector of float)
+0:99          'r001' ( temp 2-component vector of float)
+0:99          Absolute value ( temp 2-component vector of float)
 0:99            'inF0' ( in 2-component vector of float)
 0:100      Sequence
-0:100        move second child to first child ( temp bool)
-0:100          'r003' ( temp bool)
-0:100          any ( temp bool)
-0:100            Convert float to bool ( temp 2-component vector of bool)
-0:100              'inF0' ( in 2-component vector of float)
+0:100        move second child to first child ( temp 2-component vector of float)
+0:100          'r002' ( temp 2-component vector of float)
+0:100          arc cosine ( temp 2-component vector of float)
+0:100            'inF0' ( in 2-component vector of float)
 0:101      Sequence
-0:101        move second child to first child ( temp 2-component vector of float)
-0:101          'r004' ( temp 2-component vector of float)
-0:101          arc sine ( temp 2-component vector of float)
-0:101            'inF0' ( in 2-component vector of float)
+0:101        move second child to first child ( temp bool)
+0:101          'r003' ( temp bool)
+0:101          any ( temp bool)
+0:101            Convert float to bool ( temp 2-component vector of bool)
+0:101              'inF0' ( in 2-component vector of float)
 0:102      Sequence
-0:102        move second child to first child ( temp 2-component vector of int)
-0:102          'r005' ( temp 2-component vector of int)
-0:102          floatBitsToInt ( temp 2-component vector of int)
+0:102        move second child to first child ( temp 2-component vector of float)
+0:102          'r004' ( temp 2-component vector of float)
+0:102          arc sine ( temp 2-component vector of float)
 0:102            'inF0' ( in 2-component vector of float)
 0:103      Sequence
-0:103        move second child to first child ( temp 2-component vector of uint)
-0:103          'r006' ( temp 2-component vector of uint)
-0:103          floatBitsToUint ( temp 2-component vector of uint)
+0:103        move second child to first child ( temp 2-component vector of int)
+0:103          'r005' ( temp 2-component vector of int)
+0:103          floatBitsToInt ( temp 2-component vector of int)
 0:103            'inF0' ( in 2-component vector of float)
 0:104      Sequence
-0:104        move second child to first child ( temp 2-component vector of float)
-0:104          'r007' ( temp 2-component vector of float)
-0:104          intBitsToFloat ( temp 2-component vector of float)
-0:104            'inU0' ( in 2-component vector of uint)
-0:106      Sequence
-0:106        move second child to first child ( temp 2-component vector of float)
-0:106          'r009' ( temp 2-component vector of float)
-0:106          arc tangent ( temp 2-component vector of float)
-0:106            'inF0' ( in 2-component vector of float)
+0:104        move second child to first child ( temp 2-component vector of uint)
+0:104          'r006' ( temp 2-component vector of uint)
+0:104          floatBitsToUint ( temp 2-component vector of uint)
+0:104            'inF0' ( in 2-component vector of float)
+0:105      Sequence
+0:105        move second child to first child ( temp 2-component vector of float)
+0:105          'r007' ( temp 2-component vector of float)
+0:105          intBitsToFloat ( temp 2-component vector of float)
+0:105            'inU0' ( in 2-component vector of uint)
 0:107      Sequence
 0:107        move second child to first child ( temp 2-component vector of float)
-0:107          'r010' ( temp 2-component vector of float)
+0:107          'r009' ( temp 2-component vector of float)
 0:107          arc tangent ( temp 2-component vector of float)
 0:107            'inF0' ( in 2-component vector of float)
-0:107            'inF1' ( in 2-component vector of float)
 0:108      Sequence
 0:108        move second child to first child ( temp 2-component vector of float)
-0:108          'r011' ( temp 2-component vector of float)
-0:108          Ceiling ( temp 2-component vector of float)
+0:108          'r010' ( temp 2-component vector of float)
+0:108          arc tangent ( temp 2-component vector of float)
 0:108            'inF0' ( in 2-component vector of float)
+0:108            'inF1' ( in 2-component vector of float)
 0:109      Sequence
 0:109        move second child to first child ( temp 2-component vector of float)
-0:109          'r012' ( temp 2-component vector of float)
-0:109          clamp ( temp 2-component vector of float)
+0:109          'r011' ( temp 2-component vector of float)
+0:109          Ceiling ( temp 2-component vector of float)
 0:109            'inF0' ( in 2-component vector of float)
-0:109            'inF1' ( in 2-component vector of float)
-0:109            'inF2' ( in 2-component vector of float)
-0:110      Test condition and select ( temp void)
-0:110        Condition
-0:110        any ( temp bool)
-0:110          Compare Less Than ( temp 2-component vector of bool)
+0:110      Sequence
+0:110        move second child to first child ( temp 2-component vector of float)
+0:110          'r012' ( temp 2-component vector of float)
+0:110          clamp ( temp 2-component vector of float)
 0:110            'inF0' ( in 2-component vector of float)
-0:110            Constant:
-0:110              0.000000
-0:110              0.000000
-0:110        true case
-0:110        Branch: Kill
-0:111      Sequence
-0:111        move second child to first child ( temp 2-component vector of float)
-0:111          'r013' ( temp 2-component vector of float)
-0:111          cosine ( temp 2-component vector of float)
+0:110            'inF1' ( in 2-component vector of float)
+0:110            'inF2' ( in 2-component vector of float)
+0:111      Test condition and select ( temp void)
+0:111        Condition
+0:111        any ( temp bool)
+0:111          Compare Less Than ( temp 2-component vector of bool)
 0:111            'inF0' ( in 2-component vector of float)
-0:112      Sequence
-0:112        move second child to first child ( temp 2-component vector of float)
-0:112          'r015' ( temp 2-component vector of float)
-0:112          hyp. cosine ( temp 2-component vector of float)
-0:112            'inF0' ( in 2-component vector of float)
+0:111            Constant:
+0:111              0.000000
+0:111              0.000000
+0:111        true case
+0:111        Branch: Kill
+0:112      Test condition and select ( temp void)
+0:112        Condition
+0:112        any ( temp bool)
+0:112          Compare Less Than ( temp 2-component vector of bool)
+0:112            'inU0' ( in 2-component vector of uint)
+0:112            Constant:
+0:112              0.000000
+0:112              0.000000
+0:112        true case
+0:112        Branch: Kill
 0:113      Sequence
-0:113        move second child to first child ( temp 2-component vector of int)
-0:113          'r016' ( temp 2-component vector of int)
+0:113        move second child to first child ( temp 2-component vector of float)
+0:113          'r013' ( temp 2-component vector of float)
+0:113          cosine ( temp 2-component vector of float)
+0:113            'inF0' ( in 2-component vector of float)
+0:114      Sequence
+0:114        move second child to first child ( temp 2-component vector of float)
+0:114          'r015' ( temp 2-component vector of float)
+0:114          hyp. cosine ( temp 2-component vector of float)
+0:114            'inF0' ( in 2-component vector of float)
+0:115      Sequence
+0:115        move second child to first child ( temp 2-component vector of int)
+0:115          'r016' ( temp 2-component vector of int)
 0:?           bitCount ( temp 2-component vector of int)
 0:?             Constant:
 0:?               7 (const int)
 0:?               3 (const int)
-0:114      Sequence
-0:114        move second child to first child ( temp 2-component vector of float)
-0:114          'r017' ( temp 2-component vector of float)
-0:114          dPdx ( temp 2-component vector of float)
-0:114            'inF0' ( in 2-component vector of float)
-0:115      Sequence
-0:115        move second child to first child ( temp 2-component vector of float)
-0:115          'r018' ( temp 2-component vector of float)
-0:115          dPdxCoarse ( temp 2-component vector of float)
-0:115            'inF0' ( in 2-component vector of float)
 0:116      Sequence
 0:116        move second child to first child ( temp 2-component vector of float)
-0:116          'r019' ( temp 2-component vector of float)
-0:116          dPdxFine ( temp 2-component vector of float)
+0:116          'r017' ( temp 2-component vector of float)
+0:116          dPdx ( temp 2-component vector of float)
 0:116            'inF0' ( in 2-component vector of float)
 0:117      Sequence
 0:117        move second child to first child ( temp 2-component vector of float)
-0:117          'r020' ( temp 2-component vector of float)
-0:117          dPdy ( temp 2-component vector of float)
+0:117          'r018' ( temp 2-component vector of float)
+0:117          dPdxCoarse ( temp 2-component vector of float)
 0:117            'inF0' ( in 2-component vector of float)
 0:118      Sequence
 0:118        move second child to first child ( temp 2-component vector of float)
-0:118          'r021' ( temp 2-component vector of float)
-0:118          dPdyCoarse ( temp 2-component vector of float)
+0:118          'r019' ( temp 2-component vector of float)
+0:118          dPdxFine ( temp 2-component vector of float)
 0:118            'inF0' ( in 2-component vector of float)
 0:119      Sequence
 0:119        move second child to first child ( temp 2-component vector of float)
-0:119          'r022' ( temp 2-component vector of float)
-0:119          dPdyFine ( temp 2-component vector of float)
+0:119          'r020' ( temp 2-component vector of float)
+0:119          dPdy ( temp 2-component vector of float)
 0:119            'inF0' ( in 2-component vector of float)
 0:120      Sequence
 0:120        move second child to first child ( temp 2-component vector of float)
-0:120          'r023' ( temp 2-component vector of float)
-0:120          degrees ( temp 2-component vector of float)
+0:120          'r021' ( temp 2-component vector of float)
+0:120          dPdyCoarse ( temp 2-component vector of float)
 0:120            'inF0' ( in 2-component vector of float)
-0:124      Sequence
-0:124        move second child to first child ( temp float)
-0:124          'r026' ( temp float)
-0:124          distance ( temp float)
-0:124            'inF0' ( in 2-component vector of float)
-0:124            'inF1' ( in 2-component vector of float)
-0:125      Sequence
-0:125        move second child to first child ( temp float)
-0:125          'r027' ( temp float)
-0:125          dot-product ( temp float)
-0:125            'inF0' ( in 2-component vector of float)
-0:125            'inF1' ( in 2-component vector of float)
-0:129      Sequence
-0:129        move second child to first child ( temp 2-component vector of float)
-0:129          'r028' ( temp 2-component vector of float)
-0:129          exp ( temp 2-component vector of float)
-0:129            'inF0' ( in 2-component vector of float)
-0:130      Sequence
-0:130        move second child to first child ( temp 2-component vector of float)
-0:130          'r029' ( temp 2-component vector of float)
-0:130          exp2 ( temp 2-component vector of float)
-0:130            'inF0' ( in 2-component vector of float)
+0:121      Sequence
+0:121        move second child to first child ( temp 2-component vector of float)
+0:121          'r022' ( temp 2-component vector of float)
+0:121          dPdyFine ( temp 2-component vector of float)
+0:121            'inF0' ( in 2-component vector of float)
+0:122      Sequence
+0:122        move second child to first child ( temp 2-component vector of float)
+0:122          'r023' ( temp 2-component vector of float)
+0:122          degrees ( temp 2-component vector of float)
+0:122            'inF0' ( in 2-component vector of float)
+0:126      Sequence
+0:126        move second child to first child ( temp float)
+0:126          'r026' ( temp float)
+0:126          distance ( temp float)
+0:126            'inF0' ( in 2-component vector of float)
+0:126            'inF1' ( in 2-component vector of float)
+0:127      Sequence
+0:127        move second child to first child ( temp float)
+0:127          'r027' ( temp float)
+0:127          dot-product ( temp float)
+0:127            'inF0' ( in 2-component vector of float)
+0:127            'inF1' ( in 2-component vector of float)
 0:131      Sequence
 0:131        move second child to first child ( temp 2-component vector of float)
-0:131          'r030' ( temp 2-component vector of float)
-0:131          face-forward ( temp 2-component vector of float)
+0:131          'r028' ( temp 2-component vector of float)
+0:131          exp ( temp 2-component vector of float)
 0:131            'inF0' ( in 2-component vector of float)
-0:131            'inF1' ( in 2-component vector of float)
-0:131            'inF2' ( in 2-component vector of float)
 0:132      Sequence
-0:132        move second child to first child ( temp 2-component vector of uint)
-0:132          'r031' ( temp 2-component vector of uint)
+0:132        move second child to first child ( temp 2-component vector of float)
+0:132          'r029' ( temp 2-component vector of float)
+0:132          exp2 ( temp 2-component vector of float)
+0:132            'inF0' ( in 2-component vector of float)
+0:133      Sequence
+0:133        move second child to first child ( temp 2-component vector of float)
+0:133          'r030' ( temp 2-component vector of float)
+0:133          face-forward ( temp 2-component vector of float)
+0:133            'inF0' ( in 2-component vector of float)
+0:133            'inF1' ( in 2-component vector of float)
+0:133            'inF2' ( in 2-component vector of float)
+0:134      Sequence
+0:134        move second child to first child ( temp 2-component vector of uint)
+0:134          'r031' ( temp 2-component vector of uint)
 0:?           findMSB ( temp 2-component vector of uint)
 0:?             Constant:
 0:?               7 (const uint)
 0:?               8 (const uint)
-0:133      Sequence
-0:133        move second child to first child ( temp 2-component vector of uint)
-0:133          'r032' ( temp 2-component vector of uint)
+0:135      Sequence
+0:135        move second child to first child ( temp 2-component vector of uint)
+0:135          'r032' ( temp 2-component vector of uint)
 0:?           findLSB ( temp 2-component vector of uint)
 0:?             Constant:
 0:?               7 (const uint)
 0:?               8 (const uint)
-0:134      Sequence
-0:134        move second child to first child ( temp 2-component vector of float)
-0:134          'r033' ( temp 2-component vector of float)
-0:134          Floor ( temp 2-component vector of float)
-0:134            'inF0' ( in 2-component vector of float)
 0:136      Sequence
 0:136        move second child to first child ( temp 2-component vector of float)
-0:136          'r035' ( temp 2-component vector of float)
-0:136          mod ( temp 2-component vector of float)
+0:136          'r033' ( temp 2-component vector of float)
+0:136          Floor ( temp 2-component vector of float)
 0:136            'inF0' ( in 2-component vector of float)
-0:136            'inF1' ( in 2-component vector of float)
-0:137      Sequence
-0:137        move second child to first child ( temp 2-component vector of float)
-0:137          'r036' ( temp 2-component vector of float)
-0:137          Fraction ( temp 2-component vector of float)
-0:137            'inF0' ( in 2-component vector of float)
 0:138      Sequence
 0:138        move second child to first child ( temp 2-component vector of float)
-0:138          'r038' ( temp 2-component vector of float)
-0:138          fwidth ( temp 2-component vector of float)
+0:138          'r035' ( temp 2-component vector of float)
+0:138          mod ( temp 2-component vector of float)
 0:138            'inF0' ( in 2-component vector of float)
+0:138            'inF1' ( in 2-component vector of float)
 0:139      Sequence
-0:139        move second child to first child ( temp 2-component vector of bool)
-0:139          'r039' ( temp 2-component vector of bool)
-0:139          isinf ( temp 2-component vector of bool)
+0:139        move second child to first child ( temp 2-component vector of float)
+0:139          'r036' ( temp 2-component vector of float)
+0:139          Fraction ( temp 2-component vector of float)
 0:139            'inF0' ( in 2-component vector of float)
 0:140      Sequence
-0:140        move second child to first child ( temp 2-component vector of bool)
-0:140          'r040' ( temp 2-component vector of bool)
-0:140          isnan ( temp 2-component vector of bool)
+0:140        move second child to first child ( temp 2-component vector of float)
+0:140          'r038' ( temp 2-component vector of float)
+0:140          fwidth ( temp 2-component vector of float)
 0:140            'inF0' ( in 2-component vector of float)
 0:141      Sequence
-0:141        move second child to first child ( temp 2-component vector of float)
-0:141          'r041' ( temp 2-component vector of float)
-0:141          ldexp ( temp 2-component vector of float)
+0:141        move second child to first child ( temp 2-component vector of bool)
+0:141          'r039' ( temp 2-component vector of bool)
+0:141          isinf ( temp 2-component vector of bool)
 0:141            'inF0' ( in 2-component vector of float)
-0:141            'inF1' ( in 2-component vector of float)
 0:142      Sequence
-0:142        move second child to first child ( temp 2-component vector of float)
-0:142          'r039a' ( temp 2-component vector of float)
-0:142          mix ( temp 2-component vector of float)
+0:142        move second child to first child ( temp 2-component vector of bool)
+0:142          'r040' ( temp 2-component vector of bool)
+0:142          isnan ( temp 2-component vector of bool)
 0:142            'inF0' ( in 2-component vector of float)
-0:142            'inF1' ( in 2-component vector of float)
-0:142            'inF2' ( in 2-component vector of float)
 0:143      Sequence
-0:143        move second child to first child ( temp float)
-0:143          'r042' ( temp float)
-0:143          length ( temp float)
+0:143        move second child to first child ( temp 2-component vector of float)
+0:143          'r041' ( temp 2-component vector of float)
+0:143          ldexp ( temp 2-component vector of float)
 0:143            'inF0' ( in 2-component vector of float)
+0:143            'inF1' ( in 2-component vector of float)
 0:144      Sequence
 0:144        move second child to first child ( temp 2-component vector of float)
-0:144          'r043' ( temp 2-component vector of float)
-0:144          log ( temp 2-component vector of float)
+0:144          'r039a' ( temp 2-component vector of float)
+0:144          mix ( temp 2-component vector of float)
 0:144            'inF0' ( in 2-component vector of float)
+0:144            'inF1' ( in 2-component vector of float)
+0:144            'inF2' ( in 2-component vector of float)
 0:145      Sequence
-0:145        move second child to first child ( temp 2-component vector of float)
-0:145          'r044' ( temp 2-component vector of float)
-0:145          vector-scale ( temp 2-component vector of float)
-0:145            log2 ( temp 2-component vector of float)
-0:145              'inF0' ( in 2-component vector of float)
-0:145            Constant:
-0:145              0.301030
+0:145        move second child to first child ( temp float)
+0:145          'r042' ( temp float)
+0:145          length ( temp float)
+0:145            'inF0' ( in 2-component vector of float)
 0:146      Sequence
 0:146        move second child to first child ( temp 2-component vector of float)
-0:146          'r045' ( temp 2-component vector of float)
-0:146          log2 ( temp 2-component vector of float)
+0:146          'r043' ( temp 2-component vector of float)
+0:146          log ( temp 2-component vector of float)
 0:146            'inF0' ( in 2-component vector of float)
 0:147      Sequence
 0:147        move second child to first child ( temp 2-component vector of float)
-0:147          'r046' ( temp 2-component vector of float)
-0:147          max ( temp 2-component vector of float)
-0:147            'inF0' ( in 2-component vector of float)
-0:147            'inF1' ( in 2-component vector of float)
+0:147          'r044' ( temp 2-component vector of float)
+0:147          vector-scale ( temp 2-component vector of float)
+0:147            log2 ( temp 2-component vector of float)
+0:147              'inF0' ( in 2-component vector of float)
+0:147            Constant:
+0:147              0.301030
 0:148      Sequence
 0:148        move second child to first child ( temp 2-component vector of float)
-0:148          'r047' ( temp 2-component vector of float)
-0:148          min ( temp 2-component vector of float)
+0:148          'r045' ( temp 2-component vector of float)
+0:148          log2 ( temp 2-component vector of float)
 0:148            'inF0' ( in 2-component vector of float)
-0:148            'inF1' ( in 2-component vector of float)
 0:149      Sequence
 0:149        move second child to first child ( temp 2-component vector of float)
-0:149          'r048' ( temp 2-component vector of float)
-0:149          normalize ( temp 2-component vector of float)
+0:149          'r046' ( temp 2-component vector of float)
+0:149          max ( temp 2-component vector of float)
 0:149            'inF0' ( in 2-component vector of float)
+0:149            'inF1' ( in 2-component vector of float)
 0:150      Sequence
 0:150        move second child to first child ( temp 2-component vector of float)
-0:150          'r049' ( temp 2-component vector of float)
-0:150          pow ( temp 2-component vector of float)
+0:150          'r047' ( temp 2-component vector of float)
+0:150          min ( temp 2-component vector of float)
 0:150            'inF0' ( in 2-component vector of float)
 0:150            'inF1' ( in 2-component vector of float)
 0:151      Sequence
 0:151        move second child to first child ( temp 2-component vector of float)
-0:151          'r050' ( temp 2-component vector of float)
-0:151          radians ( temp 2-component vector of float)
+0:151          'r048' ( temp 2-component vector of float)
+0:151          normalize ( temp 2-component vector of float)
 0:151            'inF0' ( in 2-component vector of float)
 0:152      Sequence
 0:152        move second child to first child ( temp 2-component vector of float)
-0:152          'r051' ( temp 2-component vector of float)
-0:152          divide ( temp 2-component vector of float)
-0:152            Constant:
-0:152              1.000000
+0:152          'r049' ( temp 2-component vector of float)
+0:152          pow ( temp 2-component vector of float)
 0:152            'inF0' ( in 2-component vector of float)
+0:152            'inF1' ( in 2-component vector of float)
 0:153      Sequence
 0:153        move second child to first child ( temp 2-component vector of float)
-0:153          'r052' ( temp 2-component vector of float)
-0:153          reflect ( temp 2-component vector of float)
+0:153          'r050' ( temp 2-component vector of float)
+0:153          radians ( temp 2-component vector of float)
 0:153            'inF0' ( in 2-component vector of float)
-0:153            'inF1' ( in 2-component vector of float)
 0:154      Sequence
 0:154        move second child to first child ( temp 2-component vector of float)
-0:154          'r053' ( temp 2-component vector of float)
-0:154          refract ( temp 2-component vector of float)
-0:154            'inF0' ( in 2-component vector of float)
-0:154            'inF1' ( in 2-component vector of float)
+0:154          'r051' ( temp 2-component vector of float)
+0:154          divide ( temp 2-component vector of float)
 0:154            Constant:
-0:154              2.000000
+0:154              1.000000
+0:154            'inF0' ( in 2-component vector of float)
 0:155      Sequence
-0:155        move second child to first child ( temp 2-component vector of uint)
-0:155          'r054' ( temp 2-component vector of uint)
+0:155        move second child to first child ( temp 2-component vector of float)
+0:155          'r052' ( temp 2-component vector of float)
+0:155          reflect ( temp 2-component vector of float)
+0:155            'inF0' ( in 2-component vector of float)
+0:155            'inF1' ( in 2-component vector of float)
+0:156      Sequence
+0:156        move second child to first child ( temp 2-component vector of float)
+0:156          'r053' ( temp 2-component vector of float)
+0:156          refract ( temp 2-component vector of float)
+0:156            'inF0' ( in 2-component vector of float)
+0:156            'inF1' ( in 2-component vector of float)
+0:156            Constant:
+0:156              2.000000
+0:157      Sequence
+0:157        move second child to first child ( temp 2-component vector of uint)
+0:157          'r054' ( temp 2-component vector of uint)
 0:?           bitFieldReverse ( temp 2-component vector of uint)
 0:?             Constant:
 0:?               1 (const uint)
 0:?               2 (const uint)
-0:156      Sequence
-0:156        move second child to first child ( temp 2-component vector of float)
-0:156          'r055' ( temp 2-component vector of float)
-0:156          roundEven ( temp 2-component vector of float)
-0:156            'inF0' ( in 2-component vector of float)
-0:157      Sequence
-0:157        move second child to first child ( temp 2-component vector of float)
-0:157          'r056' ( temp 2-component vector of float)
-0:157          inverse sqrt ( temp 2-component vector of float)
-0:157            'inF0' ( in 2-component vector of float)
 0:158      Sequence
 0:158        move second child to first child ( temp 2-component vector of float)
-0:158          'r057' ( temp 2-component vector of float)
-0:158          clamp ( temp 2-component vector of float)
+0:158          'r055' ( temp 2-component vector of float)
+0:158          roundEven ( temp 2-component vector of float)
 0:158            'inF0' ( in 2-component vector of float)
-0:158            Constant:
-0:158              0.000000
-0:158            Constant:
-0:158              1.000000
 0:159      Sequence
 0:159        move second child to first child ( temp 2-component vector of float)
-0:159          'r058' ( temp 2-component vector of float)
-0:159          Sign ( temp 2-component vector of float)
+0:159          'r056' ( temp 2-component vector of float)
+0:159          inverse sqrt ( temp 2-component vector of float)
 0:159            'inF0' ( in 2-component vector of float)
 0:160      Sequence
 0:160        move second child to first child ( temp 2-component vector of float)
-0:160          'r059' ( temp 2-component vector of float)
-0:160          sine ( temp 2-component vector of float)
+0:160          'r057' ( temp 2-component vector of float)
+0:160          clamp ( temp 2-component vector of float)
 0:160            'inF0' ( in 2-component vector of float)
+0:160            Constant:
+0:160              0.000000
+0:160            Constant:
+0:160              1.000000
 0:161      Sequence
 0:161        move second child to first child ( temp 2-component vector of float)
-0:161          'inF1' ( in 2-component vector of float)
-0:161          sine ( temp 2-component vector of float)
-0:161            'inF0' ( in 2-component vector of float)
-0:161        move second child to first child ( temp 2-component vector of float)
-0:161          'inF2' ( in 2-component vector of float)
-0:161          cosine ( temp 2-component vector of float)
+0:161          'r058' ( temp 2-component vector of float)
+0:161          Sign ( temp 2-component vector of float)
 0:161            'inF0' ( in 2-component vector of float)
 0:162      Sequence
 0:162        move second child to first child ( temp 2-component vector of float)
-0:162          'r060' ( temp 2-component vector of float)
-0:162          hyp. sine ( temp 2-component vector of float)
+0:162          'r059' ( temp 2-component vector of float)
+0:162          sine ( temp 2-component vector of float)
 0:162            'inF0' ( in 2-component vector of float)
 0:163      Sequence
 0:163        move second child to first child ( temp 2-component vector of float)
-0:163          'r061' ( temp 2-component vector of float)
-0:163          smoothstep ( temp 2-component vector of float)
+0:163          'inF1' ( in 2-component vector of float)
+0:163          sine ( temp 2-component vector of float)
 0:163            'inF0' ( in 2-component vector of float)
-0:163            'inF1' ( in 2-component vector of float)
-0:163            'inF2' ( in 2-component vector of float)
+0:163        move second child to first child ( temp 2-component vector of float)
+0:163          'inF2' ( in 2-component vector of float)
+0:163          cosine ( temp 2-component vector of float)
+0:163            'inF0' ( in 2-component vector of float)
 0:164      Sequence
 0:164        move second child to first child ( temp 2-component vector of float)
-0:164          'r062' ( temp 2-component vector of float)
-0:164          sqrt ( temp 2-component vector of float)
+0:164          'r060' ( temp 2-component vector of float)
+0:164          hyp. sine ( temp 2-component vector of float)
 0:164            'inF0' ( in 2-component vector of float)
 0:165      Sequence
 0:165        move second child to first child ( temp 2-component vector of float)
-0:165          'r063' ( temp 2-component vector of float)
-0:165          step ( temp 2-component vector of float)
+0:165          'r061' ( temp 2-component vector of float)
+0:165          smoothstep ( temp 2-component vector of float)
 0:165            'inF0' ( in 2-component vector of float)
 0:165            'inF1' ( in 2-component vector of float)
+0:165            'inF2' ( in 2-component vector of float)
 0:166      Sequence
 0:166        move second child to first child ( temp 2-component vector of float)
-0:166          'r064' ( temp 2-component vector of float)
-0:166          tangent ( temp 2-component vector of float)
+0:166          'r062' ( temp 2-component vector of float)
+0:166          sqrt ( temp 2-component vector of float)
 0:166            'inF0' ( in 2-component vector of float)
 0:167      Sequence
 0:167        move second child to first child ( temp 2-component vector of float)
-0:167          'r065' ( temp 2-component vector of float)
-0:167          hyp. tangent ( temp 2-component vector of float)
+0:167          'r063' ( temp 2-component vector of float)
+0:167          step ( temp 2-component vector of float)
 0:167            'inF0' ( in 2-component vector of float)
+0:167            'inF1' ( in 2-component vector of float)
+0:168      Sequence
+0:168        move second child to first child ( temp 2-component vector of float)
+0:168          'r064' ( temp 2-component vector of float)
+0:168          tangent ( temp 2-component vector of float)
+0:168            'inF0' ( in 2-component vector of float)
 0:169      Sequence
 0:169        move second child to first child ( temp 2-component vector of float)
-0:169          'r066' ( temp 2-component vector of float)
-0:169          trunc ( temp 2-component vector of float)
+0:169          'r065' ( temp 2-component vector of float)
+0:169          hyp. tangent ( temp 2-component vector of float)
 0:169            'inF0' ( in 2-component vector of float)
-0:172      Branch: Return with expression
+0:171      Sequence
+0:171        move second child to first child ( temp 2-component vector of float)
+0:171          'r066' ( temp 2-component vector of float)
+0:171          trunc ( temp 2-component vector of float)
+0:171            'inF0' ( in 2-component vector of float)
+0:174      Branch: Return with expression
 0:?         Constant:
 0:?           1.000000
 0:?           2.000000
-0:176  Function Definition: PixelShaderFunction3(vf3;vf3;vf3;vu3;vu3; ( temp 3-component vector of float)
-0:176    Function Parameters: 
-0:176      'inF0' ( in 3-component vector of float)
-0:176      'inF1' ( in 3-component vector of float)
-0:176      'inF2' ( in 3-component vector of float)
-0:176      'inU0' ( in 3-component vector of uint)
-0:176      'inU1' ( in 3-component vector of uint)
+0:178  Function Definition: PixelShaderFunction3(vf3;vf3;vf3;vu3;vu3; ( temp 3-component vector of float)
+0:178    Function Parameters: 
+0:178      'inF0' ( in 3-component vector of float)
+0:178      'inF1' ( in 3-component vector of float)
+0:178      'inF2' ( in 3-component vector of float)
+0:178      'inU0' ( in 3-component vector of uint)
+0:178      'inU1' ( in 3-component vector of uint)
 0:?     Sequence
-0:179      Sequence
-0:179        move second child to first child ( temp bool)
-0:179          'r000' ( temp bool)
-0:179          all ( temp bool)
-0:179            Convert float to bool ( temp 3-component vector of bool)
-0:179              'inF0' ( in 3-component vector of float)
-0:180      Sequence
-0:180        move second child to first child ( temp 3-component vector of float)
-0:180          'r001' ( temp 3-component vector of float)
-0:180          Absolute value ( temp 3-component vector of float)
-0:180            'inF0' ( in 3-component vector of float)
 0:181      Sequence
-0:181        move second child to first child ( temp 3-component vector of float)
-0:181          'r002' ( temp 3-component vector of float)
-0:181          arc cosine ( temp 3-component vector of float)
-0:181            'inF0' ( in 3-component vector of float)
+0:181        move second child to first child ( temp bool)
+0:181          'r000' ( temp bool)
+0:181          all ( temp bool)
+0:181            Convert float to bool ( temp 3-component vector of bool)
+0:181              'inF0' ( in 3-component vector of float)
 0:182      Sequence
-0:182        move second child to first child ( temp bool)
-0:182          'r003' ( temp bool)
-0:182          any ( temp bool)
-0:182            Convert float to bool ( temp 3-component vector of bool)
-0:182              'inF0' ( in 3-component vector of float)
+0:182        move second child to first child ( temp 3-component vector of float)
+0:182          'r001' ( temp 3-component vector of float)
+0:182          Absolute value ( temp 3-component vector of float)
+0:182            'inF0' ( in 3-component vector of float)
 0:183      Sequence
 0:183        move second child to first child ( temp 3-component vector of float)
-0:183          'r004' ( temp 3-component vector of float)
-0:183          arc sine ( temp 3-component vector of float)
+0:183          'r002' ( temp 3-component vector of float)
+0:183          arc cosine ( temp 3-component vector of float)
 0:183            'inF0' ( in 3-component vector of float)
 0:184      Sequence
-0:184        move second child to first child ( temp 3-component vector of int)
-0:184          'r005' ( temp 3-component vector of int)
-0:184          floatBitsToInt ( temp 3-component vector of int)
-0:184            'inF0' ( in 3-component vector of float)
+0:184        move second child to first child ( temp bool)
+0:184          'r003' ( temp bool)
+0:184          any ( temp bool)
+0:184            Convert float to bool ( temp 3-component vector of bool)
+0:184              'inF0' ( in 3-component vector of float)
 0:185      Sequence
-0:185        move second child to first child ( temp 3-component vector of uint)
-0:185          'r006' ( temp 3-component vector of uint)
-0:185          floatBitsToUint ( temp 3-component vector of uint)
+0:185        move second child to first child ( temp 3-component vector of float)
+0:185          'r004' ( temp 3-component vector of float)
+0:185          arc sine ( temp 3-component vector of float)
 0:185            'inF0' ( in 3-component vector of float)
 0:186      Sequence
-0:186        move second child to first child ( temp 3-component vector of float)
-0:186          'r007' ( temp 3-component vector of float)
-0:186          intBitsToFloat ( temp 3-component vector of float)
-0:186            'inU0' ( in 3-component vector of uint)
+0:186        move second child to first child ( temp 3-component vector of int)
+0:186          'r005' ( temp 3-component vector of int)
+0:186          floatBitsToInt ( temp 3-component vector of int)
+0:186            'inF0' ( in 3-component vector of float)
+0:187      Sequence
+0:187        move second child to first child ( temp 3-component vector of uint)
+0:187          'r006' ( temp 3-component vector of uint)
+0:187          floatBitsToUint ( temp 3-component vector of uint)
+0:187            'inF0' ( in 3-component vector of float)
 0:188      Sequence
 0:188        move second child to first child ( temp 3-component vector of float)
-0:188          'r009' ( temp 3-component vector of float)
-0:188          arc tangent ( temp 3-component vector of float)
-0:188            'inF0' ( in 3-component vector of float)
-0:189      Sequence
-0:189        move second child to first child ( temp 3-component vector of float)
-0:189          'r010' ( temp 3-component vector of float)
-0:189          arc tangent ( temp 3-component vector of float)
-0:189            'inF0' ( in 3-component vector of float)
-0:189            'inF1' ( in 3-component vector of float)
+0:188          'r007' ( temp 3-component vector of float)
+0:188          intBitsToFloat ( temp 3-component vector of float)
+0:188            'inU0' ( in 3-component vector of uint)
 0:190      Sequence
 0:190        move second child to first child ( temp 3-component vector of float)
-0:190          'r011' ( temp 3-component vector of float)
-0:190          Ceiling ( temp 3-component vector of float)
+0:190          'r009' ( temp 3-component vector of float)
+0:190          arc tangent ( temp 3-component vector of float)
 0:190            'inF0' ( in 3-component vector of float)
 0:191      Sequence
 0:191        move second child to first child ( temp 3-component vector of float)
-0:191          'r012' ( temp 3-component vector of float)
-0:191          clamp ( temp 3-component vector of float)
+0:191          'r010' ( temp 3-component vector of float)
+0:191          arc tangent ( temp 3-component vector of float)
 0:191            'inF0' ( in 3-component vector of float)
 0:191            'inF1' ( in 3-component vector of float)
-0:191            'inF2' ( in 3-component vector of float)
-0:192      Test condition and select ( temp void)
-0:192        Condition
-0:192        any ( temp bool)
-0:192          Compare Less Than ( temp 3-component vector of bool)
+0:192      Sequence
+0:192        move second child to first child ( temp 3-component vector of float)
+0:192          'r011' ( temp 3-component vector of float)
+0:192          Ceiling ( temp 3-component vector of float)
 0:192            'inF0' ( in 3-component vector of float)
-0:192            Constant:
-0:192              0.000000
-0:192              0.000000
-0:192              0.000000
-0:192        true case
-0:192        Branch: Kill
 0:193      Sequence
 0:193        move second child to first child ( temp 3-component vector of float)
-0:193          'r013' ( temp 3-component vector of float)
-0:193          cosine ( temp 3-component vector of float)
+0:193          'r012' ( temp 3-component vector of float)
+0:193          clamp ( temp 3-component vector of float)
 0:193            'inF0' ( in 3-component vector of float)
-0:194      Sequence
-0:194        move second child to first child ( temp 3-component vector of float)
-0:194          'r014' ( temp 3-component vector of float)
-0:194          hyp. cosine ( temp 3-component vector of float)
+0:193            'inF1' ( in 3-component vector of float)
+0:193            'inF2' ( in 3-component vector of float)
+0:194      Test condition and select ( temp void)
+0:194        Condition
+0:194        any ( temp bool)
+0:194          Compare Less Than ( temp 3-component vector of bool)
 0:194            'inF0' ( in 3-component vector of float)
-0:195      Sequence
-0:195        move second child to first child ( temp 3-component vector of uint)
-0:195          'r015' ( temp 3-component vector of uint)
+0:194            Constant:
+0:194              0.000000
+0:194              0.000000
+0:194              0.000000
+0:194        true case
+0:194        Branch: Kill
+0:195      Test condition and select ( temp void)
+0:195        Condition
+0:195        any ( temp bool)
+0:195          Compare Less Than ( temp 3-component vector of bool)
+0:195            'inU0' ( in 3-component vector of uint)
+0:195            Constant:
+0:195              0.000000
+0:195              0.000000
+0:195              0.000000
+0:195        true case
+0:195        Branch: Kill
+0:196      Sequence
+0:196        move second child to first child ( temp 3-component vector of float)
+0:196          'r013' ( temp 3-component vector of float)
+0:196          cosine ( temp 3-component vector of float)
+0:196            'inF0' ( in 3-component vector of float)
+0:197      Sequence
+0:197        move second child to first child ( temp 3-component vector of float)
+0:197          'r014' ( temp 3-component vector of float)
+0:197          hyp. cosine ( temp 3-component vector of float)
+0:197            'inF0' ( in 3-component vector of float)
+0:198      Sequence
+0:198        move second child to first child ( temp 3-component vector of uint)
+0:198          'r015' ( temp 3-component vector of uint)
 0:?           bitCount ( temp 3-component vector of uint)
 0:?             Constant:
 0:?               7 (const uint)
 0:?               3 (const uint)
 0:?               5 (const uint)
-0:196      Sequence
-0:196        move second child to first child ( temp 3-component vector of float)
-0:196          'r016' ( temp 3-component vector of float)
-0:196          cross-product ( temp 3-component vector of float)
-0:196            'inF0' ( in 3-component vector of float)
-0:196            'inF1' ( in 3-component vector of float)
-0:197      Sequence
-0:197        move second child to first child ( temp 3-component vector of float)
-0:197          'r017' ( temp 3-component vector of float)
-0:197          dPdx ( temp 3-component vector of float)
-0:197            'inF0' ( in 3-component vector of float)
-0:198      Sequence
-0:198        move second child to first child ( temp 3-component vector of float)
-0:198          'r018' ( temp 3-component vector of float)
-0:198          dPdxCoarse ( temp 3-component vector of float)
-0:198            'inF0' ( in 3-component vector of float)
 0:199      Sequence
 0:199        move second child to first child ( temp 3-component vector of float)
-0:199          'r019' ( temp 3-component vector of float)
-0:199          dPdxFine ( temp 3-component vector of float)
+0:199          'r016' ( temp 3-component vector of float)
+0:199          cross-product ( temp 3-component vector of float)
 0:199            'inF0' ( in 3-component vector of float)
+0:199            'inF1' ( in 3-component vector of float)
 0:200      Sequence
 0:200        move second child to first child ( temp 3-component vector of float)
-0:200          'r020' ( temp 3-component vector of float)
-0:200          dPdy ( temp 3-component vector of float)
+0:200          'r017' ( temp 3-component vector of float)
+0:200          dPdx ( temp 3-component vector of float)
 0:200            'inF0' ( in 3-component vector of float)
 0:201      Sequence
 0:201        move second child to first child ( temp 3-component vector of float)
-0:201          'r021' ( temp 3-component vector of float)
-0:201          dPdyCoarse ( temp 3-component vector of float)
+0:201          'r018' ( temp 3-component vector of float)
+0:201          dPdxCoarse ( temp 3-component vector of float)
 0:201            'inF0' ( in 3-component vector of float)
 0:202      Sequence
 0:202        move second child to first child ( temp 3-component vector of float)
-0:202          'r022' ( temp 3-component vector of float)
-0:202          dPdyFine ( temp 3-component vector of float)
+0:202          'r019' ( temp 3-component vector of float)
+0:202          dPdxFine ( temp 3-component vector of float)
 0:202            'inF0' ( in 3-component vector of float)
 0:203      Sequence
 0:203        move second child to first child ( temp 3-component vector of float)
-0:203          'r023' ( temp 3-component vector of float)
-0:203          degrees ( temp 3-component vector of float)
+0:203          'r020' ( temp 3-component vector of float)
+0:203          dPdy ( temp 3-component vector of float)
 0:203            'inF0' ( in 3-component vector of float)
 0:204      Sequence
-0:204        move second child to first child ( temp float)
-0:204          'r024' ( temp float)
-0:204          distance ( temp float)
+0:204        move second child to first child ( temp 3-component vector of float)
+0:204          'r021' ( temp 3-component vector of float)
+0:204          dPdyCoarse ( temp 3-component vector of float)
 0:204            'inF0' ( in 3-component vector of float)
-0:204            'inF1' ( in 3-component vector of float)
 0:205      Sequence
-0:205        move second child to first child ( temp float)
-0:205          'r025' ( temp float)
-0:205          dot-product ( temp float)
+0:205        move second child to first child ( temp 3-component vector of float)
+0:205          'r022' ( temp 3-component vector of float)
+0:205          dPdyFine ( temp 3-component vector of float)
 0:205            'inF0' ( in 3-component vector of float)
-0:205            'inF1' ( in 3-component vector of float)
-0:209      Sequence
-0:209        move second child to first child ( temp 3-component vector of float)
-0:209          'r029' ( temp 3-component vector of float)
-0:209          exp ( temp 3-component vector of float)
-0:209            'inF0' ( in 3-component vector of float)
-0:210      Sequence
-0:210        move second child to first child ( temp 3-component vector of float)
-0:210          'r030' ( temp 3-component vector of float)
-0:210          exp2 ( temp 3-component vector of float)
-0:210            'inF0' ( in 3-component vector of float)
-0:211      Sequence
-0:211        move second child to first child ( temp 3-component vector of float)
-0:211          'r031' ( temp 3-component vector of float)
-0:211          face-forward ( temp 3-component vector of float)
-0:211            'inF0' ( in 3-component vector of float)
-0:211            'inF1' ( in 3-component vector of float)
-0:211            'inF2' ( in 3-component vector of float)
+0:206      Sequence
+0:206        move second child to first child ( temp 3-component vector of float)
+0:206          'r023' ( temp 3-component vector of float)
+0:206          degrees ( temp 3-component vector of float)
+0:206            'inF0' ( in 3-component vector of float)
+0:207      Sequence
+0:207        move second child to first child ( temp float)
+0:207          'r024' ( temp float)
+0:207          distance ( temp float)
+0:207            'inF0' ( in 3-component vector of float)
+0:207            'inF1' ( in 3-component vector of float)
+0:208      Sequence
+0:208        move second child to first child ( temp float)
+0:208          'r025' ( temp float)
+0:208          dot-product ( temp float)
+0:208            'inF0' ( in 3-component vector of float)
+0:208            'inF1' ( in 3-component vector of float)
 0:212      Sequence
-0:212        move second child to first child ( temp 3-component vector of uint)
-0:212          'r032' ( temp 3-component vector of uint)
+0:212        move second child to first child ( temp 3-component vector of float)
+0:212          'r029' ( temp 3-component vector of float)
+0:212          exp ( temp 3-component vector of float)
+0:212            'inF0' ( in 3-component vector of float)
+0:213      Sequence
+0:213        move second child to first child ( temp 3-component vector of float)
+0:213          'r030' ( temp 3-component vector of float)
+0:213          exp2 ( temp 3-component vector of float)
+0:213            'inF0' ( in 3-component vector of float)
+0:214      Sequence
+0:214        move second child to first child ( temp 3-component vector of float)
+0:214          'r031' ( temp 3-component vector of float)
+0:214          face-forward ( temp 3-component vector of float)
+0:214            'inF0' ( in 3-component vector of float)
+0:214            'inF1' ( in 3-component vector of float)
+0:214            'inF2' ( in 3-component vector of float)
+0:215      Sequence
+0:215        move second child to first child ( temp 3-component vector of uint)
+0:215          'r032' ( temp 3-component vector of uint)
 0:?           findMSB ( temp 3-component vector of uint)
 0:?             Constant:
 0:?               2 (const uint)
 0:?               3 (const uint)
 0:?               4 (const uint)
-0:213      Sequence
-0:213        move second child to first child ( temp 3-component vector of uint)
-0:213          'r033' ( temp 3-component vector of uint)
+0:216      Sequence
+0:216        move second child to first child ( temp 3-component vector of uint)
+0:216          'r033' ( temp 3-component vector of uint)
 0:?           findLSB ( temp 3-component vector of uint)
 0:?             Constant:
 0:?               2 (const uint)
 0:?               3 (const uint)
 0:?               4 (const uint)
-0:214      Sequence
-0:214        move second child to first child ( temp 3-component vector of float)
-0:214          'r034' ( temp 3-component vector of float)
-0:214          Floor ( temp 3-component vector of float)
-0:214            'inF0' ( in 3-component vector of float)
-0:216      Sequence
-0:216        move second child to first child ( temp 3-component vector of float)
-0:216          'r036' ( temp 3-component vector of float)
-0:216          mod ( temp 3-component vector of float)
-0:216            'inF0' ( in 3-component vector of float)
-0:216            'inF1' ( in 3-component vector of float)
 0:217      Sequence
 0:217        move second child to first child ( temp 3-component vector of float)
-0:217          'r037' ( temp 3-component vector of float)
-0:217          Fraction ( temp 3-component vector of float)
+0:217          'r034' ( temp 3-component vector of float)
+0:217          Floor ( temp 3-component vector of float)
 0:217            'inF0' ( in 3-component vector of float)
-0:218      Sequence
-0:218        move second child to first child ( temp 3-component vector of float)
-0:218          'r039' ( temp 3-component vector of float)
-0:218          fwidth ( temp 3-component vector of float)
-0:218            'inF0' ( in 3-component vector of float)
 0:219      Sequence
-0:219        move second child to first child ( temp 3-component vector of bool)
-0:219          'r040' ( temp 3-component vector of bool)
-0:219          isinf ( temp 3-component vector of bool)
+0:219        move second child to first child ( temp 3-component vector of float)
+0:219          'r036' ( temp 3-component vector of float)
+0:219          mod ( temp 3-component vector of float)
 0:219            'inF0' ( in 3-component vector of float)
+0:219            'inF1' ( in 3-component vector of float)
 0:220      Sequence
-0:220        move second child to first child ( temp 3-component vector of bool)
-0:220          'r041' ( temp 3-component vector of bool)
-0:220          isnan ( temp 3-component vector of bool)
+0:220        move second child to first child ( temp 3-component vector of float)
+0:220          'r037' ( temp 3-component vector of float)
+0:220          Fraction ( temp 3-component vector of float)
 0:220            'inF0' ( in 3-component vector of float)
 0:221      Sequence
 0:221        move second child to first child ( temp 3-component vector of float)
-0:221          'r042' ( temp 3-component vector of float)
-0:221          ldexp ( temp 3-component vector of float)
+0:221          'r039' ( temp 3-component vector of float)
+0:221          fwidth ( temp 3-component vector of float)
 0:221            'inF0' ( in 3-component vector of float)
-0:221            'inF1' ( in 3-component vector of float)
 0:222      Sequence
-0:222        move second child to first child ( temp 3-component vector of float)
-0:222          'r039a' ( temp 3-component vector of float)
-0:222          mix ( temp 3-component vector of float)
+0:222        move second child to first child ( temp 3-component vector of bool)
+0:222          'r040' ( temp 3-component vector of bool)
+0:222          isinf ( temp 3-component vector of bool)
 0:222            'inF0' ( in 3-component vector of float)
-0:222            'inF1' ( in 3-component vector of float)
-0:222            'inF2' ( in 3-component vector of float)
 0:223      Sequence
-0:223        move second child to first child ( temp 3-component vector of float)
-0:223          'r039b' ( temp 3-component vector of float)
-0:223          mix ( temp 3-component vector of float)
+0:223        move second child to first child ( temp 3-component vector of bool)
+0:223          'r041' ( temp 3-component vector of bool)
+0:223          isnan ( temp 3-component vector of bool)
 0:223            'inF0' ( in 3-component vector of float)
-0:223            'inF1' ( in 3-component vector of float)
-0:223            Constant:
-0:223              0.300000
 0:224      Sequence
-0:224        move second child to first child ( temp float)
-0:224          'r043' ( temp float)
-0:224          length ( temp float)
+0:224        move second child to first child ( temp 3-component vector of float)
+0:224          'r042' ( temp 3-component vector of float)
+0:224          ldexp ( temp 3-component vector of float)
 0:224            'inF0' ( in 3-component vector of float)
+0:224            'inF1' ( in 3-component vector of float)
 0:225      Sequence
 0:225        move second child to first child ( temp 3-component vector of float)
-0:225          'r044' ( temp 3-component vector of float)
-0:225          log ( temp 3-component vector of float)
+0:225          'r039a' ( temp 3-component vector of float)
+0:225          mix ( temp 3-component vector of float)
 0:225            'inF0' ( in 3-component vector of float)
+0:225            'inF1' ( in 3-component vector of float)
+0:225            'inF2' ( in 3-component vector of float)
 0:226      Sequence
 0:226        move second child to first child ( temp 3-component vector of float)
-0:226          'r045' ( temp 3-component vector of float)
-0:226          vector-scale ( temp 3-component vector of float)
-0:226            log2 ( temp 3-component vector of float)
-0:226              'inF0' ( in 3-component vector of float)
+0:226          'r039b' ( temp 3-component vector of float)
+0:226          mix ( temp 3-component vector of float)
+0:226            'inF0' ( in 3-component vector of float)
+0:226            'inF1' ( in 3-component vector of float)
 0:226            Constant:
-0:226              0.301030
+0:226              0.300000
 0:227      Sequence
-0:227        move second child to first child ( temp 3-component vector of float)
-0:227          'r046' ( temp 3-component vector of float)
-0:227          log2 ( temp 3-component vector of float)
+0:227        move second child to first child ( temp float)
+0:227          'r043' ( temp float)
+0:227          length ( temp float)
 0:227            'inF0' ( in 3-component vector of float)
 0:228      Sequence
 0:228        move second child to first child ( temp 3-component vector of float)
-0:228          'r047' ( temp 3-component vector of float)
-0:228          max ( temp 3-component vector of float)
+0:228          'r044' ( temp 3-component vector of float)
+0:228          log ( temp 3-component vector of float)
 0:228            'inF0' ( in 3-component vector of float)
-0:228            'inF1' ( in 3-component vector of float)
 0:229      Sequence
 0:229        move second child to first child ( temp 3-component vector of float)
-0:229          'r048' ( temp 3-component vector of float)
-0:229          min ( temp 3-component vector of float)
-0:229            'inF0' ( in 3-component vector of float)
-0:229            'inF1' ( in 3-component vector of float)
+0:229          'r045' ( temp 3-component vector of float)
+0:229          vector-scale ( temp 3-component vector of float)
+0:229            log2 ( temp 3-component vector of float)
+0:229              'inF0' ( in 3-component vector of float)
+0:229            Constant:
+0:229              0.301030
 0:230      Sequence
 0:230        move second child to first child ( temp 3-component vector of float)
-0:230          'r049' ( temp 3-component vector of float)
-0:230          normalize ( temp 3-component vector of float)
+0:230          'r046' ( temp 3-component vector of float)
+0:230          log2 ( temp 3-component vector of float)
 0:230            'inF0' ( in 3-component vector of float)
 0:231      Sequence
 0:231        move second child to first child ( temp 3-component vector of float)
-0:231          'r050' ( temp 3-component vector of float)
-0:231          pow ( temp 3-component vector of float)
+0:231          'r047' ( temp 3-component vector of float)
+0:231          max ( temp 3-component vector of float)
 0:231            'inF0' ( in 3-component vector of float)
 0:231            'inF1' ( in 3-component vector of float)
 0:232      Sequence
 0:232        move second child to first child ( temp 3-component vector of float)
-0:232          'r051' ( temp 3-component vector of float)
-0:232          radians ( temp 3-component vector of float)
+0:232          'r048' ( temp 3-component vector of float)
+0:232          min ( temp 3-component vector of float)
 0:232            'inF0' ( in 3-component vector of float)
+0:232            'inF1' ( in 3-component vector of float)
 0:233      Sequence
 0:233        move second child to first child ( temp 3-component vector of float)
-0:233          'r052' ( temp 3-component vector of float)
-0:233          divide ( temp 3-component vector of float)
-0:233            Constant:
-0:233              1.000000
+0:233          'r049' ( temp 3-component vector of float)
+0:233          normalize ( temp 3-component vector of float)
 0:233            'inF0' ( in 3-component vector of float)
 0:234      Sequence
 0:234        move second child to first child ( temp 3-component vector of float)
-0:234          'r053' ( temp 3-component vector of float)
-0:234          reflect ( temp 3-component vector of float)
+0:234          'r050' ( temp 3-component vector of float)
+0:234          pow ( temp 3-component vector of float)
 0:234            'inF0' ( in 3-component vector of float)
 0:234            'inF1' ( in 3-component vector of float)
 0:235      Sequence
 0:235        move second child to first child ( temp 3-component vector of float)
-0:235          'r054' ( temp 3-component vector of float)
-0:235          refract ( temp 3-component vector of float)
+0:235          'r051' ( temp 3-component vector of float)
+0:235          radians ( temp 3-component vector of float)
 0:235            'inF0' ( in 3-component vector of float)
-0:235            'inF1' ( in 3-component vector of float)
-0:235            Constant:
-0:235              2.000000
 0:236      Sequence
-0:236        move second child to first child ( temp 3-component vector of uint)
-0:236          'r055' ( temp 3-component vector of uint)
+0:236        move second child to first child ( temp 3-component vector of float)
+0:236          'r052' ( temp 3-component vector of float)
+0:236          divide ( temp 3-component vector of float)
+0:236            Constant:
+0:236              1.000000
+0:236            'inF0' ( in 3-component vector of float)
+0:237      Sequence
+0:237        move second child to first child ( temp 3-component vector of float)
+0:237          'r053' ( temp 3-component vector of float)
+0:237          reflect ( temp 3-component vector of float)
+0:237            'inF0' ( in 3-component vector of float)
+0:237            'inF1' ( in 3-component vector of float)
+0:238      Sequence
+0:238        move second child to first child ( temp 3-component vector of float)
+0:238          'r054' ( temp 3-component vector of float)
+0:238          refract ( temp 3-component vector of float)
+0:238            'inF0' ( in 3-component vector of float)
+0:238            'inF1' ( in 3-component vector of float)
+0:238            Constant:
+0:238              2.000000
+0:239      Sequence
+0:239        move second child to first child ( temp 3-component vector of uint)
+0:239          'r055' ( temp 3-component vector of uint)
 0:?           bitFieldReverse ( temp 3-component vector of uint)
 0:?             Constant:
 0:?               1 (const uint)
 0:?               2 (const uint)
 0:?               3 (const uint)
-0:237      Sequence
-0:237        move second child to first child ( temp 3-component vector of float)
-0:237          'r056' ( temp 3-component vector of float)
-0:237          roundEven ( temp 3-component vector of float)
-0:237            'inF0' ( in 3-component vector of float)
-0:238      Sequence
-0:238        move second child to first child ( temp 3-component vector of float)
-0:238          'r057' ( temp 3-component vector of float)
-0:238          inverse sqrt ( temp 3-component vector of float)
-0:238            'inF0' ( in 3-component vector of float)
-0:239      Sequence
-0:239        move second child to first child ( temp 3-component vector of float)
-0:239          'r058' ( temp 3-component vector of float)
-0:239          clamp ( temp 3-component vector of float)
-0:239            'inF0' ( in 3-component vector of float)
-0:239            Constant:
-0:239              0.000000
-0:239            Constant:
-0:239              1.000000
 0:240      Sequence
 0:240        move second child to first child ( temp 3-component vector of float)
-0:240          'r059' ( temp 3-component vector of float)
-0:240          Sign ( temp 3-component vector of float)
+0:240          'r056' ( temp 3-component vector of float)
+0:240          roundEven ( temp 3-component vector of float)
 0:240            'inF0' ( in 3-component vector of float)
 0:241      Sequence
 0:241        move second child to first child ( temp 3-component vector of float)
-0:241          'r060' ( temp 3-component vector of float)
-0:241          sine ( temp 3-component vector of float)
+0:241          'r057' ( temp 3-component vector of float)
+0:241          inverse sqrt ( temp 3-component vector of float)
 0:241            'inF0' ( in 3-component vector of float)
 0:242      Sequence
 0:242        move second child to first child ( temp 3-component vector of float)
-0:242          'inF1' ( in 3-component vector of float)
-0:242          sine ( temp 3-component vector of float)
+0:242          'r058' ( temp 3-component vector of float)
+0:242          clamp ( temp 3-component vector of float)
 0:242            'inF0' ( in 3-component vector of float)
-0:242        move second child to first child ( temp 3-component vector of float)
-0:242          'inF2' ( in 3-component vector of float)
-0:242          cosine ( temp 3-component vector of float)
-0:242            'inF0' ( in 3-component vector of float)
+0:242            Constant:
+0:242              0.000000
+0:242            Constant:
+0:242              1.000000
 0:243      Sequence
 0:243        move second child to first child ( temp 3-component vector of float)
-0:243          'r061' ( temp 3-component vector of float)
-0:243          hyp. sine ( temp 3-component vector of float)
+0:243          'r059' ( temp 3-component vector of float)
+0:243          Sign ( temp 3-component vector of float)
 0:243            'inF0' ( in 3-component vector of float)
 0:244      Sequence
 0:244        move second child to first child ( temp 3-component vector of float)
-0:244          'r062' ( temp 3-component vector of float)
-0:244          smoothstep ( temp 3-component vector of float)
+0:244          'r060' ( temp 3-component vector of float)
+0:244          sine ( temp 3-component vector of float)
 0:244            'inF0' ( in 3-component vector of float)
-0:244            'inF1' ( in 3-component vector of float)
-0:244            'inF2' ( in 3-component vector of float)
 0:245      Sequence
 0:245        move second child to first child ( temp 3-component vector of float)
-0:245          'r063' ( temp 3-component vector of float)
-0:245          sqrt ( temp 3-component vector of float)
+0:245          'inF1' ( in 3-component vector of float)
+0:245          sine ( temp 3-component vector of float)
+0:245            'inF0' ( in 3-component vector of float)
+0:245        move second child to first child ( temp 3-component vector of float)
+0:245          'inF2' ( in 3-component vector of float)
+0:245          cosine ( temp 3-component vector of float)
 0:245            'inF0' ( in 3-component vector of float)
 0:246      Sequence
 0:246        move second child to first child ( temp 3-component vector of float)
-0:246          'r064' ( temp 3-component vector of float)
-0:246          step ( temp 3-component vector of float)
+0:246          'r061' ( temp 3-component vector of float)
+0:246          hyp. sine ( temp 3-component vector of float)
 0:246            'inF0' ( in 3-component vector of float)
-0:246            'inF1' ( in 3-component vector of float)
 0:247      Sequence
 0:247        move second child to first child ( temp 3-component vector of float)
-0:247          'r065' ( temp 3-component vector of float)
-0:247          tangent ( temp 3-component vector of float)
+0:247          'r062' ( temp 3-component vector of float)
+0:247          smoothstep ( temp 3-component vector of float)
 0:247            'inF0' ( in 3-component vector of float)
+0:247            'inF1' ( in 3-component vector of float)
+0:247            'inF2' ( in 3-component vector of float)
 0:248      Sequence
 0:248        move second child to first child ( temp 3-component vector of float)
-0:248          'r066' ( temp 3-component vector of float)
-0:248          hyp. tangent ( temp 3-component vector of float)
+0:248          'r063' ( temp 3-component vector of float)
+0:248          sqrt ( temp 3-component vector of float)
 0:248            'inF0' ( in 3-component vector of float)
+0:249      Sequence
+0:249        move second child to first child ( temp 3-component vector of float)
+0:249          'r064' ( temp 3-component vector of float)
+0:249          step ( temp 3-component vector of float)
+0:249            'inF0' ( in 3-component vector of float)
+0:249            'inF1' ( in 3-component vector of float)
 0:250      Sequence
 0:250        move second child to first child ( temp 3-component vector of float)
-0:250          'r067' ( temp 3-component vector of float)
-0:250          trunc ( temp 3-component vector of float)
+0:250          'r065' ( temp 3-component vector of float)
+0:250          tangent ( temp 3-component vector of float)
 0:250            'inF0' ( in 3-component vector of float)
-0:253      Branch: Return with expression
+0:251      Sequence
+0:251        move second child to first child ( temp 3-component vector of float)
+0:251          'r066' ( temp 3-component vector of float)
+0:251          hyp. tangent ( temp 3-component vector of float)
+0:251            'inF0' ( in 3-component vector of float)
+0:253      Sequence
+0:253        move second child to first child ( temp 3-component vector of float)
+0:253          'r067' ( temp 3-component vector of float)
+0:253          trunc ( temp 3-component vector of float)
+0:253            'inF0' ( in 3-component vector of float)
+0:256      Branch: Return with expression
 0:?         Constant:
 0:?           1.000000
 0:?           2.000000
 0:?           3.000000
-0:257  Function Definition: PixelShaderFunction(vf4;vf4;vf4;vu4;vu4; ( temp 4-component vector of float)
-0:257    Function Parameters: 
-0:257      'inF0' ( in 4-component vector of float)
-0:257      'inF1' ( in 4-component vector of float)
-0:257      'inF2' ( in 4-component vector of float)
-0:257      'inU0' ( in 4-component vector of uint)
-0:257      'inU1' ( in 4-component vector of uint)
+0:260  Function Definition: PixelShaderFunction(vf4;vf4;vf4;vu4;vu4; ( temp 4-component vector of float)
+0:260    Function Parameters: 
+0:260      'inF0' ( in 4-component vector of float)
+0:260      'inF1' ( in 4-component vector of float)
+0:260      'inF2' ( in 4-component vector of float)
+0:260      'inU0' ( in 4-component vector of uint)
+0:260      'inU1' ( in 4-component vector of uint)
 0:?     Sequence
-0:260      Sequence
-0:260        move second child to first child ( temp bool)
-0:260          'r000' ( temp bool)
-0:260          all ( temp bool)
-0:260            Convert float to bool ( temp 4-component vector of bool)
-0:260              'inF0' ( in 4-component vector of float)
-0:261      Sequence
-0:261        move second child to first child ( temp 4-component vector of float)
-0:261          'r001' ( temp 4-component vector of float)
-0:261          Absolute value ( temp 4-component vector of float)
-0:261            'inF0' ( in 4-component vector of float)
-0:262      Sequence
-0:262        move second child to first child ( temp 4-component vector of float)
-0:262          'r002' ( temp 4-component vector of float)
-0:262          arc cosine ( temp 4-component vector of float)
-0:262            'inF0' ( in 4-component vector of float)
 0:263      Sequence
 0:263        move second child to first child ( temp bool)
-0:263          'r003' ( temp bool)
-0:263          any ( temp bool)
+0:263          'r000' ( temp bool)
+0:263          all ( temp bool)
 0:263            Convert float to bool ( temp 4-component vector of bool)
 0:263              'inF0' ( in 4-component vector of float)
 0:264      Sequence
 0:264        move second child to first child ( temp 4-component vector of float)
-0:264          'r004' ( temp 4-component vector of float)
-0:264          arc sine ( temp 4-component vector of float)
+0:264          'r001' ( temp 4-component vector of float)
+0:264          Absolute value ( temp 4-component vector of float)
 0:264            'inF0' ( in 4-component vector of float)
 0:265      Sequence
-0:265        move second child to first child ( temp 4-component vector of int)
-0:265          'r005' ( temp 4-component vector of int)
-0:265          floatBitsToInt ( temp 4-component vector of int)
+0:265        move second child to first child ( temp 4-component vector of float)
+0:265          'r002' ( temp 4-component vector of float)
+0:265          arc cosine ( temp 4-component vector of float)
 0:265            'inF0' ( in 4-component vector of float)
 0:266      Sequence
-0:266        move second child to first child ( temp 4-component vector of uint)
-0:266          'r006' ( temp 4-component vector of uint)
-0:266          floatBitsToUint ( temp 4-component vector of uint)
-0:266            'inF0' ( in 4-component vector of float)
+0:266        move second child to first child ( temp bool)
+0:266          'r003' ( temp bool)
+0:266          any ( temp bool)
+0:266            Convert float to bool ( temp 4-component vector of bool)
+0:266              'inF0' ( in 4-component vector of float)
 0:267      Sequence
 0:267        move second child to first child ( temp 4-component vector of float)
-0:267          'r007' ( temp 4-component vector of float)
-0:267          intBitsToFloat ( temp 4-component vector of float)
-0:267            'inU0' ( in 4-component vector of uint)
+0:267          'r004' ( temp 4-component vector of float)
+0:267          arc sine ( temp 4-component vector of float)
+0:267            'inF0' ( in 4-component vector of float)
+0:268      Sequence
+0:268        move second child to first child ( temp 4-component vector of int)
+0:268          'r005' ( temp 4-component vector of int)
+0:268          floatBitsToInt ( temp 4-component vector of int)
+0:268            'inF0' ( in 4-component vector of float)
 0:269      Sequence
-0:269        move second child to first child ( temp 4-component vector of float)
-0:269          'r009' ( temp 4-component vector of float)
-0:269          arc tangent ( temp 4-component vector of float)
+0:269        move second child to first child ( temp 4-component vector of uint)
+0:269          'r006' ( temp 4-component vector of uint)
+0:269          floatBitsToUint ( temp 4-component vector of uint)
 0:269            'inF0' ( in 4-component vector of float)
 0:270      Sequence
 0:270        move second child to first child ( temp 4-component vector of float)
-0:270          'r010' ( temp 4-component vector of float)
-0:270          arc tangent ( temp 4-component vector of float)
-0:270            'inF0' ( in 4-component vector of float)
-0:270            'inF1' ( in 4-component vector of float)
-0:271      Sequence
-0:271        move second child to first child ( temp 4-component vector of float)
-0:271          'r011' ( temp 4-component vector of float)
-0:271          Ceiling ( temp 4-component vector of float)
-0:271            'inF0' ( in 4-component vector of float)
+0:270          'r007' ( temp 4-component vector of float)
+0:270          intBitsToFloat ( temp 4-component vector of float)
+0:270            'inU0' ( in 4-component vector of uint)
 0:272      Sequence
 0:272        move second child to first child ( temp 4-component vector of float)
-0:272          'r012' ( temp 4-component vector of float)
-0:272          clamp ( temp 4-component vector of float)
+0:272          'r009' ( temp 4-component vector of float)
+0:272          arc tangent ( temp 4-component vector of float)
 0:272            'inF0' ( in 4-component vector of float)
-0:272            'inF1' ( in 4-component vector of float)
-0:272            'inF2' ( in 4-component vector of float)
-0:273      Test condition and select ( temp void)
-0:273        Condition
-0:273        any ( temp bool)
-0:273          Compare Less Than ( temp 4-component vector of bool)
+0:273      Sequence
+0:273        move second child to first child ( temp 4-component vector of float)
+0:273          'r010' ( temp 4-component vector of float)
+0:273          arc tangent ( temp 4-component vector of float)
 0:273            'inF0' ( in 4-component vector of float)
-0:273            Constant:
-0:273              0.000000
-0:273              0.000000
-0:273              0.000000
-0:273              0.000000
-0:273        true case
-0:273        Branch: Kill
+0:273            'inF1' ( in 4-component vector of float)
 0:274      Sequence
 0:274        move second child to first child ( temp 4-component vector of float)
-0:274          'r013' ( temp 4-component vector of float)
-0:274          cosine ( temp 4-component vector of float)
+0:274          'r011' ( temp 4-component vector of float)
+0:274          Ceiling ( temp 4-component vector of float)
 0:274            'inF0' ( in 4-component vector of float)
 0:275      Sequence
 0:275        move second child to first child ( temp 4-component vector of float)
-0:275          'r014' ( temp 4-component vector of float)
-0:275          hyp. cosine ( temp 4-component vector of float)
+0:275          'r012' ( temp 4-component vector of float)
+0:275          clamp ( temp 4-component vector of float)
 0:275            'inF0' ( in 4-component vector of float)
-0:276      Sequence
-0:276        move second child to first child ( temp 4-component vector of uint)
-0:276          'r015' ( temp 4-component vector of uint)
+0:275            'inF1' ( in 4-component vector of float)
+0:275            'inF2' ( in 4-component vector of float)
+0:276      Test condition and select ( temp void)
+0:276        Condition
+0:276        any ( temp bool)
+0:276          Compare Less Than ( temp 4-component vector of bool)
+0:276            'inF0' ( in 4-component vector of float)
+0:276            Constant:
+0:276              0.000000
+0:276              0.000000
+0:276              0.000000
+0:276              0.000000
+0:276        true case
+0:276        Branch: Kill
+0:277      Test condition and select ( temp void)
+0:277        Condition
+0:277        any ( temp bool)
+0:277          Compare Less Than ( temp 4-component vector of bool)
+0:277            'inU0' ( in 4-component vector of uint)
+0:277            Constant:
+0:277              0.000000
+0:277              0.000000
+0:277              0.000000
+0:277              0.000000
+0:277        true case
+0:277        Branch: Kill
+0:278      Sequence
+0:278        move second child to first child ( temp 4-component vector of float)
+0:278          'r013' ( temp 4-component vector of float)
+0:278          cosine ( temp 4-component vector of float)
+0:278            'inF0' ( in 4-component vector of float)
+0:279      Sequence
+0:279        move second child to first child ( temp 4-component vector of float)
+0:279          'r014' ( temp 4-component vector of float)
+0:279          hyp. cosine ( temp 4-component vector of float)
+0:279            'inF0' ( in 4-component vector of float)
+0:280      Sequence
+0:280        move second child to first child ( temp 4-component vector of uint)
+0:280          'r015' ( temp 4-component vector of uint)
 0:?           bitCount ( temp 4-component vector of uint)
 0:?             Constant:
 0:?               7 (const uint)
 0:?               3 (const uint)
 0:?               5 (const uint)
 0:?               2 (const uint)
-0:277      Sequence
-0:277        move second child to first child ( temp 4-component vector of float)
-0:277          'r016' ( temp 4-component vector of float)
-0:277          dPdx ( temp 4-component vector of float)
-0:277            'inF0' ( in 4-component vector of float)
-0:278      Sequence
-0:278        move second child to first child ( temp 4-component vector of float)
-0:278          'r017' ( temp 4-component vector of float)
-0:278          dPdxCoarse ( temp 4-component vector of float)
-0:278            'inF0' ( in 4-component vector of float)
-0:279      Sequence
-0:279        move second child to first child ( temp 4-component vector of float)
-0:279          'r018' ( temp 4-component vector of float)
-0:279          dPdxFine ( temp 4-component vector of float)
-0:279            'inF0' ( in 4-component vector of float)
-0:280      Sequence
-0:280        move second child to first child ( temp 4-component vector of float)
-0:280          'r019' ( temp 4-component vector of float)
-0:280          dPdy ( temp 4-component vector of float)
-0:280            'inF0' ( in 4-component vector of float)
 0:281      Sequence
 0:281        move second child to first child ( temp 4-component vector of float)
-0:281          'r020' ( temp 4-component vector of float)
-0:281          dPdyCoarse ( temp 4-component vector of float)
+0:281          'r016' ( temp 4-component vector of float)
+0:281          dPdx ( temp 4-component vector of float)
 0:281            'inF0' ( in 4-component vector of float)
 0:282      Sequence
 0:282        move second child to first child ( temp 4-component vector of float)
-0:282          'r021' ( temp 4-component vector of float)
-0:282          dPdyFine ( temp 4-component vector of float)
+0:282          'r017' ( temp 4-component vector of float)
+0:282          dPdxCoarse ( temp 4-component vector of float)
 0:282            'inF0' ( in 4-component vector of float)
 0:283      Sequence
 0:283        move second child to first child ( temp 4-component vector of float)
-0:283          'r022' ( temp 4-component vector of float)
-0:283          degrees ( temp 4-component vector of float)
+0:283          'r018' ( temp 4-component vector of float)
+0:283          dPdxFine ( temp 4-component vector of float)
 0:283            'inF0' ( in 4-component vector of float)
 0:284      Sequence
-0:284        move second child to first child ( temp float)
-0:284          'r023' ( temp float)
-0:284          distance ( temp float)
+0:284        move second child to first child ( temp 4-component vector of float)
+0:284          'r019' ( temp 4-component vector of float)
+0:284          dPdy ( temp 4-component vector of float)
 0:284            'inF0' ( in 4-component vector of float)
-0:284            'inF1' ( in 4-component vector of float)
 0:285      Sequence
-0:285        move second child to first child ( temp float)
-0:285          'r024' ( temp float)
-0:285          dot-product ( temp float)
+0:285        move second child to first child ( temp 4-component vector of float)
+0:285          'r020' ( temp 4-component vector of float)
+0:285          dPdyCoarse ( temp 4-component vector of float)
 0:285            'inF0' ( in 4-component vector of float)
-0:285            'inF1' ( in 4-component vector of float)
 0:286      Sequence
 0:286        move second child to first child ( temp 4-component vector of float)
-0:286          'r025' ( temp 4-component vector of float)
-0:286          Construct vec4 ( temp 4-component vector of float)
-0:286            Constant:
-0:286              1.000000
-0:286            component-wise multiply ( temp float)
-0:286              direct index ( temp float)
-0:286                'inF0' ( in 4-component vector of float)
-0:286                Constant:
-0:286                  1 (const int)
-0:286              direct index ( temp float)
-0:286                'inF1' ( in 4-component vector of float)
-0:286                Constant:
-0:286                  1 (const int)
-0:286            direct index ( temp float)
-0:286              'inF0' ( in 4-component vector of float)
-0:286              Constant:
-0:286                2 (const int)
-0:286            direct index ( temp float)
-0:286              'inF1' ( in 4-component vector of float)
-0:286              Constant:
-0:286                3 (const int)
+0:286          'r021' ( temp 4-component vector of float)
+0:286          dPdyFine ( temp 4-component vector of float)
+0:286            'inF0' ( in 4-component vector of float)
+0:287      Sequence
+0:287        move second child to first child ( temp 4-component vector of float)
+0:287          'r022' ( temp 4-component vector of float)
+0:287          degrees ( temp 4-component vector of float)
+0:287            'inF0' ( in 4-component vector of float)
+0:288      Sequence
+0:288        move second child to first child ( temp float)
+0:288          'r023' ( temp float)
+0:288          distance ( temp float)
+0:288            'inF0' ( in 4-component vector of float)
+0:288            'inF1' ( in 4-component vector of float)
+0:289      Sequence
+0:289        move second child to first child ( temp float)
+0:289          'r024' ( temp float)
+0:289          dot-product ( temp float)
+0:289            'inF0' ( in 4-component vector of float)
+0:289            'inF1' ( in 4-component vector of float)
 0:290      Sequence
 0:290        move second child to first child ( temp 4-component vector of float)
-0:290          'r029' ( temp 4-component vector of float)
-0:290          exp ( temp 4-component vector of float)
-0:290            'inF0' ( in 4-component vector of float)
-0:291      Sequence
-0:291        move second child to first child ( temp 4-component vector of float)
-0:291          'r030' ( temp 4-component vector of float)
-0:291          exp2 ( temp 4-component vector of float)
-0:291            'inF0' ( in 4-component vector of float)
-0:292      Sequence
-0:292        move second child to first child ( temp 4-component vector of float)
-0:292          'r031' ( temp 4-component vector of float)
-0:292          face-forward ( temp 4-component vector of float)
-0:292            'inF0' ( in 4-component vector of float)
-0:292            'inF1' ( in 4-component vector of float)
-0:292            'inF2' ( in 4-component vector of float)
-0:293      Sequence
-0:293        move second child to first child ( temp 4-component vector of uint)
-0:293          'r032' ( temp 4-component vector of uint)
+0:290          'r025' ( temp 4-component vector of float)
+0:290          Construct vec4 ( temp 4-component vector of float)
+0:290            Constant:
+0:290              1.000000
+0:290            component-wise multiply ( temp float)
+0:290              direct index ( temp float)
+0:290                'inF0' ( in 4-component vector of float)
+0:290                Constant:
+0:290                  1 (const int)
+0:290              direct index ( temp float)
+0:290                'inF1' ( in 4-component vector of float)
+0:290                Constant:
+0:290                  1 (const int)
+0:290            direct index ( temp float)
+0:290              'inF0' ( in 4-component vector of float)
+0:290              Constant:
+0:290                2 (const int)
+0:290            direct index ( temp float)
+0:290              'inF1' ( in 4-component vector of float)
+0:290              Constant:
+0:290                3 (const int)
+0:294      Sequence
+0:294        move second child to first child ( temp 4-component vector of float)
+0:294          'r029' ( temp 4-component vector of float)
+0:294          exp ( temp 4-component vector of float)
+0:294            'inF0' ( in 4-component vector of float)
+0:295      Sequence
+0:295        move second child to first child ( temp 4-component vector of float)
+0:295          'r030' ( temp 4-component vector of float)
+0:295          exp2 ( temp 4-component vector of float)
+0:295            'inF0' ( in 4-component vector of float)
+0:296      Sequence
+0:296        move second child to first child ( temp 4-component vector of float)
+0:296          'r031' ( temp 4-component vector of float)
+0:296          face-forward ( temp 4-component vector of float)
+0:296            'inF0' ( in 4-component vector of float)
+0:296            'inF1' ( in 4-component vector of float)
+0:296            'inF2' ( in 4-component vector of float)
+0:297      Sequence
+0:297        move second child to first child ( temp 4-component vector of uint)
+0:297          'r032' ( temp 4-component vector of uint)
 0:?           findMSB ( temp 4-component vector of uint)
 0:?             Constant:
 0:?               7 (const uint)
 0:?               8 (const uint)
 0:?               9 (const uint)
 0:?               10 (const uint)
-0:294      Sequence
-0:294        move second child to first child ( temp 4-component vector of uint)
-0:294          'r033' ( temp 4-component vector of uint)
+0:298      Sequence
+0:298        move second child to first child ( temp 4-component vector of uint)
+0:298          'r033' ( temp 4-component vector of uint)
 0:?           findLSB ( temp 4-component vector of uint)
 0:?             Constant:
 0:?               7 (const uint)
 0:?               8 (const uint)
 0:?               9 (const uint)
 0:?               10 (const uint)
-0:295      Sequence
-0:295        move second child to first child ( temp 4-component vector of float)
-0:295          'r034' ( temp 4-component vector of float)
-0:295          Floor ( temp 4-component vector of float)
-0:295            'inF0' ( in 4-component vector of float)
-0:297      Sequence
-0:297        move second child to first child ( temp 4-component vector of float)
-0:297          'r036' ( temp 4-component vector of float)
-0:297          mod ( temp 4-component vector of float)
-0:297            'inF0' ( in 4-component vector of float)
-0:297            'inF1' ( in 4-component vector of float)
-0:298      Sequence
-0:298        move second child to first child ( temp 4-component vector of float)
-0:298          'r037' ( temp 4-component vector of float)
-0:298          Fraction ( temp 4-component vector of float)
-0:298            'inF0' ( in 4-component vector of float)
 0:299      Sequence
 0:299        move second child to first child ( temp 4-component vector of float)
-0:299          'r039' ( temp 4-component vector of float)
-0:299          fwidth ( temp 4-component vector of float)
+0:299          'r034' ( temp 4-component vector of float)
+0:299          Floor ( temp 4-component vector of float)
 0:299            'inF0' ( in 4-component vector of float)
-0:300      Sequence
-0:300        move second child to first child ( temp 4-component vector of bool)
-0:300          'r040' ( temp 4-component vector of bool)
-0:300          isinf ( temp 4-component vector of bool)
-0:300            'inF0' ( in 4-component vector of float)
 0:301      Sequence
-0:301        move second child to first child ( temp 4-component vector of bool)
-0:301          'r041' ( temp 4-component vector of bool)
-0:301          isnan ( temp 4-component vector of bool)
+0:301        move second child to first child ( temp 4-component vector of float)
+0:301          'r036' ( temp 4-component vector of float)
+0:301          mod ( temp 4-component vector of float)
 0:301            'inF0' ( in 4-component vector of float)
+0:301            'inF1' ( in 4-component vector of float)
 0:302      Sequence
 0:302        move second child to first child ( temp 4-component vector of float)
-0:302          'r042' ( temp 4-component vector of float)
-0:302          ldexp ( temp 4-component vector of float)
+0:302          'r037' ( temp 4-component vector of float)
+0:302          Fraction ( temp 4-component vector of float)
 0:302            'inF0' ( in 4-component vector of float)
-0:302            'inF1' ( in 4-component vector of float)
 0:303      Sequence
 0:303        move second child to first child ( temp 4-component vector of float)
-0:303          'r039a' ( temp 4-component vector of float)
-0:303          mix ( temp 4-component vector of float)
+0:303          'r039' ( temp 4-component vector of float)
+0:303          fwidth ( temp 4-component vector of float)
 0:303            'inF0' ( in 4-component vector of float)
-0:303            'inF1' ( in 4-component vector of float)
-0:303            'inF2' ( in 4-component vector of float)
 0:304      Sequence
-0:304        move second child to first child ( temp float)
-0:304          'r043' ( temp float)
-0:304          length ( temp float)
+0:304        move second child to first child ( temp 4-component vector of bool)
+0:304          'r040' ( temp 4-component vector of bool)
+0:304          isinf ( temp 4-component vector of bool)
 0:304            'inF0' ( in 4-component vector of float)
 0:305      Sequence
-0:305        move second child to first child ( temp 4-component vector of float)
-0:305          'r044' ( temp 4-component vector of float)
-0:305          log ( temp 4-component vector of float)
+0:305        move second child to first child ( temp 4-component vector of bool)
+0:305          'r041' ( temp 4-component vector of bool)
+0:305          isnan ( temp 4-component vector of bool)
 0:305            'inF0' ( in 4-component vector of float)
 0:306      Sequence
 0:306        move second child to first child ( temp 4-component vector of float)
-0:306          'r045' ( temp 4-component vector of float)
-0:306          vector-scale ( temp 4-component vector of float)
-0:306            log2 ( temp 4-component vector of float)
-0:306              'inF0' ( in 4-component vector of float)
-0:306            Constant:
-0:306              0.301030
+0:306          'r042' ( temp 4-component vector of float)
+0:306          ldexp ( temp 4-component vector of float)
+0:306            'inF0' ( in 4-component vector of float)
+0:306            'inF1' ( in 4-component vector of float)
 0:307      Sequence
 0:307        move second child to first child ( temp 4-component vector of float)
-0:307          'r046' ( temp 4-component vector of float)
-0:307          log2 ( temp 4-component vector of float)
+0:307          'r039a' ( temp 4-component vector of float)
+0:307          mix ( temp 4-component vector of float)
 0:307            'inF0' ( in 4-component vector of float)
+0:307            'inF1' ( in 4-component vector of float)
+0:307            'inF2' ( in 4-component vector of float)
 0:308      Sequence
-0:308        move second child to first child ( temp 4-component vector of float)
-0:308          'r047' ( temp 4-component vector of float)
-0:308          max ( temp 4-component vector of float)
+0:308        move second child to first child ( temp float)
+0:308          'r043' ( temp float)
+0:308          length ( temp float)
 0:308            'inF0' ( in 4-component vector of float)
-0:308            'inF1' ( in 4-component vector of float)
 0:309      Sequence
 0:309        move second child to first child ( temp 4-component vector of float)
-0:309          'r048' ( temp 4-component vector of float)
-0:309          min ( temp 4-component vector of float)
+0:309          'r044' ( temp 4-component vector of float)
+0:309          log ( temp 4-component vector of float)
 0:309            'inF0' ( in 4-component vector of float)
-0:309            'inF1' ( in 4-component vector of float)
 0:310      Sequence
 0:310        move second child to first child ( temp 4-component vector of float)
-0:310          'r049' ( temp 4-component vector of float)
-0:310          normalize ( temp 4-component vector of float)
-0:310            'inF0' ( in 4-component vector of float)
+0:310          'r045' ( temp 4-component vector of float)
+0:310          vector-scale ( temp 4-component vector of float)
+0:310            log2 ( temp 4-component vector of float)
+0:310              'inF0' ( in 4-component vector of float)
+0:310            Constant:
+0:310              0.301030
 0:311      Sequence
 0:311        move second child to first child ( temp 4-component vector of float)
-0:311          'r050' ( temp 4-component vector of float)
-0:311          pow ( temp 4-component vector of float)
+0:311          'r046' ( temp 4-component vector of float)
+0:311          log2 ( temp 4-component vector of float)
 0:311            'inF0' ( in 4-component vector of float)
-0:311            'inF1' ( in 4-component vector of float)
 0:312      Sequence
 0:312        move second child to first child ( temp 4-component vector of float)
-0:312          'r051' ( temp 4-component vector of float)
-0:312          radians ( temp 4-component vector of float)
+0:312          'r047' ( temp 4-component vector of float)
+0:312          max ( temp 4-component vector of float)
 0:312            'inF0' ( in 4-component vector of float)
+0:312            'inF1' ( in 4-component vector of float)
 0:313      Sequence
 0:313        move second child to first child ( temp 4-component vector of float)
-0:313          'r052' ( temp 4-component vector of float)
-0:313          divide ( temp 4-component vector of float)
-0:313            Constant:
-0:313              1.000000
+0:313          'r048' ( temp 4-component vector of float)
+0:313          min ( temp 4-component vector of float)
 0:313            'inF0' ( in 4-component vector of float)
+0:313            'inF1' ( in 4-component vector of float)
 0:314      Sequence
 0:314        move second child to first child ( temp 4-component vector of float)
-0:314          'r053' ( temp 4-component vector of float)
-0:314          reflect ( temp 4-component vector of float)
+0:314          'r049' ( temp 4-component vector of float)
+0:314          normalize ( temp 4-component vector of float)
 0:314            'inF0' ( in 4-component vector of float)
-0:314            'inF1' ( in 4-component vector of float)
 0:315      Sequence
 0:315        move second child to first child ( temp 4-component vector of float)
-0:315          'r054' ( temp 4-component vector of float)
-0:315          refract ( temp 4-component vector of float)
+0:315          'r050' ( temp 4-component vector of float)
+0:315          pow ( temp 4-component vector of float)
 0:315            'inF0' ( in 4-component vector of float)
 0:315            'inF1' ( in 4-component vector of float)
-0:315            Constant:
-0:315              2.000000
 0:316      Sequence
-0:316        move second child to first child ( temp 4-component vector of uint)
-0:316          'r055' ( temp 4-component vector of uint)
+0:316        move second child to first child ( temp 4-component vector of float)
+0:316          'r051' ( temp 4-component vector of float)
+0:316          radians ( temp 4-component vector of float)
+0:316            'inF0' ( in 4-component vector of float)
+0:317      Sequence
+0:317        move second child to first child ( temp 4-component vector of float)
+0:317          'r052' ( temp 4-component vector of float)
+0:317          divide ( temp 4-component vector of float)
+0:317            Constant:
+0:317              1.000000
+0:317            'inF0' ( in 4-component vector of float)
+0:318      Sequence
+0:318        move second child to first child ( temp 4-component vector of float)
+0:318          'r053' ( temp 4-component vector of float)
+0:318          reflect ( temp 4-component vector of float)
+0:318            'inF0' ( in 4-component vector of float)
+0:318            'inF1' ( in 4-component vector of float)
+0:319      Sequence
+0:319        move second child to first child ( temp 4-component vector of float)
+0:319          'r054' ( temp 4-component vector of float)
+0:319          refract ( temp 4-component vector of float)
+0:319            'inF0' ( in 4-component vector of float)
+0:319            'inF1' ( in 4-component vector of float)
+0:319            Constant:
+0:319              2.000000
+0:320      Sequence
+0:320        move second child to first child ( temp 4-component vector of uint)
+0:320          'r055' ( temp 4-component vector of uint)
 0:?           bitFieldReverse ( temp 4-component vector of uint)
 0:?             Constant:
 0:?               1 (const uint)
 0:?               2 (const uint)
 0:?               3 (const uint)
 0:?               4 (const uint)
-0:317      Sequence
-0:317        move second child to first child ( temp 4-component vector of float)
-0:317          'r056' ( temp 4-component vector of float)
-0:317          roundEven ( temp 4-component vector of float)
-0:317            'inF0' ( in 4-component vector of float)
-0:318      Sequence
-0:318        move second child to first child ( temp 4-component vector of float)
-0:318          'r057' ( temp 4-component vector of float)
-0:318          inverse sqrt ( temp 4-component vector of float)
-0:318            'inF0' ( in 4-component vector of float)
-0:319      Sequence
-0:319        move second child to first child ( temp 4-component vector of float)
-0:319          'r058' ( temp 4-component vector of float)
-0:319          clamp ( temp 4-component vector of float)
-0:319            'inF0' ( in 4-component vector of float)
-0:319            Constant:
-0:319              0.000000
-0:319            Constant:
-0:319              1.000000
-0:320      Sequence
-0:320        move second child to first child ( temp 4-component vector of float)
-0:320          'r059' ( temp 4-component vector of float)
-0:320          Sign ( temp 4-component vector of float)
-0:320            'inF0' ( in 4-component vector of float)
 0:321      Sequence
 0:321        move second child to first child ( temp 4-component vector of float)
-0:321          'r060' ( temp 4-component vector of float)
-0:321          sine ( temp 4-component vector of float)
+0:321          'r056' ( temp 4-component vector of float)
+0:321          roundEven ( temp 4-component vector of float)
 0:321            'inF0' ( in 4-component vector of float)
 0:322      Sequence
 0:322        move second child to first child ( temp 4-component vector of float)
-0:322          'inF1' ( in 4-component vector of float)
-0:322          sine ( temp 4-component vector of float)
-0:322            'inF0' ( in 4-component vector of float)
-0:322        move second child to first child ( temp 4-component vector of float)
-0:322          'inF2' ( in 4-component vector of float)
-0:322          cosine ( temp 4-component vector of float)
+0:322          'r057' ( temp 4-component vector of float)
+0:322          inverse sqrt ( temp 4-component vector of float)
 0:322            'inF0' ( in 4-component vector of float)
 0:323      Sequence
 0:323        move second child to first child ( temp 4-component vector of float)
-0:323          'r061' ( temp 4-component vector of float)
-0:323          hyp. sine ( temp 4-component vector of float)
+0:323          'r058' ( temp 4-component vector of float)
+0:323          clamp ( temp 4-component vector of float)
 0:323            'inF0' ( in 4-component vector of float)
+0:323            Constant:
+0:323              0.000000
+0:323            Constant:
+0:323              1.000000
 0:324      Sequence
 0:324        move second child to first child ( temp 4-component vector of float)
-0:324          'r062' ( temp 4-component vector of float)
-0:324          smoothstep ( temp 4-component vector of float)
+0:324          'r059' ( temp 4-component vector of float)
+0:324          Sign ( temp 4-component vector of float)
 0:324            'inF0' ( in 4-component vector of float)
-0:324            'inF1' ( in 4-component vector of float)
-0:324            'inF2' ( in 4-component vector of float)
 0:325      Sequence
 0:325        move second child to first child ( temp 4-component vector of float)
-0:325          'r063' ( temp 4-component vector of float)
-0:325          sqrt ( temp 4-component vector of float)
+0:325          'r060' ( temp 4-component vector of float)
+0:325          sine ( temp 4-component vector of float)
 0:325            'inF0' ( in 4-component vector of float)
 0:326      Sequence
 0:326        move second child to first child ( temp 4-component vector of float)
-0:326          'r064' ( temp 4-component vector of float)
-0:326          step ( temp 4-component vector of float)
+0:326          'inF1' ( in 4-component vector of float)
+0:326          sine ( temp 4-component vector of float)
 0:326            'inF0' ( in 4-component vector of float)
-0:326            'inF1' ( in 4-component vector of float)
+0:326        move second child to first child ( temp 4-component vector of float)
+0:326          'inF2' ( in 4-component vector of float)
+0:326          cosine ( temp 4-component vector of float)
+0:326            'inF0' ( in 4-component vector of float)
 0:327      Sequence
 0:327        move second child to first child ( temp 4-component vector of float)
-0:327          'r065' ( temp 4-component vector of float)
-0:327          tangent ( temp 4-component vector of float)
+0:327          'r061' ( temp 4-component vector of float)
+0:327          hyp. sine ( temp 4-component vector of float)
 0:327            'inF0' ( in 4-component vector of float)
 0:328      Sequence
 0:328        move second child to first child ( temp 4-component vector of float)
-0:328          'r066' ( temp 4-component vector of float)
-0:328          hyp. tangent ( temp 4-component vector of float)
+0:328          'r062' ( temp 4-component vector of float)
+0:328          smoothstep ( temp 4-component vector of float)
 0:328            'inF0' ( in 4-component vector of float)
+0:328            'inF1' ( in 4-component vector of float)
+0:328            'inF2' ( in 4-component vector of float)
+0:329      Sequence
+0:329        move second child to first child ( temp 4-component vector of float)
+0:329          'r063' ( temp 4-component vector of float)
+0:329          sqrt ( temp 4-component vector of float)
+0:329            'inF0' ( in 4-component vector of float)
 0:330      Sequence
 0:330        move second child to first child ( temp 4-component vector of float)
-0:330          'r067' ( temp 4-component vector of float)
-0:330          trunc ( temp 4-component vector of float)
+0:330          'r064' ( temp 4-component vector of float)
+0:330          step ( temp 4-component vector of float)
 0:330            'inF0' ( in 4-component vector of float)
-0:333      Branch: Return with expression
+0:330            'inF1' ( in 4-component vector of float)
+0:331      Sequence
+0:331        move second child to first child ( temp 4-component vector of float)
+0:331          'r065' ( temp 4-component vector of float)
+0:331          tangent ( temp 4-component vector of float)
+0:331            'inF0' ( in 4-component vector of float)
+0:332      Sequence
+0:332        move second child to first child ( temp 4-component vector of float)
+0:332          'r066' ( temp 4-component vector of float)
+0:332          hyp. tangent ( temp 4-component vector of float)
+0:332            'inF0' ( in 4-component vector of float)
+0:334      Sequence
+0:334        move second child to first child ( temp 4-component vector of float)
+0:334          'r067' ( temp 4-component vector of float)
+0:334          trunc ( temp 4-component vector of float)
+0:334            'inF0' ( in 4-component vector of float)
+0:337      Branch: Return with expression
 0:?         Constant:
 0:?           1.000000
 0:?           2.000000
 0:?           3.000000
 0:?           4.000000
-0:396  Function Definition: PixelShaderFunction2x2(mf22;mf22;mf22; ( temp 2X2 matrix of float)
-0:396    Function Parameters: 
-0:396      'inF0' ( in 2X2 matrix of float)
-0:396      'inF1' ( in 2X2 matrix of float)
-0:396      'inF2' ( in 2X2 matrix of float)
+0:400  Function Definition: PixelShaderFunction2x2(mf22;mf22;mf22; ( temp 2X2 matrix of float)
+0:400    Function Parameters: 
+0:400      'inF0' ( in 2X2 matrix of float)
+0:400      'inF1' ( in 2X2 matrix of float)
+0:400      'inF2' ( in 2X2 matrix of float)
 0:?     Sequence
-0:398      Sequence
-0:398        move second child to first child ( temp bool)
-0:398          'r000' ( temp bool)
-0:398          all ( temp bool)
-0:398            Convert float to bool ( temp 2X2 matrix of bool)
-0:398              'inF0' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r001' ( temp 2X2 matrix of float)
-0:398          Absolute value ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398      arc cosine ( temp 2X2 matrix of float)
-0:398        'inF0' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp bool)
-0:398          'r003' ( temp bool)
-0:398          any ( temp bool)
-0:398            Convert float to bool ( temp 2X2 matrix of bool)
-0:398              'inF0' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r004' ( temp 2X2 matrix of float)
-0:398          arc sine ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r005' ( temp 2X2 matrix of float)
-0:398          arc tangent ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r006' ( temp 2X2 matrix of float)
-0:398          arc tangent ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398            'inF1' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r007' ( temp 2X2 matrix of float)
-0:398          Ceiling ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398      Test condition and select ( temp void)
-0:398        Condition
-0:398        any ( temp bool)
-0:398          Compare Less Than ( temp 2X2 matrix of bool)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398            Constant:
-0:398              0.000000
-0:398              0.000000
-0:398              0.000000
-0:398              0.000000
-0:398        true case
-0:398        Branch: Kill
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r008' ( temp 2X2 matrix of float)
-0:398          clamp ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398            'inF1' ( in 2X2 matrix of float)
-0:398            'inF2' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r009' ( temp 2X2 matrix of float)
-0:398          cosine ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r010' ( temp 2X2 matrix of float)
-0:398          hyp. cosine ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r011' ( temp 2X2 matrix of float)
-0:398          dPdx ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r012' ( temp 2X2 matrix of float)
-0:398          dPdxCoarse ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r013' ( temp 2X2 matrix of float)
-0:398          dPdxFine ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r014' ( temp 2X2 matrix of float)
-0:398          dPdy ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r015' ( temp 2X2 matrix of float)
-0:398          dPdyCoarse ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r016' ( temp 2X2 matrix of float)
-0:398          dPdyFine ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r017' ( temp 2X2 matrix of float)
-0:398          degrees ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp float)
-0:398          'r018' ( temp float)
-0:398          determinant ( temp float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r019' ( temp 2X2 matrix of float)
-0:398          exp ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'R020' ( temp 2X2 matrix of float)
-0:398          exp2 ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r021' ( temp 2X2 matrix of float)
-0:398          Floor ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r022' ( temp 2X2 matrix of float)
-0:398          mod ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398            'inF1' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r023' ( temp 2X2 matrix of float)
-0:398          Fraction ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r025' ( temp 2X2 matrix of float)
-0:398          fwidth ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r026' ( temp 2X2 matrix of float)
-0:398          ldexp ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398            'inF1' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r026a' ( temp 2X2 matrix of float)
-0:398          mix ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398            'inF1' ( in 2X2 matrix of float)
-0:398            'inF2' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r027' ( temp 2X2 matrix of float)
-0:398          log ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r028' ( temp 2X2 matrix of float)
-0:398          matrix-scale ( temp 2X2 matrix of float)
-0:398            log2 ( temp 2X2 matrix of float)
-0:398              'inF0' ( in 2X2 matrix of float)
-0:398            Constant:
-0:398              0.301030
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r029' ( temp 2X2 matrix of float)
-0:398          log2 ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r030' ( temp 2X2 matrix of float)
-0:398          max ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398            'inF1' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r031' ( temp 2X2 matrix of float)
-0:398          min ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398            'inF1' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r032' ( temp 2X2 matrix of float)
-0:398          pow ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398            'inF1' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r033' ( temp 2X2 matrix of float)
-0:398          radians ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r034' ( temp 2X2 matrix of float)
-0:398          roundEven ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r035' ( temp 2X2 matrix of float)
-0:398          inverse sqrt ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r036' ( temp 2X2 matrix of float)
-0:398          clamp ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398            Constant:
-0:398              0.000000
-0:398            Constant:
-0:398              1.000000
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r037' ( temp 2X2 matrix of float)
-0:398          Sign ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r038' ( temp 2X2 matrix of float)
-0:398          sine ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'inF1' ( in 2X2 matrix of float)
-0:398          sine ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'inF2' ( in 2X2 matrix of float)
-0:398          cosine ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r039' ( temp 2X2 matrix of float)
-0:398          hyp. sine ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r049' ( temp 2X2 matrix of float)
-0:398          smoothstep ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398            'inF1' ( in 2X2 matrix of float)
-0:398            'inF2' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r041' ( temp 2X2 matrix of float)
-0:398          sqrt ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r042' ( temp 2X2 matrix of float)
-0:398          step ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398            'inF1' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r043' ( temp 2X2 matrix of float)
-0:398          tangent ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r044' ( temp 2X2 matrix of float)
-0:398          hyp. tangent ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398      transpose ( temp 2X2 matrix of float)
-0:398        'inF0' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r046' ( temp 2X2 matrix of float)
-0:398          trunc ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:401      Branch: Return with expression
+0:402      Sequence
+0:402        move second child to first child ( temp bool)
+0:402          'r000' ( temp bool)
+0:402          all ( temp bool)
+0:402            Convert float to bool ( temp 2X2 matrix of bool)
+0:402              'inF0' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r001' ( temp 2X2 matrix of float)
+0:402          Absolute value ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402      arc cosine ( temp 2X2 matrix of float)
+0:402        'inF0' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp bool)
+0:402          'r003' ( temp bool)
+0:402          any ( temp bool)
+0:402            Convert float to bool ( temp 2X2 matrix of bool)
+0:402              'inF0' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r004' ( temp 2X2 matrix of float)
+0:402          arc sine ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r005' ( temp 2X2 matrix of float)
+0:402          arc tangent ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r006' ( temp 2X2 matrix of float)
+0:402          arc tangent ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402            'inF1' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r007' ( temp 2X2 matrix of float)
+0:402          Ceiling ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402      Test condition and select ( temp void)
+0:402        Condition
+0:402        any ( temp bool)
+0:402          Compare Less Than ( temp 2X2 matrix of bool)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402            Constant:
+0:402              0.000000
+0:402              0.000000
+0:402              0.000000
+0:402              0.000000
+0:402        true case
+0:402        Branch: Kill
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r008' ( temp 2X2 matrix of float)
+0:402          clamp ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402            'inF1' ( in 2X2 matrix of float)
+0:402            'inF2' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r009' ( temp 2X2 matrix of float)
+0:402          cosine ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r010' ( temp 2X2 matrix of float)
+0:402          hyp. cosine ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r011' ( temp 2X2 matrix of float)
+0:402          dPdx ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r012' ( temp 2X2 matrix of float)
+0:402          dPdxCoarse ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r013' ( temp 2X2 matrix of float)
+0:402          dPdxFine ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r014' ( temp 2X2 matrix of float)
+0:402          dPdy ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r015' ( temp 2X2 matrix of float)
+0:402          dPdyCoarse ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r016' ( temp 2X2 matrix of float)
+0:402          dPdyFine ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r017' ( temp 2X2 matrix of float)
+0:402          degrees ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp float)
+0:402          'r018' ( temp float)
+0:402          determinant ( temp float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r019' ( temp 2X2 matrix of float)
+0:402          exp ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'R020' ( temp 2X2 matrix of float)
+0:402          exp2 ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r021' ( temp 2X2 matrix of float)
+0:402          Floor ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r022' ( temp 2X2 matrix of float)
+0:402          mod ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402            'inF1' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r023' ( temp 2X2 matrix of float)
+0:402          Fraction ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r025' ( temp 2X2 matrix of float)
+0:402          fwidth ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r026' ( temp 2X2 matrix of float)
+0:402          ldexp ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402            'inF1' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r026a' ( temp 2X2 matrix of float)
+0:402          mix ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402            'inF1' ( in 2X2 matrix of float)
+0:402            'inF2' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r027' ( temp 2X2 matrix of float)
+0:402          log ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r028' ( temp 2X2 matrix of float)
+0:402          matrix-scale ( temp 2X2 matrix of float)
+0:402            log2 ( temp 2X2 matrix of float)
+0:402              'inF0' ( in 2X2 matrix of float)
+0:402            Constant:
+0:402              0.301030
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r029' ( temp 2X2 matrix of float)
+0:402          log2 ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r030' ( temp 2X2 matrix of float)
+0:402          max ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402            'inF1' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r031' ( temp 2X2 matrix of float)
+0:402          min ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402            'inF1' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r032' ( temp 2X2 matrix of float)
+0:402          pow ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402            'inF1' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r033' ( temp 2X2 matrix of float)
+0:402          radians ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r034' ( temp 2X2 matrix of float)
+0:402          roundEven ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r035' ( temp 2X2 matrix of float)
+0:402          inverse sqrt ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r036' ( temp 2X2 matrix of float)
+0:402          clamp ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402            Constant:
+0:402              0.000000
+0:402            Constant:
+0:402              1.000000
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r037' ( temp 2X2 matrix of float)
+0:402          Sign ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r038' ( temp 2X2 matrix of float)
+0:402          sine ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'inF1' ( in 2X2 matrix of float)
+0:402          sine ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'inF2' ( in 2X2 matrix of float)
+0:402          cosine ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r039' ( temp 2X2 matrix of float)
+0:402          hyp. sine ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r049' ( temp 2X2 matrix of float)
+0:402          smoothstep ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402            'inF1' ( in 2X2 matrix of float)
+0:402            'inF2' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r041' ( temp 2X2 matrix of float)
+0:402          sqrt ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r042' ( temp 2X2 matrix of float)
+0:402          step ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402            'inF1' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r043' ( temp 2X2 matrix of float)
+0:402          tangent ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r044' ( temp 2X2 matrix of float)
+0:402          hyp. tangent ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402      transpose ( temp 2X2 matrix of float)
+0:402        'inF0' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r046' ( temp 2X2 matrix of float)
+0:402          trunc ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:405      Branch: Return with expression
 0:?         Constant:
 0:?           2.000000
 0:?           2.000000
 0:?           2.000000
 0:?           2.000000
-0:405  Function Definition: PixelShaderFunction3x3(mf33;mf33;mf33; ( temp 3X3 matrix of float)
-0:405    Function Parameters: 
-0:405      'inF0' ( in 3X3 matrix of float)
-0:405      'inF1' ( in 3X3 matrix of float)
-0:405      'inF2' ( in 3X3 matrix of float)
+0:409  Function Definition: PixelShaderFunction3x3(mf33;mf33;mf33; ( temp 3X3 matrix of float)
+0:409    Function Parameters: 
+0:409      'inF0' ( in 3X3 matrix of float)
+0:409      'inF1' ( in 3X3 matrix of float)
+0:409      'inF2' ( in 3X3 matrix of float)
 0:?     Sequence
-0:407      Sequence
-0:407        move second child to first child ( temp bool)
-0:407          'r000' ( temp bool)
-0:407          all ( temp bool)
-0:407            Convert float to bool ( temp 3X3 matrix of bool)
-0:407              'inF0' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r001' ( temp 3X3 matrix of float)
-0:407          Absolute value ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407      arc cosine ( temp 3X3 matrix of float)
-0:407        'inF0' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp bool)
-0:407          'r003' ( temp bool)
-0:407          any ( temp bool)
-0:407            Convert float to bool ( temp 3X3 matrix of bool)
-0:407              'inF0' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r004' ( temp 3X3 matrix of float)
-0:407          arc sine ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r005' ( temp 3X3 matrix of float)
-0:407          arc tangent ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r006' ( temp 3X3 matrix of float)
-0:407          arc tangent ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407            'inF1' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r007' ( temp 3X3 matrix of float)
-0:407          Ceiling ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407      Test condition and select ( temp void)
-0:407        Condition
-0:407        any ( temp bool)
-0:407          Compare Less Than ( temp 3X3 matrix of bool)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407            Constant:
-0:407              0.000000
-0:407              0.000000
-0:407              0.000000
-0:407              0.000000
-0:407              0.000000
-0:407              0.000000
-0:407              0.000000
-0:407              0.000000
-0:407              0.000000
-0:407        true case
-0:407        Branch: Kill
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r008' ( temp 3X3 matrix of float)
-0:407          clamp ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407            'inF1' ( in 3X3 matrix of float)
-0:407            'inF2' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r009' ( temp 3X3 matrix of float)
-0:407          cosine ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r010' ( temp 3X3 matrix of float)
-0:407          hyp. cosine ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r011' ( temp 3X3 matrix of float)
-0:407          dPdx ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r012' ( temp 3X3 matrix of float)
-0:407          dPdxCoarse ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r013' ( temp 3X3 matrix of float)
-0:407          dPdxFine ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r014' ( temp 3X3 matrix of float)
-0:407          dPdy ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r015' ( temp 3X3 matrix of float)
-0:407          dPdyCoarse ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r016' ( temp 3X3 matrix of float)
-0:407          dPdyFine ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r017' ( temp 3X3 matrix of float)
-0:407          degrees ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp float)
-0:407          'r018' ( temp float)
-0:407          determinant ( temp float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r019' ( temp 3X3 matrix of float)
-0:407          exp ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'R020' ( temp 3X3 matrix of float)
-0:407          exp2 ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r021' ( temp 3X3 matrix of float)
-0:407          Floor ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r022' ( temp 3X3 matrix of float)
-0:407          mod ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407            'inF1' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r023' ( temp 3X3 matrix of float)
-0:407          Fraction ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r025' ( temp 3X3 matrix of float)
-0:407          fwidth ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r026' ( temp 3X3 matrix of float)
-0:407          ldexp ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407            'inF1' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r026a' ( temp 3X3 matrix of float)
-0:407          mix ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407            'inF1' ( in 3X3 matrix of float)
-0:407            'inF2' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r027' ( temp 3X3 matrix of float)
-0:407          log ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r028' ( temp 3X3 matrix of float)
-0:407          matrix-scale ( temp 3X3 matrix of float)
-0:407            log2 ( temp 3X3 matrix of float)
-0:407              'inF0' ( in 3X3 matrix of float)
-0:407            Constant:
-0:407              0.301030
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r029' ( temp 3X3 matrix of float)
-0:407          log2 ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r030' ( temp 3X3 matrix of float)
-0:407          max ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407            'inF1' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r031' ( temp 3X3 matrix of float)
-0:407          min ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407            'inF1' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r032' ( temp 3X3 matrix of float)
-0:407          pow ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407            'inF1' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r033' ( temp 3X3 matrix of float)
-0:407          radians ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r034' ( temp 3X3 matrix of float)
-0:407          roundEven ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r035' ( temp 3X3 matrix of float)
-0:407          inverse sqrt ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r036' ( temp 3X3 matrix of float)
-0:407          clamp ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407            Constant:
-0:407              0.000000
-0:407            Constant:
-0:407              1.000000
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r037' ( temp 3X3 matrix of float)
-0:407          Sign ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r038' ( temp 3X3 matrix of float)
-0:407          sine ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'inF1' ( in 3X3 matrix of float)
-0:407          sine ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'inF2' ( in 3X3 matrix of float)
-0:407          cosine ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r039' ( temp 3X3 matrix of float)
-0:407          hyp. sine ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r049' ( temp 3X3 matrix of float)
-0:407          smoothstep ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407            'inF1' ( in 3X3 matrix of float)
-0:407            'inF2' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r041' ( temp 3X3 matrix of float)
-0:407          sqrt ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r042' ( temp 3X3 matrix of float)
-0:407          step ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407            'inF1' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r043' ( temp 3X3 matrix of float)
-0:407          tangent ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r044' ( temp 3X3 matrix of float)
-0:407          hyp. tangent ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407      transpose ( temp 3X3 matrix of float)
-0:407        'inF0' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r046' ( temp 3X3 matrix of float)
-0:407          trunc ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:410      Branch: Return with expression
+0:411      Sequence
+0:411        move second child to first child ( temp bool)
+0:411          'r000' ( temp bool)
+0:411          all ( temp bool)
+0:411            Convert float to bool ( temp 3X3 matrix of bool)
+0:411              'inF0' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r001' ( temp 3X3 matrix of float)
+0:411          Absolute value ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411      arc cosine ( temp 3X3 matrix of float)
+0:411        'inF0' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp bool)
+0:411          'r003' ( temp bool)
+0:411          any ( temp bool)
+0:411            Convert float to bool ( temp 3X3 matrix of bool)
+0:411              'inF0' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r004' ( temp 3X3 matrix of float)
+0:411          arc sine ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r005' ( temp 3X3 matrix of float)
+0:411          arc tangent ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r006' ( temp 3X3 matrix of float)
+0:411          arc tangent ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411            'inF1' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r007' ( temp 3X3 matrix of float)
+0:411          Ceiling ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411      Test condition and select ( temp void)
+0:411        Condition
+0:411        any ( temp bool)
+0:411          Compare Less Than ( temp 3X3 matrix of bool)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411            Constant:
+0:411              0.000000
+0:411              0.000000
+0:411              0.000000
+0:411              0.000000
+0:411              0.000000
+0:411              0.000000
+0:411              0.000000
+0:411              0.000000
+0:411              0.000000
+0:411        true case
+0:411        Branch: Kill
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r008' ( temp 3X3 matrix of float)
+0:411          clamp ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411            'inF1' ( in 3X3 matrix of float)
+0:411            'inF2' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r009' ( temp 3X3 matrix of float)
+0:411          cosine ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r010' ( temp 3X3 matrix of float)
+0:411          hyp. cosine ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r011' ( temp 3X3 matrix of float)
+0:411          dPdx ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r012' ( temp 3X3 matrix of float)
+0:411          dPdxCoarse ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r013' ( temp 3X3 matrix of float)
+0:411          dPdxFine ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r014' ( temp 3X3 matrix of float)
+0:411          dPdy ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r015' ( temp 3X3 matrix of float)
+0:411          dPdyCoarse ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r016' ( temp 3X3 matrix of float)
+0:411          dPdyFine ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r017' ( temp 3X3 matrix of float)
+0:411          degrees ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp float)
+0:411          'r018' ( temp float)
+0:411          determinant ( temp float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r019' ( temp 3X3 matrix of float)
+0:411          exp ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'R020' ( temp 3X3 matrix of float)
+0:411          exp2 ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r021' ( temp 3X3 matrix of float)
+0:411          Floor ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r022' ( temp 3X3 matrix of float)
+0:411          mod ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411            'inF1' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r023' ( temp 3X3 matrix of float)
+0:411          Fraction ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r025' ( temp 3X3 matrix of float)
+0:411          fwidth ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r026' ( temp 3X3 matrix of float)
+0:411          ldexp ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411            'inF1' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r026a' ( temp 3X3 matrix of float)
+0:411          mix ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411            'inF1' ( in 3X3 matrix of float)
+0:411            'inF2' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r027' ( temp 3X3 matrix of float)
+0:411          log ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r028' ( temp 3X3 matrix of float)
+0:411          matrix-scale ( temp 3X3 matrix of float)
+0:411            log2 ( temp 3X3 matrix of float)
+0:411              'inF0' ( in 3X3 matrix of float)
+0:411            Constant:
+0:411              0.301030
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r029' ( temp 3X3 matrix of float)
+0:411          log2 ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r030' ( temp 3X3 matrix of float)
+0:411          max ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411            'inF1' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r031' ( temp 3X3 matrix of float)
+0:411          min ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411            'inF1' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r032' ( temp 3X3 matrix of float)
+0:411          pow ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411            'inF1' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r033' ( temp 3X3 matrix of float)
+0:411          radians ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r034' ( temp 3X3 matrix of float)
+0:411          roundEven ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r035' ( temp 3X3 matrix of float)
+0:411          inverse sqrt ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r036' ( temp 3X3 matrix of float)
+0:411          clamp ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411            Constant:
+0:411              0.000000
+0:411            Constant:
+0:411              1.000000
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r037' ( temp 3X3 matrix of float)
+0:411          Sign ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r038' ( temp 3X3 matrix of float)
+0:411          sine ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'inF1' ( in 3X3 matrix of float)
+0:411          sine ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'inF2' ( in 3X3 matrix of float)
+0:411          cosine ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r039' ( temp 3X3 matrix of float)
+0:411          hyp. sine ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r049' ( temp 3X3 matrix of float)
+0:411          smoothstep ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411            'inF1' ( in 3X3 matrix of float)
+0:411            'inF2' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r041' ( temp 3X3 matrix of float)
+0:411          sqrt ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r042' ( temp 3X3 matrix of float)
+0:411          step ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411            'inF1' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r043' ( temp 3X3 matrix of float)
+0:411          tangent ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r044' ( temp 3X3 matrix of float)
+0:411          hyp. tangent ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411      transpose ( temp 3X3 matrix of float)
+0:411        'inF0' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r046' ( temp 3X3 matrix of float)
+0:411          trunc ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:414      Branch: Return with expression
 0:?         Constant:
 0:?           3.000000
 0:?           3.000000
@@ -2121,297 +2162,297 @@
 0:?           3.000000
 0:?           3.000000
 0:?           3.000000
-0:414  Function Definition: PixelShaderFunction4x4(mf44;mf44;mf44; ( temp 4X4 matrix of float)
-0:414    Function Parameters: 
-0:414      'inF0' ( in 4X4 matrix of float)
-0:414      'inF1' ( in 4X4 matrix of float)
-0:414      'inF2' ( in 4X4 matrix of float)
+0:418  Function Definition: PixelShaderFunction4x4(mf44;mf44;mf44; ( temp 4X4 matrix of float)
+0:418    Function Parameters: 
+0:418      'inF0' ( in 4X4 matrix of float)
+0:418      'inF1' ( in 4X4 matrix of float)
+0:418      'inF2' ( in 4X4 matrix of float)
 0:?     Sequence
-0:416      Sequence
-0:416        move second child to first child ( temp bool)
-0:416          'r000' ( temp bool)
-0:416          all ( temp bool)
-0:416            Convert float to bool ( temp 4X4 matrix of bool)
-0:416              'inF0' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r001' ( temp 4X4 matrix of float)
-0:416          Absolute value ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416      arc cosine ( temp 4X4 matrix of float)
-0:416        'inF0' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp bool)
-0:416          'r003' ( temp bool)
-0:416          any ( temp bool)
-0:416            Convert float to bool ( temp 4X4 matrix of bool)
-0:416              'inF0' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r004' ( temp 4X4 matrix of float)
-0:416          arc sine ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r005' ( temp 4X4 matrix of float)
-0:416          arc tangent ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r006' ( temp 4X4 matrix of float)
-0:416          arc tangent ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416            'inF1' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r007' ( temp 4X4 matrix of float)
-0:416          Ceiling ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416      Test condition and select ( temp void)
-0:416        Condition
-0:416        any ( temp bool)
-0:416          Compare Less Than ( temp 4X4 matrix of bool)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416            Constant:
-0:416              0.000000
-0:416              0.000000
-0:416              0.000000
-0:416              0.000000
-0:416              0.000000
-0:416              0.000000
-0:416              0.000000
-0:416              0.000000
-0:416              0.000000
-0:416              0.000000
-0:416              0.000000
-0:416              0.000000
-0:416              0.000000
-0:416              0.000000
-0:416              0.000000
-0:416              0.000000
-0:416        true case
-0:416        Branch: Kill
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r008' ( temp 4X4 matrix of float)
-0:416          clamp ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416            'inF1' ( in 4X4 matrix of float)
-0:416            'inF2' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r009' ( temp 4X4 matrix of float)
-0:416          cosine ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r010' ( temp 4X4 matrix of float)
-0:416          hyp. cosine ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r011' ( temp 4X4 matrix of float)
-0:416          dPdx ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r012' ( temp 4X4 matrix of float)
-0:416          dPdxCoarse ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r013' ( temp 4X4 matrix of float)
-0:416          dPdxFine ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r014' ( temp 4X4 matrix of float)
-0:416          dPdy ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r015' ( temp 4X4 matrix of float)
-0:416          dPdyCoarse ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r016' ( temp 4X4 matrix of float)
-0:416          dPdyFine ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r017' ( temp 4X4 matrix of float)
-0:416          degrees ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp float)
-0:416          'r018' ( temp float)
-0:416          determinant ( temp float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r019' ( temp 4X4 matrix of float)
-0:416          exp ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'R020' ( temp 4X4 matrix of float)
-0:416          exp2 ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r021' ( temp 4X4 matrix of float)
-0:416          Floor ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r022' ( temp 4X4 matrix of float)
-0:416          mod ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416            'inF1' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r023' ( temp 4X4 matrix of float)
-0:416          Fraction ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r025' ( temp 4X4 matrix of float)
-0:416          fwidth ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r026' ( temp 4X4 matrix of float)
-0:416          ldexp ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416            'inF1' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r026a' ( temp 4X4 matrix of float)
-0:416          mix ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416            'inF1' ( in 4X4 matrix of float)
-0:416            'inF2' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r027' ( temp 4X4 matrix of float)
-0:416          log ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r028' ( temp 4X4 matrix of float)
-0:416          matrix-scale ( temp 4X4 matrix of float)
-0:416            log2 ( temp 4X4 matrix of float)
-0:416              'inF0' ( in 4X4 matrix of float)
-0:416            Constant:
-0:416              0.301030
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r029' ( temp 4X4 matrix of float)
-0:416          log2 ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r030' ( temp 4X4 matrix of float)
-0:416          max ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416            'inF1' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r031' ( temp 4X4 matrix of float)
-0:416          min ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416            'inF1' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r032' ( temp 4X4 matrix of float)
-0:416          pow ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416            'inF1' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r033' ( temp 4X4 matrix of float)
-0:416          radians ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r034' ( temp 4X4 matrix of float)
-0:416          roundEven ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r035' ( temp 4X4 matrix of float)
-0:416          inverse sqrt ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r036' ( temp 4X4 matrix of float)
-0:416          clamp ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416            Constant:
-0:416              0.000000
-0:416            Constant:
-0:416              1.000000
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r037' ( temp 4X4 matrix of float)
-0:416          Sign ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r038' ( temp 4X4 matrix of float)
-0:416          sine ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'inF1' ( in 4X4 matrix of float)
-0:416          sine ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'inF2' ( in 4X4 matrix of float)
-0:416          cosine ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r039' ( temp 4X4 matrix of float)
-0:416          hyp. sine ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r049' ( temp 4X4 matrix of float)
-0:416          smoothstep ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416            'inF1' ( in 4X4 matrix of float)
-0:416            'inF2' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r041' ( temp 4X4 matrix of float)
-0:416          sqrt ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r042' ( temp 4X4 matrix of float)
-0:416          step ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416            'inF1' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r043' ( temp 4X4 matrix of float)
-0:416          tangent ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r044' ( temp 4X4 matrix of float)
-0:416          hyp. tangent ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416      transpose ( temp 4X4 matrix of float)
-0:416        'inF0' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r046' ( temp 4X4 matrix of float)
-0:416          trunc ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:419      Branch: Return with expression
+0:420      Sequence
+0:420        move second child to first child ( temp bool)
+0:420          'r000' ( temp bool)
+0:420          all ( temp bool)
+0:420            Convert float to bool ( temp 4X4 matrix of bool)
+0:420              'inF0' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r001' ( temp 4X4 matrix of float)
+0:420          Absolute value ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420      arc cosine ( temp 4X4 matrix of float)
+0:420        'inF0' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp bool)
+0:420          'r003' ( temp bool)
+0:420          any ( temp bool)
+0:420            Convert float to bool ( temp 4X4 matrix of bool)
+0:420              'inF0' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r004' ( temp 4X4 matrix of float)
+0:420          arc sine ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r005' ( temp 4X4 matrix of float)
+0:420          arc tangent ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r006' ( temp 4X4 matrix of float)
+0:420          arc tangent ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420            'inF1' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r007' ( temp 4X4 matrix of float)
+0:420          Ceiling ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420      Test condition and select ( temp void)
+0:420        Condition
+0:420        any ( temp bool)
+0:420          Compare Less Than ( temp 4X4 matrix of bool)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420            Constant:
+0:420              0.000000
+0:420              0.000000
+0:420              0.000000
+0:420              0.000000
+0:420              0.000000
+0:420              0.000000
+0:420              0.000000
+0:420              0.000000
+0:420              0.000000
+0:420              0.000000
+0:420              0.000000
+0:420              0.000000
+0:420              0.000000
+0:420              0.000000
+0:420              0.000000
+0:420              0.000000
+0:420        true case
+0:420        Branch: Kill
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r008' ( temp 4X4 matrix of float)
+0:420          clamp ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420            'inF1' ( in 4X4 matrix of float)
+0:420            'inF2' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r009' ( temp 4X4 matrix of float)
+0:420          cosine ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r010' ( temp 4X4 matrix of float)
+0:420          hyp. cosine ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r011' ( temp 4X4 matrix of float)
+0:420          dPdx ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r012' ( temp 4X4 matrix of float)
+0:420          dPdxCoarse ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r013' ( temp 4X4 matrix of float)
+0:420          dPdxFine ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r014' ( temp 4X4 matrix of float)
+0:420          dPdy ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r015' ( temp 4X4 matrix of float)
+0:420          dPdyCoarse ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r016' ( temp 4X4 matrix of float)
+0:420          dPdyFine ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r017' ( temp 4X4 matrix of float)
+0:420          degrees ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp float)
+0:420          'r018' ( temp float)
+0:420          determinant ( temp float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r019' ( temp 4X4 matrix of float)
+0:420          exp ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'R020' ( temp 4X4 matrix of float)
+0:420          exp2 ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r021' ( temp 4X4 matrix of float)
+0:420          Floor ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r022' ( temp 4X4 matrix of float)
+0:420          mod ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420            'inF1' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r023' ( temp 4X4 matrix of float)
+0:420          Fraction ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r025' ( temp 4X4 matrix of float)
+0:420          fwidth ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r026' ( temp 4X4 matrix of float)
+0:420          ldexp ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420            'inF1' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r026a' ( temp 4X4 matrix of float)
+0:420          mix ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420            'inF1' ( in 4X4 matrix of float)
+0:420            'inF2' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r027' ( temp 4X4 matrix of float)
+0:420          log ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r028' ( temp 4X4 matrix of float)
+0:420          matrix-scale ( temp 4X4 matrix of float)
+0:420            log2 ( temp 4X4 matrix of float)
+0:420              'inF0' ( in 4X4 matrix of float)
+0:420            Constant:
+0:420              0.301030
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r029' ( temp 4X4 matrix of float)
+0:420          log2 ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r030' ( temp 4X4 matrix of float)
+0:420          max ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420            'inF1' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r031' ( temp 4X4 matrix of float)
+0:420          min ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420            'inF1' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r032' ( temp 4X4 matrix of float)
+0:420          pow ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420            'inF1' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r033' ( temp 4X4 matrix of float)
+0:420          radians ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r034' ( temp 4X4 matrix of float)
+0:420          roundEven ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r035' ( temp 4X4 matrix of float)
+0:420          inverse sqrt ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r036' ( temp 4X4 matrix of float)
+0:420          clamp ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420            Constant:
+0:420              0.000000
+0:420            Constant:
+0:420              1.000000
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r037' ( temp 4X4 matrix of float)
+0:420          Sign ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r038' ( temp 4X4 matrix of float)
+0:420          sine ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'inF1' ( in 4X4 matrix of float)
+0:420          sine ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'inF2' ( in 4X4 matrix of float)
+0:420          cosine ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r039' ( temp 4X4 matrix of float)
+0:420          hyp. sine ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r049' ( temp 4X4 matrix of float)
+0:420          smoothstep ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420            'inF1' ( in 4X4 matrix of float)
+0:420            'inF2' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r041' ( temp 4X4 matrix of float)
+0:420          sqrt ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r042' ( temp 4X4 matrix of float)
+0:420          step ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420            'inF1' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r043' ( temp 4X4 matrix of float)
+0:420          tangent ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r044' ( temp 4X4 matrix of float)
+0:420          hyp. tangent ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420      transpose ( temp 4X4 matrix of float)
+0:420        'inF0' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r046' ( temp 4X4 matrix of float)
+0:420          trunc ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:423      Branch: Return with expression
 0:?         Constant:
 0:?           4.000000
 0:?           4.000000
@@ -2429,334 +2470,334 @@
 0:?           4.000000
 0:?           4.000000
 0:?           4.000000
-0:437  Function Definition: TestGenMul2(f1;f1;vf2;vf2;mf22;mf22; ( temp void)
-0:437    Function Parameters: 
-0:437      'inF0' ( in float)
-0:437      'inF1' ( in float)
-0:437      'inFV0' ( in 2-component vector of float)
-0:437      'inFV1' ( in 2-component vector of float)
-0:437      'inFM0' ( in 2X2 matrix of float)
-0:437      'inFM1' ( in 2X2 matrix of float)
+0:441  Function Definition: TestGenMul2(f1;f1;vf2;vf2;mf22;mf22; ( temp void)
+0:441    Function Parameters: 
+0:441      'inF0' ( in float)
+0:441      'inF1' ( in float)
+0:441      'inFV0' ( in 2-component vector of float)
+0:441      'inFV1' ( in 2-component vector of float)
+0:441      'inFM0' ( in 2X2 matrix of float)
+0:441      'inFM1' ( in 2X2 matrix of float)
 0:?     Sequence
-0:438      Sequence
-0:438        move second child to first child ( temp float)
-0:438          'r0' ( temp float)
-0:438          component-wise multiply ( temp float)
-0:438            'inF1' ( in float)
-0:438            'inF0' ( in float)
-0:438      Sequence
-0:438        move second child to first child ( temp 2-component vector of float)
-0:438          'r1' ( temp 2-component vector of float)
-0:438          vector-scale ( temp 2-component vector of float)
-0:438            'inF0' ( in float)
-0:438            'inFV0' ( in 2-component vector of float)
-0:438      Sequence
-0:438        move second child to first child ( temp 2-component vector of float)
-0:438          'r2' ( temp 2-component vector of float)
-0:438          vector-scale ( temp 2-component vector of float)
-0:438            'inFV0' ( in 2-component vector of float)
-0:438            'inF0' ( in float)
-0:438      Sequence
-0:438        move second child to first child ( temp float)
-0:438          'r3' ( temp float)
-0:438          dot-product ( temp float)
-0:438            'inFV0' ( in 2-component vector of float)
-0:438            'inFV1' ( in 2-component vector of float)
-0:438      Sequence
-0:438        move second child to first child ( temp 2-component vector of float)
-0:438          'r4' ( temp 2-component vector of float)
-0:438          vector-times-matrix ( temp 2-component vector of float)
-0:438            'inFV0' ( in 2-component vector of float)
-0:438            'inFM0' ( in 2X2 matrix of float)
-0:438      Sequence
-0:438        move second child to first child ( temp 2-component vector of float)
-0:438          'r5' ( temp 2-component vector of float)
-0:438          matrix-times-vector ( temp 2-component vector of float)
-0:438            'inFM0' ( in 2X2 matrix of float)
-0:438            'inFV0' ( in 2-component vector of float)
-0:438      Sequence
-0:438        move second child to first child ( temp 2X2 matrix of float)
-0:438          'r6' ( temp 2X2 matrix of float)
-0:438          matrix-scale ( temp 2X2 matrix of float)
-0:438            'inF0' ( in float)
-0:438            'inFM0' ( in 2X2 matrix of float)
-0:438      Sequence
-0:438        move second child to first child ( temp 2X2 matrix of float)
-0:438          'r7' ( temp 2X2 matrix of float)
-0:438          matrix-scale ( temp 2X2 matrix of float)
-0:438            'inFM0' ( in 2X2 matrix of float)
-0:438            'inF0' ( in float)
-0:438      Sequence
-0:438        move second child to first child ( temp 2X2 matrix of float)
-0:438          'r8' ( temp 2X2 matrix of float)
-0:438          matrix-multiply ( temp 2X2 matrix of float)
-0:438            'inFM1' ( in 2X2 matrix of float)
-0:438            'inFM0' ( in 2X2 matrix of float)
-0:444  Function Definition: TestGenMul3(f1;f1;vf3;vf3;mf33;mf33; ( temp void)
-0:444    Function Parameters: 
-0:444      'inF0' ( in float)
-0:444      'inF1' ( in float)
-0:444      'inFV0' ( in 3-component vector of float)
-0:444      'inFV1' ( in 3-component vector of float)
-0:444      'inFM0' ( in 3X3 matrix of float)
-0:444      'inFM1' ( in 3X3 matrix of float)
+0:442      Sequence
+0:442        move second child to first child ( temp float)
+0:442          'r0' ( temp float)
+0:442          component-wise multiply ( temp float)
+0:442            'inF1' ( in float)
+0:442            'inF0' ( in float)
+0:442      Sequence
+0:442        move second child to first child ( temp 2-component vector of float)
+0:442          'r1' ( temp 2-component vector of float)
+0:442          vector-scale ( temp 2-component vector of float)
+0:442            'inF0' ( in float)
+0:442            'inFV0' ( in 2-component vector of float)
+0:442      Sequence
+0:442        move second child to first child ( temp 2-component vector of float)
+0:442          'r2' ( temp 2-component vector of float)
+0:442          vector-scale ( temp 2-component vector of float)
+0:442            'inFV0' ( in 2-component vector of float)
+0:442            'inF0' ( in float)
+0:442      Sequence
+0:442        move second child to first child ( temp float)
+0:442          'r3' ( temp float)
+0:442          dot-product ( temp float)
+0:442            'inFV0' ( in 2-component vector of float)
+0:442            'inFV1' ( in 2-component vector of float)
+0:442      Sequence
+0:442        move second child to first child ( temp 2-component vector of float)
+0:442          'r4' ( temp 2-component vector of float)
+0:442          vector-times-matrix ( temp 2-component vector of float)
+0:442            'inFV0' ( in 2-component vector of float)
+0:442            'inFM0' ( in 2X2 matrix of float)
+0:442      Sequence
+0:442        move second child to first child ( temp 2-component vector of float)
+0:442          'r5' ( temp 2-component vector of float)
+0:442          matrix-times-vector ( temp 2-component vector of float)
+0:442            'inFM0' ( in 2X2 matrix of float)
+0:442            'inFV0' ( in 2-component vector of float)
+0:442      Sequence
+0:442        move second child to first child ( temp 2X2 matrix of float)
+0:442          'r6' ( temp 2X2 matrix of float)
+0:442          matrix-scale ( temp 2X2 matrix of float)
+0:442            'inF0' ( in float)
+0:442            'inFM0' ( in 2X2 matrix of float)
+0:442      Sequence
+0:442        move second child to first child ( temp 2X2 matrix of float)
+0:442          'r7' ( temp 2X2 matrix of float)
+0:442          matrix-scale ( temp 2X2 matrix of float)
+0:442            'inFM0' ( in 2X2 matrix of float)
+0:442            'inF0' ( in float)
+0:442      Sequence
+0:442        move second child to first child ( temp 2X2 matrix of float)
+0:442          'r8' ( temp 2X2 matrix of float)
+0:442          matrix-multiply ( temp 2X2 matrix of float)
+0:442            'inFM1' ( in 2X2 matrix of float)
+0:442            'inFM0' ( in 2X2 matrix of float)
+0:448  Function Definition: TestGenMul3(f1;f1;vf3;vf3;mf33;mf33; ( temp void)
+0:448    Function Parameters: 
+0:448      'inF0' ( in float)
+0:448      'inF1' ( in float)
+0:448      'inFV0' ( in 3-component vector of float)
+0:448      'inFV1' ( in 3-component vector of float)
+0:448      'inFM0' ( in 3X3 matrix of float)
+0:448      'inFM1' ( in 3X3 matrix of float)
 0:?     Sequence
-0:445      Sequence
-0:445        move second child to first child ( temp float)
-0:445          'r0' ( temp float)
-0:445          component-wise multiply ( temp float)
-0:445            'inF1' ( in float)
-0:445            'inF0' ( in float)
-0:445      Sequence
-0:445        move second child to first child ( temp 3-component vector of float)
-0:445          'r1' ( temp 3-component vector of float)
-0:445          vector-scale ( temp 3-component vector of float)
-0:445            'inF0' ( in float)
-0:445            'inFV0' ( in 3-component vector of float)
-0:445      Sequence
-0:445        move second child to first child ( temp 3-component vector of float)
-0:445          'r2' ( temp 3-component vector of float)
-0:445          vector-scale ( temp 3-component vector of float)
-0:445            'inFV0' ( in 3-component vector of float)
-0:445            'inF0' ( in float)
-0:445      Sequence
-0:445        move second child to first child ( temp float)
-0:445          'r3' ( temp float)
-0:445          dot-product ( temp float)
-0:445            'inFV0' ( in 3-component vector of float)
-0:445            'inFV1' ( in 3-component vector of float)
-0:445      Sequence
-0:445        move second child to first child ( temp 3-component vector of float)
-0:445          'r4' ( temp 3-component vector of float)
-0:445          vector-times-matrix ( temp 3-component vector of float)
-0:445            'inFV0' ( in 3-component vector of float)
-0:445            'inFM0' ( in 3X3 matrix of float)
-0:445      Sequence
-0:445        move second child to first child ( temp 3-component vector of float)
-0:445          'r5' ( temp 3-component vector of float)
-0:445          matrix-times-vector ( temp 3-component vector of float)
-0:445            'inFM0' ( in 3X3 matrix of float)
-0:445            'inFV0' ( in 3-component vector of float)
-0:445      Sequence
-0:445        move second child to first child ( temp 3X3 matrix of float)
-0:445          'r6' ( temp 3X3 matrix of float)
-0:445          matrix-scale ( temp 3X3 matrix of float)
-0:445            'inF0' ( in float)
-0:445            'inFM0' ( in 3X3 matrix of float)
-0:445      Sequence
-0:445        move second child to first child ( temp 3X3 matrix of float)
-0:445          'r7' ( temp 3X3 matrix of float)
-0:445          matrix-scale ( temp 3X3 matrix of float)
-0:445            'inFM0' ( in 3X3 matrix of float)
-0:445            'inF0' ( in float)
-0:445      Sequence
-0:445        move second child to first child ( temp 3X3 matrix of float)
-0:445          'r8' ( temp 3X3 matrix of float)
-0:445          matrix-multiply ( temp 3X3 matrix of float)
-0:445            'inFM1' ( in 3X3 matrix of float)
-0:445            'inFM0' ( in 3X3 matrix of float)
-0:451  Function Definition: TestGenMul4(f1;f1;vf4;vf4;mf44;mf44; ( temp void)
-0:451    Function Parameters: 
-0:451      'inF0' ( in float)
-0:451      'inF1' ( in float)
-0:451      'inFV0' ( in 4-component vector of float)
-0:451      'inFV1' ( in 4-component vector of float)
-0:451      'inFM0' ( in 4X4 matrix of float)
-0:451      'inFM1' ( in 4X4 matrix of float)
+0:449      Sequence
+0:449        move second child to first child ( temp float)
+0:449          'r0' ( temp float)
+0:449          component-wise multiply ( temp float)
+0:449            'inF1' ( in float)
+0:449            'inF0' ( in float)
+0:449      Sequence
+0:449        move second child to first child ( temp 3-component vector of float)
+0:449          'r1' ( temp 3-component vector of float)
+0:449          vector-scale ( temp 3-component vector of float)
+0:449            'inF0' ( in float)
+0:449            'inFV0' ( in 3-component vector of float)
+0:449      Sequence
+0:449        move second child to first child ( temp 3-component vector of float)
+0:449          'r2' ( temp 3-component vector of float)
+0:449          vector-scale ( temp 3-component vector of float)
+0:449            'inFV0' ( in 3-component vector of float)
+0:449            'inF0' ( in float)
+0:449      Sequence
+0:449        move second child to first child ( temp float)
+0:449          'r3' ( temp float)
+0:449          dot-product ( temp float)
+0:449            'inFV0' ( in 3-component vector of float)
+0:449            'inFV1' ( in 3-component vector of float)
+0:449      Sequence
+0:449        move second child to first child ( temp 3-component vector of float)
+0:449          'r4' ( temp 3-component vector of float)
+0:449          vector-times-matrix ( temp 3-component vector of float)
+0:449            'inFV0' ( in 3-component vector of float)
+0:449            'inFM0' ( in 3X3 matrix of float)
+0:449      Sequence
+0:449        move second child to first child ( temp 3-component vector of float)
+0:449          'r5' ( temp 3-component vector of float)
+0:449          matrix-times-vector ( temp 3-component vector of float)
+0:449            'inFM0' ( in 3X3 matrix of float)
+0:449            'inFV0' ( in 3-component vector of float)
+0:449      Sequence
+0:449        move second child to first child ( temp 3X3 matrix of float)
+0:449          'r6' ( temp 3X3 matrix of float)
+0:449          matrix-scale ( temp 3X3 matrix of float)
+0:449            'inF0' ( in float)
+0:449            'inFM0' ( in 3X3 matrix of float)
+0:449      Sequence
+0:449        move second child to first child ( temp 3X3 matrix of float)
+0:449          'r7' ( temp 3X3 matrix of float)
+0:449          matrix-scale ( temp 3X3 matrix of float)
+0:449            'inFM0' ( in 3X3 matrix of float)
+0:449            'inF0' ( in float)
+0:449      Sequence
+0:449        move second child to first child ( temp 3X3 matrix of float)
+0:449          'r8' ( temp 3X3 matrix of float)
+0:449          matrix-multiply ( temp 3X3 matrix of float)
+0:449            'inFM1' ( in 3X3 matrix of float)
+0:449            'inFM0' ( in 3X3 matrix of float)
+0:455  Function Definition: TestGenMul4(f1;f1;vf4;vf4;mf44;mf44; ( temp void)
+0:455    Function Parameters: 
+0:455      'inF0' ( in float)
+0:455      'inF1' ( in float)
+0:455      'inFV0' ( in 4-component vector of float)
+0:455      'inFV1' ( in 4-component vector of float)
+0:455      'inFM0' ( in 4X4 matrix of float)
+0:455      'inFM1' ( in 4X4 matrix of float)
 0:?     Sequence
-0:452      Sequence
-0:452        move second child to first child ( temp float)
-0:452          'r0' ( temp float)
-0:452          component-wise multiply ( temp float)
-0:452            'inF1' ( in float)
-0:452            'inF0' ( in float)
-0:452      Sequence
-0:452        move second child to first child ( temp 4-component vector of float)
-0:452          'r1' ( temp 4-component vector of float)
-0:452          vector-scale ( temp 4-component vector of float)
-0:452            'inF0' ( in float)
-0:452            'inFV0' ( in 4-component vector of float)
-0:452      Sequence
-0:452        move second child to first child ( temp 4-component vector of float)
-0:452          'r2' ( temp 4-component vector of float)
-0:452          vector-scale ( temp 4-component vector of float)
-0:452            'inFV0' ( in 4-component vector of float)
-0:452            'inF0' ( in float)
-0:452      Sequence
-0:452        move second child to first child ( temp float)
-0:452          'r3' ( temp float)
-0:452          dot-product ( temp float)
-0:452            'inFV0' ( in 4-component vector of float)
-0:452            'inFV1' ( in 4-component vector of float)
-0:452      Sequence
-0:452        move second child to first child ( temp 4-component vector of float)
-0:452          'r4' ( temp 4-component vector of float)
-0:452          vector-times-matrix ( temp 4-component vector of float)
-0:452            'inFV0' ( in 4-component vector of float)
-0:452            'inFM0' ( in 4X4 matrix of float)
-0:452      Sequence
-0:452        move second child to first child ( temp 4-component vector of float)
-0:452          'r5' ( temp 4-component vector of float)
-0:452          matrix-times-vector ( temp 4-component vector of float)
-0:452            'inFM0' ( in 4X4 matrix of float)
-0:452            'inFV0' ( in 4-component vector of float)
-0:452      Sequence
-0:452        move second child to first child ( temp 4X4 matrix of float)
-0:452          'r6' ( temp 4X4 matrix of float)
-0:452          matrix-scale ( temp 4X4 matrix of float)
-0:452            'inF0' ( in float)
-0:452            'inFM0' ( in 4X4 matrix of float)
-0:452      Sequence
-0:452        move second child to first child ( temp 4X4 matrix of float)
-0:452          'r7' ( temp 4X4 matrix of float)
-0:452          matrix-scale ( temp 4X4 matrix of float)
-0:452            'inFM0' ( in 4X4 matrix of float)
-0:452            'inF0' ( in float)
-0:452      Sequence
-0:452        move second child to first child ( temp 4X4 matrix of float)
-0:452          'r8' ( temp 4X4 matrix of float)
-0:452          matrix-multiply ( temp 4X4 matrix of float)
-0:452            'inFM1' ( in 4X4 matrix of float)
-0:452            'inFM0' ( in 4X4 matrix of float)
-0:461  Function Definition: TestGenMulNxM(f1;f1;vf2;vf3;mf23;mf32;mf33;mf34;mf24; ( temp void)
-0:461    Function Parameters: 
-0:461      'inF0' ( in float)
-0:461      'inF1' ( in float)
-0:461      'inFV2' ( in 2-component vector of float)
-0:461      'inFV3' ( in 3-component vector of float)
-0:461      'inFM2x3' ( in 2X3 matrix of float)
-0:461      'inFM3x2' ( in 3X2 matrix of float)
-0:461      'inFM3x3' ( in 3X3 matrix of float)
-0:461      'inFM3x4' ( in 3X4 matrix of float)
-0:461      'inFM2x4' ( in 2X4 matrix of float)
+0:456      Sequence
+0:456        move second child to first child ( temp float)
+0:456          'r0' ( temp float)
+0:456          component-wise multiply ( temp float)
+0:456            'inF1' ( in float)
+0:456            'inF0' ( in float)
+0:456      Sequence
+0:456        move second child to first child ( temp 4-component vector of float)
+0:456          'r1' ( temp 4-component vector of float)
+0:456          vector-scale ( temp 4-component vector of float)
+0:456            'inF0' ( in float)
+0:456            'inFV0' ( in 4-component vector of float)
+0:456      Sequence
+0:456        move second child to first child ( temp 4-component vector of float)
+0:456          'r2' ( temp 4-component vector of float)
+0:456          vector-scale ( temp 4-component vector of float)
+0:456            'inFV0' ( in 4-component vector of float)
+0:456            'inF0' ( in float)
+0:456      Sequence
+0:456        move second child to first child ( temp float)
+0:456          'r3' ( temp float)
+0:456          dot-product ( temp float)
+0:456            'inFV0' ( in 4-component vector of float)
+0:456            'inFV1' ( in 4-component vector of float)
+0:456      Sequence
+0:456        move second child to first child ( temp 4-component vector of float)
+0:456          'r4' ( temp 4-component vector of float)
+0:456          vector-times-matrix ( temp 4-component vector of float)
+0:456            'inFV0' ( in 4-component vector of float)
+0:456            'inFM0' ( in 4X4 matrix of float)
+0:456      Sequence
+0:456        move second child to first child ( temp 4-component vector of float)
+0:456          'r5' ( temp 4-component vector of float)
+0:456          matrix-times-vector ( temp 4-component vector of float)
+0:456            'inFM0' ( in 4X4 matrix of float)
+0:456            'inFV0' ( in 4-component vector of float)
+0:456      Sequence
+0:456        move second child to first child ( temp 4X4 matrix of float)
+0:456          'r6' ( temp 4X4 matrix of float)
+0:456          matrix-scale ( temp 4X4 matrix of float)
+0:456            'inF0' ( in float)
+0:456            'inFM0' ( in 4X4 matrix of float)
+0:456      Sequence
+0:456        move second child to first child ( temp 4X4 matrix of float)
+0:456          'r7' ( temp 4X4 matrix of float)
+0:456          matrix-scale ( temp 4X4 matrix of float)
+0:456            'inFM0' ( in 4X4 matrix of float)
+0:456            'inF0' ( in float)
+0:456      Sequence
+0:456        move second child to first child ( temp 4X4 matrix of float)
+0:456          'r8' ( temp 4X4 matrix of float)
+0:456          matrix-multiply ( temp 4X4 matrix of float)
+0:456            'inFM1' ( in 4X4 matrix of float)
+0:456            'inFM0' ( in 4X4 matrix of float)
+0:465  Function Definition: TestGenMulNxM(f1;f1;vf2;vf3;mf23;mf32;mf33;mf34;mf24; ( temp void)
+0:465    Function Parameters: 
+0:465      'inF0' ( in float)
+0:465      'inF1' ( in float)
+0:465      'inFV2' ( in 2-component vector of float)
+0:465      'inFV3' ( in 3-component vector of float)
+0:465      'inFM2x3' ( in 2X3 matrix of float)
+0:465      'inFM3x2' ( in 3X2 matrix of float)
+0:465      'inFM3x3' ( in 3X3 matrix of float)
+0:465      'inFM3x4' ( in 3X4 matrix of float)
+0:465      'inFM2x4' ( in 2X4 matrix of float)
 0:?     Sequence
-0:462      Sequence
-0:462        move second child to first child ( temp float)
-0:462          'r00' ( temp float)
-0:462          component-wise multiply ( temp float)
-0:462            'inF1' ( in float)
-0:462            'inF0' ( in float)
-0:463      Sequence
-0:463        move second child to first child ( temp 2-component vector of float)
-0:463          'r01' ( temp 2-component vector of float)
-0:463          vector-scale ( temp 2-component vector of float)
-0:463            'inF0' ( in float)
-0:463            'inFV2' ( in 2-component vector of float)
-0:464      Sequence
-0:464        move second child to first child ( temp 3-component vector of float)
-0:464          'r02' ( temp 3-component vector of float)
-0:464          vector-scale ( temp 3-component vector of float)
-0:464            'inF0' ( in float)
-0:464            'inFV3' ( in 3-component vector of float)
-0:465      Sequence
-0:465        move second child to first child ( temp 2-component vector of float)
-0:465          'r03' ( temp 2-component vector of float)
-0:465          vector-scale ( temp 2-component vector of float)
-0:465            'inFV2' ( in 2-component vector of float)
-0:465            'inF0' ( in float)
 0:466      Sequence
-0:466        move second child to first child ( temp 3-component vector of float)
-0:466          'r04' ( temp 3-component vector of float)
-0:466          vector-scale ( temp 3-component vector of float)
-0:466            'inFV3' ( in 3-component vector of float)
+0:466        move second child to first child ( temp float)
+0:466          'r00' ( temp float)
+0:466          component-wise multiply ( temp float)
+0:466            'inF1' ( in float)
 0:466            'inF0' ( in float)
 0:467      Sequence
-0:467        move second child to first child ( temp float)
-0:467          'r05' ( temp float)
-0:467          dot-product ( temp float)
-0:467            'inFV2' ( in 2-component vector of float)
+0:467        move second child to first child ( temp 2-component vector of float)
+0:467          'r01' ( temp 2-component vector of float)
+0:467          vector-scale ( temp 2-component vector of float)
+0:467            'inF0' ( in float)
 0:467            'inFV2' ( in 2-component vector of float)
 0:468      Sequence
-0:468        move second child to first child ( temp float)
-0:468          'r06' ( temp float)
-0:468          dot-product ( temp float)
-0:468            'inFV3' ( in 3-component vector of float)
+0:468        move second child to first child ( temp 3-component vector of float)
+0:468          'r02' ( temp 3-component vector of float)
+0:468          vector-scale ( temp 3-component vector of float)
+0:468            'inF0' ( in float)
 0:468            'inFV3' ( in 3-component vector of float)
 0:469      Sequence
-0:469        move second child to first child ( temp 3-component vector of float)
-0:469          'r07' ( temp 3-component vector of float)
-0:469          matrix-times-vector ( temp 3-component vector of float)
-0:469            'inFM2x3' ( in 2X3 matrix of float)
+0:469        move second child to first child ( temp 2-component vector of float)
+0:469          'r03' ( temp 2-component vector of float)
+0:469          vector-scale ( temp 2-component vector of float)
 0:469            'inFV2' ( in 2-component vector of float)
+0:469            'inF0' ( in float)
 0:470      Sequence
-0:470        move second child to first child ( temp 2-component vector of float)
-0:470          'r08' ( temp 2-component vector of float)
-0:470          matrix-times-vector ( temp 2-component vector of float)
-0:470            'inFM3x2' ( in 3X2 matrix of float)
+0:470        move second child to first child ( temp 3-component vector of float)
+0:470          'r04' ( temp 3-component vector of float)
+0:470          vector-scale ( temp 3-component vector of float)
 0:470            'inFV3' ( in 3-component vector of float)
+0:470            'inF0' ( in float)
 0:471      Sequence
-0:471        move second child to first child ( temp 2-component vector of float)
-0:471          'r09' ( temp 2-component vector of float)
-0:471          vector-times-matrix ( temp 2-component vector of float)
-0:471            'inFV3' ( in 3-component vector of float)
-0:471            'inFM2x3' ( in 2X3 matrix of float)
+0:471        move second child to first child ( temp float)
+0:471          'r05' ( temp float)
+0:471          dot-product ( temp float)
+0:471            'inFV2' ( in 2-component vector of float)
+0:471            'inFV2' ( in 2-component vector of float)
 0:472      Sequence
-0:472        move second child to first child ( temp 3-component vector of float)
-0:472          'r10' ( temp 3-component vector of float)
-0:472          vector-times-matrix ( temp 3-component vector of float)
-0:472            'inFV2' ( in 2-component vector of float)
-0:472            'inFM3x2' ( in 3X2 matrix of float)
+0:472        move second child to first child ( temp float)
+0:472          'r06' ( temp float)
+0:472          dot-product ( temp float)
+0:472            'inFV3' ( in 3-component vector of float)
+0:472            'inFV3' ( in 3-component vector of float)
 0:473      Sequence
-0:473        move second child to first child ( temp 2X3 matrix of float)
-0:473          'r11' ( temp 2X3 matrix of float)
-0:473          matrix-scale ( temp 2X3 matrix of float)
-0:473            'inF0' ( in float)
+0:473        move second child to first child ( temp 3-component vector of float)
+0:473          'r07' ( temp 3-component vector of float)
+0:473          matrix-times-vector ( temp 3-component vector of float)
 0:473            'inFM2x3' ( in 2X3 matrix of float)
+0:473            'inFV2' ( in 2-component vector of float)
 0:474      Sequence
-0:474        move second child to first child ( temp 3X2 matrix of float)
-0:474          'r12' ( temp 3X2 matrix of float)
-0:474          matrix-scale ( temp 3X2 matrix of float)
-0:474            'inF0' ( in float)
+0:474        move second child to first child ( temp 2-component vector of float)
+0:474          'r08' ( temp 2-component vector of float)
+0:474          matrix-times-vector ( temp 2-component vector of float)
 0:474            'inFM3x2' ( in 3X2 matrix of float)
+0:474            'inFV3' ( in 3-component vector of float)
 0:475      Sequence
-0:475        move second child to first child ( temp 2X2 matrix of float)
-0:475          'r13' ( temp 2X2 matrix of float)
-0:475          matrix-multiply ( temp 2X2 matrix of float)
-0:475            'inFM3x2' ( in 3X2 matrix of float)
+0:475        move second child to first child ( temp 2-component vector of float)
+0:475          'r09' ( temp 2-component vector of float)
+0:475          vector-times-matrix ( temp 2-component vector of float)
+0:475            'inFV3' ( in 3-component vector of float)
 0:475            'inFM2x3' ( in 2X3 matrix of float)
 0:476      Sequence
-0:476        move second child to first child ( temp 2X3 matrix of float)
-0:476          'r14' ( temp 2X3 matrix of float)
-0:476          matrix-multiply ( temp 2X3 matrix of float)
-0:476            'inFM3x3' ( in 3X3 matrix of float)
-0:476            'inFM2x3' ( in 2X3 matrix of float)
+0:476        move second child to first child ( temp 3-component vector of float)
+0:476          'r10' ( temp 3-component vector of float)
+0:476          vector-times-matrix ( temp 3-component vector of float)
+0:476            'inFV2' ( in 2-component vector of float)
+0:476            'inFM3x2' ( in 3X2 matrix of float)
 0:477      Sequence
-0:477        move second child to first child ( temp 2X4 matrix of float)
-0:477          'r15' ( temp 2X4 matrix of float)
-0:477          matrix-multiply ( temp 2X4 matrix of float)
-0:477            'inFM3x4' ( in 3X4 matrix of float)
+0:477        move second child to first child ( temp 2X3 matrix of float)
+0:477          'r11' ( temp 2X3 matrix of float)
+0:477          matrix-scale ( temp 2X3 matrix of float)
+0:477            'inF0' ( in float)
 0:477            'inFM2x3' ( in 2X3 matrix of float)
 0:478      Sequence
-0:478        move second child to first child ( temp 3X4 matrix of float)
-0:478          'r16' ( temp 3X4 matrix of float)
-0:478          matrix-multiply ( temp 3X4 matrix of float)
-0:478            'inFM2x4' ( in 2X4 matrix of float)
+0:478        move second child to first child ( temp 3X2 matrix of float)
+0:478          'r12' ( temp 3X2 matrix of float)
+0:478          matrix-scale ( temp 3X2 matrix of float)
+0:478            'inF0' ( in float)
 0:478            'inFM3x2' ( in 3X2 matrix of float)
-0:484  Function Definition: @main( ( temp structure{ temp 4-component vector of float color})
-0:484    Function Parameters: 
+0:479      Sequence
+0:479        move second child to first child ( temp 2X2 matrix of float)
+0:479          'r13' ( temp 2X2 matrix of float)
+0:479          matrix-multiply ( temp 2X2 matrix of float)
+0:479            'inFM3x2' ( in 3X2 matrix of float)
+0:479            'inFM2x3' ( in 2X3 matrix of float)
+0:480      Sequence
+0:480        move second child to first child ( temp 2X3 matrix of float)
+0:480          'r14' ( temp 2X3 matrix of float)
+0:480          matrix-multiply ( temp 2X3 matrix of float)
+0:480            'inFM3x3' ( in 3X3 matrix of float)
+0:480            'inFM2x3' ( in 2X3 matrix of float)
+0:481      Sequence
+0:481        move second child to first child ( temp 2X4 matrix of float)
+0:481          'r15' ( temp 2X4 matrix of float)
+0:481          matrix-multiply ( temp 2X4 matrix of float)
+0:481            'inFM3x4' ( in 3X4 matrix of float)
+0:481            'inFM2x3' ( in 2X3 matrix of float)
+0:482      Sequence
+0:482        move second child to first child ( temp 3X4 matrix of float)
+0:482          'r16' ( temp 3X4 matrix of float)
+0:482          matrix-multiply ( temp 3X4 matrix of float)
+0:482            'inFM2x4' ( in 2X4 matrix of float)
+0:482            'inFM3x2' ( in 3X2 matrix of float)
+0:488  Function Definition: @main( ( temp structure{ temp 4-component vector of float color})
+0:488    Function Parameters: 
 0:?     Sequence
-0:486      move second child to first child ( temp 4-component vector of float)
-0:486        color: direct index for structure ( temp 4-component vector of float)
-0:486          'ps_output' ( temp structure{ temp 4-component vector of float color})
-0:486          Constant:
-0:486            0 (const int)
-0:486        Constant:
-0:486          1.000000
-0:486          1.000000
-0:486          1.000000
-0:486          1.000000
-0:487      Branch: Return with expression
-0:487        'ps_output' ( temp structure{ temp 4-component vector of float color})
-0:484  Function Definition: main( ( temp void)
-0:484    Function Parameters: 
+0:490      move second child to first child ( temp 4-component vector of float)
+0:490        color: direct index for structure ( temp 4-component vector of float)
+0:490          'ps_output' ( temp structure{ temp 4-component vector of float color})
+0:490          Constant:
+0:490            0 (const int)
+0:490        Constant:
+0:490          1.000000
+0:490          1.000000
+0:490          1.000000
+0:490          1.000000
+0:491      Branch: Return with expression
+0:491        'ps_output' ( temp structure{ temp 4-component vector of float color})
+0:488  Function Definition: main( ( temp void)
+0:488    Function Parameters: 
 0:?     Sequence
-0:484      Sequence
-0:484        move second child to first child ( temp 4-component vector of float)
+0:488      Sequence
+0:488        move second child to first child ( temp 4-component vector of float)
 0:?           '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
-0:484          color: direct index for structure ( temp 4-component vector of float)
-0:484            Function Call: @main( ( temp structure{ temp 4-component vector of float color})
-0:484            Constant:
-0:484              0 (const int)
+0:488          color: direct index for structure ( temp 4-component vector of float)
+0:488            Function Call: @main( ( temp structure{ temp 4-component vector of float color})
+0:488            Constant:
+0:488              0 (const int)
 0:?   Linker Objects
 0:?     'gs_ua' ( shared uint)
 0:?     'gs_ub' ( shared uint)
@@ -2860,2034 +2901,2075 @@
 0:33            0.000000
 0:33        true case
 0:33        Branch: Kill
-0:34      Sequence
-0:34        move second child to first child ( temp float)
-0:34          'r014' ( temp float)
-0:34          cosine ( temp float)
-0:34            'inF0' ( in float)
+0:34      Test condition and select ( temp void)
+0:34        Condition
+0:34        Compare Less Than ( temp bool)
+0:34          'r005' ( temp int)
+0:34          Constant:
+0:34            0 (const int)
+0:34        true case
+0:34        Branch: Kill
 0:35      Sequence
 0:35        move second child to first child ( temp float)
-0:35          'r015' ( temp float)
-0:35          hyp. cosine ( temp float)
+0:35          'r014' ( temp float)
+0:35          cosine ( temp float)
 0:35            'inF0' ( in float)
 0:36      Sequence
-0:36        move second child to first child ( temp int)
-0:36          'r016' ( temp int)
-0:36          bitCount ( temp int)
-0:36            Constant:
-0:36              7 (const int)
+0:36        move second child to first child ( temp float)
+0:36          'r015' ( temp float)
+0:36          hyp. cosine ( temp float)
+0:36            'inF0' ( in float)
 0:37      Sequence
-0:37        move second child to first child ( temp float)
-0:37          'r017' ( temp float)
-0:37          dPdx ( temp float)
-0:37            'inF0' ( in float)
+0:37        move second child to first child ( temp int)
+0:37          'r016' ( temp int)
+0:37          bitCount ( temp int)
+0:37            Constant:
+0:37              7 (const int)
 0:38      Sequence
 0:38        move second child to first child ( temp float)
-0:38          'r018' ( temp float)
-0:38          dPdxCoarse ( temp float)
+0:38          'r017' ( temp float)
+0:38          dPdx ( temp float)
 0:38            'inF0' ( in float)
 0:39      Sequence
 0:39        move second child to first child ( temp float)
-0:39          'r019' ( temp float)
-0:39          dPdxFine ( temp float)
+0:39          'r018' ( temp float)
+0:39          dPdxCoarse ( temp float)
 0:39            'inF0' ( in float)
 0:40      Sequence
 0:40        move second child to first child ( temp float)
-0:40          'r020' ( temp float)
-0:40          dPdy ( temp float)
+0:40          'r019' ( temp float)
+0:40          dPdxFine ( temp float)
 0:40            'inF0' ( in float)
 0:41      Sequence
 0:41        move second child to first child ( temp float)
-0:41          'r021' ( temp float)
-0:41          dPdyCoarse ( temp float)
+0:41          'r020' ( temp float)
+0:41          dPdy ( temp float)
 0:41            'inF0' ( in float)
 0:42      Sequence
 0:42        move second child to first child ( temp float)
-0:42          'r022' ( temp float)
-0:42          dPdyFine ( temp float)
+0:42          'r021' ( temp float)
+0:42          dPdyCoarse ( temp float)
 0:42            'inF0' ( in float)
 0:43      Sequence
 0:43        move second child to first child ( temp float)
-0:43          'r023' ( temp float)
-0:43          degrees ( temp float)
+0:43          'r022' ( temp float)
+0:43          dPdyFine ( temp float)
 0:43            'inF0' ( in float)
-0:47      Sequence
-0:47        move second child to first child ( temp float)
-0:47          'r027' ( temp float)
-0:47          exp ( temp float)
-0:47            'inF0' ( in float)
+0:44      Sequence
+0:44        move second child to first child ( temp float)
+0:44          'r023' ( temp float)
+0:44          degrees ( temp float)
+0:44            'inF0' ( in float)
 0:48      Sequence
 0:48        move second child to first child ( temp float)
-0:48          'r028' ( temp float)
-0:48          exp2 ( temp float)
+0:48          'r027' ( temp float)
+0:48          exp ( temp float)
 0:48            'inF0' ( in float)
 0:49      Sequence
-0:49        move second child to first child ( temp uint)
-0:49          'r029' ( temp uint)
-0:49          Convert int to uint ( temp uint)
-0:49            findMSB ( temp int)
-0:49              Constant:
-0:49                7 (const int)
+0:49        move second child to first child ( temp float)
+0:49          'r028' ( temp float)
+0:49          exp2 ( temp float)
+0:49            'inF0' ( in float)
 0:50      Sequence
 0:50        move second child to first child ( temp uint)
-0:50          'r030' ( temp uint)
+0:50          'r029' ( temp uint)
 0:50          Convert int to uint ( temp uint)
-0:50            findLSB ( temp int)
+0:50            findMSB ( temp int)
 0:50              Constant:
 0:50                7 (const int)
 0:51      Sequence
-0:51        move second child to first child ( temp float)
-0:51          'r031' ( temp float)
-0:51          Floor ( temp float)
-0:51            'inF0' ( in float)
-0:53      Sequence
-0:53        move second child to first child ( temp float)
-0:53          'r033' ( temp float)
-0:53          mod ( temp float)
-0:53            'inF0' ( in float)
-0:53            'inF1' ( in float)
+0:51        move second child to first child ( temp uint)
+0:51          'r030' ( temp uint)
+0:51          Convert int to uint ( temp uint)
+0:51            findLSB ( temp int)
+0:51              Constant:
+0:51                7 (const int)
+0:52      Sequence
+0:52        move second child to first child ( temp float)
+0:52          'r031' ( temp float)
+0:52          Floor ( temp float)
+0:52            'inF0' ( in float)
 0:54      Sequence
 0:54        move second child to first child ( temp float)
-0:54          'r034' ( temp float)
-0:54          Fraction ( temp float)
+0:54          'r033' ( temp float)
+0:54          mod ( temp float)
 0:54            'inF0' ( in float)
+0:54            'inF1' ( in float)
 0:55      Sequence
 0:55        move second child to first child ( temp float)
-0:55          'r036' ( temp float)
-0:55          fwidth ( temp float)
+0:55          'r034' ( temp float)
+0:55          Fraction ( temp float)
 0:55            'inF0' ( in float)
 0:56      Sequence
-0:56        move second child to first child ( temp bool)
-0:56          'r037' ( temp bool)
-0:56          isinf ( temp bool)
+0:56        move second child to first child ( temp float)
+0:56          'r036' ( temp float)
+0:56          fwidth ( temp float)
 0:56            'inF0' ( in float)
 0:57      Sequence
 0:57        move second child to first child ( temp bool)
-0:57          'r038' ( temp bool)
-0:57          isnan ( temp bool)
+0:57          'r037' ( temp bool)
+0:57          isinf ( temp bool)
 0:57            'inF0' ( in float)
 0:58      Sequence
-0:58        move second child to first child ( temp float)
-0:58          'r039' ( temp float)
-0:58          ldexp ( temp float)
+0:58        move second child to first child ( temp bool)
+0:58          'r038' ( temp bool)
+0:58          isnan ( temp bool)
 0:58            'inF0' ( in float)
-0:58            'inF1' ( in float)
 0:59      Sequence
 0:59        move second child to first child ( temp float)
-0:59          'r039a' ( temp float)
-0:59          mix ( temp float)
+0:59          'r039' ( temp float)
+0:59          ldexp ( temp float)
 0:59            'inF0' ( in float)
 0:59            'inF1' ( in float)
-0:59            'inF2' ( in float)
 0:60      Sequence
 0:60        move second child to first child ( temp float)
-0:60          'r040' ( temp float)
-0:60          log ( temp float)
+0:60          'r039a' ( temp float)
+0:60          mix ( temp float)
 0:60            'inF0' ( in float)
+0:60            'inF1' ( in float)
+0:60            'inF2' ( in float)
 0:61      Sequence
 0:61        move second child to first child ( temp float)
-0:61          'r041' ( temp float)
-0:61          component-wise multiply ( temp float)
-0:61            log2 ( temp float)
-0:61              'inF0' ( in float)
-0:61            Constant:
-0:61              0.301030
+0:61          'r040' ( temp float)
+0:61          log ( temp float)
+0:61            'inF0' ( in float)
 0:62      Sequence
 0:62        move second child to first child ( temp float)
-0:62          'r042' ( temp float)
-0:62          log2 ( temp float)
-0:62            'inF0' ( in float)
+0:62          'r041' ( temp float)
+0:62          component-wise multiply ( temp float)
+0:62            log2 ( temp float)
+0:62              'inF0' ( in float)
+0:62            Constant:
+0:62              0.301030
 0:63      Sequence
 0:63        move second child to first child ( temp float)
-0:63          'r043' ( temp float)
-0:63          max ( temp float)
+0:63          'r042' ( temp float)
+0:63          log2 ( temp float)
 0:63            'inF0' ( in float)
-0:63            'inF1' ( in float)
 0:64      Sequence
 0:64        move second child to first child ( temp float)
-0:64          'r044' ( temp float)
-0:64          min ( temp float)
+0:64          'r043' ( temp float)
+0:64          max ( temp float)
 0:64            'inF0' ( in float)
 0:64            'inF1' ( in float)
 0:65      Sequence
 0:65        move second child to first child ( temp float)
-0:65          'r045' ( temp float)
-0:65          pow ( temp float)
+0:65          'r044' ( temp float)
+0:65          min ( temp float)
 0:65            'inF0' ( in float)
 0:65            'inF1' ( in float)
 0:66      Sequence
 0:66        move second child to first child ( temp float)
-0:66          'r046' ( temp float)
-0:66          radians ( temp float)
+0:66          'r045' ( temp float)
+0:66          pow ( temp float)
 0:66            'inF0' ( in float)
+0:66            'inF1' ( in float)
 0:67      Sequence
 0:67        move second child to first child ( temp float)
-0:67          'r047' ( temp float)
-0:67          divide ( temp float)
-0:67            Constant:
-0:67              1.000000
+0:67          'r046' ( temp float)
+0:67          radians ( temp float)
 0:67            'inF0' ( in float)
 0:68      Sequence
-0:68        move second child to first child ( temp uint)
-0:68          'r048' ( temp uint)
-0:68          Convert int to uint ( temp uint)
-0:68            bitFieldReverse ( temp int)
-0:68              Constant:
-0:68                2 (const int)
+0:68        move second child to first child ( temp float)
+0:68          'r047' ( temp float)
+0:68          divide ( temp float)
+0:68            Constant:
+0:68              1.000000
+0:68            'inF0' ( in float)
 0:69      Sequence
-0:69        move second child to first child ( temp float)
-0:69          'r049' ( temp float)
-0:69          roundEven ( temp float)
-0:69            'inF0' ( in float)
+0:69        move second child to first child ( temp uint)
+0:69          'r048' ( temp uint)
+0:69          Convert int to uint ( temp uint)
+0:69            bitFieldReverse ( temp int)
+0:69              Constant:
+0:69                2 (const int)
 0:70      Sequence
 0:70        move second child to first child ( temp float)
-0:70          'r050' ( temp float)
-0:70          inverse sqrt ( temp float)
+0:70          'r049' ( temp float)
+0:70          roundEven ( temp float)
 0:70            'inF0' ( in float)
 0:71      Sequence
 0:71        move second child to first child ( temp float)
-0:71          'r051' ( temp float)
-0:71          clamp ( temp float)
+0:71          'r050' ( temp float)
+0:71          inverse sqrt ( temp float)
 0:71            'inF0' ( in float)
-0:71            Constant:
-0:71              0.000000
-0:71            Constant:
-0:71              1.000000
 0:72      Sequence
 0:72        move second child to first child ( temp float)
-0:72          'r052' ( temp float)
-0:72          Sign ( temp float)
+0:72          'r051' ( temp float)
+0:72          clamp ( temp float)
 0:72            'inF0' ( in float)
+0:72            Constant:
+0:72              0.000000
+0:72            Constant:
+0:72              1.000000
 0:73      Sequence
 0:73        move second child to first child ( temp float)
-0:73          'r053' ( temp float)
-0:73          sine ( temp float)
+0:73          'r052' ( temp float)
+0:73          Sign ( temp float)
 0:73            'inF0' ( in float)
 0:74      Sequence
 0:74        move second child to first child ( temp float)
-0:74          'inF1' ( in float)
+0:74          'r053' ( temp float)
 0:74          sine ( temp float)
 0:74            'inF0' ( in float)
-0:74        move second child to first child ( temp float)
-0:74          'inF2' ( in float)
-0:74          cosine ( temp float)
-0:74            'inF0' ( in float)
 0:75      Sequence
 0:75        move second child to first child ( temp float)
-0:75          'r055' ( temp float)
-0:75          hyp. sine ( temp float)
+0:75          'inF1' ( in float)
+0:75          sine ( temp float)
+0:75            'inF0' ( in float)
+0:75        move second child to first child ( temp float)
+0:75          'inF2' ( in float)
+0:75          cosine ( temp float)
 0:75            'inF0' ( in float)
 0:76      Sequence
 0:76        move second child to first child ( temp float)
-0:76          'r056' ( temp float)
-0:76          smoothstep ( temp float)
+0:76          'r055' ( temp float)
+0:76          hyp. sine ( temp float)
 0:76            'inF0' ( in float)
-0:76            'inF1' ( in float)
-0:76            'inF2' ( in float)
 0:77      Sequence
 0:77        move second child to first child ( temp float)
-0:77          'r057' ( temp float)
-0:77          sqrt ( temp float)
+0:77          'r056' ( temp float)
+0:77          smoothstep ( temp float)
 0:77            'inF0' ( in float)
+0:77            'inF1' ( in float)
+0:77            'inF2' ( in float)
 0:78      Sequence
 0:78        move second child to first child ( temp float)
-0:78          'r058' ( temp float)
-0:78          step ( temp float)
+0:78          'r057' ( temp float)
+0:78          sqrt ( temp float)
 0:78            'inF0' ( in float)
-0:78            'inF1' ( in float)
 0:79      Sequence
 0:79        move second child to first child ( temp float)
-0:79          'r059' ( temp float)
-0:79          tangent ( temp float)
+0:79          'r058' ( temp float)
+0:79          step ( temp float)
 0:79            'inF0' ( in float)
+0:79            'inF1' ( in float)
 0:80      Sequence
 0:80        move second child to first child ( temp float)
-0:80          'r060' ( temp float)
-0:80          hyp. tangent ( temp float)
+0:80          'r059' ( temp float)
+0:80          tangent ( temp float)
 0:80            'inF0' ( in float)
-0:82      Sequence
-0:82        move second child to first child ( temp float)
-0:82          'r061' ( temp float)
-0:82          trunc ( temp float)
-0:82            'inF0' ( in float)
-0:84      Branch: Return with expression
-0:84        Constant:
-0:84          0.000000
-0:88  Function Definition: PixelShaderFunction1(vf1;vf1;vf1; ( temp 1-component vector of float)
-0:88    Function Parameters: 
-0:88      'inF0' ( in 1-component vector of float)
-0:88      'inF1' ( in 1-component vector of float)
-0:88      'inF2' ( in 1-component vector of float)
+0:81      Sequence
+0:81        move second child to first child ( temp float)
+0:81          'r060' ( temp float)
+0:81          hyp. tangent ( temp float)
+0:81            'inF0' ( in float)
+0:83      Sequence
+0:83        move second child to first child ( temp float)
+0:83          'r061' ( temp float)
+0:83          trunc ( temp float)
+0:83            'inF0' ( in float)
+0:85      Branch: Return with expression
+0:85        Constant:
+0:85          0.000000
+0:89  Function Definition: PixelShaderFunction1(vf1;vf1;vf1; ( temp 1-component vector of float)
+0:89    Function Parameters: 
+0:89      'inF0' ( in 1-component vector of float)
+0:89      'inF1' ( in 1-component vector of float)
+0:89      'inF2' ( in 1-component vector of float)
 0:?     Sequence
-0:90      Branch: Return with expression
-0:90        Constant:
-0:90          0.000000
-0:94  Function Definition: PixelShaderFunction2(vf2;vf2;vf2;vu2;vu2; ( temp 2-component vector of float)
-0:94    Function Parameters: 
-0:94      'inF0' ( in 2-component vector of float)
-0:94      'inF1' ( in 2-component vector of float)
-0:94      'inF2' ( in 2-component vector of float)
-0:94      'inU0' ( in 2-component vector of uint)
-0:94      'inU1' ( in 2-component vector of uint)
+0:91      Branch: Return with expression
+0:91        Constant:
+0:91          0.000000
+0:95  Function Definition: PixelShaderFunction2(vf2;vf2;vf2;vu2;vu2; ( temp 2-component vector of float)
+0:95    Function Parameters: 
+0:95      'inF0' ( in 2-component vector of float)
+0:95      'inF1' ( in 2-component vector of float)
+0:95      'inF2' ( in 2-component vector of float)
+0:95      'inU0' ( in 2-component vector of uint)
+0:95      'inU1' ( in 2-component vector of uint)
 0:?     Sequence
-0:97      Sequence
-0:97        move second child to first child ( temp bool)
-0:97          'r000' ( temp bool)
-0:97          all ( temp bool)
-0:97            Convert float to bool ( temp 2-component vector of bool)
-0:97              'inF0' ( in 2-component vector of float)
 0:98      Sequence
-0:98        move second child to first child ( temp 2-component vector of float)
-0:98          'r001' ( temp 2-component vector of float)
-0:98          Absolute value ( temp 2-component vector of float)
-0:98            'inF0' ( in 2-component vector of float)
+0:98        move second child to first child ( temp bool)
+0:98          'r000' ( temp bool)
+0:98          all ( temp bool)
+0:98            Convert float to bool ( temp 2-component vector of bool)
+0:98              'inF0' ( in 2-component vector of float)
 0:99      Sequence
 0:99        move second child to first child ( temp 2-component vector of float)
-0:99          'r002' ( temp 2-component vector of float)
-0:99          arc cosine ( temp 2-component vector of float)
+0:99          'r001' ( temp 2-component vector of float)
+0:99          Absolute value ( temp 2-component vector of float)
 0:99            'inF0' ( in 2-component vector of float)
 0:100      Sequence
-0:100        move second child to first child ( temp bool)
-0:100          'r003' ( temp bool)
-0:100          any ( temp bool)
-0:100            Convert float to bool ( temp 2-component vector of bool)
-0:100              'inF0' ( in 2-component vector of float)
+0:100        move second child to first child ( temp 2-component vector of float)
+0:100          'r002' ( temp 2-component vector of float)
+0:100          arc cosine ( temp 2-component vector of float)
+0:100            'inF0' ( in 2-component vector of float)
 0:101      Sequence
-0:101        move second child to first child ( temp 2-component vector of float)
-0:101          'r004' ( temp 2-component vector of float)
-0:101          arc sine ( temp 2-component vector of float)
-0:101            'inF0' ( in 2-component vector of float)
+0:101        move second child to first child ( temp bool)
+0:101          'r003' ( temp bool)
+0:101          any ( temp bool)
+0:101            Convert float to bool ( temp 2-component vector of bool)
+0:101              'inF0' ( in 2-component vector of float)
 0:102      Sequence
-0:102        move second child to first child ( temp 2-component vector of int)
-0:102          'r005' ( temp 2-component vector of int)
-0:102          floatBitsToInt ( temp 2-component vector of int)
+0:102        move second child to first child ( temp 2-component vector of float)
+0:102          'r004' ( temp 2-component vector of float)
+0:102          arc sine ( temp 2-component vector of float)
 0:102            'inF0' ( in 2-component vector of float)
 0:103      Sequence
-0:103        move second child to first child ( temp 2-component vector of uint)
-0:103          'r006' ( temp 2-component vector of uint)
-0:103          floatBitsToUint ( temp 2-component vector of uint)
+0:103        move second child to first child ( temp 2-component vector of int)
+0:103          'r005' ( temp 2-component vector of int)
+0:103          floatBitsToInt ( temp 2-component vector of int)
 0:103            'inF0' ( in 2-component vector of float)
 0:104      Sequence
-0:104        move second child to first child ( temp 2-component vector of float)
-0:104          'r007' ( temp 2-component vector of float)
-0:104          intBitsToFloat ( temp 2-component vector of float)
-0:104            'inU0' ( in 2-component vector of uint)
-0:106      Sequence
-0:106        move second child to first child ( temp 2-component vector of float)
-0:106          'r009' ( temp 2-component vector of float)
-0:106          arc tangent ( temp 2-component vector of float)
-0:106            'inF0' ( in 2-component vector of float)
+0:104        move second child to first child ( temp 2-component vector of uint)
+0:104          'r006' ( temp 2-component vector of uint)
+0:104          floatBitsToUint ( temp 2-component vector of uint)
+0:104            'inF0' ( in 2-component vector of float)
+0:105      Sequence
+0:105        move second child to first child ( temp 2-component vector of float)
+0:105          'r007' ( temp 2-component vector of float)
+0:105          intBitsToFloat ( temp 2-component vector of float)
+0:105            'inU0' ( in 2-component vector of uint)
 0:107      Sequence
 0:107        move second child to first child ( temp 2-component vector of float)
-0:107          'r010' ( temp 2-component vector of float)
+0:107          'r009' ( temp 2-component vector of float)
 0:107          arc tangent ( temp 2-component vector of float)
 0:107            'inF0' ( in 2-component vector of float)
-0:107            'inF1' ( in 2-component vector of float)
 0:108      Sequence
 0:108        move second child to first child ( temp 2-component vector of float)
-0:108          'r011' ( temp 2-component vector of float)
-0:108          Ceiling ( temp 2-component vector of float)
+0:108          'r010' ( temp 2-component vector of float)
+0:108          arc tangent ( temp 2-component vector of float)
 0:108            'inF0' ( in 2-component vector of float)
+0:108            'inF1' ( in 2-component vector of float)
 0:109      Sequence
 0:109        move second child to first child ( temp 2-component vector of float)
-0:109          'r012' ( temp 2-component vector of float)
-0:109          clamp ( temp 2-component vector of float)
+0:109          'r011' ( temp 2-component vector of float)
+0:109          Ceiling ( temp 2-component vector of float)
 0:109            'inF0' ( in 2-component vector of float)
-0:109            'inF1' ( in 2-component vector of float)
-0:109            'inF2' ( in 2-component vector of float)
-0:110      Test condition and select ( temp void)
-0:110        Condition
-0:110        any ( temp bool)
-0:110          Compare Less Than ( temp 2-component vector of bool)
+0:110      Sequence
+0:110        move second child to first child ( temp 2-component vector of float)
+0:110          'r012' ( temp 2-component vector of float)
+0:110          clamp ( temp 2-component vector of float)
 0:110            'inF0' ( in 2-component vector of float)
-0:110            Constant:
-0:110              0.000000
-0:110              0.000000
-0:110        true case
-0:110        Branch: Kill
-0:111      Sequence
-0:111        move second child to first child ( temp 2-component vector of float)
-0:111          'r013' ( temp 2-component vector of float)
-0:111          cosine ( temp 2-component vector of float)
+0:110            'inF1' ( in 2-component vector of float)
+0:110            'inF2' ( in 2-component vector of float)
+0:111      Test condition and select ( temp void)
+0:111        Condition
+0:111        any ( temp bool)
+0:111          Compare Less Than ( temp 2-component vector of bool)
 0:111            'inF0' ( in 2-component vector of float)
-0:112      Sequence
-0:112        move second child to first child ( temp 2-component vector of float)
-0:112          'r015' ( temp 2-component vector of float)
-0:112          hyp. cosine ( temp 2-component vector of float)
-0:112            'inF0' ( in 2-component vector of float)
+0:111            Constant:
+0:111              0.000000
+0:111              0.000000
+0:111        true case
+0:111        Branch: Kill
+0:112      Test condition and select ( temp void)
+0:112        Condition
+0:112        any ( temp bool)
+0:112          Compare Less Than ( temp 2-component vector of bool)
+0:112            'inU0' ( in 2-component vector of uint)
+0:112            Constant:
+0:112              0.000000
+0:112              0.000000
+0:112        true case
+0:112        Branch: Kill
 0:113      Sequence
-0:113        move second child to first child ( temp 2-component vector of int)
-0:113          'r016' ( temp 2-component vector of int)
+0:113        move second child to first child ( temp 2-component vector of float)
+0:113          'r013' ( temp 2-component vector of float)
+0:113          cosine ( temp 2-component vector of float)
+0:113            'inF0' ( in 2-component vector of float)
+0:114      Sequence
+0:114        move second child to first child ( temp 2-component vector of float)
+0:114          'r015' ( temp 2-component vector of float)
+0:114          hyp. cosine ( temp 2-component vector of float)
+0:114            'inF0' ( in 2-component vector of float)
+0:115      Sequence
+0:115        move second child to first child ( temp 2-component vector of int)
+0:115          'r016' ( temp 2-component vector of int)
 0:?           bitCount ( temp 2-component vector of int)
 0:?             Constant:
 0:?               7 (const int)
 0:?               3 (const int)
-0:114      Sequence
-0:114        move second child to first child ( temp 2-component vector of float)
-0:114          'r017' ( temp 2-component vector of float)
-0:114          dPdx ( temp 2-component vector of float)
-0:114            'inF0' ( in 2-component vector of float)
-0:115      Sequence
-0:115        move second child to first child ( temp 2-component vector of float)
-0:115          'r018' ( temp 2-component vector of float)
-0:115          dPdxCoarse ( temp 2-component vector of float)
-0:115            'inF0' ( in 2-component vector of float)
 0:116      Sequence
 0:116        move second child to first child ( temp 2-component vector of float)
-0:116          'r019' ( temp 2-component vector of float)
-0:116          dPdxFine ( temp 2-component vector of float)
+0:116          'r017' ( temp 2-component vector of float)
+0:116          dPdx ( temp 2-component vector of float)
 0:116            'inF0' ( in 2-component vector of float)
 0:117      Sequence
 0:117        move second child to first child ( temp 2-component vector of float)
-0:117          'r020' ( temp 2-component vector of float)
-0:117          dPdy ( temp 2-component vector of float)
+0:117          'r018' ( temp 2-component vector of float)
+0:117          dPdxCoarse ( temp 2-component vector of float)
 0:117            'inF0' ( in 2-component vector of float)
 0:118      Sequence
 0:118        move second child to first child ( temp 2-component vector of float)
-0:118          'r021' ( temp 2-component vector of float)
-0:118          dPdyCoarse ( temp 2-component vector of float)
+0:118          'r019' ( temp 2-component vector of float)
+0:118          dPdxFine ( temp 2-component vector of float)
 0:118            'inF0' ( in 2-component vector of float)
 0:119      Sequence
 0:119        move second child to first child ( temp 2-component vector of float)
-0:119          'r022' ( temp 2-component vector of float)
-0:119          dPdyFine ( temp 2-component vector of float)
+0:119          'r020' ( temp 2-component vector of float)
+0:119          dPdy ( temp 2-component vector of float)
 0:119            'inF0' ( in 2-component vector of float)
 0:120      Sequence
 0:120        move second child to first child ( temp 2-component vector of float)
-0:120          'r023' ( temp 2-component vector of float)
-0:120          degrees ( temp 2-component vector of float)
+0:120          'r021' ( temp 2-component vector of float)
+0:120          dPdyCoarse ( temp 2-component vector of float)
 0:120            'inF0' ( in 2-component vector of float)
-0:124      Sequence
-0:124        move second child to first child ( temp float)
-0:124          'r026' ( temp float)
-0:124          distance ( temp float)
-0:124            'inF0' ( in 2-component vector of float)
-0:124            'inF1' ( in 2-component vector of float)
-0:125      Sequence
-0:125        move second child to first child ( temp float)
-0:125          'r027' ( temp float)
-0:125          dot-product ( temp float)
-0:125            'inF0' ( in 2-component vector of float)
-0:125            'inF1' ( in 2-component vector of float)
-0:129      Sequence
-0:129        move second child to first child ( temp 2-component vector of float)
-0:129          'r028' ( temp 2-component vector of float)
-0:129          exp ( temp 2-component vector of float)
-0:129            'inF0' ( in 2-component vector of float)
-0:130      Sequence
-0:130        move second child to first child ( temp 2-component vector of float)
-0:130          'r029' ( temp 2-component vector of float)
-0:130          exp2 ( temp 2-component vector of float)
-0:130            'inF0' ( in 2-component vector of float)
+0:121      Sequence
+0:121        move second child to first child ( temp 2-component vector of float)
+0:121          'r022' ( temp 2-component vector of float)
+0:121          dPdyFine ( temp 2-component vector of float)
+0:121            'inF0' ( in 2-component vector of float)
+0:122      Sequence
+0:122        move second child to first child ( temp 2-component vector of float)
+0:122          'r023' ( temp 2-component vector of float)
+0:122          degrees ( temp 2-component vector of float)
+0:122            'inF0' ( in 2-component vector of float)
+0:126      Sequence
+0:126        move second child to first child ( temp float)
+0:126          'r026' ( temp float)
+0:126          distance ( temp float)
+0:126            'inF0' ( in 2-component vector of float)
+0:126            'inF1' ( in 2-component vector of float)
+0:127      Sequence
+0:127        move second child to first child ( temp float)
+0:127          'r027' ( temp float)
+0:127          dot-product ( temp float)
+0:127            'inF0' ( in 2-component vector of float)
+0:127            'inF1' ( in 2-component vector of float)
 0:131      Sequence
 0:131        move second child to first child ( temp 2-component vector of float)
-0:131          'r030' ( temp 2-component vector of float)
-0:131          face-forward ( temp 2-component vector of float)
+0:131          'r028' ( temp 2-component vector of float)
+0:131          exp ( temp 2-component vector of float)
 0:131            'inF0' ( in 2-component vector of float)
-0:131            'inF1' ( in 2-component vector of float)
-0:131            'inF2' ( in 2-component vector of float)
 0:132      Sequence
-0:132        move second child to first child ( temp 2-component vector of uint)
-0:132          'r031' ( temp 2-component vector of uint)
+0:132        move second child to first child ( temp 2-component vector of float)
+0:132          'r029' ( temp 2-component vector of float)
+0:132          exp2 ( temp 2-component vector of float)
+0:132            'inF0' ( in 2-component vector of float)
+0:133      Sequence
+0:133        move second child to first child ( temp 2-component vector of float)
+0:133          'r030' ( temp 2-component vector of float)
+0:133          face-forward ( temp 2-component vector of float)
+0:133            'inF0' ( in 2-component vector of float)
+0:133            'inF1' ( in 2-component vector of float)
+0:133            'inF2' ( in 2-component vector of float)
+0:134      Sequence
+0:134        move second child to first child ( temp 2-component vector of uint)
+0:134          'r031' ( temp 2-component vector of uint)
 0:?           findMSB ( temp 2-component vector of uint)
 0:?             Constant:
 0:?               7 (const uint)
 0:?               8 (const uint)
-0:133      Sequence
-0:133        move second child to first child ( temp 2-component vector of uint)
-0:133          'r032' ( temp 2-component vector of uint)
+0:135      Sequence
+0:135        move second child to first child ( temp 2-component vector of uint)
+0:135          'r032' ( temp 2-component vector of uint)
 0:?           findLSB ( temp 2-component vector of uint)
 0:?             Constant:
 0:?               7 (const uint)
 0:?               8 (const uint)
-0:134      Sequence
-0:134        move second child to first child ( temp 2-component vector of float)
-0:134          'r033' ( temp 2-component vector of float)
-0:134          Floor ( temp 2-component vector of float)
-0:134            'inF0' ( in 2-component vector of float)
 0:136      Sequence
 0:136        move second child to first child ( temp 2-component vector of float)
-0:136          'r035' ( temp 2-component vector of float)
-0:136          mod ( temp 2-component vector of float)
+0:136          'r033' ( temp 2-component vector of float)
+0:136          Floor ( temp 2-component vector of float)
 0:136            'inF0' ( in 2-component vector of float)
-0:136            'inF1' ( in 2-component vector of float)
-0:137      Sequence
-0:137        move second child to first child ( temp 2-component vector of float)
-0:137          'r036' ( temp 2-component vector of float)
-0:137          Fraction ( temp 2-component vector of float)
-0:137            'inF0' ( in 2-component vector of float)
 0:138      Sequence
 0:138        move second child to first child ( temp 2-component vector of float)
-0:138          'r038' ( temp 2-component vector of float)
-0:138          fwidth ( temp 2-component vector of float)
+0:138          'r035' ( temp 2-component vector of float)
+0:138          mod ( temp 2-component vector of float)
 0:138            'inF0' ( in 2-component vector of float)
+0:138            'inF1' ( in 2-component vector of float)
 0:139      Sequence
-0:139        move second child to first child ( temp 2-component vector of bool)
-0:139          'r039' ( temp 2-component vector of bool)
-0:139          isinf ( temp 2-component vector of bool)
+0:139        move second child to first child ( temp 2-component vector of float)
+0:139          'r036' ( temp 2-component vector of float)
+0:139          Fraction ( temp 2-component vector of float)
 0:139            'inF0' ( in 2-component vector of float)
 0:140      Sequence
-0:140        move second child to first child ( temp 2-component vector of bool)
-0:140          'r040' ( temp 2-component vector of bool)
-0:140          isnan ( temp 2-component vector of bool)
+0:140        move second child to first child ( temp 2-component vector of float)
+0:140          'r038' ( temp 2-component vector of float)
+0:140          fwidth ( temp 2-component vector of float)
 0:140            'inF0' ( in 2-component vector of float)
 0:141      Sequence
-0:141        move second child to first child ( temp 2-component vector of float)
-0:141          'r041' ( temp 2-component vector of float)
-0:141          ldexp ( temp 2-component vector of float)
+0:141        move second child to first child ( temp 2-component vector of bool)
+0:141          'r039' ( temp 2-component vector of bool)
+0:141          isinf ( temp 2-component vector of bool)
 0:141            'inF0' ( in 2-component vector of float)
-0:141            'inF1' ( in 2-component vector of float)
 0:142      Sequence
-0:142        move second child to first child ( temp 2-component vector of float)
-0:142          'r039a' ( temp 2-component vector of float)
-0:142          mix ( temp 2-component vector of float)
+0:142        move second child to first child ( temp 2-component vector of bool)
+0:142          'r040' ( temp 2-component vector of bool)
+0:142          isnan ( temp 2-component vector of bool)
 0:142            'inF0' ( in 2-component vector of float)
-0:142            'inF1' ( in 2-component vector of float)
-0:142            'inF2' ( in 2-component vector of float)
 0:143      Sequence
-0:143        move second child to first child ( temp float)
-0:143          'r042' ( temp float)
-0:143          length ( temp float)
+0:143        move second child to first child ( temp 2-component vector of float)
+0:143          'r041' ( temp 2-component vector of float)
+0:143          ldexp ( temp 2-component vector of float)
 0:143            'inF0' ( in 2-component vector of float)
+0:143            'inF1' ( in 2-component vector of float)
 0:144      Sequence
 0:144        move second child to first child ( temp 2-component vector of float)
-0:144          'r043' ( temp 2-component vector of float)
-0:144          log ( temp 2-component vector of float)
+0:144          'r039a' ( temp 2-component vector of float)
+0:144          mix ( temp 2-component vector of float)
 0:144            'inF0' ( in 2-component vector of float)
+0:144            'inF1' ( in 2-component vector of float)
+0:144            'inF2' ( in 2-component vector of float)
 0:145      Sequence
-0:145        move second child to first child ( temp 2-component vector of float)
-0:145          'r044' ( temp 2-component vector of float)
-0:145          vector-scale ( temp 2-component vector of float)
-0:145            log2 ( temp 2-component vector of float)
-0:145              'inF0' ( in 2-component vector of float)
-0:145            Constant:
-0:145              0.301030
+0:145        move second child to first child ( temp float)
+0:145          'r042' ( temp float)
+0:145          length ( temp float)
+0:145            'inF0' ( in 2-component vector of float)
 0:146      Sequence
 0:146        move second child to first child ( temp 2-component vector of float)
-0:146          'r045' ( temp 2-component vector of float)
-0:146          log2 ( temp 2-component vector of float)
+0:146          'r043' ( temp 2-component vector of float)
+0:146          log ( temp 2-component vector of float)
 0:146            'inF0' ( in 2-component vector of float)
 0:147      Sequence
 0:147        move second child to first child ( temp 2-component vector of float)
-0:147          'r046' ( temp 2-component vector of float)
-0:147          max ( temp 2-component vector of float)
-0:147            'inF0' ( in 2-component vector of float)
-0:147            'inF1' ( in 2-component vector of float)
+0:147          'r044' ( temp 2-component vector of float)
+0:147          vector-scale ( temp 2-component vector of float)
+0:147            log2 ( temp 2-component vector of float)
+0:147              'inF0' ( in 2-component vector of float)
+0:147            Constant:
+0:147              0.301030
 0:148      Sequence
 0:148        move second child to first child ( temp 2-component vector of float)
-0:148          'r047' ( temp 2-component vector of float)
-0:148          min ( temp 2-component vector of float)
+0:148          'r045' ( temp 2-component vector of float)
+0:148          log2 ( temp 2-component vector of float)
 0:148            'inF0' ( in 2-component vector of float)
-0:148            'inF1' ( in 2-component vector of float)
 0:149      Sequence
 0:149        move second child to first child ( temp 2-component vector of float)
-0:149          'r048' ( temp 2-component vector of float)
-0:149          normalize ( temp 2-component vector of float)
+0:149          'r046' ( temp 2-component vector of float)
+0:149          max ( temp 2-component vector of float)
 0:149            'inF0' ( in 2-component vector of float)
+0:149            'inF1' ( in 2-component vector of float)
 0:150      Sequence
 0:150        move second child to first child ( temp 2-component vector of float)
-0:150          'r049' ( temp 2-component vector of float)
-0:150          pow ( temp 2-component vector of float)
+0:150          'r047' ( temp 2-component vector of float)
+0:150          min ( temp 2-component vector of float)
 0:150            'inF0' ( in 2-component vector of float)
 0:150            'inF1' ( in 2-component vector of float)
 0:151      Sequence
 0:151        move second child to first child ( temp 2-component vector of float)
-0:151          'r050' ( temp 2-component vector of float)
-0:151          radians ( temp 2-component vector of float)
+0:151          'r048' ( temp 2-component vector of float)
+0:151          normalize ( temp 2-component vector of float)
 0:151            'inF0' ( in 2-component vector of float)
 0:152      Sequence
 0:152        move second child to first child ( temp 2-component vector of float)
-0:152          'r051' ( temp 2-component vector of float)
-0:152          divide ( temp 2-component vector of float)
-0:152            Constant:
-0:152              1.000000
+0:152          'r049' ( temp 2-component vector of float)
+0:152          pow ( temp 2-component vector of float)
 0:152            'inF0' ( in 2-component vector of float)
+0:152            'inF1' ( in 2-component vector of float)
 0:153      Sequence
 0:153        move second child to first child ( temp 2-component vector of float)
-0:153          'r052' ( temp 2-component vector of float)
-0:153          reflect ( temp 2-component vector of float)
+0:153          'r050' ( temp 2-component vector of float)
+0:153          radians ( temp 2-component vector of float)
 0:153            'inF0' ( in 2-component vector of float)
-0:153            'inF1' ( in 2-component vector of float)
 0:154      Sequence
 0:154        move second child to first child ( temp 2-component vector of float)
-0:154          'r053' ( temp 2-component vector of float)
-0:154          refract ( temp 2-component vector of float)
-0:154            'inF0' ( in 2-component vector of float)
-0:154            'inF1' ( in 2-component vector of float)
+0:154          'r051' ( temp 2-component vector of float)
+0:154          divide ( temp 2-component vector of float)
 0:154            Constant:
-0:154              2.000000
+0:154              1.000000
+0:154            'inF0' ( in 2-component vector of float)
 0:155      Sequence
-0:155        move second child to first child ( temp 2-component vector of uint)
-0:155          'r054' ( temp 2-component vector of uint)
+0:155        move second child to first child ( temp 2-component vector of float)
+0:155          'r052' ( temp 2-component vector of float)
+0:155          reflect ( temp 2-component vector of float)
+0:155            'inF0' ( in 2-component vector of float)
+0:155            'inF1' ( in 2-component vector of float)
+0:156      Sequence
+0:156        move second child to first child ( temp 2-component vector of float)
+0:156          'r053' ( temp 2-component vector of float)
+0:156          refract ( temp 2-component vector of float)
+0:156            'inF0' ( in 2-component vector of float)
+0:156            'inF1' ( in 2-component vector of float)
+0:156            Constant:
+0:156              2.000000
+0:157      Sequence
+0:157        move second child to first child ( temp 2-component vector of uint)
+0:157          'r054' ( temp 2-component vector of uint)
 0:?           bitFieldReverse ( temp 2-component vector of uint)
 0:?             Constant:
 0:?               1 (const uint)
 0:?               2 (const uint)
-0:156      Sequence
-0:156        move second child to first child ( temp 2-component vector of float)
-0:156          'r055' ( temp 2-component vector of float)
-0:156          roundEven ( temp 2-component vector of float)
-0:156            'inF0' ( in 2-component vector of float)
-0:157      Sequence
-0:157        move second child to first child ( temp 2-component vector of float)
-0:157          'r056' ( temp 2-component vector of float)
-0:157          inverse sqrt ( temp 2-component vector of float)
-0:157            'inF0' ( in 2-component vector of float)
 0:158      Sequence
 0:158        move second child to first child ( temp 2-component vector of float)
-0:158          'r057' ( temp 2-component vector of float)
-0:158          clamp ( temp 2-component vector of float)
+0:158          'r055' ( temp 2-component vector of float)
+0:158          roundEven ( temp 2-component vector of float)
 0:158            'inF0' ( in 2-component vector of float)
-0:158            Constant:
-0:158              0.000000
-0:158            Constant:
-0:158              1.000000
 0:159      Sequence
 0:159        move second child to first child ( temp 2-component vector of float)
-0:159          'r058' ( temp 2-component vector of float)
-0:159          Sign ( temp 2-component vector of float)
+0:159          'r056' ( temp 2-component vector of float)
+0:159          inverse sqrt ( temp 2-component vector of float)
 0:159            'inF0' ( in 2-component vector of float)
 0:160      Sequence
 0:160        move second child to first child ( temp 2-component vector of float)
-0:160          'r059' ( temp 2-component vector of float)
-0:160          sine ( temp 2-component vector of float)
+0:160          'r057' ( temp 2-component vector of float)
+0:160          clamp ( temp 2-component vector of float)
 0:160            'inF0' ( in 2-component vector of float)
+0:160            Constant:
+0:160              0.000000
+0:160            Constant:
+0:160              1.000000
 0:161      Sequence
 0:161        move second child to first child ( temp 2-component vector of float)
-0:161          'inF1' ( in 2-component vector of float)
-0:161          sine ( temp 2-component vector of float)
-0:161            'inF0' ( in 2-component vector of float)
-0:161        move second child to first child ( temp 2-component vector of float)
-0:161          'inF2' ( in 2-component vector of float)
-0:161          cosine ( temp 2-component vector of float)
+0:161          'r058' ( temp 2-component vector of float)
+0:161          Sign ( temp 2-component vector of float)
 0:161            'inF0' ( in 2-component vector of float)
 0:162      Sequence
 0:162        move second child to first child ( temp 2-component vector of float)
-0:162          'r060' ( temp 2-component vector of float)
-0:162          hyp. sine ( temp 2-component vector of float)
+0:162          'r059' ( temp 2-component vector of float)
+0:162          sine ( temp 2-component vector of float)
 0:162            'inF0' ( in 2-component vector of float)
 0:163      Sequence
 0:163        move second child to first child ( temp 2-component vector of float)
-0:163          'r061' ( temp 2-component vector of float)
-0:163          smoothstep ( temp 2-component vector of float)
+0:163          'inF1' ( in 2-component vector of float)
+0:163          sine ( temp 2-component vector of float)
 0:163            'inF0' ( in 2-component vector of float)
-0:163            'inF1' ( in 2-component vector of float)
-0:163            'inF2' ( in 2-component vector of float)
+0:163        move second child to first child ( temp 2-component vector of float)
+0:163          'inF2' ( in 2-component vector of float)
+0:163          cosine ( temp 2-component vector of float)
+0:163            'inF0' ( in 2-component vector of float)
 0:164      Sequence
 0:164        move second child to first child ( temp 2-component vector of float)
-0:164          'r062' ( temp 2-component vector of float)
-0:164          sqrt ( temp 2-component vector of float)
+0:164          'r060' ( temp 2-component vector of float)
+0:164          hyp. sine ( temp 2-component vector of float)
 0:164            'inF0' ( in 2-component vector of float)
 0:165      Sequence
 0:165        move second child to first child ( temp 2-component vector of float)
-0:165          'r063' ( temp 2-component vector of float)
-0:165          step ( temp 2-component vector of float)
+0:165          'r061' ( temp 2-component vector of float)
+0:165          smoothstep ( temp 2-component vector of float)
 0:165            'inF0' ( in 2-component vector of float)
 0:165            'inF1' ( in 2-component vector of float)
+0:165            'inF2' ( in 2-component vector of float)
 0:166      Sequence
 0:166        move second child to first child ( temp 2-component vector of float)
-0:166          'r064' ( temp 2-component vector of float)
-0:166          tangent ( temp 2-component vector of float)
+0:166          'r062' ( temp 2-component vector of float)
+0:166          sqrt ( temp 2-component vector of float)
 0:166            'inF0' ( in 2-component vector of float)
 0:167      Sequence
 0:167        move second child to first child ( temp 2-component vector of float)
-0:167          'r065' ( temp 2-component vector of float)
-0:167          hyp. tangent ( temp 2-component vector of float)
+0:167          'r063' ( temp 2-component vector of float)
+0:167          step ( temp 2-component vector of float)
 0:167            'inF0' ( in 2-component vector of float)
+0:167            'inF1' ( in 2-component vector of float)
+0:168      Sequence
+0:168        move second child to first child ( temp 2-component vector of float)
+0:168          'r064' ( temp 2-component vector of float)
+0:168          tangent ( temp 2-component vector of float)
+0:168            'inF0' ( in 2-component vector of float)
 0:169      Sequence
 0:169        move second child to first child ( temp 2-component vector of float)
-0:169          'r066' ( temp 2-component vector of float)
-0:169          trunc ( temp 2-component vector of float)
+0:169          'r065' ( temp 2-component vector of float)
+0:169          hyp. tangent ( temp 2-component vector of float)
 0:169            'inF0' ( in 2-component vector of float)
-0:172      Branch: Return with expression
+0:171      Sequence
+0:171        move second child to first child ( temp 2-component vector of float)
+0:171          'r066' ( temp 2-component vector of float)
+0:171          trunc ( temp 2-component vector of float)
+0:171            'inF0' ( in 2-component vector of float)
+0:174      Branch: Return with expression
 0:?         Constant:
 0:?           1.000000
 0:?           2.000000
-0:176  Function Definition: PixelShaderFunction3(vf3;vf3;vf3;vu3;vu3; ( temp 3-component vector of float)
-0:176    Function Parameters: 
-0:176      'inF0' ( in 3-component vector of float)
-0:176      'inF1' ( in 3-component vector of float)
-0:176      'inF2' ( in 3-component vector of float)
-0:176      'inU0' ( in 3-component vector of uint)
-0:176      'inU1' ( in 3-component vector of uint)
+0:178  Function Definition: PixelShaderFunction3(vf3;vf3;vf3;vu3;vu3; ( temp 3-component vector of float)
+0:178    Function Parameters: 
+0:178      'inF0' ( in 3-component vector of float)
+0:178      'inF1' ( in 3-component vector of float)
+0:178      'inF2' ( in 3-component vector of float)
+0:178      'inU0' ( in 3-component vector of uint)
+0:178      'inU1' ( in 3-component vector of uint)
 0:?     Sequence
-0:179      Sequence
-0:179        move second child to first child ( temp bool)
-0:179          'r000' ( temp bool)
-0:179          all ( temp bool)
-0:179            Convert float to bool ( temp 3-component vector of bool)
-0:179              'inF0' ( in 3-component vector of float)
-0:180      Sequence
-0:180        move second child to first child ( temp 3-component vector of float)
-0:180          'r001' ( temp 3-component vector of float)
-0:180          Absolute value ( temp 3-component vector of float)
-0:180            'inF0' ( in 3-component vector of float)
 0:181      Sequence
-0:181        move second child to first child ( temp 3-component vector of float)
-0:181          'r002' ( temp 3-component vector of float)
-0:181          arc cosine ( temp 3-component vector of float)
-0:181            'inF0' ( in 3-component vector of float)
+0:181        move second child to first child ( temp bool)
+0:181          'r000' ( temp bool)
+0:181          all ( temp bool)
+0:181            Convert float to bool ( temp 3-component vector of bool)
+0:181              'inF0' ( in 3-component vector of float)
 0:182      Sequence
-0:182        move second child to first child ( temp bool)
-0:182          'r003' ( temp bool)
-0:182          any ( temp bool)
-0:182            Convert float to bool ( temp 3-component vector of bool)
-0:182              'inF0' ( in 3-component vector of float)
+0:182        move second child to first child ( temp 3-component vector of float)
+0:182          'r001' ( temp 3-component vector of float)
+0:182          Absolute value ( temp 3-component vector of float)
+0:182            'inF0' ( in 3-component vector of float)
 0:183      Sequence
 0:183        move second child to first child ( temp 3-component vector of float)
-0:183          'r004' ( temp 3-component vector of float)
-0:183          arc sine ( temp 3-component vector of float)
+0:183          'r002' ( temp 3-component vector of float)
+0:183          arc cosine ( temp 3-component vector of float)
 0:183            'inF0' ( in 3-component vector of float)
 0:184      Sequence
-0:184        move second child to first child ( temp 3-component vector of int)
-0:184          'r005' ( temp 3-component vector of int)
-0:184          floatBitsToInt ( temp 3-component vector of int)
-0:184            'inF0' ( in 3-component vector of float)
+0:184        move second child to first child ( temp bool)
+0:184          'r003' ( temp bool)
+0:184          any ( temp bool)
+0:184            Convert float to bool ( temp 3-component vector of bool)
+0:184              'inF0' ( in 3-component vector of float)
 0:185      Sequence
-0:185        move second child to first child ( temp 3-component vector of uint)
-0:185          'r006' ( temp 3-component vector of uint)
-0:185          floatBitsToUint ( temp 3-component vector of uint)
+0:185        move second child to first child ( temp 3-component vector of float)
+0:185          'r004' ( temp 3-component vector of float)
+0:185          arc sine ( temp 3-component vector of float)
 0:185            'inF0' ( in 3-component vector of float)
 0:186      Sequence
-0:186        move second child to first child ( temp 3-component vector of float)
-0:186          'r007' ( temp 3-component vector of float)
-0:186          intBitsToFloat ( temp 3-component vector of float)
-0:186            'inU0' ( in 3-component vector of uint)
+0:186        move second child to first child ( temp 3-component vector of int)
+0:186          'r005' ( temp 3-component vector of int)
+0:186          floatBitsToInt ( temp 3-component vector of int)
+0:186            'inF0' ( in 3-component vector of float)
+0:187      Sequence
+0:187        move second child to first child ( temp 3-component vector of uint)
+0:187          'r006' ( temp 3-component vector of uint)
+0:187          floatBitsToUint ( temp 3-component vector of uint)
+0:187            'inF0' ( in 3-component vector of float)
 0:188      Sequence
 0:188        move second child to first child ( temp 3-component vector of float)
-0:188          'r009' ( temp 3-component vector of float)
-0:188          arc tangent ( temp 3-component vector of float)
-0:188            'inF0' ( in 3-component vector of float)
-0:189      Sequence
-0:189        move second child to first child ( temp 3-component vector of float)
-0:189          'r010' ( temp 3-component vector of float)
-0:189          arc tangent ( temp 3-component vector of float)
-0:189            'inF0' ( in 3-component vector of float)
-0:189            'inF1' ( in 3-component vector of float)
+0:188          'r007' ( temp 3-component vector of float)
+0:188          intBitsToFloat ( temp 3-component vector of float)
+0:188            'inU0' ( in 3-component vector of uint)
 0:190      Sequence
 0:190        move second child to first child ( temp 3-component vector of float)
-0:190          'r011' ( temp 3-component vector of float)
-0:190          Ceiling ( temp 3-component vector of float)
+0:190          'r009' ( temp 3-component vector of float)
+0:190          arc tangent ( temp 3-component vector of float)
 0:190            'inF0' ( in 3-component vector of float)
 0:191      Sequence
 0:191        move second child to first child ( temp 3-component vector of float)
-0:191          'r012' ( temp 3-component vector of float)
-0:191          clamp ( temp 3-component vector of float)
+0:191          'r010' ( temp 3-component vector of float)
+0:191          arc tangent ( temp 3-component vector of float)
 0:191            'inF0' ( in 3-component vector of float)
 0:191            'inF1' ( in 3-component vector of float)
-0:191            'inF2' ( in 3-component vector of float)
-0:192      Test condition and select ( temp void)
-0:192        Condition
-0:192        any ( temp bool)
-0:192          Compare Less Than ( temp 3-component vector of bool)
+0:192      Sequence
+0:192        move second child to first child ( temp 3-component vector of float)
+0:192          'r011' ( temp 3-component vector of float)
+0:192          Ceiling ( temp 3-component vector of float)
 0:192            'inF0' ( in 3-component vector of float)
-0:192            Constant:
-0:192              0.000000
-0:192              0.000000
-0:192              0.000000
-0:192        true case
-0:192        Branch: Kill
 0:193      Sequence
 0:193        move second child to first child ( temp 3-component vector of float)
-0:193          'r013' ( temp 3-component vector of float)
-0:193          cosine ( temp 3-component vector of float)
+0:193          'r012' ( temp 3-component vector of float)
+0:193          clamp ( temp 3-component vector of float)
 0:193            'inF0' ( in 3-component vector of float)
-0:194      Sequence
-0:194        move second child to first child ( temp 3-component vector of float)
-0:194          'r014' ( temp 3-component vector of float)
-0:194          hyp. cosine ( temp 3-component vector of float)
+0:193            'inF1' ( in 3-component vector of float)
+0:193            'inF2' ( in 3-component vector of float)
+0:194      Test condition and select ( temp void)
+0:194        Condition
+0:194        any ( temp bool)
+0:194          Compare Less Than ( temp 3-component vector of bool)
 0:194            'inF0' ( in 3-component vector of float)
-0:195      Sequence
-0:195        move second child to first child ( temp 3-component vector of uint)
-0:195          'r015' ( temp 3-component vector of uint)
+0:194            Constant:
+0:194              0.000000
+0:194              0.000000
+0:194              0.000000
+0:194        true case
+0:194        Branch: Kill
+0:195      Test condition and select ( temp void)
+0:195        Condition
+0:195        any ( temp bool)
+0:195          Compare Less Than ( temp 3-component vector of bool)
+0:195            'inU0' ( in 3-component vector of uint)
+0:195            Constant:
+0:195              0.000000
+0:195              0.000000
+0:195              0.000000
+0:195        true case
+0:195        Branch: Kill
+0:196      Sequence
+0:196        move second child to first child ( temp 3-component vector of float)
+0:196          'r013' ( temp 3-component vector of float)
+0:196          cosine ( temp 3-component vector of float)
+0:196            'inF0' ( in 3-component vector of float)
+0:197      Sequence
+0:197        move second child to first child ( temp 3-component vector of float)
+0:197          'r014' ( temp 3-component vector of float)
+0:197          hyp. cosine ( temp 3-component vector of float)
+0:197            'inF0' ( in 3-component vector of float)
+0:198      Sequence
+0:198        move second child to first child ( temp 3-component vector of uint)
+0:198          'r015' ( temp 3-component vector of uint)
 0:?           bitCount ( temp 3-component vector of uint)
 0:?             Constant:
 0:?               7 (const uint)
 0:?               3 (const uint)
 0:?               5 (const uint)
-0:196      Sequence
-0:196        move second child to first child ( temp 3-component vector of float)
-0:196          'r016' ( temp 3-component vector of float)
-0:196          cross-product ( temp 3-component vector of float)
-0:196            'inF0' ( in 3-component vector of float)
-0:196            'inF1' ( in 3-component vector of float)
-0:197      Sequence
-0:197        move second child to first child ( temp 3-component vector of float)
-0:197          'r017' ( temp 3-component vector of float)
-0:197          dPdx ( temp 3-component vector of float)
-0:197            'inF0' ( in 3-component vector of float)
-0:198      Sequence
-0:198        move second child to first child ( temp 3-component vector of float)
-0:198          'r018' ( temp 3-component vector of float)
-0:198          dPdxCoarse ( temp 3-component vector of float)
-0:198            'inF0' ( in 3-component vector of float)
 0:199      Sequence
 0:199        move second child to first child ( temp 3-component vector of float)
-0:199          'r019' ( temp 3-component vector of float)
-0:199          dPdxFine ( temp 3-component vector of float)
+0:199          'r016' ( temp 3-component vector of float)
+0:199          cross-product ( temp 3-component vector of float)
 0:199            'inF0' ( in 3-component vector of float)
+0:199            'inF1' ( in 3-component vector of float)
 0:200      Sequence
 0:200        move second child to first child ( temp 3-component vector of float)
-0:200          'r020' ( temp 3-component vector of float)
-0:200          dPdy ( temp 3-component vector of float)
+0:200          'r017' ( temp 3-component vector of float)
+0:200          dPdx ( temp 3-component vector of float)
 0:200            'inF0' ( in 3-component vector of float)
 0:201      Sequence
 0:201        move second child to first child ( temp 3-component vector of float)
-0:201          'r021' ( temp 3-component vector of float)
-0:201          dPdyCoarse ( temp 3-component vector of float)
+0:201          'r018' ( temp 3-component vector of float)
+0:201          dPdxCoarse ( temp 3-component vector of float)
 0:201            'inF0' ( in 3-component vector of float)
 0:202      Sequence
 0:202        move second child to first child ( temp 3-component vector of float)
-0:202          'r022' ( temp 3-component vector of float)
-0:202          dPdyFine ( temp 3-component vector of float)
+0:202          'r019' ( temp 3-component vector of float)
+0:202          dPdxFine ( temp 3-component vector of float)
 0:202            'inF0' ( in 3-component vector of float)
 0:203      Sequence
 0:203        move second child to first child ( temp 3-component vector of float)
-0:203          'r023' ( temp 3-component vector of float)
-0:203          degrees ( temp 3-component vector of float)
+0:203          'r020' ( temp 3-component vector of float)
+0:203          dPdy ( temp 3-component vector of float)
 0:203            'inF0' ( in 3-component vector of float)
 0:204      Sequence
-0:204        move second child to first child ( temp float)
-0:204          'r024' ( temp float)
-0:204          distance ( temp float)
+0:204        move second child to first child ( temp 3-component vector of float)
+0:204          'r021' ( temp 3-component vector of float)
+0:204          dPdyCoarse ( temp 3-component vector of float)
 0:204            'inF0' ( in 3-component vector of float)
-0:204            'inF1' ( in 3-component vector of float)
 0:205      Sequence
-0:205        move second child to first child ( temp float)
-0:205          'r025' ( temp float)
-0:205          dot-product ( temp float)
+0:205        move second child to first child ( temp 3-component vector of float)
+0:205          'r022' ( temp 3-component vector of float)
+0:205          dPdyFine ( temp 3-component vector of float)
 0:205            'inF0' ( in 3-component vector of float)
-0:205            'inF1' ( in 3-component vector of float)
-0:209      Sequence
-0:209        move second child to first child ( temp 3-component vector of float)
-0:209          'r029' ( temp 3-component vector of float)
-0:209          exp ( temp 3-component vector of float)
-0:209            'inF0' ( in 3-component vector of float)
-0:210      Sequence
-0:210        move second child to first child ( temp 3-component vector of float)
-0:210          'r030' ( temp 3-component vector of float)
-0:210          exp2 ( temp 3-component vector of float)
-0:210            'inF0' ( in 3-component vector of float)
-0:211      Sequence
-0:211        move second child to first child ( temp 3-component vector of float)
-0:211          'r031' ( temp 3-component vector of float)
-0:211          face-forward ( temp 3-component vector of float)
-0:211            'inF0' ( in 3-component vector of float)
-0:211            'inF1' ( in 3-component vector of float)
-0:211            'inF2' ( in 3-component vector of float)
+0:206      Sequence
+0:206        move second child to first child ( temp 3-component vector of float)
+0:206          'r023' ( temp 3-component vector of float)
+0:206          degrees ( temp 3-component vector of float)
+0:206            'inF0' ( in 3-component vector of float)
+0:207      Sequence
+0:207        move second child to first child ( temp float)
+0:207          'r024' ( temp float)
+0:207          distance ( temp float)
+0:207            'inF0' ( in 3-component vector of float)
+0:207            'inF1' ( in 3-component vector of float)
+0:208      Sequence
+0:208        move second child to first child ( temp float)
+0:208          'r025' ( temp float)
+0:208          dot-product ( temp float)
+0:208            'inF0' ( in 3-component vector of float)
+0:208            'inF1' ( in 3-component vector of float)
 0:212      Sequence
-0:212        move second child to first child ( temp 3-component vector of uint)
-0:212          'r032' ( temp 3-component vector of uint)
+0:212        move second child to first child ( temp 3-component vector of float)
+0:212          'r029' ( temp 3-component vector of float)
+0:212          exp ( temp 3-component vector of float)
+0:212            'inF0' ( in 3-component vector of float)
+0:213      Sequence
+0:213        move second child to first child ( temp 3-component vector of float)
+0:213          'r030' ( temp 3-component vector of float)
+0:213          exp2 ( temp 3-component vector of float)
+0:213            'inF0' ( in 3-component vector of float)
+0:214      Sequence
+0:214        move second child to first child ( temp 3-component vector of float)
+0:214          'r031' ( temp 3-component vector of float)
+0:214          face-forward ( temp 3-component vector of float)
+0:214            'inF0' ( in 3-component vector of float)
+0:214            'inF1' ( in 3-component vector of float)
+0:214            'inF2' ( in 3-component vector of float)
+0:215      Sequence
+0:215        move second child to first child ( temp 3-component vector of uint)
+0:215          'r032' ( temp 3-component vector of uint)
 0:?           findMSB ( temp 3-component vector of uint)
 0:?             Constant:
 0:?               2 (const uint)
 0:?               3 (const uint)
 0:?               4 (const uint)
-0:213      Sequence
-0:213        move second child to first child ( temp 3-component vector of uint)
-0:213          'r033' ( temp 3-component vector of uint)
+0:216      Sequence
+0:216        move second child to first child ( temp 3-component vector of uint)
+0:216          'r033' ( temp 3-component vector of uint)
 0:?           findLSB ( temp 3-component vector of uint)
 0:?             Constant:
 0:?               2 (const uint)
 0:?               3 (const uint)
 0:?               4 (const uint)
-0:214      Sequence
-0:214        move second child to first child ( temp 3-component vector of float)
-0:214          'r034' ( temp 3-component vector of float)
-0:214          Floor ( temp 3-component vector of float)
-0:214            'inF0' ( in 3-component vector of float)
-0:216      Sequence
-0:216        move second child to first child ( temp 3-component vector of float)
-0:216          'r036' ( temp 3-component vector of float)
-0:216          mod ( temp 3-component vector of float)
-0:216            'inF0' ( in 3-component vector of float)
-0:216            'inF1' ( in 3-component vector of float)
 0:217      Sequence
 0:217        move second child to first child ( temp 3-component vector of float)
-0:217          'r037' ( temp 3-component vector of float)
-0:217          Fraction ( temp 3-component vector of float)
+0:217          'r034' ( temp 3-component vector of float)
+0:217          Floor ( temp 3-component vector of float)
 0:217            'inF0' ( in 3-component vector of float)
-0:218      Sequence
-0:218        move second child to first child ( temp 3-component vector of float)
-0:218          'r039' ( temp 3-component vector of float)
-0:218          fwidth ( temp 3-component vector of float)
-0:218            'inF0' ( in 3-component vector of float)
 0:219      Sequence
-0:219        move second child to first child ( temp 3-component vector of bool)
-0:219          'r040' ( temp 3-component vector of bool)
-0:219          isinf ( temp 3-component vector of bool)
+0:219        move second child to first child ( temp 3-component vector of float)
+0:219          'r036' ( temp 3-component vector of float)
+0:219          mod ( temp 3-component vector of float)
 0:219            'inF0' ( in 3-component vector of float)
+0:219            'inF1' ( in 3-component vector of float)
 0:220      Sequence
-0:220        move second child to first child ( temp 3-component vector of bool)
-0:220          'r041' ( temp 3-component vector of bool)
-0:220          isnan ( temp 3-component vector of bool)
+0:220        move second child to first child ( temp 3-component vector of float)
+0:220          'r037' ( temp 3-component vector of float)
+0:220          Fraction ( temp 3-component vector of float)
 0:220            'inF0' ( in 3-component vector of float)
 0:221      Sequence
 0:221        move second child to first child ( temp 3-component vector of float)
-0:221          'r042' ( temp 3-component vector of float)
-0:221          ldexp ( temp 3-component vector of float)
+0:221          'r039' ( temp 3-component vector of float)
+0:221          fwidth ( temp 3-component vector of float)
 0:221            'inF0' ( in 3-component vector of float)
-0:221            'inF1' ( in 3-component vector of float)
 0:222      Sequence
-0:222        move second child to first child ( temp 3-component vector of float)
-0:222          'r039a' ( temp 3-component vector of float)
-0:222          mix ( temp 3-component vector of float)
+0:222        move second child to first child ( temp 3-component vector of bool)
+0:222          'r040' ( temp 3-component vector of bool)
+0:222          isinf ( temp 3-component vector of bool)
 0:222            'inF0' ( in 3-component vector of float)
-0:222            'inF1' ( in 3-component vector of float)
-0:222            'inF2' ( in 3-component vector of float)
 0:223      Sequence
-0:223        move second child to first child ( temp 3-component vector of float)
-0:223          'r039b' ( temp 3-component vector of float)
-0:223          mix ( temp 3-component vector of float)
+0:223        move second child to first child ( temp 3-component vector of bool)
+0:223          'r041' ( temp 3-component vector of bool)
+0:223          isnan ( temp 3-component vector of bool)
 0:223            'inF0' ( in 3-component vector of float)
-0:223            'inF1' ( in 3-component vector of float)
-0:223            Constant:
-0:223              0.300000
 0:224      Sequence
-0:224        move second child to first child ( temp float)
-0:224          'r043' ( temp float)
-0:224          length ( temp float)
+0:224        move second child to first child ( temp 3-component vector of float)
+0:224          'r042' ( temp 3-component vector of float)
+0:224          ldexp ( temp 3-component vector of float)
 0:224            'inF0' ( in 3-component vector of float)
+0:224            'inF1' ( in 3-component vector of float)
 0:225      Sequence
 0:225        move second child to first child ( temp 3-component vector of float)
-0:225          'r044' ( temp 3-component vector of float)
-0:225          log ( temp 3-component vector of float)
+0:225          'r039a' ( temp 3-component vector of float)
+0:225          mix ( temp 3-component vector of float)
 0:225            'inF0' ( in 3-component vector of float)
+0:225            'inF1' ( in 3-component vector of float)
+0:225            'inF2' ( in 3-component vector of float)
 0:226      Sequence
 0:226        move second child to first child ( temp 3-component vector of float)
-0:226          'r045' ( temp 3-component vector of float)
-0:226          vector-scale ( temp 3-component vector of float)
-0:226            log2 ( temp 3-component vector of float)
-0:226              'inF0' ( in 3-component vector of float)
+0:226          'r039b' ( temp 3-component vector of float)
+0:226          mix ( temp 3-component vector of float)
+0:226            'inF0' ( in 3-component vector of float)
+0:226            'inF1' ( in 3-component vector of float)
 0:226            Constant:
-0:226              0.301030
+0:226              0.300000
 0:227      Sequence
-0:227        move second child to first child ( temp 3-component vector of float)
-0:227          'r046' ( temp 3-component vector of float)
-0:227          log2 ( temp 3-component vector of float)
+0:227        move second child to first child ( temp float)
+0:227          'r043' ( temp float)
+0:227          length ( temp float)
 0:227            'inF0' ( in 3-component vector of float)
 0:228      Sequence
 0:228        move second child to first child ( temp 3-component vector of float)
-0:228          'r047' ( temp 3-component vector of float)
-0:228          max ( temp 3-component vector of float)
+0:228          'r044' ( temp 3-component vector of float)
+0:228          log ( temp 3-component vector of float)
 0:228            'inF0' ( in 3-component vector of float)
-0:228            'inF1' ( in 3-component vector of float)
 0:229      Sequence
 0:229        move second child to first child ( temp 3-component vector of float)
-0:229          'r048' ( temp 3-component vector of float)
-0:229          min ( temp 3-component vector of float)
-0:229            'inF0' ( in 3-component vector of float)
-0:229            'inF1' ( in 3-component vector of float)
+0:229          'r045' ( temp 3-component vector of float)
+0:229          vector-scale ( temp 3-component vector of float)
+0:229            log2 ( temp 3-component vector of float)
+0:229              'inF0' ( in 3-component vector of float)
+0:229            Constant:
+0:229              0.301030
 0:230      Sequence
 0:230        move second child to first child ( temp 3-component vector of float)
-0:230          'r049' ( temp 3-component vector of float)
-0:230          normalize ( temp 3-component vector of float)
+0:230          'r046' ( temp 3-component vector of float)
+0:230          log2 ( temp 3-component vector of float)
 0:230            'inF0' ( in 3-component vector of float)
 0:231      Sequence
 0:231        move second child to first child ( temp 3-component vector of float)
-0:231          'r050' ( temp 3-component vector of float)
-0:231          pow ( temp 3-component vector of float)
+0:231          'r047' ( temp 3-component vector of float)
+0:231          max ( temp 3-component vector of float)
 0:231            'inF0' ( in 3-component vector of float)
 0:231            'inF1' ( in 3-component vector of float)
 0:232      Sequence
 0:232        move second child to first child ( temp 3-component vector of float)
-0:232          'r051' ( temp 3-component vector of float)
-0:232          radians ( temp 3-component vector of float)
+0:232          'r048' ( temp 3-component vector of float)
+0:232          min ( temp 3-component vector of float)
 0:232            'inF0' ( in 3-component vector of float)
+0:232            'inF1' ( in 3-component vector of float)
 0:233      Sequence
 0:233        move second child to first child ( temp 3-component vector of float)
-0:233          'r052' ( temp 3-component vector of float)
-0:233          divide ( temp 3-component vector of float)
-0:233            Constant:
-0:233              1.000000
+0:233          'r049' ( temp 3-component vector of float)
+0:233          normalize ( temp 3-component vector of float)
 0:233            'inF0' ( in 3-component vector of float)
 0:234      Sequence
 0:234        move second child to first child ( temp 3-component vector of float)
-0:234          'r053' ( temp 3-component vector of float)
-0:234          reflect ( temp 3-component vector of float)
+0:234          'r050' ( temp 3-component vector of float)
+0:234          pow ( temp 3-component vector of float)
 0:234            'inF0' ( in 3-component vector of float)
 0:234            'inF1' ( in 3-component vector of float)
 0:235      Sequence
 0:235        move second child to first child ( temp 3-component vector of float)
-0:235          'r054' ( temp 3-component vector of float)
-0:235          refract ( temp 3-component vector of float)
+0:235          'r051' ( temp 3-component vector of float)
+0:235          radians ( temp 3-component vector of float)
 0:235            'inF0' ( in 3-component vector of float)
-0:235            'inF1' ( in 3-component vector of float)
-0:235            Constant:
-0:235              2.000000
 0:236      Sequence
-0:236        move second child to first child ( temp 3-component vector of uint)
-0:236          'r055' ( temp 3-component vector of uint)
+0:236        move second child to first child ( temp 3-component vector of float)
+0:236          'r052' ( temp 3-component vector of float)
+0:236          divide ( temp 3-component vector of float)
+0:236            Constant:
+0:236              1.000000
+0:236            'inF0' ( in 3-component vector of float)
+0:237      Sequence
+0:237        move second child to first child ( temp 3-component vector of float)
+0:237          'r053' ( temp 3-component vector of float)
+0:237          reflect ( temp 3-component vector of float)
+0:237            'inF0' ( in 3-component vector of float)
+0:237            'inF1' ( in 3-component vector of float)
+0:238      Sequence
+0:238        move second child to first child ( temp 3-component vector of float)
+0:238          'r054' ( temp 3-component vector of float)
+0:238          refract ( temp 3-component vector of float)
+0:238            'inF0' ( in 3-component vector of float)
+0:238            'inF1' ( in 3-component vector of float)
+0:238            Constant:
+0:238              2.000000
+0:239      Sequence
+0:239        move second child to first child ( temp 3-component vector of uint)
+0:239          'r055' ( temp 3-component vector of uint)
 0:?           bitFieldReverse ( temp 3-component vector of uint)
 0:?             Constant:
 0:?               1 (const uint)
 0:?               2 (const uint)
 0:?               3 (const uint)
-0:237      Sequence
-0:237        move second child to first child ( temp 3-component vector of float)
-0:237          'r056' ( temp 3-component vector of float)
-0:237          roundEven ( temp 3-component vector of float)
-0:237            'inF0' ( in 3-component vector of float)
-0:238      Sequence
-0:238        move second child to first child ( temp 3-component vector of float)
-0:238          'r057' ( temp 3-component vector of float)
-0:238          inverse sqrt ( temp 3-component vector of float)
-0:238            'inF0' ( in 3-component vector of float)
-0:239      Sequence
-0:239        move second child to first child ( temp 3-component vector of float)
-0:239          'r058' ( temp 3-component vector of float)
-0:239          clamp ( temp 3-component vector of float)
-0:239            'inF0' ( in 3-component vector of float)
-0:239            Constant:
-0:239              0.000000
-0:239            Constant:
-0:239              1.000000
 0:240      Sequence
 0:240        move second child to first child ( temp 3-component vector of float)
-0:240          'r059' ( temp 3-component vector of float)
-0:240          Sign ( temp 3-component vector of float)
+0:240          'r056' ( temp 3-component vector of float)
+0:240          roundEven ( temp 3-component vector of float)
 0:240            'inF0' ( in 3-component vector of float)
 0:241      Sequence
 0:241        move second child to first child ( temp 3-component vector of float)
-0:241          'r060' ( temp 3-component vector of float)
-0:241          sine ( temp 3-component vector of float)
+0:241          'r057' ( temp 3-component vector of float)
+0:241          inverse sqrt ( temp 3-component vector of float)
 0:241            'inF0' ( in 3-component vector of float)
 0:242      Sequence
 0:242        move second child to first child ( temp 3-component vector of float)
-0:242          'inF1' ( in 3-component vector of float)
-0:242          sine ( temp 3-component vector of float)
+0:242          'r058' ( temp 3-component vector of float)
+0:242          clamp ( temp 3-component vector of float)
 0:242            'inF0' ( in 3-component vector of float)
-0:242        move second child to first child ( temp 3-component vector of float)
-0:242          'inF2' ( in 3-component vector of float)
-0:242          cosine ( temp 3-component vector of float)
-0:242            'inF0' ( in 3-component vector of float)
+0:242            Constant:
+0:242              0.000000
+0:242            Constant:
+0:242              1.000000
 0:243      Sequence
 0:243        move second child to first child ( temp 3-component vector of float)
-0:243          'r061' ( temp 3-component vector of float)
-0:243          hyp. sine ( temp 3-component vector of float)
+0:243          'r059' ( temp 3-component vector of float)
+0:243          Sign ( temp 3-component vector of float)
 0:243            'inF0' ( in 3-component vector of float)
 0:244      Sequence
 0:244        move second child to first child ( temp 3-component vector of float)
-0:244          'r062' ( temp 3-component vector of float)
-0:244          smoothstep ( temp 3-component vector of float)
+0:244          'r060' ( temp 3-component vector of float)
+0:244          sine ( temp 3-component vector of float)
 0:244            'inF0' ( in 3-component vector of float)
-0:244            'inF1' ( in 3-component vector of float)
-0:244            'inF2' ( in 3-component vector of float)
 0:245      Sequence
 0:245        move second child to first child ( temp 3-component vector of float)
-0:245          'r063' ( temp 3-component vector of float)
-0:245          sqrt ( temp 3-component vector of float)
+0:245          'inF1' ( in 3-component vector of float)
+0:245          sine ( temp 3-component vector of float)
+0:245            'inF0' ( in 3-component vector of float)
+0:245        move second child to first child ( temp 3-component vector of float)
+0:245          'inF2' ( in 3-component vector of float)
+0:245          cosine ( temp 3-component vector of float)
 0:245            'inF0' ( in 3-component vector of float)
 0:246      Sequence
 0:246        move second child to first child ( temp 3-component vector of float)
-0:246          'r064' ( temp 3-component vector of float)
-0:246          step ( temp 3-component vector of float)
+0:246          'r061' ( temp 3-component vector of float)
+0:246          hyp. sine ( temp 3-component vector of float)
 0:246            'inF0' ( in 3-component vector of float)
-0:246            'inF1' ( in 3-component vector of float)
 0:247      Sequence
 0:247        move second child to first child ( temp 3-component vector of float)
-0:247          'r065' ( temp 3-component vector of float)
-0:247          tangent ( temp 3-component vector of float)
+0:247          'r062' ( temp 3-component vector of float)
+0:247          smoothstep ( temp 3-component vector of float)
 0:247            'inF0' ( in 3-component vector of float)
+0:247            'inF1' ( in 3-component vector of float)
+0:247            'inF2' ( in 3-component vector of float)
 0:248      Sequence
 0:248        move second child to first child ( temp 3-component vector of float)
-0:248          'r066' ( temp 3-component vector of float)
-0:248          hyp. tangent ( temp 3-component vector of float)
+0:248          'r063' ( temp 3-component vector of float)
+0:248          sqrt ( temp 3-component vector of float)
 0:248            'inF0' ( in 3-component vector of float)
+0:249      Sequence
+0:249        move second child to first child ( temp 3-component vector of float)
+0:249          'r064' ( temp 3-component vector of float)
+0:249          step ( temp 3-component vector of float)
+0:249            'inF0' ( in 3-component vector of float)
+0:249            'inF1' ( in 3-component vector of float)
 0:250      Sequence
 0:250        move second child to first child ( temp 3-component vector of float)
-0:250          'r067' ( temp 3-component vector of float)
-0:250          trunc ( temp 3-component vector of float)
+0:250          'r065' ( temp 3-component vector of float)
+0:250          tangent ( temp 3-component vector of float)
 0:250            'inF0' ( in 3-component vector of float)
-0:253      Branch: Return with expression
+0:251      Sequence
+0:251        move second child to first child ( temp 3-component vector of float)
+0:251          'r066' ( temp 3-component vector of float)
+0:251          hyp. tangent ( temp 3-component vector of float)
+0:251            'inF0' ( in 3-component vector of float)
+0:253      Sequence
+0:253        move second child to first child ( temp 3-component vector of float)
+0:253          'r067' ( temp 3-component vector of float)
+0:253          trunc ( temp 3-component vector of float)
+0:253            'inF0' ( in 3-component vector of float)
+0:256      Branch: Return with expression
 0:?         Constant:
 0:?           1.000000
 0:?           2.000000
 0:?           3.000000
-0:257  Function Definition: PixelShaderFunction(vf4;vf4;vf4;vu4;vu4; ( temp 4-component vector of float)
-0:257    Function Parameters: 
-0:257      'inF0' ( in 4-component vector of float)
-0:257      'inF1' ( in 4-component vector of float)
-0:257      'inF2' ( in 4-component vector of float)
-0:257      'inU0' ( in 4-component vector of uint)
-0:257      'inU1' ( in 4-component vector of uint)
+0:260  Function Definition: PixelShaderFunction(vf4;vf4;vf4;vu4;vu4; ( temp 4-component vector of float)
+0:260    Function Parameters: 
+0:260      'inF0' ( in 4-component vector of float)
+0:260      'inF1' ( in 4-component vector of float)
+0:260      'inF2' ( in 4-component vector of float)
+0:260      'inU0' ( in 4-component vector of uint)
+0:260      'inU1' ( in 4-component vector of uint)
 0:?     Sequence
-0:260      Sequence
-0:260        move second child to first child ( temp bool)
-0:260          'r000' ( temp bool)
-0:260          all ( temp bool)
-0:260            Convert float to bool ( temp 4-component vector of bool)
-0:260              'inF0' ( in 4-component vector of float)
-0:261      Sequence
-0:261        move second child to first child ( temp 4-component vector of float)
-0:261          'r001' ( temp 4-component vector of float)
-0:261          Absolute value ( temp 4-component vector of float)
-0:261            'inF0' ( in 4-component vector of float)
-0:262      Sequence
-0:262        move second child to first child ( temp 4-component vector of float)
-0:262          'r002' ( temp 4-component vector of float)
-0:262          arc cosine ( temp 4-component vector of float)
-0:262            'inF0' ( in 4-component vector of float)
 0:263      Sequence
 0:263        move second child to first child ( temp bool)
-0:263          'r003' ( temp bool)
-0:263          any ( temp bool)
+0:263          'r000' ( temp bool)
+0:263          all ( temp bool)
 0:263            Convert float to bool ( temp 4-component vector of bool)
 0:263              'inF0' ( in 4-component vector of float)
 0:264      Sequence
 0:264        move second child to first child ( temp 4-component vector of float)
-0:264          'r004' ( temp 4-component vector of float)
-0:264          arc sine ( temp 4-component vector of float)
+0:264          'r001' ( temp 4-component vector of float)
+0:264          Absolute value ( temp 4-component vector of float)
 0:264            'inF0' ( in 4-component vector of float)
 0:265      Sequence
-0:265        move second child to first child ( temp 4-component vector of int)
-0:265          'r005' ( temp 4-component vector of int)
-0:265          floatBitsToInt ( temp 4-component vector of int)
+0:265        move second child to first child ( temp 4-component vector of float)
+0:265          'r002' ( temp 4-component vector of float)
+0:265          arc cosine ( temp 4-component vector of float)
 0:265            'inF0' ( in 4-component vector of float)
 0:266      Sequence
-0:266        move second child to first child ( temp 4-component vector of uint)
-0:266          'r006' ( temp 4-component vector of uint)
-0:266          floatBitsToUint ( temp 4-component vector of uint)
-0:266            'inF0' ( in 4-component vector of float)
+0:266        move second child to first child ( temp bool)
+0:266          'r003' ( temp bool)
+0:266          any ( temp bool)
+0:266            Convert float to bool ( temp 4-component vector of bool)
+0:266              'inF0' ( in 4-component vector of float)
 0:267      Sequence
 0:267        move second child to first child ( temp 4-component vector of float)
-0:267          'r007' ( temp 4-component vector of float)
-0:267          intBitsToFloat ( temp 4-component vector of float)
-0:267            'inU0' ( in 4-component vector of uint)
+0:267          'r004' ( temp 4-component vector of float)
+0:267          arc sine ( temp 4-component vector of float)
+0:267            'inF0' ( in 4-component vector of float)
+0:268      Sequence
+0:268        move second child to first child ( temp 4-component vector of int)
+0:268          'r005' ( temp 4-component vector of int)
+0:268          floatBitsToInt ( temp 4-component vector of int)
+0:268            'inF0' ( in 4-component vector of float)
 0:269      Sequence
-0:269        move second child to first child ( temp 4-component vector of float)
-0:269          'r009' ( temp 4-component vector of float)
-0:269          arc tangent ( temp 4-component vector of float)
+0:269        move second child to first child ( temp 4-component vector of uint)
+0:269          'r006' ( temp 4-component vector of uint)
+0:269          floatBitsToUint ( temp 4-component vector of uint)
 0:269            'inF0' ( in 4-component vector of float)
 0:270      Sequence
 0:270        move second child to first child ( temp 4-component vector of float)
-0:270          'r010' ( temp 4-component vector of float)
-0:270          arc tangent ( temp 4-component vector of float)
-0:270            'inF0' ( in 4-component vector of float)
-0:270            'inF1' ( in 4-component vector of float)
-0:271      Sequence
-0:271        move second child to first child ( temp 4-component vector of float)
-0:271          'r011' ( temp 4-component vector of float)
-0:271          Ceiling ( temp 4-component vector of float)
-0:271            'inF0' ( in 4-component vector of float)
+0:270          'r007' ( temp 4-component vector of float)
+0:270          intBitsToFloat ( temp 4-component vector of float)
+0:270            'inU0' ( in 4-component vector of uint)
 0:272      Sequence
 0:272        move second child to first child ( temp 4-component vector of float)
-0:272          'r012' ( temp 4-component vector of float)
-0:272          clamp ( temp 4-component vector of float)
+0:272          'r009' ( temp 4-component vector of float)
+0:272          arc tangent ( temp 4-component vector of float)
 0:272            'inF0' ( in 4-component vector of float)
-0:272            'inF1' ( in 4-component vector of float)
-0:272            'inF2' ( in 4-component vector of float)
-0:273      Test condition and select ( temp void)
-0:273        Condition
-0:273        any ( temp bool)
-0:273          Compare Less Than ( temp 4-component vector of bool)
+0:273      Sequence
+0:273        move second child to first child ( temp 4-component vector of float)
+0:273          'r010' ( temp 4-component vector of float)
+0:273          arc tangent ( temp 4-component vector of float)
 0:273            'inF0' ( in 4-component vector of float)
-0:273            Constant:
-0:273              0.000000
-0:273              0.000000
-0:273              0.000000
-0:273              0.000000
-0:273        true case
-0:273        Branch: Kill
+0:273            'inF1' ( in 4-component vector of float)
 0:274      Sequence
 0:274        move second child to first child ( temp 4-component vector of float)
-0:274          'r013' ( temp 4-component vector of float)
-0:274          cosine ( temp 4-component vector of float)
+0:274          'r011' ( temp 4-component vector of float)
+0:274          Ceiling ( temp 4-component vector of float)
 0:274            'inF0' ( in 4-component vector of float)
 0:275      Sequence
 0:275        move second child to first child ( temp 4-component vector of float)
-0:275          'r014' ( temp 4-component vector of float)
-0:275          hyp. cosine ( temp 4-component vector of float)
+0:275          'r012' ( temp 4-component vector of float)
+0:275          clamp ( temp 4-component vector of float)
 0:275            'inF0' ( in 4-component vector of float)
-0:276      Sequence
-0:276        move second child to first child ( temp 4-component vector of uint)
-0:276          'r015' ( temp 4-component vector of uint)
+0:275            'inF1' ( in 4-component vector of float)
+0:275            'inF2' ( in 4-component vector of float)
+0:276      Test condition and select ( temp void)
+0:276        Condition
+0:276        any ( temp bool)
+0:276          Compare Less Than ( temp 4-component vector of bool)
+0:276            'inF0' ( in 4-component vector of float)
+0:276            Constant:
+0:276              0.000000
+0:276              0.000000
+0:276              0.000000
+0:276              0.000000
+0:276        true case
+0:276        Branch: Kill
+0:277      Test condition and select ( temp void)
+0:277        Condition
+0:277        any ( temp bool)
+0:277          Compare Less Than ( temp 4-component vector of bool)
+0:277            'inU0' ( in 4-component vector of uint)
+0:277            Constant:
+0:277              0.000000
+0:277              0.000000
+0:277              0.000000
+0:277              0.000000
+0:277        true case
+0:277        Branch: Kill
+0:278      Sequence
+0:278        move second child to first child ( temp 4-component vector of float)
+0:278          'r013' ( temp 4-component vector of float)
+0:278          cosine ( temp 4-component vector of float)
+0:278            'inF0' ( in 4-component vector of float)
+0:279      Sequence
+0:279        move second child to first child ( temp 4-component vector of float)
+0:279          'r014' ( temp 4-component vector of float)
+0:279          hyp. cosine ( temp 4-component vector of float)
+0:279            'inF0' ( in 4-component vector of float)
+0:280      Sequence
+0:280        move second child to first child ( temp 4-component vector of uint)
+0:280          'r015' ( temp 4-component vector of uint)
 0:?           bitCount ( temp 4-component vector of uint)
 0:?             Constant:
 0:?               7 (const uint)
 0:?               3 (const uint)
 0:?               5 (const uint)
 0:?               2 (const uint)
-0:277      Sequence
-0:277        move second child to first child ( temp 4-component vector of float)
-0:277          'r016' ( temp 4-component vector of float)
-0:277          dPdx ( temp 4-component vector of float)
-0:277            'inF0' ( in 4-component vector of float)
-0:278      Sequence
-0:278        move second child to first child ( temp 4-component vector of float)
-0:278          'r017' ( temp 4-component vector of float)
-0:278          dPdxCoarse ( temp 4-component vector of float)
-0:278            'inF0' ( in 4-component vector of float)
-0:279      Sequence
-0:279        move second child to first child ( temp 4-component vector of float)
-0:279          'r018' ( temp 4-component vector of float)
-0:279          dPdxFine ( temp 4-component vector of float)
-0:279            'inF0' ( in 4-component vector of float)
-0:280      Sequence
-0:280        move second child to first child ( temp 4-component vector of float)
-0:280          'r019' ( temp 4-component vector of float)
-0:280          dPdy ( temp 4-component vector of float)
-0:280            'inF0' ( in 4-component vector of float)
 0:281      Sequence
 0:281        move second child to first child ( temp 4-component vector of float)
-0:281          'r020' ( temp 4-component vector of float)
-0:281          dPdyCoarse ( temp 4-component vector of float)
+0:281          'r016' ( temp 4-component vector of float)
+0:281          dPdx ( temp 4-component vector of float)
 0:281            'inF0' ( in 4-component vector of float)
 0:282      Sequence
 0:282        move second child to first child ( temp 4-component vector of float)
-0:282          'r021' ( temp 4-component vector of float)
-0:282          dPdyFine ( temp 4-component vector of float)
+0:282          'r017' ( temp 4-component vector of float)
+0:282          dPdxCoarse ( temp 4-component vector of float)
 0:282            'inF0' ( in 4-component vector of float)
 0:283      Sequence
 0:283        move second child to first child ( temp 4-component vector of float)
-0:283          'r022' ( temp 4-component vector of float)
-0:283          degrees ( temp 4-component vector of float)
+0:283          'r018' ( temp 4-component vector of float)
+0:283          dPdxFine ( temp 4-component vector of float)
 0:283            'inF0' ( in 4-component vector of float)
 0:284      Sequence
-0:284        move second child to first child ( temp float)
-0:284          'r023' ( temp float)
-0:284          distance ( temp float)
+0:284        move second child to first child ( temp 4-component vector of float)
+0:284          'r019' ( temp 4-component vector of float)
+0:284          dPdy ( temp 4-component vector of float)
 0:284            'inF0' ( in 4-component vector of float)
-0:284            'inF1' ( in 4-component vector of float)
 0:285      Sequence
-0:285        move second child to first child ( temp float)
-0:285          'r024' ( temp float)
-0:285          dot-product ( temp float)
+0:285        move second child to first child ( temp 4-component vector of float)
+0:285          'r020' ( temp 4-component vector of float)
+0:285          dPdyCoarse ( temp 4-component vector of float)
 0:285            'inF0' ( in 4-component vector of float)
-0:285            'inF1' ( in 4-component vector of float)
 0:286      Sequence
 0:286        move second child to first child ( temp 4-component vector of float)
-0:286          'r025' ( temp 4-component vector of float)
-0:286          Construct vec4 ( temp 4-component vector of float)
-0:286            Constant:
-0:286              1.000000
-0:286            component-wise multiply ( temp float)
-0:286              direct index ( temp float)
-0:286                'inF0' ( in 4-component vector of float)
-0:286                Constant:
-0:286                  1 (const int)
-0:286              direct index ( temp float)
-0:286                'inF1' ( in 4-component vector of float)
-0:286                Constant:
-0:286                  1 (const int)
-0:286            direct index ( temp float)
-0:286              'inF0' ( in 4-component vector of float)
-0:286              Constant:
-0:286                2 (const int)
-0:286            direct index ( temp float)
-0:286              'inF1' ( in 4-component vector of float)
-0:286              Constant:
-0:286                3 (const int)
+0:286          'r021' ( temp 4-component vector of float)
+0:286          dPdyFine ( temp 4-component vector of float)
+0:286            'inF0' ( in 4-component vector of float)
+0:287      Sequence
+0:287        move second child to first child ( temp 4-component vector of float)
+0:287          'r022' ( temp 4-component vector of float)
+0:287          degrees ( temp 4-component vector of float)
+0:287            'inF0' ( in 4-component vector of float)
+0:288      Sequence
+0:288        move second child to first child ( temp float)
+0:288          'r023' ( temp float)
+0:288          distance ( temp float)
+0:288            'inF0' ( in 4-component vector of float)
+0:288            'inF1' ( in 4-component vector of float)
+0:289      Sequence
+0:289        move second child to first child ( temp float)
+0:289          'r024' ( temp float)
+0:289          dot-product ( temp float)
+0:289            'inF0' ( in 4-component vector of float)
+0:289            'inF1' ( in 4-component vector of float)
 0:290      Sequence
 0:290        move second child to first child ( temp 4-component vector of float)
-0:290          'r029' ( temp 4-component vector of float)
-0:290          exp ( temp 4-component vector of float)
-0:290            'inF0' ( in 4-component vector of float)
-0:291      Sequence
-0:291        move second child to first child ( temp 4-component vector of float)
-0:291          'r030' ( temp 4-component vector of float)
-0:291          exp2 ( temp 4-component vector of float)
-0:291            'inF0' ( in 4-component vector of float)
-0:292      Sequence
-0:292        move second child to first child ( temp 4-component vector of float)
-0:292          'r031' ( temp 4-component vector of float)
-0:292          face-forward ( temp 4-component vector of float)
-0:292            'inF0' ( in 4-component vector of float)
-0:292            'inF1' ( in 4-component vector of float)
-0:292            'inF2' ( in 4-component vector of float)
-0:293      Sequence
-0:293        move second child to first child ( temp 4-component vector of uint)
-0:293          'r032' ( temp 4-component vector of uint)
+0:290          'r025' ( temp 4-component vector of float)
+0:290          Construct vec4 ( temp 4-component vector of float)
+0:290            Constant:
+0:290              1.000000
+0:290            component-wise multiply ( temp float)
+0:290              direct index ( temp float)
+0:290                'inF0' ( in 4-component vector of float)
+0:290                Constant:
+0:290                  1 (const int)
+0:290              direct index ( temp float)
+0:290                'inF1' ( in 4-component vector of float)
+0:290                Constant:
+0:290                  1 (const int)
+0:290            direct index ( temp float)
+0:290              'inF0' ( in 4-component vector of float)
+0:290              Constant:
+0:290                2 (const int)
+0:290            direct index ( temp float)
+0:290              'inF1' ( in 4-component vector of float)
+0:290              Constant:
+0:290                3 (const int)
+0:294      Sequence
+0:294        move second child to first child ( temp 4-component vector of float)
+0:294          'r029' ( temp 4-component vector of float)
+0:294          exp ( temp 4-component vector of float)
+0:294            'inF0' ( in 4-component vector of float)
+0:295      Sequence
+0:295        move second child to first child ( temp 4-component vector of float)
+0:295          'r030' ( temp 4-component vector of float)
+0:295          exp2 ( temp 4-component vector of float)
+0:295            'inF0' ( in 4-component vector of float)
+0:296      Sequence
+0:296        move second child to first child ( temp 4-component vector of float)
+0:296          'r031' ( temp 4-component vector of float)
+0:296          face-forward ( temp 4-component vector of float)
+0:296            'inF0' ( in 4-component vector of float)
+0:296            'inF1' ( in 4-component vector of float)
+0:296            'inF2' ( in 4-component vector of float)
+0:297      Sequence
+0:297        move second child to first child ( temp 4-component vector of uint)
+0:297          'r032' ( temp 4-component vector of uint)
 0:?           findMSB ( temp 4-component vector of uint)
 0:?             Constant:
 0:?               7 (const uint)
 0:?               8 (const uint)
 0:?               9 (const uint)
 0:?               10 (const uint)
-0:294      Sequence
-0:294        move second child to first child ( temp 4-component vector of uint)
-0:294          'r033' ( temp 4-component vector of uint)
+0:298      Sequence
+0:298        move second child to first child ( temp 4-component vector of uint)
+0:298          'r033' ( temp 4-component vector of uint)
 0:?           findLSB ( temp 4-component vector of uint)
 0:?             Constant:
 0:?               7 (const uint)
 0:?               8 (const uint)
 0:?               9 (const uint)
 0:?               10 (const uint)
-0:295      Sequence
-0:295        move second child to first child ( temp 4-component vector of float)
-0:295          'r034' ( temp 4-component vector of float)
-0:295          Floor ( temp 4-component vector of float)
-0:295            'inF0' ( in 4-component vector of float)
-0:297      Sequence
-0:297        move second child to first child ( temp 4-component vector of float)
-0:297          'r036' ( temp 4-component vector of float)
-0:297          mod ( temp 4-component vector of float)
-0:297            'inF0' ( in 4-component vector of float)
-0:297            'inF1' ( in 4-component vector of float)
-0:298      Sequence
-0:298        move second child to first child ( temp 4-component vector of float)
-0:298          'r037' ( temp 4-component vector of float)
-0:298          Fraction ( temp 4-component vector of float)
-0:298            'inF0' ( in 4-component vector of float)
 0:299      Sequence
 0:299        move second child to first child ( temp 4-component vector of float)
-0:299          'r039' ( temp 4-component vector of float)
-0:299          fwidth ( temp 4-component vector of float)
+0:299          'r034' ( temp 4-component vector of float)
+0:299          Floor ( temp 4-component vector of float)
 0:299            'inF0' ( in 4-component vector of float)
-0:300      Sequence
-0:300        move second child to first child ( temp 4-component vector of bool)
-0:300          'r040' ( temp 4-component vector of bool)
-0:300          isinf ( temp 4-component vector of bool)
-0:300            'inF0' ( in 4-component vector of float)
 0:301      Sequence
-0:301        move second child to first child ( temp 4-component vector of bool)
-0:301          'r041' ( temp 4-component vector of bool)
-0:301          isnan ( temp 4-component vector of bool)
+0:301        move second child to first child ( temp 4-component vector of float)
+0:301          'r036' ( temp 4-component vector of float)
+0:301          mod ( temp 4-component vector of float)
 0:301            'inF0' ( in 4-component vector of float)
+0:301            'inF1' ( in 4-component vector of float)
 0:302      Sequence
 0:302        move second child to first child ( temp 4-component vector of float)
-0:302          'r042' ( temp 4-component vector of float)
-0:302          ldexp ( temp 4-component vector of float)
+0:302          'r037' ( temp 4-component vector of float)
+0:302          Fraction ( temp 4-component vector of float)
 0:302            'inF0' ( in 4-component vector of float)
-0:302            'inF1' ( in 4-component vector of float)
 0:303      Sequence
 0:303        move second child to first child ( temp 4-component vector of float)
-0:303          'r039a' ( temp 4-component vector of float)
-0:303          mix ( temp 4-component vector of float)
+0:303          'r039' ( temp 4-component vector of float)
+0:303          fwidth ( temp 4-component vector of float)
 0:303            'inF0' ( in 4-component vector of float)
-0:303            'inF1' ( in 4-component vector of float)
-0:303            'inF2' ( in 4-component vector of float)
 0:304      Sequence
-0:304        move second child to first child ( temp float)
-0:304          'r043' ( temp float)
-0:304          length ( temp float)
+0:304        move second child to first child ( temp 4-component vector of bool)
+0:304          'r040' ( temp 4-component vector of bool)
+0:304          isinf ( temp 4-component vector of bool)
 0:304            'inF0' ( in 4-component vector of float)
 0:305      Sequence
-0:305        move second child to first child ( temp 4-component vector of float)
-0:305          'r044' ( temp 4-component vector of float)
-0:305          log ( temp 4-component vector of float)
+0:305        move second child to first child ( temp 4-component vector of bool)
+0:305          'r041' ( temp 4-component vector of bool)
+0:305          isnan ( temp 4-component vector of bool)
 0:305            'inF0' ( in 4-component vector of float)
 0:306      Sequence
 0:306        move second child to first child ( temp 4-component vector of float)
-0:306          'r045' ( temp 4-component vector of float)
-0:306          vector-scale ( temp 4-component vector of float)
-0:306            log2 ( temp 4-component vector of float)
-0:306              'inF0' ( in 4-component vector of float)
-0:306            Constant:
-0:306              0.301030
+0:306          'r042' ( temp 4-component vector of float)
+0:306          ldexp ( temp 4-component vector of float)
+0:306            'inF0' ( in 4-component vector of float)
+0:306            'inF1' ( in 4-component vector of float)
 0:307      Sequence
 0:307        move second child to first child ( temp 4-component vector of float)
-0:307          'r046' ( temp 4-component vector of float)
-0:307          log2 ( temp 4-component vector of float)
+0:307          'r039a' ( temp 4-component vector of float)
+0:307          mix ( temp 4-component vector of float)
 0:307            'inF0' ( in 4-component vector of float)
+0:307            'inF1' ( in 4-component vector of float)
+0:307            'inF2' ( in 4-component vector of float)
 0:308      Sequence
-0:308        move second child to first child ( temp 4-component vector of float)
-0:308          'r047' ( temp 4-component vector of float)
-0:308          max ( temp 4-component vector of float)
+0:308        move second child to first child ( temp float)
+0:308          'r043' ( temp float)
+0:308          length ( temp float)
 0:308            'inF0' ( in 4-component vector of float)
-0:308            'inF1' ( in 4-component vector of float)
 0:309      Sequence
 0:309        move second child to first child ( temp 4-component vector of float)
-0:309          'r048' ( temp 4-component vector of float)
-0:309          min ( temp 4-component vector of float)
+0:309          'r044' ( temp 4-component vector of float)
+0:309          log ( temp 4-component vector of float)
 0:309            'inF0' ( in 4-component vector of float)
-0:309            'inF1' ( in 4-component vector of float)
 0:310      Sequence
 0:310        move second child to first child ( temp 4-component vector of float)
-0:310          'r049' ( temp 4-component vector of float)
-0:310          normalize ( temp 4-component vector of float)
-0:310            'inF0' ( in 4-component vector of float)
+0:310          'r045' ( temp 4-component vector of float)
+0:310          vector-scale ( temp 4-component vector of float)
+0:310            log2 ( temp 4-component vector of float)
+0:310              'inF0' ( in 4-component vector of float)
+0:310            Constant:
+0:310              0.301030
 0:311      Sequence
 0:311        move second child to first child ( temp 4-component vector of float)
-0:311          'r050' ( temp 4-component vector of float)
-0:311          pow ( temp 4-component vector of float)
+0:311          'r046' ( temp 4-component vector of float)
+0:311          log2 ( temp 4-component vector of float)
 0:311            'inF0' ( in 4-component vector of float)
-0:311            'inF1' ( in 4-component vector of float)
 0:312      Sequence
 0:312        move second child to first child ( temp 4-component vector of float)
-0:312          'r051' ( temp 4-component vector of float)
-0:312          radians ( temp 4-component vector of float)
+0:312          'r047' ( temp 4-component vector of float)
+0:312          max ( temp 4-component vector of float)
 0:312            'inF0' ( in 4-component vector of float)
+0:312            'inF1' ( in 4-component vector of float)
 0:313      Sequence
 0:313        move second child to first child ( temp 4-component vector of float)
-0:313          'r052' ( temp 4-component vector of float)
-0:313          divide ( temp 4-component vector of float)
-0:313            Constant:
-0:313              1.000000
+0:313          'r048' ( temp 4-component vector of float)
+0:313          min ( temp 4-component vector of float)
 0:313            'inF0' ( in 4-component vector of float)
+0:313            'inF1' ( in 4-component vector of float)
 0:314      Sequence
 0:314        move second child to first child ( temp 4-component vector of float)
-0:314          'r053' ( temp 4-component vector of float)
-0:314          reflect ( temp 4-component vector of float)
+0:314          'r049' ( temp 4-component vector of float)
+0:314          normalize ( temp 4-component vector of float)
 0:314            'inF0' ( in 4-component vector of float)
-0:314            'inF1' ( in 4-component vector of float)
 0:315      Sequence
 0:315        move second child to first child ( temp 4-component vector of float)
-0:315          'r054' ( temp 4-component vector of float)
-0:315          refract ( temp 4-component vector of float)
+0:315          'r050' ( temp 4-component vector of float)
+0:315          pow ( temp 4-component vector of float)
 0:315            'inF0' ( in 4-component vector of float)
 0:315            'inF1' ( in 4-component vector of float)
-0:315            Constant:
-0:315              2.000000
 0:316      Sequence
-0:316        move second child to first child ( temp 4-component vector of uint)
-0:316          'r055' ( temp 4-component vector of uint)
+0:316        move second child to first child ( temp 4-component vector of float)
+0:316          'r051' ( temp 4-component vector of float)
+0:316          radians ( temp 4-component vector of float)
+0:316            'inF0' ( in 4-component vector of float)
+0:317      Sequence
+0:317        move second child to first child ( temp 4-component vector of float)
+0:317          'r052' ( temp 4-component vector of float)
+0:317          divide ( temp 4-component vector of float)
+0:317            Constant:
+0:317              1.000000
+0:317            'inF0' ( in 4-component vector of float)
+0:318      Sequence
+0:318        move second child to first child ( temp 4-component vector of float)
+0:318          'r053' ( temp 4-component vector of float)
+0:318          reflect ( temp 4-component vector of float)
+0:318            'inF0' ( in 4-component vector of float)
+0:318            'inF1' ( in 4-component vector of float)
+0:319      Sequence
+0:319        move second child to first child ( temp 4-component vector of float)
+0:319          'r054' ( temp 4-component vector of float)
+0:319          refract ( temp 4-component vector of float)
+0:319            'inF0' ( in 4-component vector of float)
+0:319            'inF1' ( in 4-component vector of float)
+0:319            Constant:
+0:319              2.000000
+0:320      Sequence
+0:320        move second child to first child ( temp 4-component vector of uint)
+0:320          'r055' ( temp 4-component vector of uint)
 0:?           bitFieldReverse ( temp 4-component vector of uint)
 0:?             Constant:
 0:?               1 (const uint)
 0:?               2 (const uint)
 0:?               3 (const uint)
 0:?               4 (const uint)
-0:317      Sequence
-0:317        move second child to first child ( temp 4-component vector of float)
-0:317          'r056' ( temp 4-component vector of float)
-0:317          roundEven ( temp 4-component vector of float)
-0:317            'inF0' ( in 4-component vector of float)
-0:318      Sequence
-0:318        move second child to first child ( temp 4-component vector of float)
-0:318          'r057' ( temp 4-component vector of float)
-0:318          inverse sqrt ( temp 4-component vector of float)
-0:318            'inF0' ( in 4-component vector of float)
-0:319      Sequence
-0:319        move second child to first child ( temp 4-component vector of float)
-0:319          'r058' ( temp 4-component vector of float)
-0:319          clamp ( temp 4-component vector of float)
-0:319            'inF0' ( in 4-component vector of float)
-0:319            Constant:
-0:319              0.000000
-0:319            Constant:
-0:319              1.000000
-0:320      Sequence
-0:320        move second child to first child ( temp 4-component vector of float)
-0:320          'r059' ( temp 4-component vector of float)
-0:320          Sign ( temp 4-component vector of float)
-0:320            'inF0' ( in 4-component vector of float)
 0:321      Sequence
 0:321        move second child to first child ( temp 4-component vector of float)
-0:321          'r060' ( temp 4-component vector of float)
-0:321          sine ( temp 4-component vector of float)
+0:321          'r056' ( temp 4-component vector of float)
+0:321          roundEven ( temp 4-component vector of float)
 0:321            'inF0' ( in 4-component vector of float)
 0:322      Sequence
 0:322        move second child to first child ( temp 4-component vector of float)
-0:322          'inF1' ( in 4-component vector of float)
-0:322          sine ( temp 4-component vector of float)
-0:322            'inF0' ( in 4-component vector of float)
-0:322        move second child to first child ( temp 4-component vector of float)
-0:322          'inF2' ( in 4-component vector of float)
-0:322          cosine ( temp 4-component vector of float)
+0:322          'r057' ( temp 4-component vector of float)
+0:322          inverse sqrt ( temp 4-component vector of float)
 0:322            'inF0' ( in 4-component vector of float)
 0:323      Sequence
 0:323        move second child to first child ( temp 4-component vector of float)
-0:323          'r061' ( temp 4-component vector of float)
-0:323          hyp. sine ( temp 4-component vector of float)
+0:323          'r058' ( temp 4-component vector of float)
+0:323          clamp ( temp 4-component vector of float)
 0:323            'inF0' ( in 4-component vector of float)
+0:323            Constant:
+0:323              0.000000
+0:323            Constant:
+0:323              1.000000
 0:324      Sequence
 0:324        move second child to first child ( temp 4-component vector of float)
-0:324          'r062' ( temp 4-component vector of float)
-0:324          smoothstep ( temp 4-component vector of float)
+0:324          'r059' ( temp 4-component vector of float)
+0:324          Sign ( temp 4-component vector of float)
 0:324            'inF0' ( in 4-component vector of float)
-0:324            'inF1' ( in 4-component vector of float)
-0:324            'inF2' ( in 4-component vector of float)
 0:325      Sequence
 0:325        move second child to first child ( temp 4-component vector of float)
-0:325          'r063' ( temp 4-component vector of float)
-0:325          sqrt ( temp 4-component vector of float)
+0:325          'r060' ( temp 4-component vector of float)
+0:325          sine ( temp 4-component vector of float)
 0:325            'inF0' ( in 4-component vector of float)
 0:326      Sequence
 0:326        move second child to first child ( temp 4-component vector of float)
-0:326          'r064' ( temp 4-component vector of float)
-0:326          step ( temp 4-component vector of float)
+0:326          'inF1' ( in 4-component vector of float)
+0:326          sine ( temp 4-component vector of float)
 0:326            'inF0' ( in 4-component vector of float)
-0:326            'inF1' ( in 4-component vector of float)
+0:326        move second child to first child ( temp 4-component vector of float)
+0:326          'inF2' ( in 4-component vector of float)
+0:326          cosine ( temp 4-component vector of float)
+0:326            'inF0' ( in 4-component vector of float)
 0:327      Sequence
 0:327        move second child to first child ( temp 4-component vector of float)
-0:327          'r065' ( temp 4-component vector of float)
-0:327          tangent ( temp 4-component vector of float)
+0:327          'r061' ( temp 4-component vector of float)
+0:327          hyp. sine ( temp 4-component vector of float)
 0:327            'inF0' ( in 4-component vector of float)
 0:328      Sequence
 0:328        move second child to first child ( temp 4-component vector of float)
-0:328          'r066' ( temp 4-component vector of float)
-0:328          hyp. tangent ( temp 4-component vector of float)
+0:328          'r062' ( temp 4-component vector of float)
+0:328          smoothstep ( temp 4-component vector of float)
 0:328            'inF0' ( in 4-component vector of float)
+0:328            'inF1' ( in 4-component vector of float)
+0:328            'inF2' ( in 4-component vector of float)
+0:329      Sequence
+0:329        move second child to first child ( temp 4-component vector of float)
+0:329          'r063' ( temp 4-component vector of float)
+0:329          sqrt ( temp 4-component vector of float)
+0:329            'inF0' ( in 4-component vector of float)
 0:330      Sequence
 0:330        move second child to first child ( temp 4-component vector of float)
-0:330          'r067' ( temp 4-component vector of float)
-0:330          trunc ( temp 4-component vector of float)
+0:330          'r064' ( temp 4-component vector of float)
+0:330          step ( temp 4-component vector of float)
 0:330            'inF0' ( in 4-component vector of float)
-0:333      Branch: Return with expression
+0:330            'inF1' ( in 4-component vector of float)
+0:331      Sequence
+0:331        move second child to first child ( temp 4-component vector of float)
+0:331          'r065' ( temp 4-component vector of float)
+0:331          tangent ( temp 4-component vector of float)
+0:331            'inF0' ( in 4-component vector of float)
+0:332      Sequence
+0:332        move second child to first child ( temp 4-component vector of float)
+0:332          'r066' ( temp 4-component vector of float)
+0:332          hyp. tangent ( temp 4-component vector of float)
+0:332            'inF0' ( in 4-component vector of float)
+0:334      Sequence
+0:334        move second child to first child ( temp 4-component vector of float)
+0:334          'r067' ( temp 4-component vector of float)
+0:334          trunc ( temp 4-component vector of float)
+0:334            'inF0' ( in 4-component vector of float)
+0:337      Branch: Return with expression
 0:?         Constant:
 0:?           1.000000
 0:?           2.000000
 0:?           3.000000
 0:?           4.000000
-0:396  Function Definition: PixelShaderFunction2x2(mf22;mf22;mf22; ( temp 2X2 matrix of float)
-0:396    Function Parameters: 
-0:396      'inF0' ( in 2X2 matrix of float)
-0:396      'inF1' ( in 2X2 matrix of float)
-0:396      'inF2' ( in 2X2 matrix of float)
+0:400  Function Definition: PixelShaderFunction2x2(mf22;mf22;mf22; ( temp 2X2 matrix of float)
+0:400    Function Parameters: 
+0:400      'inF0' ( in 2X2 matrix of float)
+0:400      'inF1' ( in 2X2 matrix of float)
+0:400      'inF2' ( in 2X2 matrix of float)
 0:?     Sequence
-0:398      Sequence
-0:398        move second child to first child ( temp bool)
-0:398          'r000' ( temp bool)
-0:398          all ( temp bool)
-0:398            Convert float to bool ( temp 2X2 matrix of bool)
-0:398              'inF0' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r001' ( temp 2X2 matrix of float)
-0:398          Absolute value ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398      arc cosine ( temp 2X2 matrix of float)
-0:398        'inF0' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp bool)
-0:398          'r003' ( temp bool)
-0:398          any ( temp bool)
-0:398            Convert float to bool ( temp 2X2 matrix of bool)
-0:398              'inF0' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r004' ( temp 2X2 matrix of float)
-0:398          arc sine ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r005' ( temp 2X2 matrix of float)
-0:398          arc tangent ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r006' ( temp 2X2 matrix of float)
-0:398          arc tangent ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398            'inF1' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r007' ( temp 2X2 matrix of float)
-0:398          Ceiling ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398      Test condition and select ( temp void)
-0:398        Condition
-0:398        any ( temp bool)
-0:398          Compare Less Than ( temp 2X2 matrix of bool)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398            Constant:
-0:398              0.000000
-0:398              0.000000
-0:398              0.000000
-0:398              0.000000
-0:398        true case
-0:398        Branch: Kill
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r008' ( temp 2X2 matrix of float)
-0:398          clamp ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398            'inF1' ( in 2X2 matrix of float)
-0:398            'inF2' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r009' ( temp 2X2 matrix of float)
-0:398          cosine ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r010' ( temp 2X2 matrix of float)
-0:398          hyp. cosine ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r011' ( temp 2X2 matrix of float)
-0:398          dPdx ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r012' ( temp 2X2 matrix of float)
-0:398          dPdxCoarse ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r013' ( temp 2X2 matrix of float)
-0:398          dPdxFine ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r014' ( temp 2X2 matrix of float)
-0:398          dPdy ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r015' ( temp 2X2 matrix of float)
-0:398          dPdyCoarse ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r016' ( temp 2X2 matrix of float)
-0:398          dPdyFine ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r017' ( temp 2X2 matrix of float)
-0:398          degrees ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp float)
-0:398          'r018' ( temp float)
-0:398          determinant ( temp float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r019' ( temp 2X2 matrix of float)
-0:398          exp ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'R020' ( temp 2X2 matrix of float)
-0:398          exp2 ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r021' ( temp 2X2 matrix of float)
-0:398          Floor ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r022' ( temp 2X2 matrix of float)
-0:398          mod ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398            'inF1' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r023' ( temp 2X2 matrix of float)
-0:398          Fraction ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r025' ( temp 2X2 matrix of float)
-0:398          fwidth ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r026' ( temp 2X2 matrix of float)
-0:398          ldexp ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398            'inF1' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r026a' ( temp 2X2 matrix of float)
-0:398          mix ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398            'inF1' ( in 2X2 matrix of float)
-0:398            'inF2' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r027' ( temp 2X2 matrix of float)
-0:398          log ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r028' ( temp 2X2 matrix of float)
-0:398          matrix-scale ( temp 2X2 matrix of float)
-0:398            log2 ( temp 2X2 matrix of float)
-0:398              'inF0' ( in 2X2 matrix of float)
-0:398            Constant:
-0:398              0.301030
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r029' ( temp 2X2 matrix of float)
-0:398          log2 ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r030' ( temp 2X2 matrix of float)
-0:398          max ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398            'inF1' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r031' ( temp 2X2 matrix of float)
-0:398          min ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398            'inF1' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r032' ( temp 2X2 matrix of float)
-0:398          pow ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398            'inF1' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r033' ( temp 2X2 matrix of float)
-0:398          radians ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r034' ( temp 2X2 matrix of float)
-0:398          roundEven ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r035' ( temp 2X2 matrix of float)
-0:398          inverse sqrt ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r036' ( temp 2X2 matrix of float)
-0:398          clamp ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398            Constant:
-0:398              0.000000
-0:398            Constant:
-0:398              1.000000
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r037' ( temp 2X2 matrix of float)
-0:398          Sign ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r038' ( temp 2X2 matrix of float)
-0:398          sine ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'inF1' ( in 2X2 matrix of float)
-0:398          sine ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'inF2' ( in 2X2 matrix of float)
-0:398          cosine ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r039' ( temp 2X2 matrix of float)
-0:398          hyp. sine ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r049' ( temp 2X2 matrix of float)
-0:398          smoothstep ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398            'inF1' ( in 2X2 matrix of float)
-0:398            'inF2' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r041' ( temp 2X2 matrix of float)
-0:398          sqrt ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r042' ( temp 2X2 matrix of float)
-0:398          step ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398            'inF1' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r043' ( temp 2X2 matrix of float)
-0:398          tangent ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r044' ( temp 2X2 matrix of float)
-0:398          hyp. tangent ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:398      transpose ( temp 2X2 matrix of float)
-0:398        'inF0' ( in 2X2 matrix of float)
-0:398      Sequence
-0:398        move second child to first child ( temp 2X2 matrix of float)
-0:398          'r046' ( temp 2X2 matrix of float)
-0:398          trunc ( temp 2X2 matrix of float)
-0:398            'inF0' ( in 2X2 matrix of float)
-0:401      Branch: Return with expression
+0:402      Sequence
+0:402        move second child to first child ( temp bool)
+0:402          'r000' ( temp bool)
+0:402          all ( temp bool)
+0:402            Convert float to bool ( temp 2X2 matrix of bool)
+0:402              'inF0' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r001' ( temp 2X2 matrix of float)
+0:402          Absolute value ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402      arc cosine ( temp 2X2 matrix of float)
+0:402        'inF0' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp bool)
+0:402          'r003' ( temp bool)
+0:402          any ( temp bool)
+0:402            Convert float to bool ( temp 2X2 matrix of bool)
+0:402              'inF0' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r004' ( temp 2X2 matrix of float)
+0:402          arc sine ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r005' ( temp 2X2 matrix of float)
+0:402          arc tangent ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r006' ( temp 2X2 matrix of float)
+0:402          arc tangent ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402            'inF1' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r007' ( temp 2X2 matrix of float)
+0:402          Ceiling ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402      Test condition and select ( temp void)
+0:402        Condition
+0:402        any ( temp bool)
+0:402          Compare Less Than ( temp 2X2 matrix of bool)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402            Constant:
+0:402              0.000000
+0:402              0.000000
+0:402              0.000000
+0:402              0.000000
+0:402        true case
+0:402        Branch: Kill
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r008' ( temp 2X2 matrix of float)
+0:402          clamp ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402            'inF1' ( in 2X2 matrix of float)
+0:402            'inF2' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r009' ( temp 2X2 matrix of float)
+0:402          cosine ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r010' ( temp 2X2 matrix of float)
+0:402          hyp. cosine ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r011' ( temp 2X2 matrix of float)
+0:402          dPdx ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r012' ( temp 2X2 matrix of float)
+0:402          dPdxCoarse ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r013' ( temp 2X2 matrix of float)
+0:402          dPdxFine ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r014' ( temp 2X2 matrix of float)
+0:402          dPdy ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r015' ( temp 2X2 matrix of float)
+0:402          dPdyCoarse ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r016' ( temp 2X2 matrix of float)
+0:402          dPdyFine ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r017' ( temp 2X2 matrix of float)
+0:402          degrees ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp float)
+0:402          'r018' ( temp float)
+0:402          determinant ( temp float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r019' ( temp 2X2 matrix of float)
+0:402          exp ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'R020' ( temp 2X2 matrix of float)
+0:402          exp2 ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r021' ( temp 2X2 matrix of float)
+0:402          Floor ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r022' ( temp 2X2 matrix of float)
+0:402          mod ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402            'inF1' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r023' ( temp 2X2 matrix of float)
+0:402          Fraction ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r025' ( temp 2X2 matrix of float)
+0:402          fwidth ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r026' ( temp 2X2 matrix of float)
+0:402          ldexp ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402            'inF1' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r026a' ( temp 2X2 matrix of float)
+0:402          mix ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402            'inF1' ( in 2X2 matrix of float)
+0:402            'inF2' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r027' ( temp 2X2 matrix of float)
+0:402          log ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r028' ( temp 2X2 matrix of float)
+0:402          matrix-scale ( temp 2X2 matrix of float)
+0:402            log2 ( temp 2X2 matrix of float)
+0:402              'inF0' ( in 2X2 matrix of float)
+0:402            Constant:
+0:402              0.301030
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r029' ( temp 2X2 matrix of float)
+0:402          log2 ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r030' ( temp 2X2 matrix of float)
+0:402          max ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402            'inF1' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r031' ( temp 2X2 matrix of float)
+0:402          min ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402            'inF1' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r032' ( temp 2X2 matrix of float)
+0:402          pow ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402            'inF1' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r033' ( temp 2X2 matrix of float)
+0:402          radians ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r034' ( temp 2X2 matrix of float)
+0:402          roundEven ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r035' ( temp 2X2 matrix of float)
+0:402          inverse sqrt ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r036' ( temp 2X2 matrix of float)
+0:402          clamp ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402            Constant:
+0:402              0.000000
+0:402            Constant:
+0:402              1.000000
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r037' ( temp 2X2 matrix of float)
+0:402          Sign ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r038' ( temp 2X2 matrix of float)
+0:402          sine ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'inF1' ( in 2X2 matrix of float)
+0:402          sine ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'inF2' ( in 2X2 matrix of float)
+0:402          cosine ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r039' ( temp 2X2 matrix of float)
+0:402          hyp. sine ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r049' ( temp 2X2 matrix of float)
+0:402          smoothstep ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402            'inF1' ( in 2X2 matrix of float)
+0:402            'inF2' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r041' ( temp 2X2 matrix of float)
+0:402          sqrt ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r042' ( temp 2X2 matrix of float)
+0:402          step ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402            'inF1' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r043' ( temp 2X2 matrix of float)
+0:402          tangent ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r044' ( temp 2X2 matrix of float)
+0:402          hyp. tangent ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:402      transpose ( temp 2X2 matrix of float)
+0:402        'inF0' ( in 2X2 matrix of float)
+0:402      Sequence
+0:402        move second child to first child ( temp 2X2 matrix of float)
+0:402          'r046' ( temp 2X2 matrix of float)
+0:402          trunc ( temp 2X2 matrix of float)
+0:402            'inF0' ( in 2X2 matrix of float)
+0:405      Branch: Return with expression
 0:?         Constant:
 0:?           2.000000
 0:?           2.000000
 0:?           2.000000
 0:?           2.000000
-0:405  Function Definition: PixelShaderFunction3x3(mf33;mf33;mf33; ( temp 3X3 matrix of float)
-0:405    Function Parameters: 
-0:405      'inF0' ( in 3X3 matrix of float)
-0:405      'inF1' ( in 3X3 matrix of float)
-0:405      'inF2' ( in 3X3 matrix of float)
+0:409  Function Definition: PixelShaderFunction3x3(mf33;mf33;mf33; ( temp 3X3 matrix of float)
+0:409    Function Parameters: 
+0:409      'inF0' ( in 3X3 matrix of float)
+0:409      'inF1' ( in 3X3 matrix of float)
+0:409      'inF2' ( in 3X3 matrix of float)
 0:?     Sequence
-0:407      Sequence
-0:407        move second child to first child ( temp bool)
-0:407          'r000' ( temp bool)
-0:407          all ( temp bool)
-0:407            Convert float to bool ( temp 3X3 matrix of bool)
-0:407              'inF0' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r001' ( temp 3X3 matrix of float)
-0:407          Absolute value ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407      arc cosine ( temp 3X3 matrix of float)
-0:407        'inF0' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp bool)
-0:407          'r003' ( temp bool)
-0:407          any ( temp bool)
-0:407            Convert float to bool ( temp 3X3 matrix of bool)
-0:407              'inF0' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r004' ( temp 3X3 matrix of float)
-0:407          arc sine ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r005' ( temp 3X3 matrix of float)
-0:407          arc tangent ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r006' ( temp 3X3 matrix of float)
-0:407          arc tangent ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407            'inF1' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r007' ( temp 3X3 matrix of float)
-0:407          Ceiling ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407      Test condition and select ( temp void)
-0:407        Condition
-0:407        any ( temp bool)
-0:407          Compare Less Than ( temp 3X3 matrix of bool)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407            Constant:
-0:407              0.000000
-0:407              0.000000
-0:407              0.000000
-0:407              0.000000
-0:407              0.000000
-0:407              0.000000
-0:407              0.000000
-0:407              0.000000
-0:407              0.000000
-0:407        true case
-0:407        Branch: Kill
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r008' ( temp 3X3 matrix of float)
-0:407          clamp ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407            'inF1' ( in 3X3 matrix of float)
-0:407            'inF2' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r009' ( temp 3X3 matrix of float)
-0:407          cosine ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r010' ( temp 3X3 matrix of float)
-0:407          hyp. cosine ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r011' ( temp 3X3 matrix of float)
-0:407          dPdx ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r012' ( temp 3X3 matrix of float)
-0:407          dPdxCoarse ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r013' ( temp 3X3 matrix of float)
-0:407          dPdxFine ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r014' ( temp 3X3 matrix of float)
-0:407          dPdy ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r015' ( temp 3X3 matrix of float)
-0:407          dPdyCoarse ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r016' ( temp 3X3 matrix of float)
-0:407          dPdyFine ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r017' ( temp 3X3 matrix of float)
-0:407          degrees ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp float)
-0:407          'r018' ( temp float)
-0:407          determinant ( temp float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r019' ( temp 3X3 matrix of float)
-0:407          exp ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'R020' ( temp 3X3 matrix of float)
-0:407          exp2 ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r021' ( temp 3X3 matrix of float)
-0:407          Floor ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r022' ( temp 3X3 matrix of float)
-0:407          mod ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407            'inF1' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r023' ( temp 3X3 matrix of float)
-0:407          Fraction ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r025' ( temp 3X3 matrix of float)
-0:407          fwidth ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r026' ( temp 3X3 matrix of float)
-0:407          ldexp ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407            'inF1' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r026a' ( temp 3X3 matrix of float)
-0:407          mix ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407            'inF1' ( in 3X3 matrix of float)
-0:407            'inF2' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r027' ( temp 3X3 matrix of float)
-0:407          log ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r028' ( temp 3X3 matrix of float)
-0:407          matrix-scale ( temp 3X3 matrix of float)
-0:407            log2 ( temp 3X3 matrix of float)
-0:407              'inF0' ( in 3X3 matrix of float)
-0:407            Constant:
-0:407              0.301030
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r029' ( temp 3X3 matrix of float)
-0:407          log2 ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r030' ( temp 3X3 matrix of float)
-0:407          max ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407            'inF1' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r031' ( temp 3X3 matrix of float)
-0:407          min ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407            'inF1' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r032' ( temp 3X3 matrix of float)
-0:407          pow ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407            'inF1' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r033' ( temp 3X3 matrix of float)
-0:407          radians ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r034' ( temp 3X3 matrix of float)
-0:407          roundEven ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r035' ( temp 3X3 matrix of float)
-0:407          inverse sqrt ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r036' ( temp 3X3 matrix of float)
-0:407          clamp ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407            Constant:
-0:407              0.000000
-0:407            Constant:
-0:407              1.000000
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r037' ( temp 3X3 matrix of float)
-0:407          Sign ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r038' ( temp 3X3 matrix of float)
-0:407          sine ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'inF1' ( in 3X3 matrix of float)
-0:407          sine ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'inF2' ( in 3X3 matrix of float)
-0:407          cosine ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r039' ( temp 3X3 matrix of float)
-0:407          hyp. sine ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r049' ( temp 3X3 matrix of float)
-0:407          smoothstep ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407            'inF1' ( in 3X3 matrix of float)
-0:407            'inF2' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r041' ( temp 3X3 matrix of float)
-0:407          sqrt ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r042' ( temp 3X3 matrix of float)
-0:407          step ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407            'inF1' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r043' ( temp 3X3 matrix of float)
-0:407          tangent ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r044' ( temp 3X3 matrix of float)
-0:407          hyp. tangent ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:407      transpose ( temp 3X3 matrix of float)
-0:407        'inF0' ( in 3X3 matrix of float)
-0:407      Sequence
-0:407        move second child to first child ( temp 3X3 matrix of float)
-0:407          'r046' ( temp 3X3 matrix of float)
-0:407          trunc ( temp 3X3 matrix of float)
-0:407            'inF0' ( in 3X3 matrix of float)
-0:410      Branch: Return with expression
+0:411      Sequence
+0:411        move second child to first child ( temp bool)
+0:411          'r000' ( temp bool)
+0:411          all ( temp bool)
+0:411            Convert float to bool ( temp 3X3 matrix of bool)
+0:411              'inF0' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r001' ( temp 3X3 matrix of float)
+0:411          Absolute value ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411      arc cosine ( temp 3X3 matrix of float)
+0:411        'inF0' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp bool)
+0:411          'r003' ( temp bool)
+0:411          any ( temp bool)
+0:411            Convert float to bool ( temp 3X3 matrix of bool)
+0:411              'inF0' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r004' ( temp 3X3 matrix of float)
+0:411          arc sine ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r005' ( temp 3X3 matrix of float)
+0:411          arc tangent ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r006' ( temp 3X3 matrix of float)
+0:411          arc tangent ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411            'inF1' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r007' ( temp 3X3 matrix of float)
+0:411          Ceiling ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411      Test condition and select ( temp void)
+0:411        Condition
+0:411        any ( temp bool)
+0:411          Compare Less Than ( temp 3X3 matrix of bool)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411            Constant:
+0:411              0.000000
+0:411              0.000000
+0:411              0.000000
+0:411              0.000000
+0:411              0.000000
+0:411              0.000000
+0:411              0.000000
+0:411              0.000000
+0:411              0.000000
+0:411        true case
+0:411        Branch: Kill
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r008' ( temp 3X3 matrix of float)
+0:411          clamp ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411            'inF1' ( in 3X3 matrix of float)
+0:411            'inF2' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r009' ( temp 3X3 matrix of float)
+0:411          cosine ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r010' ( temp 3X3 matrix of float)
+0:411          hyp. cosine ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r011' ( temp 3X3 matrix of float)
+0:411          dPdx ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r012' ( temp 3X3 matrix of float)
+0:411          dPdxCoarse ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r013' ( temp 3X3 matrix of float)
+0:411          dPdxFine ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r014' ( temp 3X3 matrix of float)
+0:411          dPdy ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r015' ( temp 3X3 matrix of float)
+0:411          dPdyCoarse ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r016' ( temp 3X3 matrix of float)
+0:411          dPdyFine ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r017' ( temp 3X3 matrix of float)
+0:411          degrees ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp float)
+0:411          'r018' ( temp float)
+0:411          determinant ( temp float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r019' ( temp 3X3 matrix of float)
+0:411          exp ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'R020' ( temp 3X3 matrix of float)
+0:411          exp2 ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r021' ( temp 3X3 matrix of float)
+0:411          Floor ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r022' ( temp 3X3 matrix of float)
+0:411          mod ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411            'inF1' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r023' ( temp 3X3 matrix of float)
+0:411          Fraction ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r025' ( temp 3X3 matrix of float)
+0:411          fwidth ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r026' ( temp 3X3 matrix of float)
+0:411          ldexp ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411            'inF1' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r026a' ( temp 3X3 matrix of float)
+0:411          mix ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411            'inF1' ( in 3X3 matrix of float)
+0:411            'inF2' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r027' ( temp 3X3 matrix of float)
+0:411          log ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r028' ( temp 3X3 matrix of float)
+0:411          matrix-scale ( temp 3X3 matrix of float)
+0:411            log2 ( temp 3X3 matrix of float)
+0:411              'inF0' ( in 3X3 matrix of float)
+0:411            Constant:
+0:411              0.301030
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r029' ( temp 3X3 matrix of float)
+0:411          log2 ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r030' ( temp 3X3 matrix of float)
+0:411          max ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411            'inF1' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r031' ( temp 3X3 matrix of float)
+0:411          min ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411            'inF1' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r032' ( temp 3X3 matrix of float)
+0:411          pow ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411            'inF1' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r033' ( temp 3X3 matrix of float)
+0:411          radians ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r034' ( temp 3X3 matrix of float)
+0:411          roundEven ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r035' ( temp 3X3 matrix of float)
+0:411          inverse sqrt ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r036' ( temp 3X3 matrix of float)
+0:411          clamp ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411            Constant:
+0:411              0.000000
+0:411            Constant:
+0:411              1.000000
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r037' ( temp 3X3 matrix of float)
+0:411          Sign ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r038' ( temp 3X3 matrix of float)
+0:411          sine ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'inF1' ( in 3X3 matrix of float)
+0:411          sine ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'inF2' ( in 3X3 matrix of float)
+0:411          cosine ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r039' ( temp 3X3 matrix of float)
+0:411          hyp. sine ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r049' ( temp 3X3 matrix of float)
+0:411          smoothstep ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411            'inF1' ( in 3X3 matrix of float)
+0:411            'inF2' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r041' ( temp 3X3 matrix of float)
+0:411          sqrt ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r042' ( temp 3X3 matrix of float)
+0:411          step ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411            'inF1' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r043' ( temp 3X3 matrix of float)
+0:411          tangent ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r044' ( temp 3X3 matrix of float)
+0:411          hyp. tangent ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:411      transpose ( temp 3X3 matrix of float)
+0:411        'inF0' ( in 3X3 matrix of float)
+0:411      Sequence
+0:411        move second child to first child ( temp 3X3 matrix of float)
+0:411          'r046' ( temp 3X3 matrix of float)
+0:411          trunc ( temp 3X3 matrix of float)
+0:411            'inF0' ( in 3X3 matrix of float)
+0:414      Branch: Return with expression
 0:?         Constant:
 0:?           3.000000
 0:?           3.000000
@@ -4898,297 +4980,297 @@
 0:?           3.000000
 0:?           3.000000
 0:?           3.000000
-0:414  Function Definition: PixelShaderFunction4x4(mf44;mf44;mf44; ( temp 4X4 matrix of float)
-0:414    Function Parameters: 
-0:414      'inF0' ( in 4X4 matrix of float)
-0:414      'inF1' ( in 4X4 matrix of float)
-0:414      'inF2' ( in 4X4 matrix of float)
+0:418  Function Definition: PixelShaderFunction4x4(mf44;mf44;mf44; ( temp 4X4 matrix of float)
+0:418    Function Parameters: 
+0:418      'inF0' ( in 4X4 matrix of float)
+0:418      'inF1' ( in 4X4 matrix of float)
+0:418      'inF2' ( in 4X4 matrix of float)
 0:?     Sequence
-0:416      Sequence
-0:416        move second child to first child ( temp bool)
-0:416          'r000' ( temp bool)
-0:416          all ( temp bool)
-0:416            Convert float to bool ( temp 4X4 matrix of bool)
-0:416              'inF0' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r001' ( temp 4X4 matrix of float)
-0:416          Absolute value ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416      arc cosine ( temp 4X4 matrix of float)
-0:416        'inF0' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp bool)
-0:416          'r003' ( temp bool)
-0:416          any ( temp bool)
-0:416            Convert float to bool ( temp 4X4 matrix of bool)
-0:416              'inF0' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r004' ( temp 4X4 matrix of float)
-0:416          arc sine ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r005' ( temp 4X4 matrix of float)
-0:416          arc tangent ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r006' ( temp 4X4 matrix of float)
-0:416          arc tangent ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416            'inF1' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r007' ( temp 4X4 matrix of float)
-0:416          Ceiling ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416      Test condition and select ( temp void)
-0:416        Condition
-0:416        any ( temp bool)
-0:416          Compare Less Than ( temp 4X4 matrix of bool)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416            Constant:
-0:416              0.000000
-0:416              0.000000
-0:416              0.000000
-0:416              0.000000
-0:416              0.000000
-0:416              0.000000
-0:416              0.000000
-0:416              0.000000
-0:416              0.000000
-0:416              0.000000
-0:416              0.000000
-0:416              0.000000
-0:416              0.000000
-0:416              0.000000
-0:416              0.000000
-0:416              0.000000
-0:416        true case
-0:416        Branch: Kill
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r008' ( temp 4X4 matrix of float)
-0:416          clamp ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416            'inF1' ( in 4X4 matrix of float)
-0:416            'inF2' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r009' ( temp 4X4 matrix of float)
-0:416          cosine ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r010' ( temp 4X4 matrix of float)
-0:416          hyp. cosine ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r011' ( temp 4X4 matrix of float)
-0:416          dPdx ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r012' ( temp 4X4 matrix of float)
-0:416          dPdxCoarse ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r013' ( temp 4X4 matrix of float)
-0:416          dPdxFine ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r014' ( temp 4X4 matrix of float)
-0:416          dPdy ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r015' ( temp 4X4 matrix of float)
-0:416          dPdyCoarse ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r016' ( temp 4X4 matrix of float)
-0:416          dPdyFine ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r017' ( temp 4X4 matrix of float)
-0:416          degrees ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp float)
-0:416          'r018' ( temp float)
-0:416          determinant ( temp float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r019' ( temp 4X4 matrix of float)
-0:416          exp ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'R020' ( temp 4X4 matrix of float)
-0:416          exp2 ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r021' ( temp 4X4 matrix of float)
-0:416          Floor ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r022' ( temp 4X4 matrix of float)
-0:416          mod ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416            'inF1' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r023' ( temp 4X4 matrix of float)
-0:416          Fraction ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r025' ( temp 4X4 matrix of float)
-0:416          fwidth ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r026' ( temp 4X4 matrix of float)
-0:416          ldexp ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416            'inF1' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r026a' ( temp 4X4 matrix of float)
-0:416          mix ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416            'inF1' ( in 4X4 matrix of float)
-0:416            'inF2' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r027' ( temp 4X4 matrix of float)
-0:416          log ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r028' ( temp 4X4 matrix of float)
-0:416          matrix-scale ( temp 4X4 matrix of float)
-0:416            log2 ( temp 4X4 matrix of float)
-0:416              'inF0' ( in 4X4 matrix of float)
-0:416            Constant:
-0:416              0.301030
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r029' ( temp 4X4 matrix of float)
-0:416          log2 ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r030' ( temp 4X4 matrix of float)
-0:416          max ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416            'inF1' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r031' ( temp 4X4 matrix of float)
-0:416          min ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416            'inF1' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r032' ( temp 4X4 matrix of float)
-0:416          pow ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416            'inF1' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r033' ( temp 4X4 matrix of float)
-0:416          radians ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r034' ( temp 4X4 matrix of float)
-0:416          roundEven ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r035' ( temp 4X4 matrix of float)
-0:416          inverse sqrt ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r036' ( temp 4X4 matrix of float)
-0:416          clamp ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416            Constant:
-0:416              0.000000
-0:416            Constant:
-0:416              1.000000
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r037' ( temp 4X4 matrix of float)
-0:416          Sign ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r038' ( temp 4X4 matrix of float)
-0:416          sine ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'inF1' ( in 4X4 matrix of float)
-0:416          sine ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'inF2' ( in 4X4 matrix of float)
-0:416          cosine ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r039' ( temp 4X4 matrix of float)
-0:416          hyp. sine ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r049' ( temp 4X4 matrix of float)
-0:416          smoothstep ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416            'inF1' ( in 4X4 matrix of float)
-0:416            'inF2' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r041' ( temp 4X4 matrix of float)
-0:416          sqrt ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r042' ( temp 4X4 matrix of float)
-0:416          step ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416            'inF1' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r043' ( temp 4X4 matrix of float)
-0:416          tangent ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r044' ( temp 4X4 matrix of float)
-0:416          hyp. tangent ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:416      transpose ( temp 4X4 matrix of float)
-0:416        'inF0' ( in 4X4 matrix of float)
-0:416      Sequence
-0:416        move second child to first child ( temp 4X4 matrix of float)
-0:416          'r046' ( temp 4X4 matrix of float)
-0:416          trunc ( temp 4X4 matrix of float)
-0:416            'inF0' ( in 4X4 matrix of float)
-0:419      Branch: Return with expression
+0:420      Sequence
+0:420        move second child to first child ( temp bool)
+0:420          'r000' ( temp bool)
+0:420          all ( temp bool)
+0:420            Convert float to bool ( temp 4X4 matrix of bool)
+0:420              'inF0' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r001' ( temp 4X4 matrix of float)
+0:420          Absolute value ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420      arc cosine ( temp 4X4 matrix of float)
+0:420        'inF0' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp bool)
+0:420          'r003' ( temp bool)
+0:420          any ( temp bool)
+0:420            Convert float to bool ( temp 4X4 matrix of bool)
+0:420              'inF0' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r004' ( temp 4X4 matrix of float)
+0:420          arc sine ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r005' ( temp 4X4 matrix of float)
+0:420          arc tangent ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r006' ( temp 4X4 matrix of float)
+0:420          arc tangent ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420            'inF1' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r007' ( temp 4X4 matrix of float)
+0:420          Ceiling ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420      Test condition and select ( temp void)
+0:420        Condition
+0:420        any ( temp bool)
+0:420          Compare Less Than ( temp 4X4 matrix of bool)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420            Constant:
+0:420              0.000000
+0:420              0.000000
+0:420              0.000000
+0:420              0.000000
+0:420              0.000000
+0:420              0.000000
+0:420              0.000000
+0:420              0.000000
+0:420              0.000000
+0:420              0.000000
+0:420              0.000000
+0:420              0.000000
+0:420              0.000000
+0:420              0.000000
+0:420              0.000000
+0:420              0.000000
+0:420        true case
+0:420        Branch: Kill
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r008' ( temp 4X4 matrix of float)
+0:420          clamp ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420            'inF1' ( in 4X4 matrix of float)
+0:420            'inF2' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r009' ( temp 4X4 matrix of float)
+0:420          cosine ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r010' ( temp 4X4 matrix of float)
+0:420          hyp. cosine ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r011' ( temp 4X4 matrix of float)
+0:420          dPdx ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r012' ( temp 4X4 matrix of float)
+0:420          dPdxCoarse ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r013' ( temp 4X4 matrix of float)
+0:420          dPdxFine ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r014' ( temp 4X4 matrix of float)
+0:420          dPdy ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r015' ( temp 4X4 matrix of float)
+0:420          dPdyCoarse ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r016' ( temp 4X4 matrix of float)
+0:420          dPdyFine ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r017' ( temp 4X4 matrix of float)
+0:420          degrees ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp float)
+0:420          'r018' ( temp float)
+0:420          determinant ( temp float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r019' ( temp 4X4 matrix of float)
+0:420          exp ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'R020' ( temp 4X4 matrix of float)
+0:420          exp2 ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r021' ( temp 4X4 matrix of float)
+0:420          Floor ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r022' ( temp 4X4 matrix of float)
+0:420          mod ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420            'inF1' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r023' ( temp 4X4 matrix of float)
+0:420          Fraction ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r025' ( temp 4X4 matrix of float)
+0:420          fwidth ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r026' ( temp 4X4 matrix of float)
+0:420          ldexp ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420            'inF1' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r026a' ( temp 4X4 matrix of float)
+0:420          mix ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420            'inF1' ( in 4X4 matrix of float)
+0:420            'inF2' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r027' ( temp 4X4 matrix of float)
+0:420          log ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r028' ( temp 4X4 matrix of float)
+0:420          matrix-scale ( temp 4X4 matrix of float)
+0:420            log2 ( temp 4X4 matrix of float)
+0:420              'inF0' ( in 4X4 matrix of float)
+0:420            Constant:
+0:420              0.301030
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r029' ( temp 4X4 matrix of float)
+0:420          log2 ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r030' ( temp 4X4 matrix of float)
+0:420          max ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420            'inF1' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r031' ( temp 4X4 matrix of float)
+0:420          min ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420            'inF1' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r032' ( temp 4X4 matrix of float)
+0:420          pow ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420            'inF1' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r033' ( temp 4X4 matrix of float)
+0:420          radians ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r034' ( temp 4X4 matrix of float)
+0:420          roundEven ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r035' ( temp 4X4 matrix of float)
+0:420          inverse sqrt ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r036' ( temp 4X4 matrix of float)
+0:420          clamp ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420            Constant:
+0:420              0.000000
+0:420            Constant:
+0:420              1.000000
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r037' ( temp 4X4 matrix of float)
+0:420          Sign ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r038' ( temp 4X4 matrix of float)
+0:420          sine ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'inF1' ( in 4X4 matrix of float)
+0:420          sine ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'inF2' ( in 4X4 matrix of float)
+0:420          cosine ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r039' ( temp 4X4 matrix of float)
+0:420          hyp. sine ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r049' ( temp 4X4 matrix of float)
+0:420          smoothstep ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420            'inF1' ( in 4X4 matrix of float)
+0:420            'inF2' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r041' ( temp 4X4 matrix of float)
+0:420          sqrt ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r042' ( temp 4X4 matrix of float)
+0:420          step ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420            'inF1' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r043' ( temp 4X4 matrix of float)
+0:420          tangent ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r044' ( temp 4X4 matrix of float)
+0:420          hyp. tangent ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:420      transpose ( temp 4X4 matrix of float)
+0:420        'inF0' ( in 4X4 matrix of float)
+0:420      Sequence
+0:420        move second child to first child ( temp 4X4 matrix of float)
+0:420          'r046' ( temp 4X4 matrix of float)
+0:420          trunc ( temp 4X4 matrix of float)
+0:420            'inF0' ( in 4X4 matrix of float)
+0:423      Branch: Return with expression
 0:?         Constant:
 0:?           4.000000
 0:?           4.000000
@@ -5206,334 +5288,334 @@
 0:?           4.000000
 0:?           4.000000
 0:?           4.000000
-0:437  Function Definition: TestGenMul2(f1;f1;vf2;vf2;mf22;mf22; ( temp void)
-0:437    Function Parameters: 
-0:437      'inF0' ( in float)
-0:437      'inF1' ( in float)
-0:437      'inFV0' ( in 2-component vector of float)
-0:437      'inFV1' ( in 2-component vector of float)
-0:437      'inFM0' ( in 2X2 matrix of float)
-0:437      'inFM1' ( in 2X2 matrix of float)
+0:441  Function Definition: TestGenMul2(f1;f1;vf2;vf2;mf22;mf22; ( temp void)
+0:441    Function Parameters: 
+0:441      'inF0' ( in float)
+0:441      'inF1' ( in float)
+0:441      'inFV0' ( in 2-component vector of float)
+0:441      'inFV1' ( in 2-component vector of float)
+0:441      'inFM0' ( in 2X2 matrix of float)
+0:441      'inFM1' ( in 2X2 matrix of float)
 0:?     Sequence
-0:438      Sequence
-0:438        move second child to first child ( temp float)
-0:438          'r0' ( temp float)
-0:438          component-wise multiply ( temp float)
-0:438            'inF1' ( in float)
-0:438            'inF0' ( in float)
-0:438      Sequence
-0:438        move second child to first child ( temp 2-component vector of float)
-0:438          'r1' ( temp 2-component vector of float)
-0:438          vector-scale ( temp 2-component vector of float)
-0:438            'inF0' ( in float)
-0:438            'inFV0' ( in 2-component vector of float)
-0:438      Sequence
-0:438        move second child to first child ( temp 2-component vector of float)
-0:438          'r2' ( temp 2-component vector of float)
-0:438          vector-scale ( temp 2-component vector of float)
-0:438            'inFV0' ( in 2-component vector of float)
-0:438            'inF0' ( in float)
-0:438      Sequence
-0:438        move second child to first child ( temp float)
-0:438          'r3' ( temp float)
-0:438          dot-product ( temp float)
-0:438            'inFV0' ( in 2-component vector of float)
-0:438            'inFV1' ( in 2-component vector of float)
-0:438      Sequence
-0:438        move second child to first child ( temp 2-component vector of float)
-0:438          'r4' ( temp 2-component vector of float)
-0:438          vector-times-matrix ( temp 2-component vector of float)
-0:438            'inFV0' ( in 2-component vector of float)
-0:438            'inFM0' ( in 2X2 matrix of float)
-0:438      Sequence
-0:438        move second child to first child ( temp 2-component vector of float)
-0:438          'r5' ( temp 2-component vector of float)
-0:438          matrix-times-vector ( temp 2-component vector of float)
-0:438            'inFM0' ( in 2X2 matrix of float)
-0:438            'inFV0' ( in 2-component vector of float)
-0:438      Sequence
-0:438        move second child to first child ( temp 2X2 matrix of float)
-0:438          'r6' ( temp 2X2 matrix of float)
-0:438          matrix-scale ( temp 2X2 matrix of float)
-0:438            'inF0' ( in float)
-0:438            'inFM0' ( in 2X2 matrix of float)
-0:438      Sequence
-0:438        move second child to first child ( temp 2X2 matrix of float)
-0:438          'r7' ( temp 2X2 matrix of float)
-0:438          matrix-scale ( temp 2X2 matrix of float)
-0:438            'inFM0' ( in 2X2 matrix of float)
-0:438            'inF0' ( in float)
-0:438      Sequence
-0:438        move second child to first child ( temp 2X2 matrix of float)
-0:438          'r8' ( temp 2X2 matrix of float)
-0:438          matrix-multiply ( temp 2X2 matrix of float)
-0:438            'inFM1' ( in 2X2 matrix of float)
-0:438            'inFM0' ( in 2X2 matrix of float)
-0:444  Function Definition: TestGenMul3(f1;f1;vf3;vf3;mf33;mf33; ( temp void)
-0:444    Function Parameters: 
-0:444      'inF0' ( in float)
-0:444      'inF1' ( in float)
-0:444      'inFV0' ( in 3-component vector of float)
-0:444      'inFV1' ( in 3-component vector of float)
-0:444      'inFM0' ( in 3X3 matrix of float)
-0:444      'inFM1' ( in 3X3 matrix of float)
+0:442      Sequence
+0:442        move second child to first child ( temp float)
+0:442          'r0' ( temp float)
+0:442          component-wise multiply ( temp float)
+0:442            'inF1' ( in float)
+0:442            'inF0' ( in float)
+0:442      Sequence
+0:442        move second child to first child ( temp 2-component vector of float)
+0:442          'r1' ( temp 2-component vector of float)
+0:442          vector-scale ( temp 2-component vector of float)
+0:442            'inF0' ( in float)
+0:442            'inFV0' ( in 2-component vector of float)
+0:442      Sequence
+0:442        move second child to first child ( temp 2-component vector of float)
+0:442          'r2' ( temp 2-component vector of float)
+0:442          vector-scale ( temp 2-component vector of float)
+0:442            'inFV0' ( in 2-component vector of float)
+0:442            'inF0' ( in float)
+0:442      Sequence
+0:442        move second child to first child ( temp float)
+0:442          'r3' ( temp float)
+0:442          dot-product ( temp float)
+0:442            'inFV0' ( in 2-component vector of float)
+0:442            'inFV1' ( in 2-component vector of float)
+0:442      Sequence
+0:442        move second child to first child ( temp 2-component vector of float)
+0:442          'r4' ( temp 2-component vector of float)
+0:442          vector-times-matrix ( temp 2-component vector of float)
+0:442            'inFV0' ( in 2-component vector of float)
+0:442            'inFM0' ( in 2X2 matrix of float)
+0:442      Sequence
+0:442        move second child to first child ( temp 2-component vector of float)
+0:442          'r5' ( temp 2-component vector of float)
+0:442          matrix-times-vector ( temp 2-component vector of float)
+0:442            'inFM0' ( in 2X2 matrix of float)
+0:442            'inFV0' ( in 2-component vector of float)
+0:442      Sequence
+0:442        move second child to first child ( temp 2X2 matrix of float)
+0:442          'r6' ( temp 2X2 matrix of float)
+0:442          matrix-scale ( temp 2X2 matrix of float)
+0:442            'inF0' ( in float)
+0:442            'inFM0' ( in 2X2 matrix of float)
+0:442      Sequence
+0:442        move second child to first child ( temp 2X2 matrix of float)
+0:442          'r7' ( temp 2X2 matrix of float)
+0:442          matrix-scale ( temp 2X2 matrix of float)
+0:442            'inFM0' ( in 2X2 matrix of float)
+0:442            'inF0' ( in float)
+0:442      Sequence
+0:442        move second child to first child ( temp 2X2 matrix of float)
+0:442          'r8' ( temp 2X2 matrix of float)
+0:442          matrix-multiply ( temp 2X2 matrix of float)
+0:442            'inFM1' ( in 2X2 matrix of float)
+0:442            'inFM0' ( in 2X2 matrix of float)
+0:448  Function Definition: TestGenMul3(f1;f1;vf3;vf3;mf33;mf33; ( temp void)
+0:448    Function Parameters: 
+0:448      'inF0' ( in float)
+0:448      'inF1' ( in float)
+0:448      'inFV0' ( in 3-component vector of float)
+0:448      'inFV1' ( in 3-component vector of float)
+0:448      'inFM0' ( in 3X3 matrix of float)
+0:448      'inFM1' ( in 3X3 matrix of float)
 0:?     Sequence
-0:445      Sequence
-0:445        move second child to first child ( temp float)
-0:445          'r0' ( temp float)
-0:445          component-wise multiply ( temp float)
-0:445            'inF1' ( in float)
-0:445            'inF0' ( in float)
-0:445      Sequence
-0:445        move second child to first child ( temp 3-component vector of float)
-0:445          'r1' ( temp 3-component vector of float)
-0:445          vector-scale ( temp 3-component vector of float)
-0:445            'inF0' ( in float)
-0:445            'inFV0' ( in 3-component vector of float)
-0:445      Sequence
-0:445        move second child to first child ( temp 3-component vector of float)
-0:445          'r2' ( temp 3-component vector of float)
-0:445          vector-scale ( temp 3-component vector of float)
-0:445            'inFV0' ( in 3-component vector of float)
-0:445            'inF0' ( in float)
-0:445      Sequence
-0:445        move second child to first child ( temp float)
-0:445          'r3' ( temp float)
-0:445          dot-product ( temp float)
-0:445            'inFV0' ( in 3-component vector of float)
-0:445            'inFV1' ( in 3-component vector of float)
-0:445      Sequence
-0:445        move second child to first child ( temp 3-component vector of float)
-0:445          'r4' ( temp 3-component vector of float)
-0:445          vector-times-matrix ( temp 3-component vector of float)
-0:445            'inFV0' ( in 3-component vector of float)
-0:445            'inFM0' ( in 3X3 matrix of float)
-0:445      Sequence
-0:445        move second child to first child ( temp 3-component vector of float)
-0:445          'r5' ( temp 3-component vector of float)
-0:445          matrix-times-vector ( temp 3-component vector of float)
-0:445            'inFM0' ( in 3X3 matrix of float)
-0:445            'inFV0' ( in 3-component vector of float)
-0:445      Sequence
-0:445        move second child to first child ( temp 3X3 matrix of float)
-0:445          'r6' ( temp 3X3 matrix of float)
-0:445          matrix-scale ( temp 3X3 matrix of float)
-0:445            'inF0' ( in float)
-0:445            'inFM0' ( in 3X3 matrix of float)
-0:445      Sequence
-0:445        move second child to first child ( temp 3X3 matrix of float)
-0:445          'r7' ( temp 3X3 matrix of float)
-0:445          matrix-scale ( temp 3X3 matrix of float)
-0:445            'inFM0' ( in 3X3 matrix of float)
-0:445            'inF0' ( in float)
-0:445      Sequence
-0:445        move second child to first child ( temp 3X3 matrix of float)
-0:445          'r8' ( temp 3X3 matrix of float)
-0:445          matrix-multiply ( temp 3X3 matrix of float)
-0:445            'inFM1' ( in 3X3 matrix of float)
-0:445            'inFM0' ( in 3X3 matrix of float)
-0:451  Function Definition: TestGenMul4(f1;f1;vf4;vf4;mf44;mf44; ( temp void)
-0:451    Function Parameters: 
-0:451      'inF0' ( in float)
-0:451      'inF1' ( in float)
-0:451      'inFV0' ( in 4-component vector of float)
-0:451      'inFV1' ( in 4-component vector of float)
-0:451      'inFM0' ( in 4X4 matrix of float)
-0:451      'inFM1' ( in 4X4 matrix of float)
+0:449      Sequence
+0:449        move second child to first child ( temp float)
+0:449          'r0' ( temp float)
+0:449          component-wise multiply ( temp float)
+0:449            'inF1' ( in float)
+0:449            'inF0' ( in float)
+0:449      Sequence
+0:449        move second child to first child ( temp 3-component vector of float)
+0:449          'r1' ( temp 3-component vector of float)
+0:449          vector-scale ( temp 3-component vector of float)
+0:449            'inF0' ( in float)
+0:449            'inFV0' ( in 3-component vector of float)
+0:449      Sequence
+0:449        move second child to first child ( temp 3-component vector of float)
+0:449          'r2' ( temp 3-component vector of float)
+0:449          vector-scale ( temp 3-component vector of float)
+0:449            'inFV0' ( in 3-component vector of float)
+0:449            'inF0' ( in float)
+0:449      Sequence
+0:449        move second child to first child ( temp float)
+0:449          'r3' ( temp float)
+0:449          dot-product ( temp float)
+0:449            'inFV0' ( in 3-component vector of float)
+0:449            'inFV1' ( in 3-component vector of float)
+0:449      Sequence
+0:449        move second child to first child ( temp 3-component vector of float)
+0:449          'r4' ( temp 3-component vector of float)
+0:449          vector-times-matrix ( temp 3-component vector of float)
+0:449            'inFV0' ( in 3-component vector of float)
+0:449            'inFM0' ( in 3X3 matrix of float)
+0:449      Sequence
+0:449        move second child to first child ( temp 3-component vector of float)
+0:449          'r5' ( temp 3-component vector of float)
+0:449          matrix-times-vector ( temp 3-component vector of float)
+0:449            'inFM0' ( in 3X3 matrix of float)
+0:449            'inFV0' ( in 3-component vector of float)
+0:449      Sequence
+0:449        move second child to first child ( temp 3X3 matrix of float)
+0:449          'r6' ( temp 3X3 matrix of float)
+0:449          matrix-scale ( temp 3X3 matrix of float)
+0:449            'inF0' ( in float)
+0:449            'inFM0' ( in 3X3 matrix of float)
+0:449      Sequence
+0:449        move second child to first child ( temp 3X3 matrix of float)
+0:449          'r7' ( temp 3X3 matrix of float)
+0:449          matrix-scale ( temp 3X3 matrix of float)
+0:449            'inFM0' ( in 3X3 matrix of float)
+0:449            'inF0' ( in float)
+0:449      Sequence
+0:449        move second child to first child ( temp 3X3 matrix of float)
+0:449          'r8' ( temp 3X3 matrix of float)
+0:449          matrix-multiply ( temp 3X3 matrix of float)
+0:449            'inFM1' ( in 3X3 matrix of float)
+0:449            'inFM0' ( in 3X3 matrix of float)
+0:455  Function Definition: TestGenMul4(f1;f1;vf4;vf4;mf44;mf44; ( temp void)
+0:455    Function Parameters: 
+0:455      'inF0' ( in float)
+0:455      'inF1' ( in float)
+0:455      'inFV0' ( in 4-component vector of float)
+0:455      'inFV1' ( in 4-component vector of float)
+0:455      'inFM0' ( in 4X4 matrix of float)
+0:455      'inFM1' ( in 4X4 matrix of float)
 0:?     Sequence
-0:452      Sequence
-0:452        move second child to first child ( temp float)
-0:452          'r0' ( temp float)
-0:452          component-wise multiply ( temp float)
-0:452            'inF1' ( in float)
-0:452            'inF0' ( in float)
-0:452      Sequence
-0:452        move second child to first child ( temp 4-component vector of float)
-0:452          'r1' ( temp 4-component vector of float)
-0:452          vector-scale ( temp 4-component vector of float)
-0:452            'inF0' ( in float)
-0:452            'inFV0' ( in 4-component vector of float)
-0:452      Sequence
-0:452        move second child to first child ( temp 4-component vector of float)
-0:452          'r2' ( temp 4-component vector of float)
-0:452          vector-scale ( temp 4-component vector of float)
-0:452            'inFV0' ( in 4-component vector of float)
-0:452            'inF0' ( in float)
-0:452      Sequence
-0:452        move second child to first child ( temp float)
-0:452          'r3' ( temp float)
-0:452          dot-product ( temp float)
-0:452            'inFV0' ( in 4-component vector of float)
-0:452            'inFV1' ( in 4-component vector of float)
-0:452      Sequence
-0:452        move second child to first child ( temp 4-component vector of float)
-0:452          'r4' ( temp 4-component vector of float)
-0:452          vector-times-matrix ( temp 4-component vector of float)
-0:452            'inFV0' ( in 4-component vector of float)
-0:452            'inFM0' ( in 4X4 matrix of float)
-0:452      Sequence
-0:452        move second child to first child ( temp 4-component vector of float)
-0:452          'r5' ( temp 4-component vector of float)
-0:452          matrix-times-vector ( temp 4-component vector of float)
-0:452            'inFM0' ( in 4X4 matrix of float)
-0:452            'inFV0' ( in 4-component vector of float)
-0:452      Sequence
-0:452        move second child to first child ( temp 4X4 matrix of float)
-0:452          'r6' ( temp 4X4 matrix of float)
-0:452          matrix-scale ( temp 4X4 matrix of float)
-0:452            'inF0' ( in float)
-0:452            'inFM0' ( in 4X4 matrix of float)
-0:452      Sequence
-0:452        move second child to first child ( temp 4X4 matrix of float)
-0:452          'r7' ( temp 4X4 matrix of float)
-0:452          matrix-scale ( temp 4X4 matrix of float)
-0:452            'inFM0' ( in 4X4 matrix of float)
-0:452            'inF0' ( in float)
-0:452      Sequence
-0:452        move second child to first child ( temp 4X4 matrix of float)
-0:452          'r8' ( temp 4X4 matrix of float)
-0:452          matrix-multiply ( temp 4X4 matrix of float)
-0:452            'inFM1' ( in 4X4 matrix of float)
-0:452            'inFM0' ( in 4X4 matrix of float)
-0:461  Function Definition: TestGenMulNxM(f1;f1;vf2;vf3;mf23;mf32;mf33;mf34;mf24; ( temp void)
-0:461    Function Parameters: 
-0:461      'inF0' ( in float)
-0:461      'inF1' ( in float)
-0:461      'inFV2' ( in 2-component vector of float)
-0:461      'inFV3' ( in 3-component vector of float)
-0:461      'inFM2x3' ( in 2X3 matrix of float)
-0:461      'inFM3x2' ( in 3X2 matrix of float)
-0:461      'inFM3x3' ( in 3X3 matrix of float)
-0:461      'inFM3x4' ( in 3X4 matrix of float)
-0:461      'inFM2x4' ( in 2X4 matrix of float)
+0:456      Sequence
+0:456        move second child to first child ( temp float)
+0:456          'r0' ( temp float)
+0:456          component-wise multiply ( temp float)
+0:456            'inF1' ( in float)
+0:456            'inF0' ( in float)
+0:456      Sequence
+0:456        move second child to first child ( temp 4-component vector of float)
+0:456          'r1' ( temp 4-component vector of float)
+0:456          vector-scale ( temp 4-component vector of float)
+0:456            'inF0' ( in float)
+0:456            'inFV0' ( in 4-component vector of float)
+0:456      Sequence
+0:456        move second child to first child ( temp 4-component vector of float)
+0:456          'r2' ( temp 4-component vector of float)
+0:456          vector-scale ( temp 4-component vector of float)
+0:456            'inFV0' ( in 4-component vector of float)
+0:456            'inF0' ( in float)
+0:456      Sequence
+0:456        move second child to first child ( temp float)
+0:456          'r3' ( temp float)
+0:456          dot-product ( temp float)
+0:456            'inFV0' ( in 4-component vector of float)
+0:456            'inFV1' ( in 4-component vector of float)
+0:456      Sequence
+0:456        move second child to first child ( temp 4-component vector of float)
+0:456          'r4' ( temp 4-component vector of float)
+0:456          vector-times-matrix ( temp 4-component vector of float)
+0:456            'inFV0' ( in 4-component vector of float)
+0:456            'inFM0' ( in 4X4 matrix of float)
+0:456      Sequence
+0:456        move second child to first child ( temp 4-component vector of float)
+0:456          'r5' ( temp 4-component vector of float)
+0:456          matrix-times-vector ( temp 4-component vector of float)
+0:456            'inFM0' ( in 4X4 matrix of float)
+0:456            'inFV0' ( in 4-component vector of float)
+0:456      Sequence
+0:456        move second child to first child ( temp 4X4 matrix of float)
+0:456          'r6' ( temp 4X4 matrix of float)
+0:456          matrix-scale ( temp 4X4 matrix of float)
+0:456            'inF0' ( in float)
+0:456            'inFM0' ( in 4X4 matrix of float)
+0:456      Sequence
+0:456        move second child to first child ( temp 4X4 matrix of float)
+0:456          'r7' ( temp 4X4 matrix of float)
+0:456          matrix-scale ( temp 4X4 matrix of float)
+0:456            'inFM0' ( in 4X4 matrix of float)
+0:456            'inF0' ( in float)
+0:456      Sequence
+0:456        move second child to first child ( temp 4X4 matrix of float)
+0:456          'r8' ( temp 4X4 matrix of float)
+0:456          matrix-multiply ( temp 4X4 matrix of float)
+0:456            'inFM1' ( in 4X4 matrix of float)
+0:456            'inFM0' ( in 4X4 matrix of float)
+0:465  Function Definition: TestGenMulNxM(f1;f1;vf2;vf3;mf23;mf32;mf33;mf34;mf24; ( temp void)
+0:465    Function Parameters: 
+0:465      'inF0' ( in float)
+0:465      'inF1' ( in float)
+0:465      'inFV2' ( in 2-component vector of float)
+0:465      'inFV3' ( in 3-component vector of float)
+0:465      'inFM2x3' ( in 2X3 matrix of float)
+0:465      'inFM3x2' ( in 3X2 matrix of float)
+0:465      'inFM3x3' ( in 3X3 matrix of float)
+0:465      'inFM3x4' ( in 3X4 matrix of float)
+0:465      'inFM2x4' ( in 2X4 matrix of float)
 0:?     Sequence
-0:462      Sequence
-0:462        move second child to first child ( temp float)
-0:462          'r00' ( temp float)
-0:462          component-wise multiply ( temp float)
-0:462            'inF1' ( in float)
-0:462            'inF0' ( in float)
-0:463      Sequence
-0:463        move second child to first child ( temp 2-component vector of float)
-0:463          'r01' ( temp 2-component vector of float)
-0:463          vector-scale ( temp 2-component vector of float)
-0:463            'inF0' ( in float)
-0:463            'inFV2' ( in 2-component vector of float)
-0:464      Sequence
-0:464        move second child to first child ( temp 3-component vector of float)
-0:464          'r02' ( temp 3-component vector of float)
-0:464          vector-scale ( temp 3-component vector of float)
-0:464            'inF0' ( in float)
-0:464            'inFV3' ( in 3-component vector of float)
-0:465      Sequence
-0:465        move second child to first child ( temp 2-component vector of float)
-0:465          'r03' ( temp 2-component vector of float)
-0:465          vector-scale ( temp 2-component vector of float)
-0:465            'inFV2' ( in 2-component vector of float)
-0:465            'inF0' ( in float)
 0:466      Sequence
-0:466        move second child to first child ( temp 3-component vector of float)
-0:466          'r04' ( temp 3-component vector of float)
-0:466          vector-scale ( temp 3-component vector of float)
-0:466            'inFV3' ( in 3-component vector of float)
+0:466        move second child to first child ( temp float)
+0:466          'r00' ( temp float)
+0:466          component-wise multiply ( temp float)
+0:466            'inF1' ( in float)
 0:466            'inF0' ( in float)
 0:467      Sequence
-0:467        move second child to first child ( temp float)
-0:467          'r05' ( temp float)
-0:467          dot-product ( temp float)
-0:467            'inFV2' ( in 2-component vector of float)
+0:467        move second child to first child ( temp 2-component vector of float)
+0:467          'r01' ( temp 2-component vector of float)
+0:467          vector-scale ( temp 2-component vector of float)
+0:467            'inF0' ( in float)
 0:467            'inFV2' ( in 2-component vector of float)
 0:468      Sequence
-0:468        move second child to first child ( temp float)
-0:468          'r06' ( temp float)
-0:468          dot-product ( temp float)
-0:468            'inFV3' ( in 3-component vector of float)
+0:468        move second child to first child ( temp 3-component vector of float)
+0:468          'r02' ( temp 3-component vector of float)
+0:468          vector-scale ( temp 3-component vector of float)
+0:468            'inF0' ( in float)
 0:468            'inFV3' ( in 3-component vector of float)
 0:469      Sequence
-0:469        move second child to first child ( temp 3-component vector of float)
-0:469          'r07' ( temp 3-component vector of float)
-0:469          matrix-times-vector ( temp 3-component vector of float)
-0:469            'inFM2x3' ( in 2X3 matrix of float)
+0:469        move second child to first child ( temp 2-component vector of float)
+0:469          'r03' ( temp 2-component vector of float)
+0:469          vector-scale ( temp 2-component vector of float)
 0:469            'inFV2' ( in 2-component vector of float)
+0:469            'inF0' ( in float)
 0:470      Sequence
-0:470        move second child to first child ( temp 2-component vector of float)
-0:470          'r08' ( temp 2-component vector of float)
-0:470          matrix-times-vector ( temp 2-component vector of float)
-0:470            'inFM3x2' ( in 3X2 matrix of float)
+0:470        move second child to first child ( temp 3-component vector of float)
+0:470          'r04' ( temp 3-component vector of float)
+0:470          vector-scale ( temp 3-component vector of float)
 0:470            'inFV3' ( in 3-component vector of float)
+0:470            'inF0' ( in float)
 0:471      Sequence
-0:471        move second child to first child ( temp 2-component vector of float)
-0:471          'r09' ( temp 2-component vector of float)
-0:471          vector-times-matrix ( temp 2-component vector of float)
-0:471            'inFV3' ( in 3-component vector of float)
-0:471            'inFM2x3' ( in 2X3 matrix of float)
+0:471        move second child to first child ( temp float)
+0:471          'r05' ( temp float)
+0:471          dot-product ( temp float)
+0:471            'inFV2' ( in 2-component vector of float)
+0:471            'inFV2' ( in 2-component vector of float)
 0:472      Sequence
-0:472        move second child to first child ( temp 3-component vector of float)
-0:472          'r10' ( temp 3-component vector of float)
-0:472          vector-times-matrix ( temp 3-component vector of float)
-0:472            'inFV2' ( in 2-component vector of float)
-0:472            'inFM3x2' ( in 3X2 matrix of float)
+0:472        move second child to first child ( temp float)
+0:472          'r06' ( temp float)
+0:472          dot-product ( temp float)
+0:472            'inFV3' ( in 3-component vector of float)
+0:472            'inFV3' ( in 3-component vector of float)
 0:473      Sequence
-0:473        move second child to first child ( temp 2X3 matrix of float)
-0:473          'r11' ( temp 2X3 matrix of float)
-0:473          matrix-scale ( temp 2X3 matrix of float)
-0:473            'inF0' ( in float)
+0:473        move second child to first child ( temp 3-component vector of float)
+0:473          'r07' ( temp 3-component vector of float)
+0:473          matrix-times-vector ( temp 3-component vector of float)
 0:473            'inFM2x3' ( in 2X3 matrix of float)
+0:473            'inFV2' ( in 2-component vector of float)
 0:474      Sequence
-0:474        move second child to first child ( temp 3X2 matrix of float)
-0:474          'r12' ( temp 3X2 matrix of float)
-0:474          matrix-scale ( temp 3X2 matrix of float)
-0:474            'inF0' ( in float)
+0:474        move second child to first child ( temp 2-component vector of float)
+0:474          'r08' ( temp 2-component vector of float)
+0:474          matrix-times-vector ( temp 2-component vector of float)
 0:474            'inFM3x2' ( in 3X2 matrix of float)
+0:474            'inFV3' ( in 3-component vector of float)
 0:475      Sequence
-0:475        move second child to first child ( temp 2X2 matrix of float)
-0:475          'r13' ( temp 2X2 matrix of float)
-0:475          matrix-multiply ( temp 2X2 matrix of float)
-0:475            'inFM3x2' ( in 3X2 matrix of float)
+0:475        move second child to first child ( temp 2-component vector of float)
+0:475          'r09' ( temp 2-component vector of float)
+0:475          vector-times-matrix ( temp 2-component vector of float)
+0:475            'inFV3' ( in 3-component vector of float)
 0:475            'inFM2x3' ( in 2X3 matrix of float)
 0:476      Sequence
-0:476        move second child to first child ( temp 2X3 matrix of float)
-0:476          'r14' ( temp 2X3 matrix of float)
-0:476          matrix-multiply ( temp 2X3 matrix of float)
-0:476            'inFM3x3' ( in 3X3 matrix of float)
-0:476            'inFM2x3' ( in 2X3 matrix of float)
+0:476        move second child to first child ( temp 3-component vector of float)
+0:476          'r10' ( temp 3-component vector of float)
+0:476          vector-times-matrix ( temp 3-component vector of float)
+0:476            'inFV2' ( in 2-component vector of float)
+0:476            'inFM3x2' ( in 3X2 matrix of float)
 0:477      Sequence
-0:477        move second child to first child ( temp 2X4 matrix of float)
-0:477          'r15' ( temp 2X4 matrix of float)
-0:477          matrix-multiply ( temp 2X4 matrix of float)
-0:477            'inFM3x4' ( in 3X4 matrix of float)
+0:477        move second child to first child ( temp 2X3 matrix of float)
+0:477          'r11' ( temp 2X3 matrix of float)
+0:477          matrix-scale ( temp 2X3 matrix of float)
+0:477            'inF0' ( in float)
 0:477            'inFM2x3' ( in 2X3 matrix of float)
 0:478      Sequence
-0:478        move second child to first child ( temp 3X4 matrix of float)
-0:478          'r16' ( temp 3X4 matrix of float)
-0:478          matrix-multiply ( temp 3X4 matrix of float)
-0:478            'inFM2x4' ( in 2X4 matrix of float)
+0:478        move second child to first child ( temp 3X2 matrix of float)
+0:478          'r12' ( temp 3X2 matrix of float)
+0:478          matrix-scale ( temp 3X2 matrix of float)
+0:478            'inF0' ( in float)
 0:478            'inFM3x2' ( in 3X2 matrix of float)
-0:484  Function Definition: @main( ( temp structure{ temp 4-component vector of float color})
-0:484    Function Parameters: 
+0:479      Sequence
+0:479        move second child to first child ( temp 2X2 matrix of float)
+0:479          'r13' ( temp 2X2 matrix of float)
+0:479          matrix-multiply ( temp 2X2 matrix of float)
+0:479            'inFM3x2' ( in 3X2 matrix of float)
+0:479            'inFM2x3' ( in 2X3 matrix of float)
+0:480      Sequence
+0:480        move second child to first child ( temp 2X3 matrix of float)
+0:480          'r14' ( temp 2X3 matrix of float)
+0:480          matrix-multiply ( temp 2X3 matrix of float)
+0:480            'inFM3x3' ( in 3X3 matrix of float)
+0:480            'inFM2x3' ( in 2X3 matrix of float)
+0:481      Sequence
+0:481        move second child to first child ( temp 2X4 matrix of float)
+0:481          'r15' ( temp 2X4 matrix of float)
+0:481          matrix-multiply ( temp 2X4 matrix of float)
+0:481            'inFM3x4' ( in 3X4 matrix of float)
+0:481            'inFM2x3' ( in 2X3 matrix of float)
+0:482      Sequence
+0:482        move second child to first child ( temp 3X4 matrix of float)
+0:482          'r16' ( temp 3X4 matrix of float)
+0:482          matrix-multiply ( temp 3X4 matrix of float)
+0:482            'inFM2x4' ( in 2X4 matrix of float)
+0:482            'inFM3x2' ( in 3X2 matrix of float)
+0:488  Function Definition: @main( ( temp structure{ temp 4-component vector of float color})
+0:488    Function Parameters: 
 0:?     Sequence
-0:486      move second child to first child ( temp 4-component vector of float)
-0:486        color: direct index for structure ( temp 4-component vector of float)
-0:486          'ps_output' ( temp structure{ temp 4-component vector of float color})
-0:486          Constant:
-0:486            0 (const int)
-0:486        Constant:
-0:486          1.000000
-0:486          1.000000
-0:486          1.000000
-0:486          1.000000
-0:487      Branch: Return with expression
-0:487        'ps_output' ( temp structure{ temp 4-component vector of float color})
-0:484  Function Definition: main( ( temp void)
-0:484    Function Parameters: 
+0:490      move second child to first child ( temp 4-component vector of float)
+0:490        color: direct index for structure ( temp 4-component vector of float)
+0:490          'ps_output' ( temp structure{ temp 4-component vector of float color})
+0:490          Constant:
+0:490            0 (const int)
+0:490        Constant:
+0:490          1.000000
+0:490          1.000000
+0:490          1.000000
+0:490          1.000000
+0:491      Branch: Return with expression
+0:491        'ps_output' ( temp structure{ temp 4-component vector of float color})
+0:488  Function Definition: main( ( temp void)
+0:488    Function Parameters: 
 0:?     Sequence
-0:484      Sequence
-0:484        move second child to first child ( temp 4-component vector of float)
+0:488      Sequence
+0:488        move second child to first child ( temp 4-component vector of float)
 0:?           '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
-0:484          color: direct index for structure ( temp 4-component vector of float)
-0:484            Function Call: @main( ( temp structure{ temp 4-component vector of float color})
-0:484            Constant:
-0:484              0 (const int)
+0:488          color: direct index for structure ( temp 4-component vector of float)
+0:488            Function Call: @main( ( temp structure{ temp 4-component vector of float color})
+0:488            Constant:
+0:488              0 (const int)
 0:?   Linker Objects
 0:?     'gs_ua' ( shared uint)
 0:?     'gs_ub' ( shared uint)
@@ -5551,13 +5633,13 @@
 
 // Module Version 10000
 // Generated by (magic number): 80002
-// Id's are bound by 1805
+// Id's are bound by 1832
 
                               Capability Shader
                               Capability DerivativeControl
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main" 1786
+                              EntryPoint Fragment 4  "main" 1813
                               ExecutionMode 4 OriginUpperLeft
                               Source HLSL 500
                               Name 4  "main"
@@ -5647,432 +5729,432 @@
                               Name 169  "r010"
                               Name 173  "r011"
                               Name 176  "r012"
-                              Name 186  "r014"
-                              Name 189  "r015"
-                              Name 192  "r016"
-                              Name 195  "r017"
-                              Name 198  "r018"
-                              Name 201  "r019"
-                              Name 204  "r020"
-                              Name 207  "r021"
-                              Name 210  "r022"
-                              Name 213  "r023"
-                              Name 216  "r027"
-                              Name 219  "r028"
-                              Name 222  "r029"
-                              Name 225  "r030"
-                              Name 228  "r031"
-                              Name 231  "r033"
-                              Name 235  "r034"
-                              Name 238  "r036"
-                              Name 241  "r037"
-                              Name 244  "r038"
-                              Name 247  "r039"
-                              Name 251  "r039a"
-                              Name 256  "r040"
-                              Name 259  "r041"
-                              Name 264  "r042"
-                              Name 267  "r043"
-                              Name 271  "r044"
-                              Name 275  "r045"
-                              Name 279  "r046"
-                              Name 282  "r047"
-                              Name 286  "r048"
-                              Name 290  "r049"
-                              Name 293  "r050"
-                              Name 296  "r051"
-                              Name 299  "r052"
-                              Name 302  "r053"
-                              Name 309  "r055"
-                              Name 312  "r056"
-                              Name 317  "r057"
-                              Name 320  "r058"
-                              Name 324  "r059"
-                              Name 327  "r060"
-                              Name 330  "r061"
-                              Name 337  "r000"
-                              Name 343  "r001"
-                              Name 346  "r002"
-                              Name 349  "r003"
-                              Name 353  "r004"
-                              Name 358  "r005"
-                              Name 361  "r006"
-                              Name 364  "r007"
-                              Name 367  "r009"
-                              Name 370  "r010"
-                              Name 374  "r011"
-                              Name 377  "r012"
-                              Name 388  "r013"
-                              Name 391  "r015"
-                              Name 394  "r016"
-                              Name 398  "r017"
-                              Name 401  "r018"
-                              Name 404  "r019"
-                              Name 407  "r020"
-                              Name 410  "r021"
-                              Name 413  "r022"
-                              Name 416  "r023"
-                              Name 419  "r026"
-                              Name 423  "r027"
-                              Name 427  "r028"
-                              Name 430  "r029"
-                              Name 433  "r030"
-                              Name 438  "r031"
-                              Name 443  "r032"
-                              Name 445  "r033"
-                              Name 448  "r035"
-                              Name 452  "r036"
-                              Name 455  "r038"
-                              Name 459  "r039"
-                              Name 462  "r040"
-                              Name 465  "r041"
-                              Name 469  "r039a"
-                              Name 474  "r042"
-                              Name 477  "r043"
-                              Name 480  "r044"
-                              Name 484  "r045"
-                              Name 487  "r046"
-                              Name 491  "r047"
-                              Name 495  "r048"
-                              Name 498  "r049"
-                              Name 502  "r050"
-                              Name 505  "r051"
-                              Name 509  "r052"
-                              Name 513  "r053"
-                              Name 518  "r054"
-                              Name 523  "r055"
-                              Name 526  "r056"
-                              Name 529  "r057"
-                              Name 534  "r058"
-                              Name 537  "r059"
-                              Name 544  "r060"
-                              Name 547  "r061"
-                              Name 552  "r062"
-                              Name 555  "r063"
-                              Name 559  "r064"
-                              Name 562  "r065"
-                              Name 565  "r066"
-                              Name 571  "r000"
-                              Name 577  "r001"
-                              Name 580  "r002"
-                              Name 583  "r003"
-                              Name 587  "r004"
-                              Name 592  "r005"
-                              Name 595  "r006"
-                              Name 598  "r007"
-                              Name 601  "r009"
-                              Name 604  "r010"
-                              Name 608  "r011"
-                              Name 611  "r012"
-                              Name 622  "r013"
-                              Name 625  "r014"
-                              Name 628  "r015"
-                              Name 633  "r016"
-                              Name 637  "r017"
-                              Name 640  "r018"
-                              Name 643  "r019"
-                              Name 646  "r020"
-                              Name 649  "r021"
-                              Name 652  "r022"
-                              Name 655  "r023"
-                              Name 658  "r024"
-                              Name 662  "r025"
-                              Name 666  "r029"
-                              Name 669  "r030"
-                              Name 672  "r031"
-                              Name 677  "r032"
-                              Name 681  "r033"
-                              Name 683  "r034"
-                              Name 686  "r036"
-                              Name 690  "r037"
-                              Name 693  "r039"
-                              Name 697  "r040"
-                              Name 700  "r041"
-                              Name 703  "r042"
-                              Name 707  "r039a"
-                              Name 712  "r039b"
-                              Name 718  "r043"
-                              Name 721  "r044"
-                              Name 724  "r045"
-                              Name 728  "r046"
-                              Name 731  "r047"
-                              Name 735  "r048"
-                              Name 739  "r049"
-                              Name 742  "r050"
-                              Name 746  "r051"
-                              Name 749  "r052"
-                              Name 753  "r053"
-                              Name 757  "r054"
-                              Name 761  "r055"
-                              Name 764  "r056"
-                              Name 767  "r057"
-                              Name 770  "r058"
-                              Name 775  "r059"
-                              Name 778  "r060"
-                              Name 785  "r061"
-                              Name 788  "r062"
-                              Name 793  "r063"
-                              Name 796  "r064"
-                              Name 800  "r065"
-                              Name 803  "r066"
-                              Name 806  "r067"
-                              Name 813  "r000"
-                              Name 819  "r001"
-                              Name 822  "r002"
-                              Name 825  "r003"
-                              Name 829  "r004"
-                              Name 834  "r005"
-                              Name 837  "r006"
-                              Name 840  "r007"
-                              Name 843  "r009"
-                              Name 846  "r010"
-                              Name 850  "r011"
-                              Name 853  "r012"
-                              Name 864  "r013"
-                              Name 867  "r014"
-                              Name 870  "r015"
-                              Name 873  "r016"
-                              Name 876  "r017"
-                              Name 879  "r018"
-                              Name 882  "r019"
-                              Name 885  "r020"
-                              Name 888  "r021"
-                              Name 891  "r022"
-                              Name 894  "r023"
-                              Name 898  "r024"
-                              Name 902  "r025"
-                              Name 913  "r029"
-                              Name 916  "r030"
-                              Name 919  "r031"
-                              Name 924  "r032"
-                              Name 929  "r033"
-                              Name 931  "r034"
-                              Name 934  "r036"
-                              Name 938  "r037"
-                              Name 941  "r039"
-                              Name 945  "r040"
-                              Name 948  "r041"
-                              Name 951  "r042"
-                              Name 955  "r039a"
-                              Name 960  "r043"
-                              Name 963  "r044"
-                              Name 966  "r045"
-                              Name 970  "r046"
-                              Name 973  "r047"
-                              Name 977  "r048"
-                              Name 981  "r049"
-                              Name 984  "r050"
-                              Name 988  "r051"
-                              Name 991  "r052"
-                              Name 995  "r053"
-                              Name 999  "r054"
-                              Name 1003  "r055"
-                              Name 1006  "r056"
-                              Name 1009  "r057"
-                              Name 1012  "r058"
-                              Name 1017  "r059"
-                              Name 1020  "r060"
-                              Name 1027  "r061"
-                              Name 1030  "r062"
-                              Name 1035  "r063"
-                              Name 1038  "r064"
-                              Name 1042  "r065"
-                              Name 1045  "r066"
-                              Name 1048  "r067"
-                              Name 1055  "r000"
-                              Name 1060  "r001"
-                              Name 1065  "r003"
-                              Name 1069  "r004"
-                              Name 1072  "r005"
-                              Name 1075  "r006"
-                              Name 1079  "r007"
-                              Name 1089  "r008"
-                              Name 1094  "r009"
-                              Name 1097  "r010"
-                              Name 1100  "r011"
-                              Name 1103  "r012"
-                              Name 1106  "r013"
-                              Name 1109  "r014"
-                              Name 1112  "r015"
-                              Name 1115  "r016"
-                              Name 1118  "r017"
-                              Name 1121  "r018"
-                              Name 1124  "r019"
-                              Name 1127  "R020"
-                              Name 1130  "r021"
-                              Name 1133  "r022"
-                              Name 1143  "r023"
-                              Name 1146  "r025"
-                              Name 1149  "r026"
-                              Name 1153  "r026a"
-                              Name 1158  "r027"
-                              Name 1161  "r028"
-                              Name 1165  "r029"
-                              Name 1168  "r030"
-                              Name 1172  "r031"
-                              Name 1176  "r032"
-                              Name 1180  "r033"
-                              Name 1183  "r034"
-                              Name 1186  "r035"
-                              Name 1189  "r036"
-                              Name 1194  "r037"
-                              Name 1197  "r038"
-                              Name 1204  "r039"
-                              Name 1207  "r049"
-                              Name 1212  "r041"
-                              Name 1215  "r042"
-                              Name 1219  "r043"
-                              Name 1222  "r044"
-                              Name 1227  "r046"
-                              Name 1234  "r000"
-                              Name 1239  "r001"
-                              Name 1244  "r003"
-                              Name 1248  "r004"
-                              Name 1251  "r005"
-                              Name 1254  "r006"
-                              Name 1258  "r007"
-                              Name 1268  "r008"
-                              Name 1273  "r009"
-                              Name 1276  "r010"
-                              Name 1279  "r011"
-                              Name 1282  "r012"
-                              Name 1285  "r013"
-                              Name 1288  "r014"
-                              Name 1291  "r015"
-                              Name 1294  "r016"
-                              Name 1297  "r017"
-                              Name 1300  "r018"
-                              Name 1303  "r019"
-                              Name 1306  "R020"
-                              Name 1309  "r021"
-                              Name 1312  "r022"
-                              Name 1325  "r023"
-                              Name 1328  "r025"
-                              Name 1331  "r026"
-                              Name 1335  "r026a"
-                              Name 1340  "r027"
-                              Name 1343  "r028"
-                              Name 1347  "r029"
-                              Name 1350  "r030"
-                              Name 1354  "r031"
-                              Name 1358  "r032"
-                              Name 1362  "r033"
-                              Name 1365  "r034"
-                              Name 1368  "r035"
-                              Name 1371  "r036"
-                              Name 1376  "r037"
-                              Name 1379  "r038"
-                              Name 1386  "r039"
-                              Name 1389  "r049"
-                              Name 1394  "r041"
-                              Name 1397  "r042"
-                              Name 1401  "r043"
-                              Name 1404  "r044"
-                              Name 1409  "r046"
-                              Name 1416  "r000"
-                              Name 1421  "r001"
-                              Name 1426  "r003"
-                              Name 1430  "r004"
-                              Name 1433  "r005"
-                              Name 1436  "r006"
-                              Name 1440  "r007"
-                              Name 1450  "r008"
-                              Name 1455  "r009"
-                              Name 1458  "r010"
-                              Name 1461  "r011"
-                              Name 1464  "r012"
-                              Name 1467  "r013"
-                              Name 1470  "r014"
-                              Name 1473  "r015"
-                              Name 1476  "r016"
-                              Name 1479  "r017"
-                              Name 1482  "r018"
-                              Name 1485  "r019"
-                              Name 1488  "R020"
-                              Name 1491  "r021"
-                              Name 1494  "r022"
-                              Name 1510  "r023"
-                              Name 1513  "r025"
-                              Name 1516  "r026"
-                              Name 1520  "r026a"
-                              Name 1525  "r027"
-                              Name 1528  "r028"
-                              Name 1532  "r029"
-                              Name 1535  "r030"
-                              Name 1539  "r031"
-                              Name 1543  "r032"
-                              Name 1547  "r033"
-                              Name 1550  "r034"
-                              Name 1553  "r035"
-                              Name 1556  "r036"
-                              Name 1561  "r037"
-                              Name 1564  "r038"
-                              Name 1571  "r039"
-                              Name 1574  "r049"
-                              Name 1579  "r041"
-                              Name 1582  "r042"
-                              Name 1586  "r043"
-                              Name 1589  "r044"
-                              Name 1594  "r046"
-                              Name 1601  "r0"
-                              Name 1605  "r1"
-                              Name 1609  "r2"
-                              Name 1613  "r3"
-                              Name 1617  "r4"
-                              Name 1621  "r5"
-                              Name 1625  "r6"
-                              Name 1629  "r7"
-                              Name 1633  "r8"
-                              Name 1637  "r0"
-                              Name 1641  "r1"
-                              Name 1645  "r2"
-                              Name 1649  "r3"
-                              Name 1653  "r4"
-                              Name 1657  "r5"
-                              Name 1661  "r6"
-                              Name 1665  "r7"
-                              Name 1669  "r8"
-                              Name 1673  "r0"
-                              Name 1677  "r1"
-                              Name 1681  "r2"
-                              Name 1685  "r3"
-                              Name 1689  "r4"
-                              Name 1693  "r5"
-                              Name 1697  "r6"
-                              Name 1701  "r7"
-                              Name 1705  "r8"
-                              Name 1709  "r00"
-                              Name 1713  "r01"
-                              Name 1717  "r02"
-                              Name 1721  "r03"
-                              Name 1725  "r04"
-                              Name 1729  "r05"
-                              Name 1733  "r06"
-                              Name 1737  "r07"
-                              Name 1741  "r08"
-                              Name 1745  "r09"
-                              Name 1749  "r10"
-                              Name 1753  "r11"
-                              Name 1757  "r12"
-                              Name 1761  "r13"
-                              Name 1765  "r14"
-                              Name 1769  "r15"
-                              Name 1773  "r16"
-                              Name 1778  "ps_output"
-                              Name 1786  "@entryPointOutput.color"
-                              Name 1790  "gs_ua"
-                              Name 1791  "gs_ub"
-                              Name 1792  "gs_uc"
-                              Name 1794  "gs_ua2"
-                              Name 1795  "gs_ub2"
-                              Name 1796  "gs_uc2"
-                              Name 1798  "gs_ua3"
-                              Name 1799  "gs_ub3"
-                              Name 1800  "gs_uc3"
-                              Name 1802  "gs_ua4"
-                              Name 1803  "gs_ub4"
-                              Name 1804  "gs_uc4"
-                              Decorate 1786(@entryPointOutput.color) Location 0
+                              Name 192  "r014"
+                              Name 195  "r015"
+                              Name 198  "r016"
+                              Name 201  "r017"
+                              Name 204  "r018"
+                              Name 207  "r019"
+                              Name 210  "r020"
+                              Name 213  "r021"
+                              Name 216  "r022"
+                              Name 219  "r023"
+                              Name 222  "r027"
+                              Name 225  "r028"
+                              Name 228  "r029"
+                              Name 231  "r030"
+                              Name 234  "r031"
+                              Name 237  "r033"
+                              Name 241  "r034"
+                              Name 244  "r036"
+                              Name 247  "r037"
+                              Name 250  "r038"
+                              Name 253  "r039"
+                              Name 257  "r039a"
+                              Name 262  "r040"
+                              Name 265  "r041"
+                              Name 270  "r042"
+                              Name 273  "r043"
+                              Name 277  "r044"
+                              Name 281  "r045"
+                              Name 285  "r046"
+                              Name 288  "r047"
+                              Name 292  "r048"
+                              Name 296  "r049"
+                              Name 299  "r050"
+                              Name 302  "r051"
+                              Name 305  "r052"
+                              Name 308  "r053"
+                              Name 315  "r055"
+                              Name 318  "r056"
+                              Name 323  "r057"
+                              Name 326  "r058"
+                              Name 330  "r059"
+                              Name 333  "r060"
+                              Name 336  "r061"
+                              Name 343  "r000"
+                              Name 349  "r001"
+                              Name 352  "r002"
+                              Name 355  "r003"
+                              Name 359  "r004"
+                              Name 364  "r005"
+                              Name 367  "r006"
+                              Name 370  "r007"
+                              Name 373  "r009"
+                              Name 376  "r010"
+                              Name 380  "r011"
+                              Name 383  "r012"
+                              Name 402  "r013"
+                              Name 405  "r015"
+                              Name 408  "r016"
+                              Name 412  "r017"
+                              Name 415  "r018"
+                              Name 418  "r019"
+                              Name 421  "r020"
+                              Name 424  "r021"
+                              Name 427  "r022"
+                              Name 430  "r023"
+                              Name 433  "r026"
+                              Name 437  "r027"
+                              Name 441  "r028"
+                              Name 444  "r029"
+                              Name 447  "r030"
+                              Name 452  "r031"
+                              Name 457  "r032"
+                              Name 459  "r033"
+                              Name 462  "r035"
+                              Name 466  "r036"
+                              Name 469  "r038"
+                              Name 473  "r039"
+                              Name 476  "r040"
+                              Name 479  "r041"
+                              Name 483  "r039a"
+                              Name 488  "r042"
+                              Name 491  "r043"
+                              Name 494  "r044"
+                              Name 498  "r045"
+                              Name 501  "r046"
+                              Name 505  "r047"
+                              Name 509  "r048"
+                              Name 512  "r049"
+                              Name 516  "r050"
+                              Name 519  "r051"
+                              Name 523  "r052"
+                              Name 527  "r053"
+                              Name 532  "r054"
+                              Name 537  "r055"
+                              Name 540  "r056"
+                              Name 543  "r057"
+                              Name 548  "r058"
+                              Name 551  "r059"
+                              Name 558  "r060"
+                              Name 561  "r061"
+                              Name 566  "r062"
+                              Name 569  "r063"
+                              Name 573  "r064"
+                              Name 576  "r065"
+                              Name 579  "r066"
+                              Name 585  "r000"
+                              Name 591  "r001"
+                              Name 594  "r002"
+                              Name 597  "r003"
+                              Name 601  "r004"
+                              Name 606  "r005"
+                              Name 609  "r006"
+                              Name 612  "r007"
+                              Name 615  "r009"
+                              Name 618  "r010"
+                              Name 622  "r011"
+                              Name 625  "r012"
+                              Name 643  "r013"
+                              Name 646  "r014"
+                              Name 649  "r015"
+                              Name 654  "r016"
+                              Name 658  "r017"
+                              Name 661  "r018"
+                              Name 664  "r019"
+                              Name 667  "r020"
+                              Name 670  "r021"
+                              Name 673  "r022"
+                              Name 676  "r023"
+                              Name 679  "r024"
+                              Name 683  "r025"
+                              Name 687  "r029"
+                              Name 690  "r030"
+                              Name 693  "r031"
+                              Name 698  "r032"
+                              Name 702  "r033"
+                              Name 704  "r034"
+                              Name 707  "r036"
+                              Name 711  "r037"
+                              Name 714  "r039"
+                              Name 718  "r040"
+                              Name 721  "r041"
+                              Name 724  "r042"
+                              Name 728  "r039a"
+                              Name 733  "r039b"
+                              Name 739  "r043"
+                              Name 742  "r044"
+                              Name 745  "r045"
+                              Name 749  "r046"
+                              Name 752  "r047"
+                              Name 756  "r048"
+                              Name 760  "r049"
+                              Name 763  "r050"
+                              Name 767  "r051"
+                              Name 770  "r052"
+                              Name 774  "r053"
+                              Name 778  "r054"
+                              Name 782  "r055"
+                              Name 785  "r056"
+                              Name 788  "r057"
+                              Name 791  "r058"
+                              Name 796  "r059"
+                              Name 799  "r060"
+                              Name 806  "r061"
+                              Name 809  "r062"
+                              Name 814  "r063"
+                              Name 817  "r064"
+                              Name 821  "r065"
+                              Name 824  "r066"
+                              Name 827  "r067"
+                              Name 834  "r000"
+                              Name 840  "r001"
+                              Name 843  "r002"
+                              Name 846  "r003"
+                              Name 850  "r004"
+                              Name 855  "r005"
+                              Name 858  "r006"
+                              Name 861  "r007"
+                              Name 864  "r009"
+                              Name 867  "r010"
+                              Name 871  "r011"
+                              Name 874  "r012"
+                              Name 892  "r013"
+                              Name 895  "r014"
+                              Name 898  "r015"
+                              Name 901  "r016"
+                              Name 904  "r017"
+                              Name 907  "r018"
+                              Name 910  "r019"
+                              Name 913  "r020"
+                              Name 916  "r021"
+                              Name 919  "r022"
+                              Name 922  "r023"
+                              Name 926  "r024"
+                              Name 930  "r025"
+                              Name 941  "r029"
+                              Name 944  "r030"
+                              Name 947  "r031"
+                              Name 952  "r032"
+                              Name 957  "r033"
+                              Name 959  "r034"
+                              Name 962  "r036"
+                              Name 966  "r037"
+                              Name 969  "r039"
+                              Name 973  "r040"
+                              Name 976  "r041"
+                              Name 979  "r042"
+                              Name 983  "r039a"
+                              Name 988  "r043"
+                              Name 991  "r044"
+                              Name 994  "r045"
+                              Name 998  "r046"
+                              Name 1001  "r047"
+                              Name 1005  "r048"
+                              Name 1009  "r049"
+                              Name 1012  "r050"
+                              Name 1016  "r051"
+                              Name 1019  "r052"
+                              Name 1023  "r053"
+                              Name 1027  "r054"
+                              Name 1031  "r055"
+                              Name 1034  "r056"
+                              Name 1037  "r057"
+                              Name 1040  "r058"
+                              Name 1045  "r059"
+                              Name 1048  "r060"
+                              Name 1055  "r061"
+                              Name 1058  "r062"
+                              Name 1063  "r063"
+                              Name 1066  "r064"
+                              Name 1070  "r065"
+                              Name 1073  "r066"
+                              Name 1076  "r067"
+                              Name 1083  "r000"
+                              Name 1088  "r001"
+                              Name 1093  "r003"
+                              Name 1097  "r004"
+                              Name 1100  "r005"
+                              Name 1103  "r006"
+                              Name 1107  "r007"
+                              Name 1117  "r008"
+                              Name 1122  "r009"
+                              Name 1125  "r010"
+                              Name 1128  "r011"
+                              Name 1131  "r012"
+                              Name 1134  "r013"
+                              Name 1137  "r014"
+                              Name 1140  "r015"
+                              Name 1143  "r016"
+                              Name 1146  "r017"
+                              Name 1149  "r018"
+                              Name 1152  "r019"
+                              Name 1155  "R020"
+                              Name 1158  "r021"
+                              Name 1161  "r022"
+                              Name 1171  "r023"
+                              Name 1174  "r025"
+                              Name 1177  "r026"
+                              Name 1181  "r026a"
+                              Name 1186  "r027"
+                              Name 1189  "r028"
+                              Name 1193  "r029"
+                              Name 1196  "r030"
+                              Name 1200  "r031"
+                              Name 1204  "r032"
+                              Name 1208  "r033"
+                              Name 1211  "r034"
+                              Name 1214  "r035"
+                              Name 1217  "r036"
+                              Name 1222  "r037"
+                              Name 1225  "r038"
+                              Name 1232  "r039"
+                              Name 1235  "r049"
+                              Name 1240  "r041"
+                              Name 1243  "r042"
+                              Name 1247  "r043"
+                              Name 1250  "r044"
+                              Name 1255  "r046"
+                              Name 1262  "r000"
+                              Name 1267  "r001"
+                              Name 1272  "r003"
+                              Name 1276  "r004"
+                              Name 1279  "r005"
+                              Name 1282  "r006"
+                              Name 1286  "r007"
+                              Name 1296  "r008"
+                              Name 1301  "r009"
+                              Name 1304  "r010"
+                              Name 1307  "r011"
+                              Name 1310  "r012"
+                              Name 1313  "r013"
+                              Name 1316  "r014"
+                              Name 1319  "r015"
+                              Name 1322  "r016"
+                              Name 1325  "r017"
+                              Name 1328  "r018"
+                              Name 1331  "r019"
+                              Name 1334  "R020"
+                              Name 1337  "r021"
+                              Name 1340  "r022"
+                              Name 1353  "r023"
+                              Name 1356  "r025"
+                              Name 1359  "r026"
+                              Name 1363  "r026a"
+                              Name 1368  "r027"
+                              Name 1371  "r028"
+                              Name 1375  "r029"
+                              Name 1378  "r030"
+                              Name 1382  "r031"
+                              Name 1386  "r032"
+                              Name 1390  "r033"
+                              Name 1393  "r034"
+                              Name 1396  "r035"
+                              Name 1399  "r036"
+                              Name 1404  "r037"
+                              Name 1407  "r038"
+                              Name 1414  "r039"
+                              Name 1417  "r049"
+                              Name 1422  "r041"
+                              Name 1425  "r042"
+                              Name 1429  "r043"
+                              Name 1432  "r044"
+                              Name 1437  "r046"
+                              Name 1444  "r000"
+                              Name 1449  "r001"
+                              Name 1454  "r003"
+                              Name 1458  "r004"
+                              Name 1461  "r005"
+                              Name 1464  "r006"
+                              Name 1468  "r007"
+                              Name 1478  "r008"
+                              Name 1483  "r009"
+                              Name 1486  "r010"
+                              Name 1489  "r011"
+                              Name 1492  "r012"
+                              Name 1495  "r013"
+                              Name 1498  "r014"
+                              Name 1501  "r015"
+                              Name 1504  "r016"
+                              Name 1507  "r017"
+                              Name 1510  "r018"
+                              Name 1513  "r019"
+                              Name 1516  "R020"
+                              Name 1519  "r021"
+                              Name 1522  "r022"
+                              Name 1538  "r023"
+                              Name 1541  "r025"
+                              Name 1544  "r026"
+                              Name 1548  "r026a"
+                              Name 1553  "r027"
+                              Name 1556  "r028"
+                              Name 1560  "r029"
+                              Name 1563  "r030"
+                              Name 1567  "r031"
+                              Name 1571  "r032"
+                              Name 1575  "r033"
+                              Name 1578  "r034"
+                              Name 1581  "r035"
+                              Name 1584  "r036"
+                              Name 1589  "r037"
+                              Name 1592  "r038"
+                              Name 1599  "r039"
+                              Name 1602  "r049"
+                              Name 1607  "r041"
+                              Name 1610  "r042"
+                              Name 1614  "r043"
+                              Name 1617  "r044"
+                              Name 1622  "r046"
+                              Name 1629  "r0"
+                              Name 1633  "r1"
+                              Name 1637  "r2"
+                              Name 1641  "r3"
+                              Name 1645  "r4"
+                              Name 1649  "r5"
+                              Name 1653  "r6"
+                              Name 1657  "r7"
+                              Name 1661  "r8"
+                              Name 1665  "r0"
+                              Name 1669  "r1"
+                              Name 1673  "r2"
+                              Name 1677  "r3"
+                              Name 1681  "r4"
+                              Name 1685  "r5"
+                              Name 1689  "r6"
+                              Name 1693  "r7"
+                              Name 1697  "r8"
+                              Name 1701  "r0"
+                              Name 1705  "r1"
+                              Name 1709  "r2"
+                              Name 1713  "r3"
+                              Name 1717  "r4"
+                              Name 1721  "r5"
+                              Name 1725  "r6"
+                              Name 1729  "r7"
+                              Name 1733  "r8"
+                              Name 1737  "r00"
+                              Name 1741  "r01"
+                              Name 1745  "r02"
+                              Name 1749  "r03"
+                              Name 1753  "r04"
+                              Name 1757  "r05"
+                              Name 1761  "r06"
+                              Name 1765  "r07"
+                              Name 1769  "r08"
+                              Name 1773  "r09"
+                              Name 1777  "r10"
+                              Name 1781  "r11"
+                              Name 1785  "r12"
+                              Name 1789  "r13"
+                              Name 1793  "r14"
+                              Name 1797  "r15"
+                              Name 1801  "r16"
+                              Name 1806  "ps_output"
+                              Name 1813  "@entryPointOutput.color"
+                              Name 1817  "gs_ua"
+                              Name 1818  "gs_ub"
+                              Name 1819  "gs_uc"
+                              Name 1821  "gs_ua2"
+                              Name 1822  "gs_ub2"
+                              Name 1823  "gs_uc2"
+                              Name 1825  "gs_ua3"
+                              Name 1826  "gs_ub3"
+                              Name 1827  "gs_uc3"
+                              Name 1829  "gs_ua4"
+                              Name 1830  "gs_ub4"
+                              Name 1831  "gs_uc4"
+                              Decorate 1813(@entryPointOutput.color) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -6124,89 +6206,93 @@
              139:    6(float) Constant 0
              155:             TypeInt 32 1
              156:             TypePointer Function 155(int)
-             193:    155(int) Constant 7
-             262:    6(float) Constant 1050288283
-             283:    6(float) Constant 1065353216
-             287:    155(int) Constant 2
-             339:             TypeVector 135(bool) 2
-             340:   24(fvec2) ConstantComposite 139 139
-             356:             TypeVector 155(int) 2
-             357:             TypePointer Function 356(ivec2)
-             395:    155(int) Constant 3
-             396:  356(ivec2) ConstantComposite 193 395
-             439:      8(int) Constant 7
-             440:      8(int) Constant 8
-             441:   26(ivec2) ConstantComposite 439 440
-             458:             TypePointer Function 339(bvec2)
-             516:    6(float) Constant 1073741824
-             519:      8(int) Constant 1
-             520:      8(int) Constant 2
-             521:   26(ivec2) ConstantComposite 519 520
-             568:   24(fvec2) ConstantComposite 283 516
-             573:             TypeVector 135(bool) 3
-             574:   36(fvec3) ConstantComposite 139 139 139
-             590:             TypeVector 155(int) 3
-             591:             TypePointer Function 590(ivec3)
-             629:      8(int) Constant 3
-             630:      8(int) Constant 5
-             631:   38(ivec3) ConstantComposite 439 629 630
-             678:      8(int) Constant 4
-             679:   38(ivec3) ConstantComposite 520 629 678
-             696:             TypePointer Function 573(bvec3)
-             715:    6(float) Constant 1050253722
-             762:   38(ivec3) ConstantComposite 519 520 629
-             809:    6(float) Constant 1077936128
-             810:   36(fvec3) ConstantComposite 283 516 809
-             815:             TypeVector 135(bool) 4
-             816:   48(fvec4) ConstantComposite 139 139 139 139
-             832:             TypeVector 155(int) 4
-             833:             TypePointer Function 832(ivec4)
-             871:   50(ivec4) ConstantComposite 439 629 630 520
-             925:      8(int) Constant 9
-             926:      8(int) Constant 10
-             927:   50(ivec4) ConstantComposite 439 440 925 926
-             944:             TypePointer Function 815(bvec4)
-            1004:   50(ivec4) ConstantComposite 519 520 629 678
-            1051:    6(float) Constant 1082130432
-            1052:   48(fvec4) ConstantComposite 283 516 809 1051
-            1057:             TypeMatrix 339(bvec2) 2
-            1083:          60 ConstantComposite 340 340
-            1230:   24(fvec2) ConstantComposite 516 516
-            1231:          60 ConstantComposite 1230 1230
-            1236:             TypeMatrix 573(bvec3) 3
-            1262:          68 ConstantComposite 574 574 574
-            1412:   36(fvec3) ConstantComposite 809 809 809
-            1413:          68 ConstantComposite 1412 1412 1412
-            1418:             TypeMatrix 815(bvec4) 4
-            1444:          76 ConstantComposite 816 816 816 816
-            1597:   48(fvec4) ConstantComposite 1051 1051 1051 1051
-            1598:          76 ConstantComposite 1597 1597 1597 1597
-            1777:             TypePointer Function 131(PS_OUTPUT)
-            1779:    155(int) Constant 0
-            1780:   48(fvec4) ConstantComposite 283 283 283 283
-            1785:             TypePointer Output 48(fvec4)
-1786(@entryPointOutput.color):   1785(ptr) Variable Output
-            1789:             TypePointer Workgroup 8(int)
-     1790(gs_ua):   1789(ptr) Variable Workgroup
-     1791(gs_ub):   1789(ptr) Variable Workgroup
-     1792(gs_uc):   1789(ptr) Variable Workgroup
-            1793:             TypePointer Workgroup 26(ivec2)
-    1794(gs_ua2):   1793(ptr) Variable Workgroup
-    1795(gs_ub2):   1793(ptr) Variable Workgroup
-    1796(gs_uc2):   1793(ptr) Variable Workgroup
-            1797:             TypePointer Workgroup 38(ivec3)
-    1798(gs_ua3):   1797(ptr) Variable Workgroup
-    1799(gs_ub3):   1797(ptr) Variable Workgroup
-    1800(gs_uc3):   1797(ptr) Variable Workgroup
-            1801:             TypePointer Workgroup 50(ivec4)
-    1802(gs_ua4):   1801(ptr) Variable Workgroup
-    1803(gs_ub4):   1801(ptr) Variable Workgroup
-    1804(gs_uc4):   1801(ptr) Variable Workgroup
+             187:    155(int) Constant 0
+             199:    155(int) Constant 7
+             268:    6(float) Constant 1050288283
+             289:    6(float) Constant 1065353216
+             293:    155(int) Constant 2
+             345:             TypeVector 135(bool) 2
+             346:   24(fvec2) ConstantComposite 139 139
+             362:             TypeVector 155(int) 2
+             363:             TypePointer Function 362(ivec2)
+             395:      8(int) Constant 0
+             396:   26(ivec2) ConstantComposite 395 395
+             409:    155(int) Constant 3
+             410:  362(ivec2) ConstantComposite 199 409
+             453:      8(int) Constant 7
+             454:      8(int) Constant 8
+             455:   26(ivec2) ConstantComposite 453 454
+             472:             TypePointer Function 345(bvec2)
+             530:    6(float) Constant 1073741824
+             533:      8(int) Constant 1
+             534:      8(int) Constant 2
+             535:   26(ivec2) ConstantComposite 533 534
+             582:   24(fvec2) ConstantComposite 289 530
+             587:             TypeVector 135(bool) 3
+             588:   36(fvec3) ConstantComposite 139 139 139
+             604:             TypeVector 155(int) 3
+             605:             TypePointer Function 604(ivec3)
+             637:   38(ivec3) ConstantComposite 395 395 395
+             650:      8(int) Constant 3
+             651:      8(int) Constant 5
+             652:   38(ivec3) ConstantComposite 453 650 651
+             699:      8(int) Constant 4
+             700:   38(ivec3) ConstantComposite 534 650 699
+             717:             TypePointer Function 587(bvec3)
+             736:    6(float) Constant 1050253722
+             783:   38(ivec3) ConstantComposite 533 534 650
+             830:    6(float) Constant 1077936128
+             831:   36(fvec3) ConstantComposite 289 530 830
+             836:             TypeVector 135(bool) 4
+             837:   48(fvec4) ConstantComposite 139 139 139 139
+             853:             TypeVector 155(int) 4
+             854:             TypePointer Function 853(ivec4)
+             886:   50(ivec4) ConstantComposite 395 395 395 395
+             899:   50(ivec4) ConstantComposite 453 650 651 534
+             953:      8(int) Constant 9
+             954:      8(int) Constant 10
+             955:   50(ivec4) ConstantComposite 453 454 953 954
+             972:             TypePointer Function 836(bvec4)
+            1032:   50(ivec4) ConstantComposite 533 534 650 699
+            1079:    6(float) Constant 1082130432
+            1080:   48(fvec4) ConstantComposite 289 530 830 1079
+            1085:             TypeMatrix 345(bvec2) 2
+            1111:          60 ConstantComposite 346 346
+            1258:   24(fvec2) ConstantComposite 530 530
+            1259:          60 ConstantComposite 1258 1258
+            1264:             TypeMatrix 587(bvec3) 3
+            1290:          68 ConstantComposite 588 588 588
+            1440:   36(fvec3) ConstantComposite 830 830 830
+            1441:          68 ConstantComposite 1440 1440 1440
+            1446:             TypeMatrix 836(bvec4) 4
+            1472:          76 ConstantComposite 837 837 837 837
+            1625:   48(fvec4) ConstantComposite 1079 1079 1079 1079
+            1626:          76 ConstantComposite 1625 1625 1625 1625
+            1805:             TypePointer Function 131(PS_OUTPUT)
+            1807:   48(fvec4) ConstantComposite 289 289 289 289
+            1812:             TypePointer Output 48(fvec4)
+1813(@entryPointOutput.color):   1812(ptr) Variable Output
+            1816:             TypePointer Workgroup 8(int)
+     1817(gs_ua):   1816(ptr) Variable Workgroup
+     1818(gs_ub):   1816(ptr) Variable Workgroup
+     1819(gs_uc):   1816(ptr) Variable Workgroup
+            1820:             TypePointer Workgroup 26(ivec2)
+    1821(gs_ua2):   1820(ptr) Variable Workgroup
+    1822(gs_ub2):   1820(ptr) Variable Workgroup
+    1823(gs_uc2):   1820(ptr) Variable Workgroup
+            1824:             TypePointer Workgroup 38(ivec3)
+    1825(gs_ua3):   1824(ptr) Variable Workgroup
+    1826(gs_ub3):   1824(ptr) Variable Workgroup
+    1827(gs_uc3):   1824(ptr) Variable Workgroup
+            1828:             TypePointer Workgroup 50(ivec4)
+    1829(gs_ua4):   1828(ptr) Variable Workgroup
+    1830(gs_ub4):   1828(ptr) Variable Workgroup
+    1831(gs_uc4):   1828(ptr) Variable Workgroup
          4(main):           2 Function None 3
                5:             Label
-            1787:131(PS_OUTPUT) FunctionCall 133(@main()
-            1788:   48(fvec4) CompositeExtract 1787 0
-                              Store 1786(@entryPointOutput.color) 1788
+            1814:131(PS_OUTPUT) FunctionCall 133(@main()
+            1815:   48(fvec4) CompositeExtract 1814 0
+                              Store 1813(@entryPointOutput.color) 1815
                               Return
                               FunctionEnd
 16(PixelShaderFunctionS(f1;f1;f1;u1;u1;):    6(float) Function None 10
@@ -6228,49 +6314,49 @@
        169(r010):      7(ptr) Variable Function
        173(r011):      7(ptr) Variable Function
        176(r012):      7(ptr) Variable Function
-       186(r014):      7(ptr) Variable Function
-       189(r015):      7(ptr) Variable Function
-       192(r016):    156(ptr) Variable Function
-       195(r017):      7(ptr) Variable Function
-       198(r018):      7(ptr) Variable Function
-       201(r019):      7(ptr) Variable Function
-       204(r020):      7(ptr) Variable Function
-       207(r021):      7(ptr) Variable Function
-       210(r022):      7(ptr) Variable Function
-       213(r023):      7(ptr) Variable Function
-       216(r027):      7(ptr) Variable Function
-       219(r028):      7(ptr) Variable Function
-       222(r029):      9(ptr) Variable Function
-       225(r030):      9(ptr) Variable Function
-       228(r031):      7(ptr) Variable Function
-       231(r033):      7(ptr) Variable Function
-       235(r034):      7(ptr) Variable Function
-       238(r036):      7(ptr) Variable Function
-       241(r037):    136(ptr) Variable Function
-       244(r038):    136(ptr) Variable Function
-       247(r039):      7(ptr) Variable Function
-      251(r039a):      7(ptr) Variable Function
-       256(r040):      7(ptr) Variable Function
-       259(r041):      7(ptr) Variable Function
-       264(r042):      7(ptr) Variable Function
-       267(r043):      7(ptr) Variable Function
-       271(r044):      7(ptr) Variable Function
-       275(r045):      7(ptr) Variable Function
-       279(r046):      7(ptr) Variable Function
-       282(r047):      7(ptr) Variable Function
-       286(r048):      9(ptr) Variable Function
-       290(r049):      7(ptr) Variable Function
-       293(r050):      7(ptr) Variable Function
-       296(r051):      7(ptr) Variable Function
-       299(r052):      7(ptr) Variable Function
-       302(r053):      7(ptr) Variable Function
-       309(r055):      7(ptr) Variable Function
-       312(r056):      7(ptr) Variable Function
-       317(r057):      7(ptr) Variable Function
-       320(r058):      7(ptr) Variable Function
-       324(r059):      7(ptr) Variable Function
-       327(r060):      7(ptr) Variable Function
-       330(r061):      7(ptr) Variable Function
+       192(r014):      7(ptr) Variable Function
+       195(r015):      7(ptr) Variable Function
+       198(r016):    156(ptr) Variable Function
+       201(r017):      7(ptr) Variable Function
+       204(r018):      7(ptr) Variable Function
+       207(r019):      7(ptr) Variable Function
+       210(r020):      7(ptr) Variable Function
+       213(r021):      7(ptr) Variable Function
+       216(r022):      7(ptr) Variable Function
+       219(r023):      7(ptr) Variable Function
+       222(r027):      7(ptr) Variable Function
+       225(r028):      7(ptr) Variable Function
+       228(r029):      9(ptr) Variable Function
+       231(r030):      9(ptr) Variable Function
+       234(r031):      7(ptr) Variable Function
+       237(r033):      7(ptr) Variable Function
+       241(r034):      7(ptr) Variable Function
+       244(r036):      7(ptr) Variable Function
+       247(r037):    136(ptr) Variable Function
+       250(r038):    136(ptr) Variable Function
+       253(r039):      7(ptr) Variable Function
+      257(r039a):      7(ptr) Variable Function
+       262(r040):      7(ptr) Variable Function
+       265(r041):      7(ptr) Variable Function
+       270(r042):      7(ptr) Variable Function
+       273(r043):      7(ptr) Variable Function
+       277(r044):      7(ptr) Variable Function
+       281(r045):      7(ptr) Variable Function
+       285(r046):      7(ptr) Variable Function
+       288(r047):      7(ptr) Variable Function
+       292(r048):      9(ptr) Variable Function
+       296(r049):      7(ptr) Variable Function
+       299(r050):      7(ptr) Variable Function
+       302(r051):      7(ptr) Variable Function
+       305(r052):      7(ptr) Variable Function
+       308(r053):      7(ptr) Variable Function
+       315(r055):      7(ptr) Variable Function
+       318(r056):      7(ptr) Variable Function
+       323(r057):      7(ptr) Variable Function
+       326(r058):      7(ptr) Variable Function
+       330(r059):      7(ptr) Variable Function
+       333(r060):      7(ptr) Variable Function
+       336(r061):      7(ptr) Variable Function
              138:    6(float) Load 11(inF0)
              140:   135(bool) FOrdNotEqual 138 139
              141:   135(bool) All 140
@@ -6319,151 +6405,158 @@
              183:               Label
                                 Kill
              184:             Label
-             187:    6(float) Load 11(inF0)
-             188:    6(float) ExtInst 1(GLSL.std.450) 14(Cos) 187
-                              Store 186(r014) 188
-             190:    6(float) Load 11(inF0)
-             191:    6(float) ExtInst 1(GLSL.std.450) 20(Cosh) 190
-                              Store 189(r015) 191
-             194:    155(int) BitCount 193
-                              Store 192(r016) 194
+             186:    155(int) Load 157(r005)
+             188:   135(bool) SLessThan 186 187
+                              SelectionMerge 190 None
+                              BranchConditional 188 189 190
+             189:               Label
+                                Kill
+             190:             Label
+             193:    6(float) Load 11(inF0)
+             194:    6(float) ExtInst 1(GLSL.std.450) 14(Cos) 193
+                              Store 192(r014) 194
              196:    6(float) Load 11(inF0)
-             197:    6(float) DPdx 196
-                              Store 195(r017) 197
-             199:    6(float) Load 11(inF0)
-             200:    6(float) DPdxCoarse 199
-                              Store 198(r018) 200
+             197:    6(float) ExtInst 1(GLSL.std.450) 20(Cosh) 196
+                              Store 195(r015) 197
+             200:    155(int) BitCount 199
+                              Store 198(r016) 200
              202:    6(float) Load 11(inF0)
-             203:    6(float) DPdxFine 202
-                              Store 201(r019) 203
+             203:    6(float) DPdx 202
+                              Store 201(r017) 203
              205:    6(float) Load 11(inF0)
-             206:    6(float) DPdy 205
-                              Store 204(r020) 206
+             206:    6(float) DPdxCoarse 205
+                              Store 204(r018) 206
              208:    6(float) Load 11(inF0)
-             209:    6(float) DPdyCoarse 208
-                              Store 207(r021) 209
+             209:    6(float) DPdxFine 208
+                              Store 207(r019) 209
              211:    6(float) Load 11(inF0)
-             212:    6(float) DPdyFine 211
-                              Store 210(r022) 212
+             212:    6(float) DPdy 211
+                              Store 210(r020) 212
              214:    6(float) Load 11(inF0)
-             215:    6(float) ExtInst 1(GLSL.std.450) 12(Degrees) 214
-                              Store 213(r023) 215
+             215:    6(float) DPdyCoarse 214
+                              Store 213(r021) 215
              217:    6(float) Load 11(inF0)
-             218:    6(float) ExtInst 1(GLSL.std.450) 27(Exp) 217
-                              Store 216(r027) 218
+             218:    6(float) DPdyFine 217
+                              Store 216(r022) 218
              220:    6(float) Load 11(inF0)
-             221:    6(float) ExtInst 1(GLSL.std.450) 29(Exp2) 220
-                              Store 219(r028) 221
-             223:    155(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 193
-             224:      8(int) Bitcast 223
-                              Store 222(r029) 224
-             226:    155(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 193
-             227:      8(int) Bitcast 226
-                              Store 225(r030) 227
-             229:    6(float) Load 11(inF0)
-             230:    6(float) ExtInst 1(GLSL.std.450) 8(Floor) 229
-                              Store 228(r031) 230
-             232:    6(float) Load 11(inF0)
-             233:    6(float) Load 12(inF1)
-             234:    6(float) FMod 232 233
-                              Store 231(r033) 234
-             236:    6(float) Load 11(inF0)
-             237:    6(float) ExtInst 1(GLSL.std.450) 10(Fract) 236
-                              Store 235(r034) 237
-             239:    6(float) Load 11(inF0)
-             240:    6(float) Fwidth 239
-                              Store 238(r036) 240
+             221:    6(float) ExtInst 1(GLSL.std.450) 12(Degrees) 220
+                              Store 219(r023) 221
+             223:    6(float) Load 11(inF0)
+             224:    6(float) ExtInst 1(GLSL.std.450) 27(Exp) 223
+                              Store 222(r027) 224
+             226:    6(float) Load 11(inF0)
+             227:    6(float) ExtInst 1(GLSL.std.450) 29(Exp2) 226
+                              Store 225(r028) 227
+             229:    155(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 199
+             230:      8(int) Bitcast 229
+                              Store 228(r029) 230
+             232:    155(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 199
+             233:      8(int) Bitcast 232
+                              Store 231(r030) 233
+             235:    6(float) Load 11(inF0)
+             236:    6(float) ExtInst 1(GLSL.std.450) 8(Floor) 235
+                              Store 234(r031) 236
+             238:    6(float) Load 11(inF0)
+             239:    6(float) Load 12(inF1)
+             240:    6(float) FMod 238 239
+                              Store 237(r033) 240
              242:    6(float) Load 11(inF0)
-             243:   135(bool) IsInf 242
-                              Store 241(r037) 243
+             243:    6(float) ExtInst 1(GLSL.std.450) 10(Fract) 242
+                              Store 241(r034) 243
              245:    6(float) Load 11(inF0)
-             246:   135(bool) IsNan 245
-                              Store 244(r038) 246
+             246:    6(float) Fwidth 245
+                              Store 244(r036) 246
              248:    6(float) Load 11(inF0)
-             249:    6(float) Load 12(inF1)
-             250:    6(float) ExtInst 1(GLSL.std.450) 53(Ldexp) 248 249
-                              Store 247(r039) 250
-             252:    6(float) Load 11(inF0)
-             253:    6(float) Load 12(inF1)
-             254:    6(float) Load 13(inF2)
-             255:    6(float) ExtInst 1(GLSL.std.450) 46(FMix) 252 253 254
-                              Store 251(r039a) 255
-             257:    6(float) Load 11(inF0)
-             258:    6(float) ExtInst 1(GLSL.std.450) 28(Log) 257
-                              Store 256(r040) 258
-             260:    6(float) Load 11(inF0)
-             261:    6(float) ExtInst 1(GLSL.std.450) 30(Log2) 260
-             263:    6(float) FMul 261 262
-                              Store 259(r041) 263
-             265:    6(float) Load 11(inF0)
-             266:    6(float) ExtInst 1(GLSL.std.450) 30(Log2) 265
-                              Store 264(r042) 266
-             268:    6(float) Load 11(inF0)
-             269:    6(float) Load 12(inF1)
-             270:    6(float) ExtInst 1(GLSL.std.450) 40(FMax) 268 269
-                              Store 267(r043) 270
-             272:    6(float) Load 11(inF0)
-             273:    6(float) Load 12(inF1)
-             274:    6(float) ExtInst 1(GLSL.std.450) 37(FMin) 272 273
-                              Store 271(r044) 274
-             276:    6(float) Load 11(inF0)
-             277:    6(float) Load 12(inF1)
-             278:    6(float) ExtInst 1(GLSL.std.450) 26(Pow) 276 277
-                              Store 275(r045) 278
-             280:    6(float) Load 11(inF0)
-             281:    6(float) ExtInst 1(GLSL.std.450) 11(Radians) 280
-                              Store 279(r046) 281
-             284:    6(float) Load 11(inF0)
-             285:    6(float) FDiv 283 284
-                              Store 282(r047) 285
-             288:    155(int) BitReverse 287
-             289:      8(int) Bitcast 288
-                              Store 286(r048) 289
-             291:    6(float) Load 11(inF0)
-             292:    6(float) ExtInst 1(GLSL.std.450) 2(RoundEven) 291
-                              Store 290(r049) 292
-             294:    6(float) Load 11(inF0)
-             295:    6(float) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 294
-                              Store 293(r050) 295
+             249:   135(bool) IsInf 248
+                              Store 247(r037) 249
+             251:    6(float) Load 11(inF0)
+             252:   135(bool) IsNan 251
+                              Store 250(r038) 252
+             254:    6(float) Load 11(inF0)
+             255:    6(float) Load 12(inF1)
+             256:    6(float) ExtInst 1(GLSL.std.450) 53(Ldexp) 254 255
+                              Store 253(r039) 256
+             258:    6(float) Load 11(inF0)
+             259:    6(float) Load 12(inF1)
+             260:    6(float) Load 13(inF2)
+             261:    6(float) ExtInst 1(GLSL.std.450) 46(FMix) 258 259 260
+                              Store 257(r039a) 261
+             263:    6(float) Load 11(inF0)
+             264:    6(float) ExtInst 1(GLSL.std.450) 28(Log) 263
+                              Store 262(r040) 264
+             266:    6(float) Load 11(inF0)
+             267:    6(float) ExtInst 1(GLSL.std.450) 30(Log2) 266
+             269:    6(float) FMul 267 268
+                              Store 265(r041) 269
+             271:    6(float) Load 11(inF0)
+             272:    6(float) ExtInst 1(GLSL.std.450) 30(Log2) 271
+                              Store 270(r042) 272
+             274:    6(float) Load 11(inF0)
+             275:    6(float) Load 12(inF1)
+             276:    6(float) ExtInst 1(GLSL.std.450) 40(FMax) 274 275
+                              Store 273(r043) 276
+             278:    6(float) Load 11(inF0)
+             279:    6(float) Load 12(inF1)
+             280:    6(float) ExtInst 1(GLSL.std.450) 37(FMin) 278 279
+                              Store 277(r044) 280
+             282:    6(float) Load 11(inF0)
+             283:    6(float) Load 12(inF1)
+             284:    6(float) ExtInst 1(GLSL.std.450) 26(Pow) 282 283
+                              Store 281(r045) 284
+             286:    6(float) Load 11(inF0)
+             287:    6(float) ExtInst 1(GLSL.std.450) 11(Radians) 286
+                              Store 285(r046) 287
+             290:    6(float) Load 11(inF0)
+             291:    6(float) FDiv 289 290
+                              Store 288(r047) 291
+             294:    155(int) BitReverse 293
+             295:      8(int) Bitcast 294
+                              Store 292(r048) 295
              297:    6(float) Load 11(inF0)
-             298:    6(float) ExtInst 1(GLSL.std.450) 43(FClamp) 297 139 283
-                              Store 296(r051) 298
+             298:    6(float) ExtInst 1(GLSL.std.450) 2(RoundEven) 297
+                              Store 296(r049) 298
              300:    6(float) Load 11(inF0)
-             301:    6(float) ExtInst 1(GLSL.std.450) 6(FSign) 300
-                              Store 299(r052) 301
+             301:    6(float) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 300
+                              Store 299(r050) 301
              303:    6(float) Load 11(inF0)
-             304:    6(float) ExtInst 1(GLSL.std.450) 13(Sin) 303
-                              Store 302(r053) 304
-             305:    6(float) Load 11(inF0)
-             306:    6(float) ExtInst 1(GLSL.std.450) 13(Sin) 305
-                              Store 12(inF1) 306
-             307:    6(float) Load 11(inF0)
-             308:    6(float) ExtInst 1(GLSL.std.450) 14(Cos) 307
-                              Store 13(inF2) 308
-             310:    6(float) Load 11(inF0)
-             311:    6(float) ExtInst 1(GLSL.std.450) 19(Sinh) 310
-                              Store 309(r055) 311
+             304:    6(float) ExtInst 1(GLSL.std.450) 43(FClamp) 303 139 289
+                              Store 302(r051) 304
+             306:    6(float) Load 11(inF0)
+             307:    6(float) ExtInst 1(GLSL.std.450) 6(FSign) 306
+                              Store 305(r052) 307
+             309:    6(float) Load 11(inF0)
+             310:    6(float) ExtInst 1(GLSL.std.450) 13(Sin) 309
+                              Store 308(r053) 310
+             311:    6(float) Load 11(inF0)
+             312:    6(float) ExtInst 1(GLSL.std.450) 13(Sin) 311
+                              Store 12(inF1) 312
              313:    6(float) Load 11(inF0)
-             314:    6(float) Load 12(inF1)
-             315:    6(float) Load 13(inF2)
-             316:    6(float) ExtInst 1(GLSL.std.450) 49(SmoothStep) 313 314 315
-                              Store 312(r056) 316
-             318:    6(float) Load 11(inF0)
-             319:    6(float) ExtInst 1(GLSL.std.450) 31(Sqrt) 318
-                              Store 317(r057) 319
-             321:    6(float) Load 11(inF0)
-             322:    6(float) Load 12(inF1)
-             323:    6(float) ExtInst 1(GLSL.std.450) 48(Step) 321 322
-                              Store 320(r058) 323
-             325:    6(float) Load 11(inF0)
-             326:    6(float) ExtInst 1(GLSL.std.450) 15(Tan) 325
-                              Store 324(r059) 326
-             328:    6(float) Load 11(inF0)
-             329:    6(float) ExtInst 1(GLSL.std.450) 21(Tanh) 328
-                              Store 327(r060) 329
+             314:    6(float) ExtInst 1(GLSL.std.450) 14(Cos) 313
+                              Store 13(inF2) 314
+             316:    6(float) Load 11(inF0)
+             317:    6(float) ExtInst 1(GLSL.std.450) 19(Sinh) 316
+                              Store 315(r055) 317
+             319:    6(float) Load 11(inF0)
+             320:    6(float) Load 12(inF1)
+             321:    6(float) Load 13(inF2)
+             322:    6(float) ExtInst 1(GLSL.std.450) 49(SmoothStep) 319 320 321
+                              Store 318(r056) 322
+             324:    6(float) Load 11(inF0)
+             325:    6(float) ExtInst 1(GLSL.std.450) 31(Sqrt) 324
+                              Store 323(r057) 325
+             327:    6(float) Load 11(inF0)
+             328:    6(float) Load 12(inF1)
+             329:    6(float) ExtInst 1(GLSL.std.450) 48(Step) 327 328
+                              Store 326(r058) 329
              331:    6(float) Load 11(inF0)
-             332:    6(float) ExtInst 1(GLSL.std.450) 3(Trunc) 331
-                              Store 330(r061) 332
+             332:    6(float) ExtInst 1(GLSL.std.450) 15(Tan) 331
+                              Store 330(r059) 332
+             334:    6(float) Load 11(inF0)
+             335:    6(float) ExtInst 1(GLSL.std.450) 21(Tanh) 334
+                              Store 333(r060) 335
+             337:    6(float) Load 11(inF0)
+             338:    6(float) ExtInst 1(GLSL.std.450) 3(Trunc) 337
+                              Store 336(r061) 338
                               ReturnValue 139
                               FunctionEnd
 22(PixelShaderFunction1(vf1;vf1;vf1;):    6(float) Function None 18
@@ -6480,290 +6573,298 @@
         32(inU0):     27(ptr) FunctionParameter
         33(inU1):     27(ptr) FunctionParameter
               35:             Label
-       337(r000):    136(ptr) Variable Function
-       343(r001):     25(ptr) Variable Function
-       346(r002):     25(ptr) Variable Function
-       349(r003):    136(ptr) Variable Function
-       353(r004):     25(ptr) Variable Function
-       358(r005):    357(ptr) Variable Function
-       361(r006):     27(ptr) Variable Function
-       364(r007):     25(ptr) Variable Function
-       367(r009):     25(ptr) Variable Function
-       370(r010):     25(ptr) Variable Function
-       374(r011):     25(ptr) Variable Function
-       377(r012):     25(ptr) Variable Function
-       388(r013):     25(ptr) Variable Function
-       391(r015):     25(ptr) Variable Function
-       394(r016):    357(ptr) Variable Function
-       398(r017):     25(ptr) Variable Function
-       401(r018):     25(ptr) Variable Function
-       404(r019):     25(ptr) Variable Function
-       407(r020):     25(ptr) Variable Function
-       410(r021):     25(ptr) Variable Function
-       413(r022):     25(ptr) Variable Function
-       416(r023):     25(ptr) Variable Function
-       419(r026):      7(ptr) Variable Function
-       423(r027):      7(ptr) Variable Function
-       427(r028):     25(ptr) Variable Function
-       430(r029):     25(ptr) Variable Function
-       433(r030):     25(ptr) Variable Function
-       438(r031):     27(ptr) Variable Function
-       443(r032):     27(ptr) Variable Function
-       445(r033):     25(ptr) Variable Function
-       448(r035):     25(ptr) Variable Function
-       452(r036):     25(ptr) Variable Function
-       455(r038):     25(ptr) Variable Function
-       459(r039):    458(ptr) Variable Function
-       462(r040):    458(ptr) Variable Function
-       465(r041):     25(ptr) Variable Function
-      469(r039a):     25(ptr) Variable Function
-       474(r042):      7(ptr) Variable Function
-       477(r043):     25(ptr) Variable Function
-       480(r044):     25(ptr) Variable Function
-       484(r045):     25(ptr) Variable Function
-       487(r046):     25(ptr) Variable Function
-       491(r047):     25(ptr) Variable Function
-       495(r048):     25(ptr) Variable Function
-       498(r049):     25(ptr) Variable Function
-       502(r050):     25(ptr) Variable Function
-       505(r051):     25(ptr) Variable Function
-       509(r052):     25(ptr) Variable Function
-       513(r053):     25(ptr) Variable Function
-       518(r054):     27(ptr) Variable Function
-       523(r055):     25(ptr) Variable Function
-       526(r056):     25(ptr) Variable Function
-       529(r057):     25(ptr) Variable Function
-       534(r058):     25(ptr) Variable Function
-       537(r059):     25(ptr) Variable Function
-       544(r060):     25(ptr) Variable Function
-       547(r061):     25(ptr) Variable Function
-       552(r062):     25(ptr) Variable Function
-       555(r063):     25(ptr) Variable Function
-       559(r064):     25(ptr) Variable Function
-       562(r065):     25(ptr) Variable Function
-       565(r066):     25(ptr) Variable Function
-             338:   24(fvec2) Load 29(inF0)
-             341:  339(bvec2) FOrdNotEqual 338 340
-             342:   135(bool) All 341
-                              Store 337(r000) 342
+       343(r000):    136(ptr) Variable Function
+       349(r001):     25(ptr) Variable Function
+       352(r002):     25(ptr) Variable Function
+       355(r003):    136(ptr) Variable Function
+       359(r004):     25(ptr) Variable Function
+       364(r005):    363(ptr) Variable Function
+       367(r006):     27(ptr) Variable Function
+       370(r007):     25(ptr) Variable Function
+       373(r009):     25(ptr) Variable Function
+       376(r010):     25(ptr) Variable Function
+       380(r011):     25(ptr) Variable Function
+       383(r012):     25(ptr) Variable Function
+       402(r013):     25(ptr) Variable Function
+       405(r015):     25(ptr) Variable Function
+       408(r016):    363(ptr) Variable Function
+       412(r017):     25(ptr) Variable Function
+       415(r018):     25(ptr) Variable Function
+       418(r019):     25(ptr) Variable Function
+       421(r020):     25(ptr) Variable Function
+       424(r021):     25(ptr) Variable Function
+       427(r022):     25(ptr) Variable Function
+       430(r023):     25(ptr) Variable Function
+       433(r026):      7(ptr) Variable Function
+       437(r027):      7(ptr) Variable Function
+       441(r028):     25(ptr) Variable Function
+       444(r029):     25(ptr) Variable Function
+       447(r030):     25(ptr) Variable Function
+       452(r031):     27(ptr) Variable Function
+       457(r032):     27(ptr) Variable Function
+       459(r033):     25(ptr) Variable Function
+       462(r035):     25(ptr) Variable Function
+       466(r036):     25(ptr) Variable Function
+       469(r038):     25(ptr) Variable Function
+       473(r039):    472(ptr) Variable Function
+       476(r040):    472(ptr) Variable Function
+       479(r041):     25(ptr) Variable Function
+      483(r039a):     25(ptr) Variable Function
+       488(r042):      7(ptr) Variable Function
+       491(r043):     25(ptr) Variable Function
+       494(r044):     25(ptr) Variable Function
+       498(r045):     25(ptr) Variable Function
+       501(r046):     25(ptr) Variable Function
+       505(r047):     25(ptr) Variable Function
+       509(r048):     25(ptr) Variable Function
+       512(r049):     25(ptr) Variable Function
+       516(r050):     25(ptr) Variable Function
+       519(r051):     25(ptr) Variable Function
+       523(r052):     25(ptr) Variable Function
+       527(r053):     25(ptr) Variable Function
+       532(r054):     27(ptr) Variable Function
+       537(r055):     25(ptr) Variable Function
+       540(r056):     25(ptr) Variable Function
+       543(r057):     25(ptr) Variable Function
+       548(r058):     25(ptr) Variable Function
+       551(r059):     25(ptr) Variable Function
+       558(r060):     25(ptr) Variable Function
+       561(r061):     25(ptr) Variable Function
+       566(r062):     25(ptr) Variable Function
+       569(r063):     25(ptr) Variable Function
+       573(r064):     25(ptr) Variable Function
+       576(r065):     25(ptr) Variable Function
+       579(r066):     25(ptr) Variable Function
              344:   24(fvec2) Load 29(inF0)
-             345:   24(fvec2) ExtInst 1(GLSL.std.450) 4(FAbs) 344
-                              Store 343(r001) 345
-             347:   24(fvec2) Load 29(inF0)
-             348:   24(fvec2) ExtInst 1(GLSL.std.450) 17(Acos) 347
-                              Store 346(r002) 348
+             347:  345(bvec2) FOrdNotEqual 344 346
+             348:   135(bool) All 347
+                              Store 343(r000) 348
              350:   24(fvec2) Load 29(inF0)
-             351:  339(bvec2) FOrdNotEqual 350 340
-             352:   135(bool) Any 351
-                              Store 349(r003) 352
-             354:   24(fvec2) Load 29(inF0)
-             355:   24(fvec2) ExtInst 1(GLSL.std.450) 16(Asin) 354
-                              Store 353(r004) 355
-             359:   24(fvec2) Load 29(inF0)
-             360:  356(ivec2) Bitcast 359
-                              Store 358(r005) 360
-             362:   24(fvec2) Load 29(inF0)
-             363:   26(ivec2) Bitcast 362
-                              Store 361(r006) 363
-             365:   26(ivec2) Load 32(inU0)
-             366:   24(fvec2) Bitcast 365
-                              Store 364(r007) 366
+             351:   24(fvec2) ExtInst 1(GLSL.std.450) 4(FAbs) 350
+                              Store 349(r001) 351
+             353:   24(fvec2) Load 29(inF0)
+             354:   24(fvec2) ExtInst 1(GLSL.std.450) 17(Acos) 353
+                              Store 352(r002) 354
+             356:   24(fvec2) Load 29(inF0)
+             357:  345(bvec2) FOrdNotEqual 356 346
+             358:   135(bool) Any 357
+                              Store 355(r003) 358
+             360:   24(fvec2) Load 29(inF0)
+             361:   24(fvec2) ExtInst 1(GLSL.std.450) 16(Asin) 360
+                              Store 359(r004) 361
+             365:   24(fvec2) Load 29(inF0)
+             366:  362(ivec2) Bitcast 365
+                              Store 364(r005) 366
              368:   24(fvec2) Load 29(inF0)
-             369:   24(fvec2) ExtInst 1(GLSL.std.450) 18(Atan) 368
-                              Store 367(r009) 369
-             371:   24(fvec2) Load 29(inF0)
-             372:   24(fvec2) Load 30(inF1)
-             373:   24(fvec2) ExtInst 1(GLSL.std.450) 25(Atan2) 371 372
-                              Store 370(r010) 373
-             375:   24(fvec2) Load 29(inF0)
-             376:   24(fvec2) ExtInst 1(GLSL.std.450) 9(Ceil) 375
-                              Store 374(r011) 376
-             378:   24(fvec2) Load 29(inF0)
-             379:   24(fvec2) Load 30(inF1)
-             380:   24(fvec2) Load 31(inF2)
-             381:   24(fvec2) ExtInst 1(GLSL.std.450) 43(FClamp) 378 379 380
-                              Store 377(r012) 381
-             382:   24(fvec2) Load 29(inF0)
-             383:  339(bvec2) FOrdLessThan 382 340
-             384:   135(bool) Any 383
-                              SelectionMerge 386 None
-                              BranchConditional 384 385 386
-             385:               Label
+             369:   26(ivec2) Bitcast 368
+                              Store 367(r006) 369
+             371:   26(ivec2) Load 32(inU0)
+             372:   24(fvec2) Bitcast 371
+                              Store 370(r007) 372
+             374:   24(fvec2) Load 29(inF0)
+             375:   24(fvec2) ExtInst 1(GLSL.std.450) 18(Atan) 374
+                              Store 373(r009) 375
+             377:   24(fvec2) Load 29(inF0)
+             378:   24(fvec2) Load 30(inF1)
+             379:   24(fvec2) ExtInst 1(GLSL.std.450) 25(Atan2) 377 378
+                              Store 376(r010) 379
+             381:   24(fvec2) Load 29(inF0)
+             382:   24(fvec2) ExtInst 1(GLSL.std.450) 9(Ceil) 381
+                              Store 380(r011) 382
+             384:   24(fvec2) Load 29(inF0)
+             385:   24(fvec2) Load 30(inF1)
+             386:   24(fvec2) Load 31(inF2)
+             387:   24(fvec2) ExtInst 1(GLSL.std.450) 43(FClamp) 384 385 386
+                              Store 383(r012) 387
+             388:   24(fvec2) Load 29(inF0)
+             389:  345(bvec2) FOrdLessThan 388 346
+             390:   135(bool) Any 389
+                              SelectionMerge 392 None
+                              BranchConditional 390 391 392
+             391:               Label
                                 Kill
-             386:             Label
-             389:   24(fvec2) Load 29(inF0)
-             390:   24(fvec2) ExtInst 1(GLSL.std.450) 14(Cos) 389
-                              Store 388(r013) 390
-             392:   24(fvec2) Load 29(inF0)
-             393:   24(fvec2) ExtInst 1(GLSL.std.450) 20(Cosh) 392
-                              Store 391(r015) 393
-             397:  356(ivec2) BitCount 396
-                              Store 394(r016) 397
-             399:   24(fvec2) Load 29(inF0)
-             400:   24(fvec2) DPdx 399
-                              Store 398(r017) 400
-             402:   24(fvec2) Load 29(inF0)
-             403:   24(fvec2) DPdxCoarse 402
-                              Store 401(r018) 403
-             405:   24(fvec2) Load 29(inF0)
-             406:   24(fvec2) DPdxFine 405
-                              Store 404(r019) 406
-             408:   24(fvec2) Load 29(inF0)
-             409:   24(fvec2) DPdy 408
-                              Store 407(r020) 409
-             411:   24(fvec2) Load 29(inF0)
-             412:   24(fvec2) DPdyCoarse 411
-                              Store 410(r021) 412
-             414:   24(fvec2) Load 29(inF0)
-             415:   24(fvec2) DPdyFine 414
-                              Store 413(r022) 415
-             417:   24(fvec2) Load 29(inF0)
-             418:   24(fvec2) ExtInst 1(GLSL.std.450) 12(Degrees) 417
-                              Store 416(r023) 418
-             420:   24(fvec2) Load 29(inF0)
-             421:   24(fvec2) Load 30(inF1)
-             422:    6(float) ExtInst 1(GLSL.std.450) 67(Distance) 420 421
-                              Store 419(r026) 422
-             424:   24(fvec2) Load 29(inF0)
-             425:   24(fvec2) Load 30(inF1)
-             426:    6(float) Dot 424 425
-                              Store 423(r027) 426
+             392:             Label
+             394:   26(ivec2) Load 32(inU0)
+             397:  345(bvec2) ULessThan 394 396
+             398:   135(bool) Any 397
+                              SelectionMerge 400 None
+                              BranchConditional 398 399 400
+             399:               Label
+                                Kill
+             400:             Label
+             403:   24(fvec2) Load 29(inF0)
+             404:   24(fvec2) ExtInst 1(GLSL.std.450) 14(Cos) 403
+                              Store 402(r013) 404
+             406:   24(fvec2) Load 29(inF0)
+             407:   24(fvec2) ExtInst 1(GLSL.std.450) 20(Cosh) 406
+                              Store 405(r015) 407
+             411:  362(ivec2) BitCount 410
+                              Store 408(r016) 411
+             413:   24(fvec2) Load 29(inF0)
+             414:   24(fvec2) DPdx 413
+                              Store 412(r017) 414
+             416:   24(fvec2) Load 29(inF0)
+             417:   24(fvec2) DPdxCoarse 416
+                              Store 415(r018) 417
+             419:   24(fvec2) Load 29(inF0)
+             420:   24(fvec2) DPdxFine 419
+                              Store 418(r019) 420
+             422:   24(fvec2) Load 29(inF0)
+             423:   24(fvec2) DPdy 422
+                              Store 421(r020) 423
+             425:   24(fvec2) Load 29(inF0)
+             426:   24(fvec2) DPdyCoarse 425
+                              Store 424(r021) 426
              428:   24(fvec2) Load 29(inF0)
-             429:   24(fvec2) ExtInst 1(GLSL.std.450) 27(Exp) 428
-                              Store 427(r028) 429
+             429:   24(fvec2) DPdyFine 428
+                              Store 427(r022) 429
              431:   24(fvec2) Load 29(inF0)
-             432:   24(fvec2) ExtInst 1(GLSL.std.450) 29(Exp2) 431
-                              Store 430(r029) 432
+             432:   24(fvec2) ExtInst 1(GLSL.std.450) 12(Degrees) 431
+                              Store 430(r023) 432
              434:   24(fvec2) Load 29(inF0)
              435:   24(fvec2) Load 30(inF1)
-             436:   24(fvec2) Load 31(inF2)
-             437:   24(fvec2) ExtInst 1(GLSL.std.450) 70(FaceForward) 434 435 436
-                              Store 433(r030) 437
-             442:   26(ivec2) ExtInst 1(GLSL.std.450) 75(FindUMsb) 441
-                              Store 438(r031) 442
-             444:   26(ivec2) ExtInst 1(GLSL.std.450) 73(FindILsb) 441
-                              Store 443(r032) 444
-             446:   24(fvec2) Load 29(inF0)
-             447:   24(fvec2) ExtInst 1(GLSL.std.450) 8(Floor) 446
-                              Store 445(r033) 447
-             449:   24(fvec2) Load 29(inF0)
-             450:   24(fvec2) Load 30(inF1)
-             451:   24(fvec2) FMod 449 450
-                              Store 448(r035) 451
-             453:   24(fvec2) Load 29(inF0)
-             454:   24(fvec2) ExtInst 1(GLSL.std.450) 10(Fract) 453
-                              Store 452(r036) 454
-             456:   24(fvec2) Load 29(inF0)
-             457:   24(fvec2) Fwidth 456
-                              Store 455(r038) 457
+             436:    6(float) ExtInst 1(GLSL.std.450) 67(Distance) 434 435
+                              Store 433(r026) 436
+             438:   24(fvec2) Load 29(inF0)
+             439:   24(fvec2) Load 30(inF1)
+             440:    6(float) Dot 438 439
+                              Store 437(r027) 440
+             442:   24(fvec2) Load 29(inF0)
+             443:   24(fvec2) ExtInst 1(GLSL.std.450) 27(Exp) 442
+                              Store 441(r028) 443
+             445:   24(fvec2) Load 29(inF0)
+             446:   24(fvec2) ExtInst 1(GLSL.std.450) 29(Exp2) 445
+                              Store 444(r029) 446
+             448:   24(fvec2) Load 29(inF0)
+             449:   24(fvec2) Load 30(inF1)
+             450:   24(fvec2) Load 31(inF2)
+             451:   24(fvec2) ExtInst 1(GLSL.std.450) 70(FaceForward) 448 449 450
+                              Store 447(r030) 451
+             456:   26(ivec2) ExtInst 1(GLSL.std.450) 75(FindUMsb) 455
+                              Store 452(r031) 456
+             458:   26(ivec2) ExtInst 1(GLSL.std.450) 73(FindILsb) 455
+                              Store 457(r032) 458
              460:   24(fvec2) Load 29(inF0)
-             461:  339(bvec2) IsInf 460
-                              Store 459(r039) 461
+             461:   24(fvec2) ExtInst 1(GLSL.std.450) 8(Floor) 460
+                              Store 459(r033) 461
              463:   24(fvec2) Load 29(inF0)
-             464:  339(bvec2) IsNan 463
-                              Store 462(r040) 464
-             466:   24(fvec2) Load 29(inF0)
-             467:   24(fvec2) Load 30(inF1)
-             468:   24(fvec2) ExtInst 1(GLSL.std.450) 53(Ldexp) 466 467
-                              Store 465(r041) 468
+             464:   24(fvec2) Load 30(inF1)
+             465:   24(fvec2) FMod 463 464
+                              Store 462(r035) 465
+             467:   24(fvec2) Load 29(inF0)
+             468:   24(fvec2) ExtInst 1(GLSL.std.450) 10(Fract) 467
+                              Store 466(r036) 468
              470:   24(fvec2) Load 29(inF0)
-             471:   24(fvec2) Load 30(inF1)
-             472:   24(fvec2) Load 31(inF2)
-             473:   24(fvec2) ExtInst 1(GLSL.std.450) 46(FMix) 470 471 472
-                              Store 469(r039a) 473
-             475:   24(fvec2) Load 29(inF0)
-             476:    6(float) ExtInst 1(GLSL.std.450) 66(Length) 475
-                              Store 474(r042) 476
-             478:   24(fvec2) Load 29(inF0)
-             479:   24(fvec2) ExtInst 1(GLSL.std.450) 28(Log) 478
-                              Store 477(r043) 479
-             481:   24(fvec2) Load 29(inF0)
-             482:   24(fvec2) ExtInst 1(GLSL.std.450) 30(Log2) 481
-             483:   24(fvec2) VectorTimesScalar 482 262
-                              Store 480(r044) 483
-             485:   24(fvec2) Load 29(inF0)
-             486:   24(fvec2) ExtInst 1(GLSL.std.450) 30(Log2) 485
-                              Store 484(r045) 486
-             488:   24(fvec2) Load 29(inF0)
-             489:   24(fvec2) Load 30(inF1)
-             490:   24(fvec2) ExtInst 1(GLSL.std.450) 40(FMax) 488 489
-                              Store 487(r046) 490
+             471:   24(fvec2) Fwidth 470
+                              Store 469(r038) 471
+             474:   24(fvec2) Load 29(inF0)
+             475:  345(bvec2) IsInf 474
+                              Store 473(r039) 475
+             477:   24(fvec2) Load 29(inF0)
+             478:  345(bvec2) IsNan 477
+                              Store 476(r040) 478
+             480:   24(fvec2) Load 29(inF0)
+             481:   24(fvec2) Load 30(inF1)
+             482:   24(fvec2) ExtInst 1(GLSL.std.450) 53(Ldexp) 480 481
+                              Store 479(r041) 482
+             484:   24(fvec2) Load 29(inF0)
+             485:   24(fvec2) Load 30(inF1)
+             486:   24(fvec2) Load 31(inF2)
+             487:   24(fvec2) ExtInst 1(GLSL.std.450) 46(FMix) 484 485 486
+                              Store 483(r039a) 487
+             489:   24(fvec2) Load 29(inF0)
+             490:    6(float) ExtInst 1(GLSL.std.450) 66(Length) 489
+                              Store 488(r042) 490
              492:   24(fvec2) Load 29(inF0)
-             493:   24(fvec2) Load 30(inF1)
-             494:   24(fvec2) ExtInst 1(GLSL.std.450) 37(FMin) 492 493
-                              Store 491(r047) 494
-             496:   24(fvec2) Load 29(inF0)
-             497:   24(fvec2) ExtInst 1(GLSL.std.450) 69(Normalize) 496
-                              Store 495(r048) 497
+             493:   24(fvec2) ExtInst 1(GLSL.std.450) 28(Log) 492
+                              Store 491(r043) 493
+             495:   24(fvec2) Load 29(inF0)
+             496:   24(fvec2) ExtInst 1(GLSL.std.450) 30(Log2) 495
+             497:   24(fvec2) VectorTimesScalar 496 268
+                              Store 494(r044) 497
              499:   24(fvec2) Load 29(inF0)
-             500:   24(fvec2) Load 30(inF1)
-             501:   24(fvec2) ExtInst 1(GLSL.std.450) 26(Pow) 499 500
-                              Store 498(r049) 501
-             503:   24(fvec2) Load 29(inF0)
-             504:   24(fvec2) ExtInst 1(GLSL.std.450) 11(Radians) 503
-                              Store 502(r050) 504
+             500:   24(fvec2) ExtInst 1(GLSL.std.450) 30(Log2) 499
+                              Store 498(r045) 500
+             502:   24(fvec2) Load 29(inF0)
+             503:   24(fvec2) Load 30(inF1)
+             504:   24(fvec2) ExtInst 1(GLSL.std.450) 40(FMax) 502 503
+                              Store 501(r046) 504
              506:   24(fvec2) Load 29(inF0)
-             507:   24(fvec2) CompositeConstruct 283 283
-             508:   24(fvec2) FDiv 507 506
-                              Store 505(r051) 508
+             507:   24(fvec2) Load 30(inF1)
+             508:   24(fvec2) ExtInst 1(GLSL.std.450) 37(FMin) 506 507
+                              Store 505(r047) 508
              510:   24(fvec2) Load 29(inF0)
-             511:   24(fvec2) Load 30(inF1)
-             512:   24(fvec2) ExtInst 1(GLSL.std.450) 71(Reflect) 510 511
-                              Store 509(r052) 512
-             514:   24(fvec2) Load 29(inF0)
-             515:   24(fvec2) Load 30(inF1)
-             517:   24(fvec2) ExtInst 1(GLSL.std.450) 72(Refract) 514 515 516
-                              Store 513(r053) 517
-             522:   26(ivec2) BitReverse 521
-                              Store 518(r054) 522
+             511:   24(fvec2) ExtInst 1(GLSL.std.450) 69(Normalize) 510
+                              Store 509(r048) 511
+             513:   24(fvec2) Load 29(inF0)
+             514:   24(fvec2) Load 30(inF1)
+             515:   24(fvec2) ExtInst 1(GLSL.std.450) 26(Pow) 513 514
+                              Store 512(r049) 515
+             517:   24(fvec2) Load 29(inF0)
+             518:   24(fvec2) ExtInst 1(GLSL.std.450) 11(Radians) 517
+                              Store 516(r050) 518
+             520:   24(fvec2) Load 29(inF0)
+             521:   24(fvec2) CompositeConstruct 289 289
+             522:   24(fvec2) FDiv 521 520
+                              Store 519(r051) 522
              524:   24(fvec2) Load 29(inF0)
-             525:   24(fvec2) ExtInst 1(GLSL.std.450) 2(RoundEven) 524
-                              Store 523(r055) 525
-             527:   24(fvec2) Load 29(inF0)
-             528:   24(fvec2) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 527
-                              Store 526(r056) 528
-             530:   24(fvec2) Load 29(inF0)
-             531:   24(fvec2) CompositeConstruct 139 139
-             532:   24(fvec2) CompositeConstruct 283 283
-             533:   24(fvec2) ExtInst 1(GLSL.std.450) 43(FClamp) 530 531 532
-                              Store 529(r057) 533
-             535:   24(fvec2) Load 29(inF0)
-             536:   24(fvec2) ExtInst 1(GLSL.std.450) 6(FSign) 535
-                              Store 534(r058) 536
+             525:   24(fvec2) Load 30(inF1)
+             526:   24(fvec2) ExtInst 1(GLSL.std.450) 71(Reflect) 524 525
+                              Store 523(r052) 526
+             528:   24(fvec2) Load 29(inF0)
+             529:   24(fvec2) Load 30(inF1)
+             531:   24(fvec2) ExtInst 1(GLSL.std.450) 72(Refract) 528 529 530
+                              Store 527(r053) 531
+             536:   26(ivec2) BitReverse 535
+                              Store 532(r054) 536
              538:   24(fvec2) Load 29(inF0)
-             539:   24(fvec2) ExtInst 1(GLSL.std.450) 13(Sin) 538
-                              Store 537(r059) 539
-             540:   24(fvec2) Load 29(inF0)
-             541:   24(fvec2) ExtInst 1(GLSL.std.450) 13(Sin) 540
-                              Store 30(inF1) 541
-             542:   24(fvec2) Load 29(inF0)
-             543:   24(fvec2) ExtInst 1(GLSL.std.450) 14(Cos) 542
-                              Store 31(inF2) 543
-             545:   24(fvec2) Load 29(inF0)
-             546:   24(fvec2) ExtInst 1(GLSL.std.450) 19(Sinh) 545
-                              Store 544(r060) 546
-             548:   24(fvec2) Load 29(inF0)
-             549:   24(fvec2) Load 30(inF1)
-             550:   24(fvec2) Load 31(inF2)
-             551:   24(fvec2) ExtInst 1(GLSL.std.450) 49(SmoothStep) 548 549 550
-                              Store 547(r061) 551
-             553:   24(fvec2) Load 29(inF0)
-             554:   24(fvec2) ExtInst 1(GLSL.std.450) 31(Sqrt) 553
-                              Store 552(r062) 554
+             539:   24(fvec2) ExtInst 1(GLSL.std.450) 2(RoundEven) 538
+                              Store 537(r055) 539
+             541:   24(fvec2) Load 29(inF0)
+             542:   24(fvec2) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 541
+                              Store 540(r056) 542
+             544:   24(fvec2) Load 29(inF0)
+             545:   24(fvec2) CompositeConstruct 139 139
+             546:   24(fvec2) CompositeConstruct 289 289
+             547:   24(fvec2) ExtInst 1(GLSL.std.450) 43(FClamp) 544 545 546
+                              Store 543(r057) 547
+             549:   24(fvec2) Load 29(inF0)
+             550:   24(fvec2) ExtInst 1(GLSL.std.450) 6(FSign) 549
+                              Store 548(r058) 550
+             552:   24(fvec2) Load 29(inF0)
+             553:   24(fvec2) ExtInst 1(GLSL.std.450) 13(Sin) 552
+                              Store 551(r059) 553
+             554:   24(fvec2) Load 29(inF0)
+             555:   24(fvec2) ExtInst 1(GLSL.std.450) 13(Sin) 554
+                              Store 30(inF1) 555
              556:   24(fvec2) Load 29(inF0)
-             557:   24(fvec2) Load 30(inF1)
-             558:   24(fvec2) ExtInst 1(GLSL.std.450) 48(Step) 556 557
-                              Store 555(r063) 558
-             560:   24(fvec2) Load 29(inF0)
-             561:   24(fvec2) ExtInst 1(GLSL.std.450) 15(Tan) 560
-                              Store 559(r064) 561
-             563:   24(fvec2) Load 29(inF0)
-             564:   24(fvec2) ExtInst 1(GLSL.std.450) 21(Tanh) 563
-                              Store 562(r065) 564
-             566:   24(fvec2) Load 29(inF0)
-             567:   24(fvec2) ExtInst 1(GLSL.std.450) 3(Trunc) 566
-                              Store 565(r066) 567
-                              ReturnValue 568
+             557:   24(fvec2) ExtInst 1(GLSL.std.450) 14(Cos) 556
+                              Store 31(inF2) 557
+             559:   24(fvec2) Load 29(inF0)
+             560:   24(fvec2) ExtInst 1(GLSL.std.450) 19(Sinh) 559
+                              Store 558(r060) 560
+             562:   24(fvec2) Load 29(inF0)
+             563:   24(fvec2) Load 30(inF1)
+             564:   24(fvec2) Load 31(inF2)
+             565:   24(fvec2) ExtInst 1(GLSL.std.450) 49(SmoothStep) 562 563 564
+                              Store 561(r061) 565
+             567:   24(fvec2) Load 29(inF0)
+             568:   24(fvec2) ExtInst 1(GLSL.std.450) 31(Sqrt) 567
+                              Store 566(r062) 568
+             570:   24(fvec2) Load 29(inF0)
+             571:   24(fvec2) Load 30(inF1)
+             572:   24(fvec2) ExtInst 1(GLSL.std.450) 48(Step) 570 571
+                              Store 569(r063) 572
+             574:   24(fvec2) Load 29(inF0)
+             575:   24(fvec2) ExtInst 1(GLSL.std.450) 15(Tan) 574
+                              Store 573(r064) 575
+             577:   24(fvec2) Load 29(inF0)
+             578:   24(fvec2) ExtInst 1(GLSL.std.450) 21(Tanh) 577
+                              Store 576(r065) 578
+             580:   24(fvec2) Load 29(inF0)
+             581:   24(fvec2) ExtInst 1(GLSL.std.450) 3(Trunc) 580
+                              Store 579(r066) 581
+                              ReturnValue 582
                               FunctionEnd
 46(PixelShaderFunction3(vf3;vf3;vf3;vu3;vu3;):   36(fvec3) Function None 40
         41(inF0):     37(ptr) FunctionParameter
@@ -6772,301 +6873,309 @@
         44(inU0):     39(ptr) FunctionParameter
         45(inU1):     39(ptr) FunctionParameter
               47:             Label
-       571(r000):    136(ptr) Variable Function
-       577(r001):     37(ptr) Variable Function
-       580(r002):     37(ptr) Variable Function
-       583(r003):    136(ptr) Variable Function
-       587(r004):     37(ptr) Variable Function
-       592(r005):    591(ptr) Variable Function
-       595(r006):     39(ptr) Variable Function
-       598(r007):     37(ptr) Variable Function
-       601(r009):     37(ptr) Variable Function
-       604(r010):     37(ptr) Variable Function
-       608(r011):     37(ptr) Variable Function
-       611(r012):     37(ptr) Variable Function
-       622(r013):     37(ptr) Variable Function
-       625(r014):     37(ptr) Variable Function
-       628(r015):     39(ptr) Variable Function
-       633(r016):     37(ptr) Variable Function
-       637(r017):     37(ptr) Variable Function
-       640(r018):     37(ptr) Variable Function
-       643(r019):     37(ptr) Variable Function
-       646(r020):     37(ptr) Variable Function
-       649(r021):     37(ptr) Variable Function
-       652(r022):     37(ptr) Variable Function
-       655(r023):     37(ptr) Variable Function
-       658(r024):      7(ptr) Variable Function
-       662(r025):      7(ptr) Variable Function
-       666(r029):     37(ptr) Variable Function
-       669(r030):     37(ptr) Variable Function
-       672(r031):     37(ptr) Variable Function
-       677(r032):     39(ptr) Variable Function
-       681(r033):     39(ptr) Variable Function
-       683(r034):     37(ptr) Variable Function
-       686(r036):     37(ptr) Variable Function
-       690(r037):     37(ptr) Variable Function
-       693(r039):     37(ptr) Variable Function
-       697(r040):    696(ptr) Variable Function
-       700(r041):    696(ptr) Variable Function
-       703(r042):     37(ptr) Variable Function
-      707(r039a):     37(ptr) Variable Function
-      712(r039b):     37(ptr) Variable Function
-       718(r043):      7(ptr) Variable Function
-       721(r044):     37(ptr) Variable Function
-       724(r045):     37(ptr) Variable Function
-       728(r046):     37(ptr) Variable Function
-       731(r047):     37(ptr) Variable Function
-       735(r048):     37(ptr) Variable Function
-       739(r049):     37(ptr) Variable Function
-       742(r050):     37(ptr) Variable Function
-       746(r051):     37(ptr) Variable Function
-       749(r052):     37(ptr) Variable Function
-       753(r053):     37(ptr) Variable Function
-       757(r054):     37(ptr) Variable Function
-       761(r055):     39(ptr) Variable Function
-       764(r056):     37(ptr) Variable Function
-       767(r057):     37(ptr) Variable Function
-       770(r058):     37(ptr) Variable Function
-       775(r059):     37(ptr) Variable Function
-       778(r060):     37(ptr) Variable Function
-       785(r061):     37(ptr) Variable Function
-       788(r062):     37(ptr) Variable Function
-       793(r063):     37(ptr) Variable Function
-       796(r064):     37(ptr) Variable Function
-       800(r065):     37(ptr) Variable Function
-       803(r066):     37(ptr) Variable Function
-       806(r067):     37(ptr) Variable Function
-             572:   36(fvec3) Load 41(inF0)
-             575:  573(bvec3) FOrdNotEqual 572 574
-             576:   135(bool) All 575
-                              Store 571(r000) 576
-             578:   36(fvec3) Load 41(inF0)
-             579:   36(fvec3) ExtInst 1(GLSL.std.450) 4(FAbs) 578
-                              Store 577(r001) 579
-             581:   36(fvec3) Load 41(inF0)
-             582:   36(fvec3) ExtInst 1(GLSL.std.450) 17(Acos) 581
-                              Store 580(r002) 582
-             584:   36(fvec3) Load 41(inF0)
-             585:  573(bvec3) FOrdNotEqual 584 574
-             586:   135(bool) Any 585
-                              Store 583(r003) 586
-             588:   36(fvec3) Load 41(inF0)
-             589:   36(fvec3) ExtInst 1(GLSL.std.450) 16(Asin) 588
-                              Store 587(r004) 589
-             593:   36(fvec3) Load 41(inF0)
-             594:  590(ivec3) Bitcast 593
-                              Store 592(r005) 594
-             596:   36(fvec3) Load 41(inF0)
-             597:   38(ivec3) Bitcast 596
-                              Store 595(r006) 597
-             599:   38(ivec3) Load 44(inU0)
-             600:   36(fvec3) Bitcast 599
-                              Store 598(r007) 600
+       585(r000):    136(ptr) Variable Function
+       591(r001):     37(ptr) Variable Function
+       594(r002):     37(ptr) Variable Function
+       597(r003):    136(ptr) Variable Function
+       601(r004):     37(ptr) Variable Function
+       606(r005):    605(ptr) Variable Function
+       609(r006):     39(ptr) Variable Function
+       612(r007):     37(ptr) Variable Function
+       615(r009):     37(ptr) Variable Function
+       618(r010):     37(ptr) Variable Function
+       622(r011):     37(ptr) Variable Function
+       625(r012):     37(ptr) Variable Function
+       643(r013):     37(ptr) Variable Function
+       646(r014):     37(ptr) Variable Function
+       649(r015):     39(ptr) Variable Function
+       654(r016):     37(ptr) Variable Function
+       658(r017):     37(ptr) Variable Function
+       661(r018):     37(ptr) Variable Function
+       664(r019):     37(ptr) Variable Function
+       667(r020):     37(ptr) Variable Function
+       670(r021):     37(ptr) Variable Function
+       673(r022):     37(ptr) Variable Function
+       676(r023):     37(ptr) Variable Function
+       679(r024):      7(ptr) Variable Function
+       683(r025):      7(ptr) Variable Function
+       687(r029):     37(ptr) Variable Function
+       690(r030):     37(ptr) Variable Function
+       693(r031):     37(ptr) Variable Function
+       698(r032):     39(ptr) Variable Function
+       702(r033):     39(ptr) Variable Function
+       704(r034):     37(ptr) Variable Function
+       707(r036):     37(ptr) Variable Function
+       711(r037):     37(ptr) Variable Function
+       714(r039):     37(ptr) Variable Function
+       718(r040):    717(ptr) Variable Function
+       721(r041):    717(ptr) Variable Function
+       724(r042):     37(ptr) Variable Function
+      728(r039a):     37(ptr) Variable Function
+      733(r039b):     37(ptr) Variable Function
+       739(r043):      7(ptr) Variable Function
+       742(r044):     37(ptr) Variable Function
+       745(r045):     37(ptr) Variable Function
+       749(r046):     37(ptr) Variable Function
+       752(r047):     37(ptr) Variable Function
+       756(r048):     37(ptr) Variable Function
+       760(r049):     37(ptr) Variable Function
+       763(r050):     37(ptr) Variable Function
+       767(r051):     37(ptr) Variable Function
+       770(r052):     37(ptr) Variable Function
+       774(r053):     37(ptr) Variable Function
+       778(r054):     37(ptr) Variable Function
+       782(r055):     39(ptr) Variable Function
+       785(r056):     37(ptr) Variable Function
+       788(r057):     37(ptr) Variable Function
+       791(r058):     37(ptr) Variable Function
+       796(r059):     37(ptr) Variable Function
+       799(r060):     37(ptr) Variable Function
+       806(r061):     37(ptr) Variable Function
+       809(r062):     37(ptr) Variable Function
+       814(r063):     37(ptr) Variable Function
+       817(r064):     37(ptr) Variable Function
+       821(r065):     37(ptr) Variable Function
+       824(r066):     37(ptr) Variable Function
+       827(r067):     37(ptr) Variable Function
+             586:   36(fvec3) Load 41(inF0)
+             589:  587(bvec3) FOrdNotEqual 586 588
+             590:   135(bool) All 589
+                              Store 585(r000) 590
+             592:   36(fvec3) Load 41(inF0)
+             593:   36(fvec3) ExtInst 1(GLSL.std.450) 4(FAbs) 592
+                              Store 591(r001) 593
+             595:   36(fvec3) Load 41(inF0)
+             596:   36(fvec3) ExtInst 1(GLSL.std.450) 17(Acos) 595
+                              Store 594(r002) 596
+             598:   36(fvec3) Load 41(inF0)
+             599:  587(bvec3) FOrdNotEqual 598 588
+             600:   135(bool) Any 599
+                              Store 597(r003) 600
              602:   36(fvec3) Load 41(inF0)
-             603:   36(fvec3) ExtInst 1(GLSL.std.450) 18(Atan) 602
-                              Store 601(r009) 603
-             605:   36(fvec3) Load 41(inF0)
-             606:   36(fvec3) Load 42(inF1)
-             607:   36(fvec3) ExtInst 1(GLSL.std.450) 25(Atan2) 605 606
-                              Store 604(r010) 607
-             609:   36(fvec3) Load 41(inF0)
-             610:   36(fvec3) ExtInst 1(GLSL.std.450) 9(Ceil) 609
-                              Store 608(r011) 610
-             612:   36(fvec3) Load 41(inF0)
-             613:   36(fvec3) Load 42(inF1)
-             614:   36(fvec3) Load 43(inF2)
-             615:   36(fvec3) ExtInst 1(GLSL.std.450) 43(FClamp) 612 613 614
-                              Store 611(r012) 615
+             603:   36(fvec3) ExtInst 1(GLSL.std.450) 16(Asin) 602
+                              Store 601(r004) 603
+             607:   36(fvec3) Load 41(inF0)
+             608:  604(ivec3) Bitcast 607
+                              Store 606(r005) 608
+             610:   36(fvec3) Load 41(inF0)
+             611:   38(ivec3) Bitcast 610
+                              Store 609(r006) 611
+             613:   38(ivec3) Load 44(inU0)
+             614:   36(fvec3) Bitcast 613
+                              Store 612(r007) 614
              616:   36(fvec3) Load 41(inF0)
-             617:  573(bvec3) FOrdLessThan 616 574
-             618:   135(bool) Any 617
-                              SelectionMerge 620 None
-                              BranchConditional 618 619 620
-             619:               Label
-                                Kill
-             620:             Label
+             617:   36(fvec3) ExtInst 1(GLSL.std.450) 18(Atan) 616
+                              Store 615(r009) 617
+             619:   36(fvec3) Load 41(inF0)
+             620:   36(fvec3) Load 42(inF1)
+             621:   36(fvec3) ExtInst 1(GLSL.std.450) 25(Atan2) 619 620
+                              Store 618(r010) 621
              623:   36(fvec3) Load 41(inF0)
-             624:   36(fvec3) ExtInst 1(GLSL.std.450) 14(Cos) 623
-                              Store 622(r013) 624
+             624:   36(fvec3) ExtInst 1(GLSL.std.450) 9(Ceil) 623
+                              Store 622(r011) 624
              626:   36(fvec3) Load 41(inF0)
-             627:   36(fvec3) ExtInst 1(GLSL.std.450) 20(Cosh) 626
-                              Store 625(r014) 627
-             632:   38(ivec3) BitCount 631
-                              Store 628(r015) 632
-             634:   36(fvec3) Load 41(inF0)
-             635:   36(fvec3) Load 42(inF1)
-             636:   36(fvec3) ExtInst 1(GLSL.std.450) 68(Cross) 634 635
-                              Store 633(r016) 636
-             638:   36(fvec3) Load 41(inF0)
-             639:   36(fvec3) DPdx 638
-                              Store 637(r017) 639
-             641:   36(fvec3) Load 41(inF0)
-             642:   36(fvec3) DPdxCoarse 641
-                              Store 640(r018) 642
+             627:   36(fvec3) Load 42(inF1)
+             628:   36(fvec3) Load 43(inF2)
+             629:   36(fvec3) ExtInst 1(GLSL.std.450) 43(FClamp) 626 627 628
+                              Store 625(r012) 629
+             630:   36(fvec3) Load 41(inF0)
+             631:  587(bvec3) FOrdLessThan 630 588
+             632:   135(bool) Any 631
+                              SelectionMerge 634 None
+                              BranchConditional 632 633 634
+             633:               Label
+                                Kill
+             634:             Label
+             636:   38(ivec3) Load 44(inU0)
+             638:  587(bvec3) ULessThan 636 637
+             639:   135(bool) Any 638
+                              SelectionMerge 641 None
+                              BranchConditional 639 640 641
+             640:               Label
+                                Kill
+             641:             Label
              644:   36(fvec3) Load 41(inF0)
-             645:   36(fvec3) DPdxFine 644
-                              Store 643(r019) 645
+             645:   36(fvec3) ExtInst 1(GLSL.std.450) 14(Cos) 644
+                              Store 643(r013) 645
              647:   36(fvec3) Load 41(inF0)
-             648:   36(fvec3) DPdy 647
-                              Store 646(r020) 648
-             650:   36(fvec3) Load 41(inF0)
-             651:   36(fvec3) DPdyCoarse 650
-                              Store 649(r021) 651
-             653:   36(fvec3) Load 41(inF0)
-             654:   36(fvec3) DPdyFine 653
-                              Store 652(r022) 654
-             656:   36(fvec3) Load 41(inF0)
-             657:   36(fvec3) ExtInst 1(GLSL.std.450) 12(Degrees) 656
-                              Store 655(r023) 657
+             648:   36(fvec3) ExtInst 1(GLSL.std.450) 20(Cosh) 647
+                              Store 646(r014) 648
+             653:   38(ivec3) BitCount 652
+                              Store 649(r015) 653
+             655:   36(fvec3) Load 41(inF0)
+             656:   36(fvec3) Load 42(inF1)
+             657:   36(fvec3) ExtInst 1(GLSL.std.450) 68(Cross) 655 656
+                              Store 654(r016) 657
              659:   36(fvec3) Load 41(inF0)
-             660:   36(fvec3) Load 42(inF1)
-             661:    6(float) ExtInst 1(GLSL.std.450) 67(Distance) 659 660
-                              Store 658(r024) 661
-             663:   36(fvec3) Load 41(inF0)
-             664:   36(fvec3) Load 42(inF1)
-             665:    6(float) Dot 663 664
-                              Store 662(r025) 665
-             667:   36(fvec3) Load 41(inF0)
-             668:   36(fvec3) ExtInst 1(GLSL.std.450) 27(Exp) 667
-                              Store 666(r029) 668
-             670:   36(fvec3) Load 41(inF0)
-             671:   36(fvec3) ExtInst 1(GLSL.std.450) 29(Exp2) 670
-                              Store 669(r030) 671
-             673:   36(fvec3) Load 41(inF0)
-             674:   36(fvec3) Load 42(inF1)
-             675:   36(fvec3) Load 43(inF2)
-             676:   36(fvec3) ExtInst 1(GLSL.std.450) 70(FaceForward) 673 674 675
-                              Store 672(r031) 676
-             680:   38(ivec3) ExtInst 1(GLSL.std.450) 75(FindUMsb) 679
-                              Store 677(r032) 680
-             682:   38(ivec3) ExtInst 1(GLSL.std.450) 73(FindILsb) 679
-                              Store 681(r033) 682
+             660:   36(fvec3) DPdx 659
+                              Store 658(r017) 660
+             662:   36(fvec3) Load 41(inF0)
+             663:   36(fvec3) DPdxCoarse 662
+                              Store 661(r018) 663
+             665:   36(fvec3) Load 41(inF0)
+             666:   36(fvec3) DPdxFine 665
+                              Store 664(r019) 666
+             668:   36(fvec3) Load 41(inF0)
+             669:   36(fvec3) DPdy 668
+                              Store 667(r020) 669
+             671:   36(fvec3) Load 41(inF0)
+             672:   36(fvec3) DPdyCoarse 671
+                              Store 670(r021) 672
+             674:   36(fvec3) Load 41(inF0)
+             675:   36(fvec3) DPdyFine 674
+                              Store 673(r022) 675
+             677:   36(fvec3) Load 41(inF0)
+             678:   36(fvec3) ExtInst 1(GLSL.std.450) 12(Degrees) 677
+                              Store 676(r023) 678
+             680:   36(fvec3) Load 41(inF0)
+             681:   36(fvec3) Load 42(inF1)
+             682:    6(float) ExtInst 1(GLSL.std.450) 67(Distance) 680 681
+                              Store 679(r024) 682
              684:   36(fvec3) Load 41(inF0)
-             685:   36(fvec3) ExtInst 1(GLSL.std.450) 8(Floor) 684
-                              Store 683(r034) 685
-             687:   36(fvec3) Load 41(inF0)
-             688:   36(fvec3) Load 42(inF1)
-             689:   36(fvec3) FMod 687 688
-                              Store 686(r036) 689
+             685:   36(fvec3) Load 42(inF1)
+             686:    6(float) Dot 684 685
+                              Store 683(r025) 686
+             688:   36(fvec3) Load 41(inF0)
+             689:   36(fvec3) ExtInst 1(GLSL.std.450) 27(Exp) 688
+                              Store 687(r029) 689
              691:   36(fvec3) Load 41(inF0)
-             692:   36(fvec3) ExtInst 1(GLSL.std.450) 10(Fract) 691
-                              Store 690(r037) 692
+             692:   36(fvec3) ExtInst 1(GLSL.std.450) 29(Exp2) 691
+                              Store 690(r030) 692
              694:   36(fvec3) Load 41(inF0)
-             695:   36(fvec3) Fwidth 694
-                              Store 693(r039) 695
-             698:   36(fvec3) Load 41(inF0)
-             699:  573(bvec3) IsInf 698
-                              Store 697(r040) 699
-             701:   36(fvec3) Load 41(inF0)
-             702:  573(bvec3) IsNan 701
-                              Store 700(r041) 702
-             704:   36(fvec3) Load 41(inF0)
-             705:   36(fvec3) Load 42(inF1)
-             706:   36(fvec3) ExtInst 1(GLSL.std.450) 53(Ldexp) 704 705
-                              Store 703(r042) 706
+             695:   36(fvec3) Load 42(inF1)
+             696:   36(fvec3) Load 43(inF2)
+             697:   36(fvec3) ExtInst 1(GLSL.std.450) 70(FaceForward) 694 695 696
+                              Store 693(r031) 697
+             701:   38(ivec3) ExtInst 1(GLSL.std.450) 75(FindUMsb) 700
+                              Store 698(r032) 701
+             703:   38(ivec3) ExtInst 1(GLSL.std.450) 73(FindILsb) 700
+                              Store 702(r033) 703
+             705:   36(fvec3) Load 41(inF0)
+             706:   36(fvec3) ExtInst 1(GLSL.std.450) 8(Floor) 705
+                              Store 704(r034) 706
              708:   36(fvec3) Load 41(inF0)
              709:   36(fvec3) Load 42(inF1)
-             710:   36(fvec3) Load 43(inF2)
-             711:   36(fvec3) ExtInst 1(GLSL.std.450) 46(FMix) 708 709 710
-                              Store 707(r039a) 711
-             713:   36(fvec3) Load 41(inF0)
-             714:   36(fvec3) Load 42(inF1)
-             716:   36(fvec3) CompositeConstruct 715 715 715
-             717:   36(fvec3) ExtInst 1(GLSL.std.450) 46(FMix) 713 714 716
-                              Store 712(r039b) 717
+             710:   36(fvec3) FMod 708 709
+                              Store 707(r036) 710
+             712:   36(fvec3) Load 41(inF0)
+             713:   36(fvec3) ExtInst 1(GLSL.std.450) 10(Fract) 712
+                              Store 711(r037) 713
+             715:   36(fvec3) Load 41(inF0)
+             716:   36(fvec3) Fwidth 715
+                              Store 714(r039) 716
              719:   36(fvec3) Load 41(inF0)
-             720:    6(float) ExtInst 1(GLSL.std.450) 66(Length) 719
-                              Store 718(r043) 720
+             720:  587(bvec3) IsInf 719
+                              Store 718(r040) 720
              722:   36(fvec3) Load 41(inF0)
-             723:   36(fvec3) ExtInst 1(GLSL.std.450) 28(Log) 722
-                              Store 721(r044) 723
+             723:  587(bvec3) IsNan 722
+                              Store 721(r041) 723
              725:   36(fvec3) Load 41(inF0)
-             726:   36(fvec3) ExtInst 1(GLSL.std.450) 30(Log2) 725
-             727:   36(fvec3) VectorTimesScalar 726 262
-                              Store 724(r045) 727
+             726:   36(fvec3) Load 42(inF1)
+             727:   36(fvec3) ExtInst 1(GLSL.std.450) 53(Ldexp) 725 726
+                              Store 724(r042) 727
              729:   36(fvec3) Load 41(inF0)
-             730:   36(fvec3) ExtInst 1(GLSL.std.450) 30(Log2) 729
-                              Store 728(r046) 730
-             732:   36(fvec3) Load 41(inF0)
-             733:   36(fvec3) Load 42(inF1)
-             734:   36(fvec3) ExtInst 1(GLSL.std.450) 40(FMax) 732 733
-                              Store 731(r047) 734
-             736:   36(fvec3) Load 41(inF0)
-             737:   36(fvec3) Load 42(inF1)
-             738:   36(fvec3) ExtInst 1(GLSL.std.450) 37(FMin) 736 737
-                              Store 735(r048) 738
+             730:   36(fvec3) Load 42(inF1)
+             731:   36(fvec3) Load 43(inF2)
+             732:   36(fvec3) ExtInst 1(GLSL.std.450) 46(FMix) 729 730 731
+                              Store 728(r039a) 732
+             734:   36(fvec3) Load 41(inF0)
+             735:   36(fvec3) Load 42(inF1)
+             737:   36(fvec3) CompositeConstruct 736 736 736
+             738:   36(fvec3) ExtInst 1(GLSL.std.450) 46(FMix) 734 735 737
+                              Store 733(r039b) 738
              740:   36(fvec3) Load 41(inF0)
-             741:   36(fvec3) ExtInst 1(GLSL.std.450) 69(Normalize) 740
-                              Store 739(r049) 741
+             741:    6(float) ExtInst 1(GLSL.std.450) 66(Length) 740
+                              Store 739(r043) 741
              743:   36(fvec3) Load 41(inF0)
-             744:   36(fvec3) Load 42(inF1)
-             745:   36(fvec3) ExtInst 1(GLSL.std.450) 26(Pow) 743 744
-                              Store 742(r050) 745
-             747:   36(fvec3) Load 41(inF0)
-             748:   36(fvec3) ExtInst 1(GLSL.std.450) 11(Radians) 747
-                              Store 746(r051) 748
+             744:   36(fvec3) ExtInst 1(GLSL.std.450) 28(Log) 743
+                              Store 742(r044) 744
+             746:   36(fvec3) Load 41(inF0)
+             747:   36(fvec3) ExtInst 1(GLSL.std.450) 30(Log2) 746
+             748:   36(fvec3) VectorTimesScalar 747 268
+                              Store 745(r045) 748
              750:   36(fvec3) Load 41(inF0)
-             751:   36(fvec3) CompositeConstruct 283 283 283
-             752:   36(fvec3) FDiv 751 750
-                              Store 749(r052) 752
-             754:   36(fvec3) Load 41(inF0)
-             755:   36(fvec3) Load 42(inF1)
-             756:   36(fvec3) ExtInst 1(GLSL.std.450) 71(Reflect) 754 755
-                              Store 753(r053) 756
-             758:   36(fvec3) Load 41(inF0)
-             759:   36(fvec3) Load 42(inF1)
-             760:   36(fvec3) ExtInst 1(GLSL.std.450) 72(Refract) 758 759 516
-                              Store 757(r054) 760
-             763:   38(ivec3) BitReverse 762
-                              Store 761(r055) 763
-             765:   36(fvec3) Load 41(inF0)
-             766:   36(fvec3) ExtInst 1(GLSL.std.450) 2(RoundEven) 765
-                              Store 764(r056) 766
+             751:   36(fvec3) ExtInst 1(GLSL.std.450) 30(Log2) 750
+                              Store 749(r046) 751
+             753:   36(fvec3) Load 41(inF0)
+             754:   36(fvec3) Load 42(inF1)
+             755:   36(fvec3) ExtInst 1(GLSL.std.450) 40(FMax) 753 754
+                              Store 752(r047) 755
+             757:   36(fvec3) Load 41(inF0)
+             758:   36(fvec3) Load 42(inF1)
+             759:   36(fvec3) ExtInst 1(GLSL.std.450) 37(FMin) 757 758
+                              Store 756(r048) 759
+             761:   36(fvec3) Load 41(inF0)
+             762:   36(fvec3) ExtInst 1(GLSL.std.450) 69(Normalize) 761
+                              Store 760(r049) 762
+             764:   36(fvec3) Load 41(inF0)
+             765:   36(fvec3) Load 42(inF1)
+             766:   36(fvec3) ExtInst 1(GLSL.std.450) 26(Pow) 764 765
+                              Store 763(r050) 766
              768:   36(fvec3) Load 41(inF0)
-             769:   36(fvec3) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 768
-                              Store 767(r057) 769
+             769:   36(fvec3) ExtInst 1(GLSL.std.450) 11(Radians) 768
+                              Store 767(r051) 769
              771:   36(fvec3) Load 41(inF0)
-             772:   36(fvec3) CompositeConstruct 139 139 139
-             773:   36(fvec3) CompositeConstruct 283 283 283
-             774:   36(fvec3) ExtInst 1(GLSL.std.450) 43(FClamp) 771 772 773
-                              Store 770(r058) 774
-             776:   36(fvec3) Load 41(inF0)
-             777:   36(fvec3) ExtInst 1(GLSL.std.450) 6(FSign) 776
-                              Store 775(r059) 777
+             772:   36(fvec3) CompositeConstruct 289 289 289
+             773:   36(fvec3) FDiv 772 771
+                              Store 770(r052) 773
+             775:   36(fvec3) Load 41(inF0)
+             776:   36(fvec3) Load 42(inF1)
+             777:   36(fvec3) ExtInst 1(GLSL.std.450) 71(Reflect) 775 776
+                              Store 774(r053) 777
              779:   36(fvec3) Load 41(inF0)
-             780:   36(fvec3) ExtInst 1(GLSL.std.450) 13(Sin) 779
-                              Store 778(r060) 780
-             781:   36(fvec3) Load 41(inF0)
-             782:   36(fvec3) ExtInst 1(GLSL.std.450) 13(Sin) 781
-                              Store 42(inF1) 782
-             783:   36(fvec3) Load 41(inF0)
-             784:   36(fvec3) ExtInst 1(GLSL.std.450) 14(Cos) 783
-                              Store 43(inF2) 784
+             780:   36(fvec3) Load 42(inF1)
+             781:   36(fvec3) ExtInst 1(GLSL.std.450) 72(Refract) 779 780 530
+                              Store 778(r054) 781
+             784:   38(ivec3) BitReverse 783
+                              Store 782(r055) 784
              786:   36(fvec3) Load 41(inF0)
-             787:   36(fvec3) ExtInst 1(GLSL.std.450) 19(Sinh) 786
-                              Store 785(r061) 787
+             787:   36(fvec3) ExtInst 1(GLSL.std.450) 2(RoundEven) 786
+                              Store 785(r056) 787
              789:   36(fvec3) Load 41(inF0)
-             790:   36(fvec3) Load 42(inF1)
-             791:   36(fvec3) Load 43(inF2)
-             792:   36(fvec3) ExtInst 1(GLSL.std.450) 49(SmoothStep) 789 790 791
-                              Store 788(r062) 792
-             794:   36(fvec3) Load 41(inF0)
-             795:   36(fvec3) ExtInst 1(GLSL.std.450) 31(Sqrt) 794
-                              Store 793(r063) 795
+             790:   36(fvec3) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 789
+                              Store 788(r057) 790
+             792:   36(fvec3) Load 41(inF0)
+             793:   36(fvec3) CompositeConstruct 139 139 139
+             794:   36(fvec3) CompositeConstruct 289 289 289
+             795:   36(fvec3) ExtInst 1(GLSL.std.450) 43(FClamp) 792 793 794
+                              Store 791(r058) 795
              797:   36(fvec3) Load 41(inF0)
-             798:   36(fvec3) Load 42(inF1)
-             799:   36(fvec3) ExtInst 1(GLSL.std.450) 48(Step) 797 798
-                              Store 796(r064) 799
-             801:   36(fvec3) Load 41(inF0)
-             802:   36(fvec3) ExtInst 1(GLSL.std.450) 15(Tan) 801
-                              Store 800(r065) 802
+             798:   36(fvec3) ExtInst 1(GLSL.std.450) 6(FSign) 797
+                              Store 796(r059) 798
+             800:   36(fvec3) Load 41(inF0)
+             801:   36(fvec3) ExtInst 1(GLSL.std.450) 13(Sin) 800
+                              Store 799(r060) 801
+             802:   36(fvec3) Load 41(inF0)
+             803:   36(fvec3) ExtInst 1(GLSL.std.450) 13(Sin) 802
+                              Store 42(inF1) 803
              804:   36(fvec3) Load 41(inF0)
-             805:   36(fvec3) ExtInst 1(GLSL.std.450) 21(Tanh) 804
-                              Store 803(r066) 805
+             805:   36(fvec3) ExtInst 1(GLSL.std.450) 14(Cos) 804
+                              Store 43(inF2) 805
              807:   36(fvec3) Load 41(inF0)
-             808:   36(fvec3) ExtInst 1(GLSL.std.450) 3(Trunc) 807
-                              Store 806(r067) 808
-                              ReturnValue 810
+             808:   36(fvec3) ExtInst 1(GLSL.std.450) 19(Sinh) 807
+                              Store 806(r061) 808
+             810:   36(fvec3) Load 41(inF0)
+             811:   36(fvec3) Load 42(inF1)
+             812:   36(fvec3) Load 43(inF2)
+             813:   36(fvec3) ExtInst 1(GLSL.std.450) 49(SmoothStep) 810 811 812
+                              Store 809(r062) 813
+             815:   36(fvec3) Load 41(inF0)
+             816:   36(fvec3) ExtInst 1(GLSL.std.450) 31(Sqrt) 815
+                              Store 814(r063) 816
+             818:   36(fvec3) Load 41(inF0)
+             819:   36(fvec3) Load 42(inF1)
+             820:   36(fvec3) ExtInst 1(GLSL.std.450) 48(Step) 818 819
+                              Store 817(r064) 820
+             822:   36(fvec3) Load 41(inF0)
+             823:   36(fvec3) ExtInst 1(GLSL.std.450) 15(Tan) 822
+                              Store 821(r065) 823
+             825:   36(fvec3) Load 41(inF0)
+             826:   36(fvec3) ExtInst 1(GLSL.std.450) 21(Tanh) 825
+                              Store 824(r066) 826
+             828:   36(fvec3) Load 41(inF0)
+             829:   36(fvec3) ExtInst 1(GLSL.std.450) 3(Trunc) 828
+                              Store 827(r067) 829
+                              ReturnValue 831
                               FunctionEnd
 58(PixelShaderFunction(vf4;vf4;vf4;vu4;vu4;):   48(fvec4) Function None 52
         53(inF0):     49(ptr) FunctionParameter
@@ -7075,998 +7184,1006 @@
         56(inU0):     51(ptr) FunctionParameter
         57(inU1):     51(ptr) FunctionParameter
               59:             Label
-       813(r000):    136(ptr) Variable Function
-       819(r001):     49(ptr) Variable Function
-       822(r002):     49(ptr) Variable Function
-       825(r003):    136(ptr) Variable Function
-       829(r004):     49(ptr) Variable Function
-       834(r005):    833(ptr) Variable Function
-       837(r006):     51(ptr) Variable Function
-       840(r007):     49(ptr) Variable Function
-       843(r009):     49(ptr) Variable Function
-       846(r010):     49(ptr) Variable Function
-       850(r011):     49(ptr) Variable Function
-       853(r012):     49(ptr) Variable Function
-       864(r013):     49(ptr) Variable Function
-       867(r014):     49(ptr) Variable Function
-       870(r015):     51(ptr) Variable Function
-       873(r016):     49(ptr) Variable Function
-       876(r017):     49(ptr) Variable Function
-       879(r018):     49(ptr) Variable Function
-       882(r019):     49(ptr) Variable Function
-       885(r020):     49(ptr) Variable Function
-       888(r021):     49(ptr) Variable Function
-       891(r022):     49(ptr) Variable Function
-       894(r023):      7(ptr) Variable Function
-       898(r024):      7(ptr) Variable Function
-       902(r025):     49(ptr) Variable Function
-       913(r029):     49(ptr) Variable Function
-       916(r030):     49(ptr) Variable Function
-       919(r031):     49(ptr) Variable Function
-       924(r032):     51(ptr) Variable Function
-       929(r033):     51(ptr) Variable Function
-       931(r034):     49(ptr) Variable Function
-       934(r036):     49(ptr) Variable Function
-       938(r037):     49(ptr) Variable Function
-       941(r039):     49(ptr) Variable Function
-       945(r040):    944(ptr) Variable Function
-       948(r041):    944(ptr) Variable Function
-       951(r042):     49(ptr) Variable Function
-      955(r039a):     49(ptr) Variable Function
-       960(r043):      7(ptr) Variable Function
-       963(r044):     49(ptr) Variable Function
-       966(r045):     49(ptr) Variable Function
-       970(r046):     49(ptr) Variable Function
-       973(r047):     49(ptr) Variable Function
-       977(r048):     49(ptr) Variable Function
-       981(r049):     49(ptr) Variable Function
-       984(r050):     49(ptr) Variable Function
-       988(r051):     49(ptr) Variable Function
-       991(r052):     49(ptr) Variable Function
-       995(r053):     49(ptr) Variable Function
-       999(r054):     49(ptr) Variable Function
-      1003(r055):     51(ptr) Variable Function
-      1006(r056):     49(ptr) Variable Function
-      1009(r057):     49(ptr) Variable Function
-      1012(r058):     49(ptr) Variable Function
-      1017(r059):     49(ptr) Variable Function
-      1020(r060):     49(ptr) Variable Function
-      1027(r061):     49(ptr) Variable Function
-      1030(r062):     49(ptr) Variable Function
-      1035(r063):     49(ptr) Variable Function
-      1038(r064):     49(ptr) Variable Function
-      1042(r065):     49(ptr) Variable Function
-      1045(r066):     49(ptr) Variable Function
-      1048(r067):     49(ptr) Variable Function
-             814:   48(fvec4) Load 53(inF0)
-             817:  815(bvec4) FOrdNotEqual 814 816
-             818:   135(bool) All 817
-                              Store 813(r000) 818
-             820:   48(fvec4) Load 53(inF0)
-             821:   48(fvec4) ExtInst 1(GLSL.std.450) 4(FAbs) 820
-                              Store 819(r001) 821
-             823:   48(fvec4) Load 53(inF0)
-             824:   48(fvec4) ExtInst 1(GLSL.std.450) 17(Acos) 823
-                              Store 822(r002) 824
-             826:   48(fvec4) Load 53(inF0)
-             827:  815(bvec4) FOrdNotEqual 826 816
-             828:   135(bool) Any 827
-                              Store 825(r003) 828
-             830:   48(fvec4) Load 53(inF0)
-             831:   48(fvec4) ExtInst 1(GLSL.std.450) 16(Asin) 830
-                              Store 829(r004) 831
+       834(r000):    136(ptr) Variable Function
+       840(r001):     49(ptr) Variable Function
+       843(r002):     49(ptr) Variable Function
+       846(r003):    136(ptr) Variable Function
+       850(r004):     49(ptr) Variable Function
+       855(r005):    854(ptr) Variable Function
+       858(r006):     51(ptr) Variable Function
+       861(r007):     49(ptr) Variable Function
+       864(r009):     49(ptr) Variable Function
+       867(r010):     49(ptr) Variable Function
+       871(r011):     49(ptr) Variable Function
+       874(r012):     49(ptr) Variable Function
+       892(r013):     49(ptr) Variable Function
+       895(r014):     49(ptr) Variable Function
+       898(r015):     51(ptr) Variable Function
+       901(r016):     49(ptr) Variable Function
+       904(r017):     49(ptr) Variable Function
+       907(r018):     49(ptr) Variable Function
+       910(r019):     49(ptr) Variable Function
+       913(r020):     49(ptr) Variable Function
+       916(r021):     49(ptr) Variable Function
+       919(r022):     49(ptr) Variable Function
+       922(r023):      7(ptr) Variable Function
+       926(r024):      7(ptr) Variable Function
+       930(r025):     49(ptr) Variable Function
+       941(r029):     49(ptr) Variable Function
+       944(r030):     49(ptr) Variable Function
+       947(r031):     49(ptr) Variable Function
+       952(r032):     51(ptr) Variable Function
+       957(r033):     51(ptr) Variable Function
+       959(r034):     49(ptr) Variable Function
+       962(r036):     49(ptr) Variable Function
+       966(r037):     49(ptr) Variable Function
+       969(r039):     49(ptr) Variable Function
+       973(r040):    972(ptr) Variable Function
+       976(r041):    972(ptr) Variable Function
+       979(r042):     49(ptr) Variable Function
+      983(r039a):     49(ptr) Variable Function
+       988(r043):      7(ptr) Variable Function
+       991(r044):     49(ptr) Variable Function
+       994(r045):     49(ptr) Variable Function
+       998(r046):     49(ptr) Variable Function
+      1001(r047):     49(ptr) Variable Function
+      1005(r048):     49(ptr) Variable Function
+      1009(r049):     49(ptr) Variable Function
+      1012(r050):     49(ptr) Variable Function
+      1016(r051):     49(ptr) Variable Function
+      1019(r052):     49(ptr) Variable Function
+      1023(r053):     49(ptr) Variable Function
+      1027(r054):     49(ptr) Variable Function
+      1031(r055):     51(ptr) Variable Function
+      1034(r056):     49(ptr) Variable Function
+      1037(r057):     49(ptr) Variable Function
+      1040(r058):     49(ptr) Variable Function
+      1045(r059):     49(ptr) Variable Function
+      1048(r060):     49(ptr) Variable Function
+      1055(r061):     49(ptr) Variable Function
+      1058(r062):     49(ptr) Variable Function
+      1063(r063):     49(ptr) Variable Function
+      1066(r064):     49(ptr) Variable Function
+      1070(r065):     49(ptr) Variable Function
+      1073(r066):     49(ptr) Variable Function
+      1076(r067):     49(ptr) Variable Function
              835:   48(fvec4) Load 53(inF0)
-             836:  832(ivec4) Bitcast 835
-                              Store 834(r005) 836
-             838:   48(fvec4) Load 53(inF0)
-             839:   50(ivec4) Bitcast 838
-                              Store 837(r006) 839
-             841:   50(ivec4) Load 56(inU0)
-             842:   48(fvec4) Bitcast 841
-                              Store 840(r007) 842
+             838:  836(bvec4) FOrdNotEqual 835 837
+             839:   135(bool) All 838
+                              Store 834(r000) 839
+             841:   48(fvec4) Load 53(inF0)
+             842:   48(fvec4) ExtInst 1(GLSL.std.450) 4(FAbs) 841
+                              Store 840(r001) 842
              844:   48(fvec4) Load 53(inF0)
-             845:   48(fvec4) ExtInst 1(GLSL.std.450) 18(Atan) 844
-                              Store 843(r009) 845
+             845:   48(fvec4) ExtInst 1(GLSL.std.450) 17(Acos) 844
+                              Store 843(r002) 845
              847:   48(fvec4) Load 53(inF0)
-             848:   48(fvec4) Load 54(inF1)
-             849:   48(fvec4) ExtInst 1(GLSL.std.450) 25(Atan2) 847 848
-                              Store 846(r010) 849
+             848:  836(bvec4) FOrdNotEqual 847 837
+             849:   135(bool) Any 848
+                              Store 846(r003) 849
              851:   48(fvec4) Load 53(inF0)
-             852:   48(fvec4) ExtInst 1(GLSL.std.450) 9(Ceil) 851
-                              Store 850(r011) 852
-             854:   48(fvec4) Load 53(inF0)
-             855:   48(fvec4) Load 54(inF1)
-             856:   48(fvec4) Load 55(inF2)
-             857:   48(fvec4) ExtInst 1(GLSL.std.450) 43(FClamp) 854 855 856
-                              Store 853(r012) 857
-             858:   48(fvec4) Load 53(inF0)
-             859:  815(bvec4) FOrdLessThan 858 816
-             860:   135(bool) Any 859
-                              SelectionMerge 862 None
-                              BranchConditional 860 861 862
-             861:               Label
-                                Kill
-             862:             Label
+             852:   48(fvec4) ExtInst 1(GLSL.std.450) 16(Asin) 851
+                              Store 850(r004) 852
+             856:   48(fvec4) Load 53(inF0)
+             857:  853(ivec4) Bitcast 856
+                              Store 855(r005) 857
+             859:   48(fvec4) Load 53(inF0)
+             860:   50(ivec4) Bitcast 859
+                              Store 858(r006) 860
+             862:   50(ivec4) Load 56(inU0)
+             863:   48(fvec4) Bitcast 862
+                              Store 861(r007) 863
              865:   48(fvec4) Load 53(inF0)
-             866:   48(fvec4) ExtInst 1(GLSL.std.450) 14(Cos) 865
-                              Store 864(r013) 866
+             866:   48(fvec4) ExtInst 1(GLSL.std.450) 18(Atan) 865
+                              Store 864(r009) 866
              868:   48(fvec4) Load 53(inF0)
-             869:   48(fvec4) ExtInst 1(GLSL.std.450) 20(Cosh) 868
-                              Store 867(r014) 869
-             872:   50(ivec4) BitCount 871
-                              Store 870(r015) 872
-             874:   48(fvec4) Load 53(inF0)
-             875:   48(fvec4) DPdx 874
-                              Store 873(r016) 875
-             877:   48(fvec4) Load 53(inF0)
-             878:   48(fvec4) DPdxCoarse 877
-                              Store 876(r017) 878
-             880:   48(fvec4) Load 53(inF0)
-             881:   48(fvec4) DPdxFine 880
-                              Store 879(r018) 881
-             883:   48(fvec4) Load 53(inF0)
-             884:   48(fvec4) DPdy 883
-                              Store 882(r019) 884
-             886:   48(fvec4) Load 53(inF0)
-             887:   48(fvec4) DPdyCoarse 886
-                              Store 885(r020) 887
-             889:   48(fvec4) Load 53(inF0)
-             890:   48(fvec4) DPdyFine 889
-                              Store 888(r021) 890
-             892:   48(fvec4) Load 53(inF0)
-             893:   48(fvec4) ExtInst 1(GLSL.std.450) 12(Degrees) 892
-                              Store 891(r022) 893
-             895:   48(fvec4) Load 53(inF0)
-             896:   48(fvec4) Load 54(inF1)
-             897:    6(float) ExtInst 1(GLSL.std.450) 67(Distance) 895 896
-                              Store 894(r023) 897
-             899:   48(fvec4) Load 53(inF0)
-             900:   48(fvec4) Load 54(inF1)
-             901:    6(float) Dot 899 900
-                              Store 898(r024) 901
-             903:      7(ptr) AccessChain 53(inF0) 519
-             904:    6(float) Load 903
-             905:      7(ptr) AccessChain 54(inF1) 519
-             906:    6(float) Load 905
-             907:    6(float) FMul 904 906
-             908:      7(ptr) AccessChain 53(inF0) 520
-             909:    6(float) Load 908
-             910:      7(ptr) AccessChain 54(inF1) 629
-             911:    6(float) Load 910
-             912:   48(fvec4) CompositeConstruct 283 907 909 911
-                              Store 902(r025) 912
+             869:   48(fvec4) Load 54(inF1)
+             870:   48(fvec4) ExtInst 1(GLSL.std.450) 25(Atan2) 868 869
+                              Store 867(r010) 870
+             872:   48(fvec4) Load 53(inF0)
+             873:   48(fvec4) ExtInst 1(GLSL.std.450) 9(Ceil) 872
+                              Store 871(r011) 873
+             875:   48(fvec4) Load 53(inF0)
+             876:   48(fvec4) Load 54(inF1)
+             877:   48(fvec4) Load 55(inF2)
+             878:   48(fvec4) ExtInst 1(GLSL.std.450) 43(FClamp) 875 876 877
+                              Store 874(r012) 878
+             879:   48(fvec4) Load 53(inF0)
+             880:  836(bvec4) FOrdLessThan 879 837
+             881:   135(bool) Any 880
+                              SelectionMerge 883 None
+                              BranchConditional 881 882 883
+             882:               Label
+                                Kill
+             883:             Label
+             885:   50(ivec4) Load 56(inU0)
+             887:  836(bvec4) ULessThan 885 886
+             888:   135(bool) Any 887
+                              SelectionMerge 890 None
+                              BranchConditional 888 889 890
+             889:               Label
+                                Kill
+             890:             Label
+             893:   48(fvec4) Load 53(inF0)
+             894:   48(fvec4) ExtInst 1(GLSL.std.450) 14(Cos) 893
+                              Store 892(r013) 894
+             896:   48(fvec4) Load 53(inF0)
+             897:   48(fvec4) ExtInst 1(GLSL.std.450) 20(Cosh) 896
+                              Store 895(r014) 897
+             900:   50(ivec4) BitCount 899
+                              Store 898(r015) 900
+             902:   48(fvec4) Load 53(inF0)
+             903:   48(fvec4) DPdx 902
+                              Store 901(r016) 903
+             905:   48(fvec4) Load 53(inF0)
+             906:   48(fvec4) DPdxCoarse 905
+                              Store 904(r017) 906
+             908:   48(fvec4) Load 53(inF0)
+             909:   48(fvec4) DPdxFine 908
+                              Store 907(r018) 909
+             911:   48(fvec4) Load 53(inF0)
+             912:   48(fvec4) DPdy 911
+                              Store 910(r019) 912
              914:   48(fvec4) Load 53(inF0)
-             915:   48(fvec4) ExtInst 1(GLSL.std.450) 27(Exp) 914
-                              Store 913(r029) 915
+             915:   48(fvec4) DPdyCoarse 914
+                              Store 913(r020) 915
              917:   48(fvec4) Load 53(inF0)
-             918:   48(fvec4) ExtInst 1(GLSL.std.450) 29(Exp2) 917
-                              Store 916(r030) 918
+             918:   48(fvec4) DPdyFine 917
+                              Store 916(r021) 918
              920:   48(fvec4) Load 53(inF0)
-             921:   48(fvec4) Load 54(inF1)
-             922:   48(fvec4) Load 55(inF2)
-             923:   48(fvec4) ExtInst 1(GLSL.std.450) 70(FaceForward) 920 921 922
-                              Store 919(r031) 923
-             928:   50(ivec4) ExtInst 1(GLSL.std.450) 75(FindUMsb) 927
-                              Store 924(r032) 928
-             930:   50(ivec4) ExtInst 1(GLSL.std.450) 73(FindILsb) 927
-                              Store 929(r033) 930
-             932:   48(fvec4) Load 53(inF0)
-             933:   48(fvec4) ExtInst 1(GLSL.std.450) 8(Floor) 932
-                              Store 931(r034) 933
-             935:   48(fvec4) Load 53(inF0)
-             936:   48(fvec4) Load 54(inF1)
-             937:   48(fvec4) FMod 935 936
-                              Store 934(r036) 937
-             939:   48(fvec4) Load 53(inF0)
-             940:   48(fvec4) ExtInst 1(GLSL.std.450) 10(Fract) 939
-                              Store 938(r037) 940
+             921:   48(fvec4) ExtInst 1(GLSL.std.450) 12(Degrees) 920
+                              Store 919(r022) 921
+             923:   48(fvec4) Load 53(inF0)
+             924:   48(fvec4) Load 54(inF1)
+             925:    6(float) ExtInst 1(GLSL.std.450) 67(Distance) 923 924
+                              Store 922(r023) 925
+             927:   48(fvec4) Load 53(inF0)
+             928:   48(fvec4) Load 54(inF1)
+             929:    6(float) Dot 927 928
+                              Store 926(r024) 929
+             931:      7(ptr) AccessChain 53(inF0) 533
+             932:    6(float) Load 931
+             933:      7(ptr) AccessChain 54(inF1) 533
+             934:    6(float) Load 933
+             935:    6(float) FMul 932 934
+             936:      7(ptr) AccessChain 53(inF0) 534
+             937:    6(float) Load 936
+             938:      7(ptr) AccessChain 54(inF1) 650
+             939:    6(float) Load 938
+             940:   48(fvec4) CompositeConstruct 289 935 937 939
+                              Store 930(r025) 940
              942:   48(fvec4) Load 53(inF0)
-             943:   48(fvec4) Fwidth 942
-                              Store 941(r039) 943
-             946:   48(fvec4) Load 53(inF0)
-             947:  815(bvec4) IsInf 946
-                              Store 945(r040) 947
-             949:   48(fvec4) Load 53(inF0)
-             950:  815(bvec4) IsNan 949
-                              Store 948(r041) 950
-             952:   48(fvec4) Load 53(inF0)
-             953:   48(fvec4) Load 54(inF1)
-             954:   48(fvec4) ExtInst 1(GLSL.std.450) 53(Ldexp) 952 953
-                              Store 951(r042) 954
-             956:   48(fvec4) Load 53(inF0)
-             957:   48(fvec4) Load 54(inF1)
-             958:   48(fvec4) Load 55(inF2)
-             959:   48(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 956 957 958
-                              Store 955(r039a) 959
-             961:   48(fvec4) Load 53(inF0)
-             962:    6(float) ExtInst 1(GLSL.std.450) 66(Length) 961
-                              Store 960(r043) 962
-             964:   48(fvec4) Load 53(inF0)
-             965:   48(fvec4) ExtInst 1(GLSL.std.450) 28(Log) 964
-                              Store 963(r044) 965
+             943:   48(fvec4) ExtInst 1(GLSL.std.450) 27(Exp) 942
+                              Store 941(r029) 943
+             945:   48(fvec4) Load 53(inF0)
+             946:   48(fvec4) ExtInst 1(GLSL.std.450) 29(Exp2) 945
+                              Store 944(r030) 946
+             948:   48(fvec4) Load 53(inF0)
+             949:   48(fvec4) Load 54(inF1)
+             950:   48(fvec4) Load 55(inF2)
+             951:   48(fvec4) ExtInst 1(GLSL.std.450) 70(FaceForward) 948 949 950
+                              Store 947(r031) 951
+             956:   50(ivec4) ExtInst 1(GLSL.std.450) 75(FindUMsb) 955
+                              Store 952(r032) 956
+             958:   50(ivec4) ExtInst 1(GLSL.std.450) 73(FindILsb) 955
+                              Store 957(r033) 958
+             960:   48(fvec4) Load 53(inF0)
+             961:   48(fvec4) ExtInst 1(GLSL.std.450) 8(Floor) 960
+                              Store 959(r034) 961
+             963:   48(fvec4) Load 53(inF0)
+             964:   48(fvec4) Load 54(inF1)
+             965:   48(fvec4) FMod 963 964
+                              Store 962(r036) 965
              967:   48(fvec4) Load 53(inF0)
-             968:   48(fvec4) ExtInst 1(GLSL.std.450) 30(Log2) 967
-             969:   48(fvec4) VectorTimesScalar 968 262
-                              Store 966(r045) 969
-             971:   48(fvec4) Load 53(inF0)
-             972:   48(fvec4) ExtInst 1(GLSL.std.450) 30(Log2) 971
-                              Store 970(r046) 972
+             968:   48(fvec4) ExtInst 1(GLSL.std.450) 10(Fract) 967
+                              Store 966(r037) 968
+             970:   48(fvec4) Load 53(inF0)
+             971:   48(fvec4) Fwidth 970
+                              Store 969(r039) 971
              974:   48(fvec4) Load 53(inF0)
-             975:   48(fvec4) Load 54(inF1)
-             976:   48(fvec4) ExtInst 1(GLSL.std.450) 40(FMax) 974 975
-                              Store 973(r047) 976
-             978:   48(fvec4) Load 53(inF0)
-             979:   48(fvec4) Load 54(inF1)
-             980:   48(fvec4) ExtInst 1(GLSL.std.450) 37(FMin) 978 979
-                              Store 977(r048) 980
-             982:   48(fvec4) Load 53(inF0)
-             983:   48(fvec4) ExtInst 1(GLSL.std.450) 69(Normalize) 982
-                              Store 981(r049) 983
-             985:   48(fvec4) Load 53(inF0)
-             986:   48(fvec4) Load 54(inF1)
-             987:   48(fvec4) ExtInst 1(GLSL.std.450) 26(Pow) 985 986
-                              Store 984(r050) 987
+             975:  836(bvec4) IsInf 974
+                              Store 973(r040) 975
+             977:   48(fvec4) Load 53(inF0)
+             978:  836(bvec4) IsNan 977
+                              Store 976(r041) 978
+             980:   48(fvec4) Load 53(inF0)
+             981:   48(fvec4) Load 54(inF1)
+             982:   48(fvec4) ExtInst 1(GLSL.std.450) 53(Ldexp) 980 981
+                              Store 979(r042) 982
+             984:   48(fvec4) Load 53(inF0)
+             985:   48(fvec4) Load 54(inF1)
+             986:   48(fvec4) Load 55(inF2)
+             987:   48(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 984 985 986
+                              Store 983(r039a) 987
              989:   48(fvec4) Load 53(inF0)
-             990:   48(fvec4) ExtInst 1(GLSL.std.450) 11(Radians) 989
-                              Store 988(r051) 990
+             990:    6(float) ExtInst 1(GLSL.std.450) 66(Length) 989
+                              Store 988(r043) 990
              992:   48(fvec4) Load 53(inF0)
-             993:   48(fvec4) CompositeConstruct 283 283 283 283
-             994:   48(fvec4) FDiv 993 992
-                              Store 991(r052) 994
-             996:   48(fvec4) Load 53(inF0)
-             997:   48(fvec4) Load 54(inF1)
-             998:   48(fvec4) ExtInst 1(GLSL.std.450) 71(Reflect) 996 997
-                              Store 995(r053) 998
-            1000:   48(fvec4) Load 53(inF0)
-            1001:   48(fvec4) Load 54(inF1)
-            1002:   48(fvec4) ExtInst 1(GLSL.std.450) 72(Refract) 1000 1001 516
-                              Store 999(r054) 1002
-            1005:   50(ivec4) BitReverse 1004
-                              Store 1003(r055) 1005
-            1007:   48(fvec4) Load 53(inF0)
-            1008:   48(fvec4) ExtInst 1(GLSL.std.450) 2(RoundEven) 1007
-                              Store 1006(r056) 1008
+             993:   48(fvec4) ExtInst 1(GLSL.std.450) 28(Log) 992
+                              Store 991(r044) 993
+             995:   48(fvec4) Load 53(inF0)
+             996:   48(fvec4) ExtInst 1(GLSL.std.450) 30(Log2) 995
+             997:   48(fvec4) VectorTimesScalar 996 268
+                              Store 994(r045) 997
+             999:   48(fvec4) Load 53(inF0)
+            1000:   48(fvec4) ExtInst 1(GLSL.std.450) 30(Log2) 999
+                              Store 998(r046) 1000
+            1002:   48(fvec4) Load 53(inF0)
+            1003:   48(fvec4) Load 54(inF1)
+            1004:   48(fvec4) ExtInst 1(GLSL.std.450) 40(FMax) 1002 1003
+                              Store 1001(r047) 1004
+            1006:   48(fvec4) Load 53(inF0)
+            1007:   48(fvec4) Load 54(inF1)
+            1008:   48(fvec4) ExtInst 1(GLSL.std.450) 37(FMin) 1006 1007
+                              Store 1005(r048) 1008
             1010:   48(fvec4) Load 53(inF0)
-            1011:   48(fvec4) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 1010
-                              Store 1009(r057) 1011
+            1011:   48(fvec4) ExtInst 1(GLSL.std.450) 69(Normalize) 1010
+                              Store 1009(r049) 1011
             1013:   48(fvec4) Load 53(inF0)
-            1014:   48(fvec4) CompositeConstruct 139 139 139 139
-            1015:   48(fvec4) CompositeConstruct 283 283 283 283
-            1016:   48(fvec4) ExtInst 1(GLSL.std.450) 43(FClamp) 1013 1014 1015
-                              Store 1012(r058) 1016
-            1018:   48(fvec4) Load 53(inF0)
-            1019:   48(fvec4) ExtInst 1(GLSL.std.450) 6(FSign) 1018
-                              Store 1017(r059) 1019
-            1021:   48(fvec4) Load 53(inF0)
-            1022:   48(fvec4) ExtInst 1(GLSL.std.450) 13(Sin) 1021
-                              Store 1020(r060) 1022
-            1023:   48(fvec4) Load 53(inF0)
-            1024:   48(fvec4) ExtInst 1(GLSL.std.450) 13(Sin) 1023
-                              Store 54(inF1) 1024
-            1025:   48(fvec4) Load 53(inF0)
-            1026:   48(fvec4) ExtInst 1(GLSL.std.450) 14(Cos) 1025
-                              Store 55(inF2) 1026
+            1014:   48(fvec4) Load 54(inF1)
+            1015:   48(fvec4) ExtInst 1(GLSL.std.450) 26(Pow) 1013 1014
+                              Store 1012(r050) 1015
+            1017:   48(fvec4) Load 53(inF0)
+            1018:   48(fvec4) ExtInst 1(GLSL.std.450) 11(Radians) 1017
+                              Store 1016(r051) 1018
+            1020:   48(fvec4) Load 53(inF0)
+            1021:   48(fvec4) CompositeConstruct 289 289 289 289
+            1022:   48(fvec4) FDiv 1021 1020
+                              Store 1019(r052) 1022
+            1024:   48(fvec4) Load 53(inF0)
+            1025:   48(fvec4) Load 54(inF1)
+            1026:   48(fvec4) ExtInst 1(GLSL.std.450) 71(Reflect) 1024 1025
+                              Store 1023(r053) 1026
             1028:   48(fvec4) Load 53(inF0)
-            1029:   48(fvec4) ExtInst 1(GLSL.std.450) 19(Sinh) 1028
-                              Store 1027(r061) 1029
-            1031:   48(fvec4) Load 53(inF0)
-            1032:   48(fvec4) Load 54(inF1)
-            1033:   48(fvec4) Load 55(inF2)
-            1034:   48(fvec4) ExtInst 1(GLSL.std.450) 49(SmoothStep) 1031 1032 1033
-                              Store 1030(r062) 1034
-            1036:   48(fvec4) Load 53(inF0)
-            1037:   48(fvec4) ExtInst 1(GLSL.std.450) 31(Sqrt) 1036
-                              Store 1035(r063) 1037
-            1039:   48(fvec4) Load 53(inF0)
-            1040:   48(fvec4) Load 54(inF1)
-            1041:   48(fvec4) ExtInst 1(GLSL.std.450) 48(Step) 1039 1040
-                              Store 1038(r064) 1041
-            1043:   48(fvec4) Load 53(inF0)
-            1044:   48(fvec4) ExtInst 1(GLSL.std.450) 15(Tan) 1043
-                              Store 1042(r065) 1044
+            1029:   48(fvec4) Load 54(inF1)
+            1030:   48(fvec4) ExtInst 1(GLSL.std.450) 72(Refract) 1028 1029 530
+                              Store 1027(r054) 1030
+            1033:   50(ivec4) BitReverse 1032
+                              Store 1031(r055) 1033
+            1035:   48(fvec4) Load 53(inF0)
+            1036:   48(fvec4) ExtInst 1(GLSL.std.450) 2(RoundEven) 1035
+                              Store 1034(r056) 1036
+            1038:   48(fvec4) Load 53(inF0)
+            1039:   48(fvec4) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 1038
+                              Store 1037(r057) 1039
+            1041:   48(fvec4) Load 53(inF0)
+            1042:   48(fvec4) CompositeConstruct 139 139 139 139
+            1043:   48(fvec4) CompositeConstruct 289 289 289 289
+            1044:   48(fvec4) ExtInst 1(GLSL.std.450) 43(FClamp) 1041 1042 1043
+                              Store 1040(r058) 1044
             1046:   48(fvec4) Load 53(inF0)
-            1047:   48(fvec4) ExtInst 1(GLSL.std.450) 21(Tanh) 1046
-                              Store 1045(r066) 1047
+            1047:   48(fvec4) ExtInst 1(GLSL.std.450) 6(FSign) 1046
+                              Store 1045(r059) 1047
             1049:   48(fvec4) Load 53(inF0)
-            1050:   48(fvec4) ExtInst 1(GLSL.std.450) 3(Trunc) 1049
-                              Store 1048(r067) 1050
-                              ReturnValue 1052
+            1050:   48(fvec4) ExtInst 1(GLSL.std.450) 13(Sin) 1049
+                              Store 1048(r060) 1050
+            1051:   48(fvec4) Load 53(inF0)
+            1052:   48(fvec4) ExtInst 1(GLSL.std.450) 13(Sin) 1051
+                              Store 54(inF1) 1052
+            1053:   48(fvec4) Load 53(inF0)
+            1054:   48(fvec4) ExtInst 1(GLSL.std.450) 14(Cos) 1053
+                              Store 55(inF2) 1054
+            1056:   48(fvec4) Load 53(inF0)
+            1057:   48(fvec4) ExtInst 1(GLSL.std.450) 19(Sinh) 1056
+                              Store 1055(r061) 1057
+            1059:   48(fvec4) Load 53(inF0)
+            1060:   48(fvec4) Load 54(inF1)
+            1061:   48(fvec4) Load 55(inF2)
+            1062:   48(fvec4) ExtInst 1(GLSL.std.450) 49(SmoothStep) 1059 1060 1061
+                              Store 1058(r062) 1062
+            1064:   48(fvec4) Load 53(inF0)
+            1065:   48(fvec4) ExtInst 1(GLSL.std.450) 31(Sqrt) 1064
+                              Store 1063(r063) 1065
+            1067:   48(fvec4) Load 53(inF0)
+            1068:   48(fvec4) Load 54(inF1)
+            1069:   48(fvec4) ExtInst 1(GLSL.std.450) 48(Step) 1067 1068
+                              Store 1066(r064) 1069
+            1071:   48(fvec4) Load 53(inF0)
+            1072:   48(fvec4) ExtInst 1(GLSL.std.450) 15(Tan) 1071
+                              Store 1070(r065) 1072
+            1074:   48(fvec4) Load 53(inF0)
+            1075:   48(fvec4) ExtInst 1(GLSL.std.450) 21(Tanh) 1074
+                              Store 1073(r066) 1075
+            1077:   48(fvec4) Load 53(inF0)
+            1078:   48(fvec4) ExtInst 1(GLSL.std.450) 3(Trunc) 1077
+                              Store 1076(r067) 1078
+                              ReturnValue 1080
                               FunctionEnd
 66(PixelShaderFunction2x2(mf22;mf22;mf22;):          60 Function None 62
         63(inF0):     61(ptr) FunctionParameter
         64(inF1):     61(ptr) FunctionParameter
         65(inF2):     61(ptr) FunctionParameter
               67:             Label
-      1055(r000):    136(ptr) Variable Function
-      1060(r001):     61(ptr) Variable Function
-      1065(r003):    136(ptr) Variable Function
-      1069(r004):     61(ptr) Variable Function
-      1072(r005):     61(ptr) Variable Function
-      1075(r006):     61(ptr) Variable Function
-      1079(r007):     61(ptr) Variable Function
-      1089(r008):     61(ptr) Variable Function
-      1094(r009):     61(ptr) Variable Function
-      1097(r010):     61(ptr) Variable Function
-      1100(r011):     61(ptr) Variable Function
-      1103(r012):     61(ptr) Variable Function
-      1106(r013):     61(ptr) Variable Function
-      1109(r014):     61(ptr) Variable Function
-      1112(r015):     61(ptr) Variable Function
-      1115(r016):     61(ptr) Variable Function
-      1118(r017):     61(ptr) Variable Function
-      1121(r018):      7(ptr) Variable Function
-      1124(r019):     61(ptr) Variable Function
-      1127(R020):     61(ptr) Variable Function
-      1130(r021):     61(ptr) Variable Function
-      1133(r022):     61(ptr) Variable Function
-      1143(r023):     61(ptr) Variable Function
-      1146(r025):     61(ptr) Variable Function
-      1149(r026):     61(ptr) Variable Function
-     1153(r026a):     61(ptr) Variable Function
-      1158(r027):     61(ptr) Variable Function
-      1161(r028):     61(ptr) Variable Function
-      1165(r029):     61(ptr) Variable Function
-      1168(r030):     61(ptr) Variable Function
-      1172(r031):     61(ptr) Variable Function
-      1176(r032):     61(ptr) Variable Function
-      1180(r033):     61(ptr) Variable Function
-      1183(r034):     61(ptr) Variable Function
-      1186(r035):     61(ptr) Variable Function
-      1189(r036):     61(ptr) Variable Function
-      1194(r037):     61(ptr) Variable Function
-      1197(r038):     61(ptr) Variable Function
-      1204(r039):     61(ptr) Variable Function
-      1207(r049):     61(ptr) Variable Function
-      1212(r041):     61(ptr) Variable Function
-      1215(r042):     61(ptr) Variable Function
-      1219(r043):     61(ptr) Variable Function
-      1222(r044):     61(ptr) Variable Function
-      1227(r046):     61(ptr) Variable Function
-            1056:          60 Load 63(inF0)
-            1058:        1057 FOrdNotEqual 1056 139
-            1059:   135(bool) All 1058
-                              Store 1055(r000) 1059
-            1061:          60 Load 63(inF0)
-            1062:          60 ExtInst 1(GLSL.std.450) 4(FAbs) 1061
-                              Store 1060(r001) 1062
-            1063:          60 Load 63(inF0)
-            1064:          60 ExtInst 1(GLSL.std.450) 17(Acos) 1063
-            1066:          60 Load 63(inF0)
-            1067:        1057 FOrdNotEqual 1066 139
-            1068:   135(bool) Any 1067
-                              Store 1065(r003) 1068
-            1070:          60 Load 63(inF0)
-            1071:          60 ExtInst 1(GLSL.std.450) 16(Asin) 1070
-                              Store 1069(r004) 1071
-            1073:          60 Load 63(inF0)
-            1074:          60 ExtInst 1(GLSL.std.450) 18(Atan) 1073
-                              Store 1072(r005) 1074
-            1076:          60 Load 63(inF0)
-            1077:          60 Load 64(inF1)
-            1078:          60 ExtInst 1(GLSL.std.450) 25(Atan2) 1076 1077
-                              Store 1075(r006) 1078
-            1080:          60 Load 63(inF0)
-            1081:          60 ExtInst 1(GLSL.std.450) 9(Ceil) 1080
-                              Store 1079(r007) 1081
-            1082:          60 Load 63(inF0)
-            1084:        1057 FOrdLessThan 1082 1083
-            1085:   135(bool) Any 1084
-                              SelectionMerge 1087 None
-                              BranchConditional 1085 1086 1087
-            1086:               Label
-                                Kill
-            1087:             Label
-            1090:          60 Load 63(inF0)
-            1091:          60 Load 64(inF1)
-            1092:          60 Load 65(inF2)
-            1093:          60 ExtInst 1(GLSL.std.450) 43(FClamp) 1090 1091 1092
-                              Store 1089(r008) 1093
-            1095:          60 Load 63(inF0)
-            1096:          60 ExtInst 1(GLSL.std.450) 14(Cos) 1095
-                              Store 1094(r009) 1096
+      1083(r000):    136(ptr) Variable Function
+      1088(r001):     61(ptr) Variable Function
+      1093(r003):    136(ptr) Variable Function
+      1097(r004):     61(ptr) Variable Function
+      1100(r005):     61(ptr) Variable Function
+      1103(r006):     61(ptr) Variable Function
+      1107(r007):     61(ptr) Variable Function
+      1117(r008):     61(ptr) Variable Function
+      1122(r009):     61(ptr) Variable Function
+      1125(r010):     61(ptr) Variable Function
+      1128(r011):     61(ptr) Variable Function
+      1131(r012):     61(ptr) Variable Function
+      1134(r013):     61(ptr) Variable Function
+      1137(r014):     61(ptr) Variable Function
+      1140(r015):     61(ptr) Variable Function
+      1143(r016):     61(ptr) Variable Function
+      1146(r017):     61(ptr) Variable Function
+      1149(r018):      7(ptr) Variable Function
+      1152(r019):     61(ptr) Variable Function
+      1155(R020):     61(ptr) Variable Function
+      1158(r021):     61(ptr) Variable Function
+      1161(r022):     61(ptr) Variable Function
+      1171(r023):     61(ptr) Variable Function
+      1174(r025):     61(ptr) Variable Function
+      1177(r026):     61(ptr) Variable Function
+     1181(r026a):     61(ptr) Variable Function
+      1186(r027):     61(ptr) Variable Function
+      1189(r028):     61(ptr) Variable Function
+      1193(r029):     61(ptr) Variable Function
+      1196(r030):     61(ptr) Variable Function
+      1200(r031):     61(ptr) Variable Function
+      1204(r032):     61(ptr) Variable Function
+      1208(r033):     61(ptr) Variable Function
+      1211(r034):     61(ptr) Variable Function
+      1214(r035):     61(ptr) Variable Function
+      1217(r036):     61(ptr) Variable Function
+      1222(r037):     61(ptr) Variable Function
+      1225(r038):     61(ptr) Variable Function
+      1232(r039):     61(ptr) Variable Function
+      1235(r049):     61(ptr) Variable Function
+      1240(r041):     61(ptr) Variable Function
+      1243(r042):     61(ptr) Variable Function
+      1247(r043):     61(ptr) Variable Function
+      1250(r044):     61(ptr) Variable Function
+      1255(r046):     61(ptr) Variable Function
+            1084:          60 Load 63(inF0)
+            1086:        1085 FOrdNotEqual 1084 139
+            1087:   135(bool) All 1086
+                              Store 1083(r000) 1087
+            1089:          60 Load 63(inF0)
+            1090:          60 ExtInst 1(GLSL.std.450) 4(FAbs) 1089
+                              Store 1088(r001) 1090
+            1091:          60 Load 63(inF0)
+            1092:          60 ExtInst 1(GLSL.std.450) 17(Acos) 1091
+            1094:          60 Load 63(inF0)
+            1095:        1085 FOrdNotEqual 1094 139
+            1096:   135(bool) Any 1095
+                              Store 1093(r003) 1096
             1098:          60 Load 63(inF0)
-            1099:          60 ExtInst 1(GLSL.std.450) 20(Cosh) 1098
-                              Store 1097(r010) 1099
+            1099:          60 ExtInst 1(GLSL.std.450) 16(Asin) 1098
+                              Store 1097(r004) 1099
             1101:          60 Load 63(inF0)
-            1102:          60 DPdx 1101
-                              Store 1100(r011) 1102
+            1102:          60 ExtInst 1(GLSL.std.450) 18(Atan) 1101
+                              Store 1100(r005) 1102
             1104:          60 Load 63(inF0)
-            1105:          60 DPdxCoarse 1104
-                              Store 1103(r012) 1105
-            1107:          60 Load 63(inF0)
-            1108:          60 DPdxFine 1107
-                              Store 1106(r013) 1108
+            1105:          60 Load 64(inF1)
+            1106:          60 ExtInst 1(GLSL.std.450) 25(Atan2) 1104 1105
+                              Store 1103(r006) 1106
+            1108:          60 Load 63(inF0)
+            1109:          60 ExtInst 1(GLSL.std.450) 9(Ceil) 1108
+                              Store 1107(r007) 1109
             1110:          60 Load 63(inF0)
-            1111:          60 DPdy 1110
-                              Store 1109(r014) 1111
-            1113:          60 Load 63(inF0)
-            1114:          60 DPdyCoarse 1113
-                              Store 1112(r015) 1114
-            1116:          60 Load 63(inF0)
-            1117:          60 DPdyFine 1116
-                              Store 1115(r016) 1117
-            1119:          60 Load 63(inF0)
-            1120:          60 ExtInst 1(GLSL.std.450) 12(Degrees) 1119
-                              Store 1118(r017) 1120
-            1122:          60 Load 63(inF0)
-            1123:    6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 1122
-                              Store 1121(r018) 1123
-            1125:          60 Load 63(inF0)
-            1126:          60 ExtInst 1(GLSL.std.450) 27(Exp) 1125
-                              Store 1124(r019) 1126
-            1128:          60 Load 63(inF0)
-            1129:          60 ExtInst 1(GLSL.std.450) 29(Exp2) 1128
-                              Store 1127(R020) 1129
-            1131:          60 Load 63(inF0)
-            1132:          60 ExtInst 1(GLSL.std.450) 8(Floor) 1131
-                              Store 1130(r021) 1132
-            1134:          60 Load 63(inF0)
-            1135:          60 Load 64(inF1)
-            1136:   24(fvec2) CompositeExtract 1134 0
-            1137:   24(fvec2) CompositeExtract 1135 0
-            1138:   24(fvec2) FMod 1136 1137
-            1139:   24(fvec2) CompositeExtract 1134 1
-            1140:   24(fvec2) CompositeExtract 1135 1
-            1141:   24(fvec2) FMod 1139 1140
-            1142:          60 CompositeConstruct 1138 1141
-                              Store 1133(r022) 1142
+            1112:        1085 FOrdLessThan 1110 1111
+            1113:   135(bool) Any 1112
+                              SelectionMerge 1115 None
+                              BranchConditional 1113 1114 1115
+            1114:               Label
+                                Kill
+            1115:             Label
+            1118:          60 Load 63(inF0)
+            1119:          60 Load 64(inF1)
+            1120:          60 Load 65(inF2)
+            1121:          60 ExtInst 1(GLSL.std.450) 43(FClamp) 1118 1119 1120
+                              Store 1117(r008) 1121
+            1123:          60 Load 63(inF0)
+            1124:          60 ExtInst 1(GLSL.std.450) 14(Cos) 1123
+                              Store 1122(r009) 1124
+            1126:          60 Load 63(inF0)
+            1127:          60 ExtInst 1(GLSL.std.450) 20(Cosh) 1126
+                              Store 1125(r010) 1127
+            1129:          60 Load 63(inF0)
+            1130:          60 DPdx 1129
+                              Store 1128(r011) 1130
+            1132:          60 Load 63(inF0)
+            1133:          60 DPdxCoarse 1132
+                              Store 1131(r012) 1133
+            1135:          60 Load 63(inF0)
+            1136:          60 DPdxFine 1135
+                              Store 1134(r013) 1136
+            1138:          60 Load 63(inF0)
+            1139:          60 DPdy 1138
+                              Store 1137(r014) 1139
+            1141:          60 Load 63(inF0)
+            1142:          60 DPdyCoarse 1141
+                              Store 1140(r015) 1142
             1144:          60 Load 63(inF0)
-            1145:          60 ExtInst 1(GLSL.std.450) 10(Fract) 1144
-                              Store 1143(r023) 1145
+            1145:          60 DPdyFine 1144
+                              Store 1143(r016) 1145
             1147:          60 Load 63(inF0)
-            1148:          60 Fwidth 1147
-                              Store 1146(r025) 1148
+            1148:          60 ExtInst 1(GLSL.std.450) 12(Degrees) 1147
+                              Store 1146(r017) 1148
             1150:          60 Load 63(inF0)
-            1151:          60 Load 64(inF1)
-            1152:          60 ExtInst 1(GLSL.std.450) 53(Ldexp) 1150 1151
-                              Store 1149(r026) 1152
-            1154:          60 Load 63(inF0)
-            1155:          60 Load 64(inF1)
-            1156:          60 Load 65(inF2)
-            1157:          60 ExtInst 1(GLSL.std.450) 46(FMix) 1154 1155 1156
-                              Store 1153(r026a) 1157
+            1151:    6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 1150
+                              Store 1149(r018) 1151
+            1153:          60 Load 63(inF0)
+            1154:          60 ExtInst 1(GLSL.std.450) 27(Exp) 1153
+                              Store 1152(r019) 1154
+            1156:          60 Load 63(inF0)
+            1157:          60 ExtInst 1(GLSL.std.450) 29(Exp2) 1156
+                              Store 1155(R020) 1157
             1159:          60 Load 63(inF0)
-            1160:          60 ExtInst 1(GLSL.std.450) 28(Log) 1159
-                              Store 1158(r027) 1160
+            1160:          60 ExtInst 1(GLSL.std.450) 8(Floor) 1159
+                              Store 1158(r021) 1160
             1162:          60 Load 63(inF0)
-            1163:          60 ExtInst 1(GLSL.std.450) 30(Log2) 1162
-            1164:          60 MatrixTimesScalar 1163 262
-                              Store 1161(r028) 1164
-            1166:          60 Load 63(inF0)
-            1167:          60 ExtInst 1(GLSL.std.450) 30(Log2) 1166
-                              Store 1165(r029) 1167
-            1169:          60 Load 63(inF0)
-            1170:          60 Load 64(inF1)
-            1171:          60 ExtInst 1(GLSL.std.450) 40(FMax) 1169 1170
-                              Store 1168(r030) 1171
-            1173:          60 Load 63(inF0)
-            1174:          60 Load 64(inF1)
-            1175:          60 ExtInst 1(GLSL.std.450) 37(FMin) 1173 1174
-                              Store 1172(r031) 1175
-            1177:          60 Load 63(inF0)
-            1178:          60 Load 64(inF1)
-            1179:          60 ExtInst 1(GLSL.std.450) 26(Pow) 1177 1178
-                              Store 1176(r032) 1179
-            1181:          60 Load 63(inF0)
-            1182:          60 ExtInst 1(GLSL.std.450) 11(Radians) 1181
-                              Store 1180(r033) 1182
-            1184:          60 Load 63(inF0)
-            1185:          60 ExtInst 1(GLSL.std.450) 2(RoundEven) 1184
-                              Store 1183(r034) 1185
+            1163:          60 Load 64(inF1)
+            1164:   24(fvec2) CompositeExtract 1162 0
+            1165:   24(fvec2) CompositeExtract 1163 0
+            1166:   24(fvec2) FMod 1164 1165
+            1167:   24(fvec2) CompositeExtract 1162 1
+            1168:   24(fvec2) CompositeExtract 1163 1
+            1169:   24(fvec2) FMod 1167 1168
+            1170:          60 CompositeConstruct 1166 1169
+                              Store 1161(r022) 1170
+            1172:          60 Load 63(inF0)
+            1173:          60 ExtInst 1(GLSL.std.450) 10(Fract) 1172
+                              Store 1171(r023) 1173
+            1175:          60 Load 63(inF0)
+            1176:          60 Fwidth 1175
+                              Store 1174(r025) 1176
+            1178:          60 Load 63(inF0)
+            1179:          60 Load 64(inF1)
+            1180:          60 ExtInst 1(GLSL.std.450) 53(Ldexp) 1178 1179
+                              Store 1177(r026) 1180
+            1182:          60 Load 63(inF0)
+            1183:          60 Load 64(inF1)
+            1184:          60 Load 65(inF2)
+            1185:          60 ExtInst 1(GLSL.std.450) 46(FMix) 1182 1183 1184
+                              Store 1181(r026a) 1185
             1187:          60 Load 63(inF0)
-            1188:          60 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 1187
-                              Store 1186(r035) 1188
+            1188:          60 ExtInst 1(GLSL.std.450) 28(Log) 1187
+                              Store 1186(r027) 1188
             1190:          60 Load 63(inF0)
-            1191:   24(fvec2) CompositeConstruct 139 139
-            1192:   24(fvec2) CompositeConstruct 283 283
-            1193:          60 ExtInst 1(GLSL.std.450) 43(FClamp) 1190 1191 1192
-                              Store 1189(r036) 1193
-            1195:          60 Load 63(inF0)
-            1196:          60 ExtInst 1(GLSL.std.450) 6(FSign) 1195
-                              Store 1194(r037) 1196
-            1198:          60 Load 63(inF0)
-            1199:          60 ExtInst 1(GLSL.std.450) 13(Sin) 1198
-                              Store 1197(r038) 1199
-            1200:          60 Load 63(inF0)
-            1201:          60 ExtInst 1(GLSL.std.450) 13(Sin) 1200
-                              Store 64(inF1) 1201
-            1202:          60 Load 63(inF0)
-            1203:          60 ExtInst 1(GLSL.std.450) 14(Cos) 1202
-                              Store 65(inF2) 1203
+            1191:          60 ExtInst 1(GLSL.std.450) 30(Log2) 1190
+            1192:          60 MatrixTimesScalar 1191 268
+                              Store 1189(r028) 1192
+            1194:          60 Load 63(inF0)
+            1195:          60 ExtInst 1(GLSL.std.450) 30(Log2) 1194
+                              Store 1193(r029) 1195
+            1197:          60 Load 63(inF0)
+            1198:          60 Load 64(inF1)
+            1199:          60 ExtInst 1(GLSL.std.450) 40(FMax) 1197 1198
+                              Store 1196(r030) 1199
+            1201:          60 Load 63(inF0)
+            1202:          60 Load 64(inF1)
+            1203:          60 ExtInst 1(GLSL.std.450) 37(FMin) 1201 1202
+                              Store 1200(r031) 1203
             1205:          60 Load 63(inF0)
-            1206:          60 ExtInst 1(GLSL.std.450) 19(Sinh) 1205
-                              Store 1204(r039) 1206
-            1208:          60 Load 63(inF0)
-            1209:          60 Load 64(inF1)
-            1210:          60 Load 65(inF2)
-            1211:          60 ExtInst 1(GLSL.std.450) 49(SmoothStep) 1208 1209 1210
-                              Store 1207(r049) 1211
-            1213:          60 Load 63(inF0)
-            1214:          60 ExtInst 1(GLSL.std.450) 31(Sqrt) 1213
-                              Store 1212(r041) 1214
-            1216:          60 Load 63(inF0)
-            1217:          60 Load 64(inF1)
-            1218:          60 ExtInst 1(GLSL.std.450) 48(Step) 1216 1217
-                              Store 1215(r042) 1218
-            1220:          60 Load 63(inF0)
-            1221:          60 ExtInst 1(GLSL.std.450) 15(Tan) 1220
-                              Store 1219(r043) 1221
+            1206:          60 Load 64(inF1)
+            1207:          60 ExtInst 1(GLSL.std.450) 26(Pow) 1205 1206
+                              Store 1204(r032) 1207
+            1209:          60 Load 63(inF0)
+            1210:          60 ExtInst 1(GLSL.std.450) 11(Radians) 1209
+                              Store 1208(r033) 1210
+            1212:          60 Load 63(inF0)
+            1213:          60 ExtInst 1(GLSL.std.450) 2(RoundEven) 1212
+                              Store 1211(r034) 1213
+            1215:          60 Load 63(inF0)
+            1216:          60 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 1215
+                              Store 1214(r035) 1216
+            1218:          60 Load 63(inF0)
+            1219:   24(fvec2) CompositeConstruct 139 139
+            1220:   24(fvec2) CompositeConstruct 289 289
+            1221:          60 ExtInst 1(GLSL.std.450) 43(FClamp) 1218 1219 1220
+                              Store 1217(r036) 1221
             1223:          60 Load 63(inF0)
-            1224:          60 ExtInst 1(GLSL.std.450) 21(Tanh) 1223
-                              Store 1222(r044) 1224
-            1225:          60 Load 63(inF0)
-            1226:          60 Transpose 1225
+            1224:          60 ExtInst 1(GLSL.std.450) 6(FSign) 1223
+                              Store 1222(r037) 1224
+            1226:          60 Load 63(inF0)
+            1227:          60 ExtInst 1(GLSL.std.450) 13(Sin) 1226
+                              Store 1225(r038) 1227
             1228:          60 Load 63(inF0)
-            1229:          60 ExtInst 1(GLSL.std.450) 3(Trunc) 1228
-                              Store 1227(r046) 1229
-                              ReturnValue 1231
+            1229:          60 ExtInst 1(GLSL.std.450) 13(Sin) 1228
+                              Store 64(inF1) 1229
+            1230:          60 Load 63(inF0)
+            1231:          60 ExtInst 1(GLSL.std.450) 14(Cos) 1230
+                              Store 65(inF2) 1231
+            1233:          60 Load 63(inF0)
+            1234:          60 ExtInst 1(GLSL.std.450) 19(Sinh) 1233
+                              Store 1232(r039) 1234
+            1236:          60 Load 63(inF0)
+            1237:          60 Load 64(inF1)
+            1238:          60 Load 65(inF2)
+            1239:          60 ExtInst 1(GLSL.std.450) 49(SmoothStep) 1236 1237 1238
+                              Store 1235(r049) 1239
+            1241:          60 Load 63(inF0)
+            1242:          60 ExtInst 1(GLSL.std.450) 31(Sqrt) 1241
+                              Store 1240(r041) 1242
+            1244:          60 Load 63(inF0)
+            1245:          60 Load 64(inF1)
+            1246:          60 ExtInst 1(GLSL.std.450) 48(Step) 1244 1245
+                              Store 1243(r042) 1246
+            1248:          60 Load 63(inF0)
+            1249:          60 ExtInst 1(GLSL.std.450) 15(Tan) 1248
+                              Store 1247(r043) 1249
+            1251:          60 Load 63(inF0)
+            1252:          60 ExtInst 1(GLSL.std.450) 21(Tanh) 1251
+                              Store 1250(r044) 1252
+            1253:          60 Load 63(inF0)
+            1254:          60 Transpose 1253
+            1256:          60 Load 63(inF0)
+            1257:          60 ExtInst 1(GLSL.std.450) 3(Trunc) 1256
+                              Store 1255(r046) 1257
+                              ReturnValue 1259
                               FunctionEnd
 74(PixelShaderFunction3x3(mf33;mf33;mf33;):          68 Function None 70
         71(inF0):     69(ptr) FunctionParameter
         72(inF1):     69(ptr) FunctionParameter
         73(inF2):     69(ptr) FunctionParameter
               75:             Label
-      1234(r000):    136(ptr) Variable Function
-      1239(r001):     69(ptr) Variable Function
-      1244(r003):    136(ptr) Variable Function
-      1248(r004):     69(ptr) Variable Function
-      1251(r005):     69(ptr) Variable Function
-      1254(r006):     69(ptr) Variable Function
-      1258(r007):     69(ptr) Variable Function
-      1268(r008):     69(ptr) Variable Function
-      1273(r009):     69(ptr) Variable Function
-      1276(r010):     69(ptr) Variable Function
-      1279(r011):     69(ptr) Variable Function
-      1282(r012):     69(ptr) Variable Function
-      1285(r013):     69(ptr) Variable Function
-      1288(r014):     69(ptr) Variable Function
-      1291(r015):     69(ptr) Variable Function
-      1294(r016):     69(ptr) Variable Function
-      1297(r017):     69(ptr) Variable Function
-      1300(r018):      7(ptr) Variable Function
-      1303(r019):     69(ptr) Variable Function
-      1306(R020):     69(ptr) Variable Function
-      1309(r021):     69(ptr) Variable Function
-      1312(r022):     69(ptr) Variable Function
-      1325(r023):     69(ptr) Variable Function
-      1328(r025):     69(ptr) Variable Function
-      1331(r026):     69(ptr) Variable Function
-     1335(r026a):     69(ptr) Variable Function
-      1340(r027):     69(ptr) Variable Function
-      1343(r028):     69(ptr) Variable Function
-      1347(r029):     69(ptr) Variable Function
-      1350(r030):     69(ptr) Variable Function
-      1354(r031):     69(ptr) Variable Function
-      1358(r032):     69(ptr) Variable Function
-      1362(r033):     69(ptr) Variable Function
-      1365(r034):     69(ptr) Variable Function
-      1368(r035):     69(ptr) Variable Function
-      1371(r036):     69(ptr) Variable Function
-      1376(r037):     69(ptr) Variable Function
-      1379(r038):     69(ptr) Variable Function
-      1386(r039):     69(ptr) Variable Function
-      1389(r049):     69(ptr) Variable Function
-      1394(r041):     69(ptr) Variable Function
-      1397(r042):     69(ptr) Variable Function
-      1401(r043):     69(ptr) Variable Function
-      1404(r044):     69(ptr) Variable Function
-      1409(r046):     69(ptr) Variable Function
-            1235:          68 Load 71(inF0)
-            1237:        1236 FOrdNotEqual 1235 139
-            1238:   135(bool) All 1237
-                              Store 1234(r000) 1238
-            1240:          68 Load 71(inF0)
-            1241:          68 ExtInst 1(GLSL.std.450) 4(FAbs) 1240
-                              Store 1239(r001) 1241
-            1242:          68 Load 71(inF0)
-            1243:          68 ExtInst 1(GLSL.std.450) 17(Acos) 1242
-            1245:          68 Load 71(inF0)
-            1246:        1236 FOrdNotEqual 1245 139
-            1247:   135(bool) Any 1246
-                              Store 1244(r003) 1247
-            1249:          68 Load 71(inF0)
-            1250:          68 ExtInst 1(GLSL.std.450) 16(Asin) 1249
-                              Store 1248(r004) 1250
-            1252:          68 Load 71(inF0)
-            1253:          68 ExtInst 1(GLSL.std.450) 18(Atan) 1252
-                              Store 1251(r005) 1253
-            1255:          68 Load 71(inF0)
-            1256:          68 Load 72(inF1)
-            1257:          68 ExtInst 1(GLSL.std.450) 25(Atan2) 1255 1256
-                              Store 1254(r006) 1257
-            1259:          68 Load 71(inF0)
-            1260:          68 ExtInst 1(GLSL.std.450) 9(Ceil) 1259
-                              Store 1258(r007) 1260
-            1261:          68 Load 71(inF0)
-            1263:        1236 FOrdLessThan 1261 1262
-            1264:   135(bool) Any 1263
-                              SelectionMerge 1266 None
-                              BranchConditional 1264 1265 1266
-            1265:               Label
-                                Kill
-            1266:             Label
-            1269:          68 Load 71(inF0)
-            1270:          68 Load 72(inF1)
-            1271:          68 Load 73(inF2)
-            1272:          68 ExtInst 1(GLSL.std.450) 43(FClamp) 1269 1270 1271
-                              Store 1268(r008) 1272
-            1274:          68 Load 71(inF0)
-            1275:          68 ExtInst 1(GLSL.std.450) 14(Cos) 1274
-                              Store 1273(r009) 1275
+      1262(r000):    136(ptr) Variable Function
+      1267(r001):     69(ptr) Variable Function
+      1272(r003):    136(ptr) Variable Function
+      1276(r004):     69(ptr) Variable Function
+      1279(r005):     69(ptr) Variable Function
+      1282(r006):     69(ptr) Variable Function
+      1286(r007):     69(ptr) Variable Function
+      1296(r008):     69(ptr) Variable Function
+      1301(r009):     69(ptr) Variable Function
+      1304(r010):     69(ptr) Variable Function
+      1307(r011):     69(ptr) Variable Function
+      1310(r012):     69(ptr) Variable Function
+      1313(r013):     69(ptr) Variable Function
+      1316(r014):     69(ptr) Variable Function
+      1319(r015):     69(ptr) Variable Function
+      1322(r016):     69(ptr) Variable Function
+      1325(r017):     69(ptr) Variable Function
+      1328(r018):      7(ptr) Variable Function
+      1331(r019):     69(ptr) Variable Function
+      1334(R020):     69(ptr) Variable Function
+      1337(r021):     69(ptr) Variable Function
+      1340(r022):     69(ptr) Variable Function
+      1353(r023):     69(ptr) Variable Function
+      1356(r025):     69(ptr) Variable Function
+      1359(r026):     69(ptr) Variable Function
+     1363(r026a):     69(ptr) Variable Function
+      1368(r027):     69(ptr) Variable Function
+      1371(r028):     69(ptr) Variable Function
+      1375(r029):     69(ptr) Variable Function
+      1378(r030):     69(ptr) Variable Function
+      1382(r031):     69(ptr) Variable Function
+      1386(r032):     69(ptr) Variable Function
+      1390(r033):     69(ptr) Variable Function
+      1393(r034):     69(ptr) Variable Function
+      1396(r035):     69(ptr) Variable Function
+      1399(r036):     69(ptr) Variable Function
+      1404(r037):     69(ptr) Variable Function
+      1407(r038):     69(ptr) Variable Function
+      1414(r039):     69(ptr) Variable Function
+      1417(r049):     69(ptr) Variable Function
+      1422(r041):     69(ptr) Variable Function
+      1425(r042):     69(ptr) Variable Function
+      1429(r043):     69(ptr) Variable Function
+      1432(r044):     69(ptr) Variable Function
+      1437(r046):     69(ptr) Variable Function
+            1263:          68 Load 71(inF0)
+            1265:        1264 FOrdNotEqual 1263 139
+            1266:   135(bool) All 1265
+                              Store 1262(r000) 1266
+            1268:          68 Load 71(inF0)
+            1269:          68 ExtInst 1(GLSL.std.450) 4(FAbs) 1268
+                              Store 1267(r001) 1269
+            1270:          68 Load 71(inF0)
+            1271:          68 ExtInst 1(GLSL.std.450) 17(Acos) 1270
+            1273:          68 Load 71(inF0)
+            1274:        1264 FOrdNotEqual 1273 139
+            1275:   135(bool) Any 1274
+                              Store 1272(r003) 1275
             1277:          68 Load 71(inF0)
-            1278:          68 ExtInst 1(GLSL.std.450) 20(Cosh) 1277
-                              Store 1276(r010) 1278
+            1278:          68 ExtInst 1(GLSL.std.450) 16(Asin) 1277
+                              Store 1276(r004) 1278
             1280:          68 Load 71(inF0)
-            1281:          68 DPdx 1280
-                              Store 1279(r011) 1281
+            1281:          68 ExtInst 1(GLSL.std.450) 18(Atan) 1280
+                              Store 1279(r005) 1281
             1283:          68 Load 71(inF0)
-            1284:          68 DPdxCoarse 1283
-                              Store 1282(r012) 1284
-            1286:          68 Load 71(inF0)
-            1287:          68 DPdxFine 1286
-                              Store 1285(r013) 1287
+            1284:          68 Load 72(inF1)
+            1285:          68 ExtInst 1(GLSL.std.450) 25(Atan2) 1283 1284
+                              Store 1282(r006) 1285
+            1287:          68 Load 71(inF0)
+            1288:          68 ExtInst 1(GLSL.std.450) 9(Ceil) 1287
+                              Store 1286(r007) 1288
             1289:          68 Load 71(inF0)
-            1290:          68 DPdy 1289
-                              Store 1288(r014) 1290
-            1292:          68 Load 71(inF0)
-            1293:          68 DPdyCoarse 1292
-                              Store 1291(r015) 1293
-            1295:          68 Load 71(inF0)
-            1296:          68 DPdyFine 1295
-                              Store 1294(r016) 1296
-            1298:          68 Load 71(inF0)
-            1299:          68 ExtInst 1(GLSL.std.450) 12(Degrees) 1298
-                              Store 1297(r017) 1299
-            1301:          68 Load 71(inF0)
-            1302:    6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 1301
-                              Store 1300(r018) 1302
-            1304:          68 Load 71(inF0)
-            1305:          68 ExtInst 1(GLSL.std.450) 27(Exp) 1304
-                              Store 1303(r019) 1305
-            1307:          68 Load 71(inF0)
-            1308:          68 ExtInst 1(GLSL.std.450) 29(Exp2) 1307
-                              Store 1306(R020) 1308
-            1310:          68 Load 71(inF0)
-            1311:          68 ExtInst 1(GLSL.std.450) 8(Floor) 1310
-                              Store 1309(r021) 1311
-            1313:          68 Load 71(inF0)
-            1314:          68 Load 72(inF1)
-            1315:   36(fvec3) CompositeExtract 1313 0
-            1316:   36(fvec3) CompositeExtract 1314 0
-            1317:   36(fvec3) FMod 1315 1316
-            1318:   36(fvec3) CompositeExtract 1313 1
-            1319:   36(fvec3) CompositeExtract 1314 1
-            1320:   36(fvec3) FMod 1318 1319
-            1321:   36(fvec3) CompositeExtract 1313 2
-            1322:   36(fvec3) CompositeExtract 1314 2
-            1323:   36(fvec3) FMod 1321 1322
-            1324:          68 CompositeConstruct 1317 1320 1323
-                              Store 1312(r022) 1324
+            1291:        1264 FOrdLessThan 1289 1290
+            1292:   135(bool) Any 1291
+                              SelectionMerge 1294 None
+                              BranchConditional 1292 1293 1294
+            1293:               Label
+                                Kill
+            1294:             Label
+            1297:          68 Load 71(inF0)
+            1298:          68 Load 72(inF1)
+            1299:          68 Load 73(inF2)
+            1300:          68 ExtInst 1(GLSL.std.450) 43(FClamp) 1297 1298 1299
+                              Store 1296(r008) 1300
+            1302:          68 Load 71(inF0)
+            1303:          68 ExtInst 1(GLSL.std.450) 14(Cos) 1302
+                              Store 1301(r009) 1303
+            1305:          68 Load 71(inF0)
+            1306:          68 ExtInst 1(GLSL.std.450) 20(Cosh) 1305
+                              Store 1304(r010) 1306
+            1308:          68 Load 71(inF0)
+            1309:          68 DPdx 1308
+                              Store 1307(r011) 1309
+            1311:          68 Load 71(inF0)
+            1312:          68 DPdxCoarse 1311
+                              Store 1310(r012) 1312
+            1314:          68 Load 71(inF0)
+            1315:          68 DPdxFine 1314
+                              Store 1313(r013) 1315
+            1317:          68 Load 71(inF0)
+            1318:          68 DPdy 1317
+                              Store 1316(r014) 1318
+            1320:          68 Load 71(inF0)
+            1321:          68 DPdyCoarse 1320
+                              Store 1319(r015) 1321
+            1323:          68 Load 71(inF0)
+            1324:          68 DPdyFine 1323
+                              Store 1322(r016) 1324
             1326:          68 Load 71(inF0)
-            1327:          68 ExtInst 1(GLSL.std.450) 10(Fract) 1326
-                              Store 1325(r023) 1327
+            1327:          68 ExtInst 1(GLSL.std.450) 12(Degrees) 1326
+                              Store 1325(r017) 1327
             1329:          68 Load 71(inF0)
-            1330:          68 Fwidth 1329
-                              Store 1328(r025) 1330
+            1330:    6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 1329
+                              Store 1328(r018) 1330
             1332:          68 Load 71(inF0)
-            1333:          68 Load 72(inF1)
-            1334:          68 ExtInst 1(GLSL.std.450) 53(Ldexp) 1332 1333
-                              Store 1331(r026) 1334
-            1336:          68 Load 71(inF0)
-            1337:          68 Load 72(inF1)
-            1338:          68 Load 73(inF2)
-            1339:          68 ExtInst 1(GLSL.std.450) 46(FMix) 1336 1337 1338
-                              Store 1335(r026a) 1339
+            1333:          68 ExtInst 1(GLSL.std.450) 27(Exp) 1332
+                              Store 1331(r019) 1333
+            1335:          68 Load 71(inF0)
+            1336:          68 ExtInst 1(GLSL.std.450) 29(Exp2) 1335
+                              Store 1334(R020) 1336
+            1338:          68 Load 71(inF0)
+            1339:          68 ExtInst 1(GLSL.std.450) 8(Floor) 1338
+                              Store 1337(r021) 1339
             1341:          68 Load 71(inF0)
-            1342:          68 ExtInst 1(GLSL.std.450) 28(Log) 1341
-                              Store 1340(r027) 1342
-            1344:          68 Load 71(inF0)
-            1345:          68 ExtInst 1(GLSL.std.450) 30(Log2) 1344
-            1346:          68 MatrixTimesScalar 1345 262
-                              Store 1343(r028) 1346
-            1348:          68 Load 71(inF0)
-            1349:          68 ExtInst 1(GLSL.std.450) 30(Log2) 1348
-                              Store 1347(r029) 1349
-            1351:          68 Load 71(inF0)
-            1352:          68 Load 72(inF1)
-            1353:          68 ExtInst 1(GLSL.std.450) 40(FMax) 1351 1352
-                              Store 1350(r030) 1353
-            1355:          68 Load 71(inF0)
-            1356:          68 Load 72(inF1)
-            1357:          68 ExtInst 1(GLSL.std.450) 37(FMin) 1355 1356
-                              Store 1354(r031) 1357
-            1359:          68 Load 71(inF0)
-            1360:          68 Load 72(inF1)
-            1361:          68 ExtInst 1(GLSL.std.450) 26(Pow) 1359 1360
-                              Store 1358(r032) 1361
-            1363:          68 Load 71(inF0)
-            1364:          68 ExtInst 1(GLSL.std.450) 11(Radians) 1363
-                              Store 1362(r033) 1364
-            1366:          68 Load 71(inF0)
-            1367:          68 ExtInst 1(GLSL.std.450) 2(RoundEven) 1366
-                              Store 1365(r034) 1367
+            1342:          68 Load 72(inF1)
+            1343:   36(fvec3) CompositeExtract 1341 0
+            1344:   36(fvec3) CompositeExtract 1342 0
+            1345:   36(fvec3) FMod 1343 1344
+            1346:   36(fvec3) CompositeExtract 1341 1
+            1347:   36(fvec3) CompositeExtract 1342 1
+            1348:   36(fvec3) FMod 1346 1347
+            1349:   36(fvec3) CompositeExtract 1341 2
+            1350:   36(fvec3) CompositeExtract 1342 2
+            1351:   36(fvec3) FMod 1349 1350
+            1352:          68 CompositeConstruct 1345 1348 1351
+                              Store 1340(r022) 1352
+            1354:          68 Load 71(inF0)
+            1355:          68 ExtInst 1(GLSL.std.450) 10(Fract) 1354
+                              Store 1353(r023) 1355
+            1357:          68 Load 71(inF0)
+            1358:          68 Fwidth 1357
+                              Store 1356(r025) 1358
+            1360:          68 Load 71(inF0)
+            1361:          68 Load 72(inF1)
+            1362:          68 ExtInst 1(GLSL.std.450) 53(Ldexp) 1360 1361
+                              Store 1359(r026) 1362
+            1364:          68 Load 71(inF0)
+            1365:          68 Load 72(inF1)
+            1366:          68 Load 73(inF2)
+            1367:          68 ExtInst 1(GLSL.std.450) 46(FMix) 1364 1365 1366
+                              Store 1363(r026a) 1367
             1369:          68 Load 71(inF0)
-            1370:          68 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 1369
-                              Store 1368(r035) 1370
+            1370:          68 ExtInst 1(GLSL.std.450) 28(Log) 1369
+                              Store 1368(r027) 1370
             1372:          68 Load 71(inF0)
-            1373:   36(fvec3) CompositeConstruct 139 139 139
-            1374:   36(fvec3) CompositeConstruct 283 283 283
-            1375:          68 ExtInst 1(GLSL.std.450) 43(FClamp) 1372 1373 1374
-                              Store 1371(r036) 1375
-            1377:          68 Load 71(inF0)
-            1378:          68 ExtInst 1(GLSL.std.450) 6(FSign) 1377
-                              Store 1376(r037) 1378
-            1380:          68 Load 71(inF0)
-            1381:          68 ExtInst 1(GLSL.std.450) 13(Sin) 1380
-                              Store 1379(r038) 1381
-            1382:          68 Load 71(inF0)
-            1383:          68 ExtInst 1(GLSL.std.450) 13(Sin) 1382
-                              Store 72(inF1) 1383
-            1384:          68 Load 71(inF0)
-            1385:          68 ExtInst 1(GLSL.std.450) 14(Cos) 1384
-                              Store 73(inF2) 1385
+            1373:          68 ExtInst 1(GLSL.std.450) 30(Log2) 1372
+            1374:          68 MatrixTimesScalar 1373 268
+                              Store 1371(r028) 1374
+            1376:          68 Load 71(inF0)
+            1377:          68 ExtInst 1(GLSL.std.450) 30(Log2) 1376
+                              Store 1375(r029) 1377
+            1379:          68 Load 71(inF0)
+            1380:          68 Load 72(inF1)
+            1381:          68 ExtInst 1(GLSL.std.450) 40(FMax) 1379 1380
+                              Store 1378(r030) 1381
+            1383:          68 Load 71(inF0)
+            1384:          68 Load 72(inF1)
+            1385:          68 ExtInst 1(GLSL.std.450) 37(FMin) 1383 1384
+                              Store 1382(r031) 1385
             1387:          68 Load 71(inF0)
-            1388:          68 ExtInst 1(GLSL.std.450) 19(Sinh) 1387
-                              Store 1386(r039) 1388
-            1390:          68 Load 71(inF0)
-            1391:          68 Load 72(inF1)
-            1392:          68 Load 73(inF2)
-            1393:          68 ExtInst 1(GLSL.std.450) 49(SmoothStep) 1390 1391 1392
-                              Store 1389(r049) 1393
-            1395:          68 Load 71(inF0)
-            1396:          68 ExtInst 1(GLSL.std.450) 31(Sqrt) 1395
-                              Store 1394(r041) 1396
-            1398:          68 Load 71(inF0)
-            1399:          68 Load 72(inF1)
-            1400:          68 ExtInst 1(GLSL.std.450) 48(Step) 1398 1399
-                              Store 1397(r042) 1400
-            1402:          68 Load 71(inF0)
-            1403:          68 ExtInst 1(GLSL.std.450) 15(Tan) 1402
-                              Store 1401(r043) 1403
+            1388:          68 Load 72(inF1)
+            1389:          68 ExtInst 1(GLSL.std.450) 26(Pow) 1387 1388
+                              Store 1386(r032) 1389
+            1391:          68 Load 71(inF0)
+            1392:          68 ExtInst 1(GLSL.std.450) 11(Radians) 1391
+                              Store 1390(r033) 1392
+            1394:          68 Load 71(inF0)
+            1395:          68 ExtInst 1(GLSL.std.450) 2(RoundEven) 1394
+                              Store 1393(r034) 1395
+            1397:          68 Load 71(inF0)
+            1398:          68 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 1397
+                              Store 1396(r035) 1398
+            1400:          68 Load 71(inF0)
+            1401:   36(fvec3) CompositeConstruct 139 139 139
+            1402:   36(fvec3) CompositeConstruct 289 289 289
+            1403:          68 ExtInst 1(GLSL.std.450) 43(FClamp) 1400 1401 1402
+                              Store 1399(r036) 1403
             1405:          68 Load 71(inF0)
-            1406:          68 ExtInst 1(GLSL.std.450) 21(Tanh) 1405
-                              Store 1404(r044) 1406
-            1407:          68 Load 71(inF0)
-            1408:          68 Transpose 1407
+            1406:          68 ExtInst 1(GLSL.std.450) 6(FSign) 1405
+                              Store 1404(r037) 1406
+            1408:          68 Load 71(inF0)
+            1409:          68 ExtInst 1(GLSL.std.450) 13(Sin) 1408
+                              Store 1407(r038) 1409
             1410:          68 Load 71(inF0)
-            1411:          68 ExtInst 1(GLSL.std.450) 3(Trunc) 1410
-                              Store 1409(r046) 1411
-                              ReturnValue 1413
+            1411:          68 ExtInst 1(GLSL.std.450) 13(Sin) 1410
+                              Store 72(inF1) 1411
+            1412:          68 Load 71(inF0)
+            1413:          68 ExtInst 1(GLSL.std.450) 14(Cos) 1412
+                              Store 73(inF2) 1413
+            1415:          68 Load 71(inF0)
+            1416:          68 ExtInst 1(GLSL.std.450) 19(Sinh) 1415
+                              Store 1414(r039) 1416
+            1418:          68 Load 71(inF0)
+            1419:          68 Load 72(inF1)
+            1420:          68 Load 73(inF2)
+            1421:          68 ExtInst 1(GLSL.std.450) 49(SmoothStep) 1418 1419 1420
+                              Store 1417(r049) 1421
+            1423:          68 Load 71(inF0)
+            1424:          68 ExtInst 1(GLSL.std.450) 31(Sqrt) 1423
+                              Store 1422(r041) 1424
+            1426:          68 Load 71(inF0)
+            1427:          68 Load 72(inF1)
+            1428:          68 ExtInst 1(GLSL.std.450) 48(Step) 1426 1427
+                              Store 1425(r042) 1428
+            1430:          68 Load 71(inF0)
+            1431:          68 ExtInst 1(GLSL.std.450) 15(Tan) 1430
+                              Store 1429(r043) 1431
+            1433:          68 Load 71(inF0)
+            1434:          68 ExtInst 1(GLSL.std.450) 21(Tanh) 1433
+                              Store 1432(r044) 1434
+            1435:          68 Load 71(inF0)
+            1436:          68 Transpose 1435
+            1438:          68 Load 71(inF0)
+            1439:          68 ExtInst 1(GLSL.std.450) 3(Trunc) 1438
+                              Store 1437(r046) 1439
+                              ReturnValue 1441
                               FunctionEnd
 82(PixelShaderFunction4x4(mf44;mf44;mf44;):          76 Function None 78
         79(inF0):     77(ptr) FunctionParameter
         80(inF1):     77(ptr) FunctionParameter
         81(inF2):     77(ptr) FunctionParameter
               83:             Label
-      1416(r000):    136(ptr) Variable Function
-      1421(r001):     77(ptr) Variable Function
-      1426(r003):    136(ptr) Variable Function
-      1430(r004):     77(ptr) Variable Function
-      1433(r005):     77(ptr) Variable Function
-      1436(r006):     77(ptr) Variable Function
-      1440(r007):     77(ptr) Variable Function
-      1450(r008):     77(ptr) Variable Function
-      1455(r009):     77(ptr) Variable Function
-      1458(r010):     77(ptr) Variable Function
-      1461(r011):     77(ptr) Variable Function
-      1464(r012):     77(ptr) Variable Function
-      1467(r013):     77(ptr) Variable Function
-      1470(r014):     77(ptr) Variable Function
-      1473(r015):     77(ptr) Variable Function
-      1476(r016):     77(ptr) Variable Function
-      1479(r017):     77(ptr) Variable Function
-      1482(r018):      7(ptr) Variable Function
-      1485(r019):     77(ptr) Variable Function
-      1488(R020):     77(ptr) Variable Function
-      1491(r021):     77(ptr) Variable Function
-      1494(r022):     77(ptr) Variable Function
-      1510(r023):     77(ptr) Variable Function
-      1513(r025):     77(ptr) Variable Function
-      1516(r026):     77(ptr) Variable Function
-     1520(r026a):     77(ptr) Variable Function
-      1525(r027):     77(ptr) Variable Function
-      1528(r028):     77(ptr) Variable Function
-      1532(r029):     77(ptr) Variable Function
-      1535(r030):     77(ptr) Variable Function
-      1539(r031):     77(ptr) Variable Function
-      1543(r032):     77(ptr) Variable Function
-      1547(r033):     77(ptr) Variable Function
-      1550(r034):     77(ptr) Variable Function
-      1553(r035):     77(ptr) Variable Function
-      1556(r036):     77(ptr) Variable Function
-      1561(r037):     77(ptr) Variable Function
-      1564(r038):     77(ptr) Variable Function
-      1571(r039):     77(ptr) Variable Function
-      1574(r049):     77(ptr) Variable Function
-      1579(r041):     77(ptr) Variable Function
-      1582(r042):     77(ptr) Variable Function
-      1586(r043):     77(ptr) Variable Function
-      1589(r044):     77(ptr) Variable Function
-      1594(r046):     77(ptr) Variable Function
-            1417:          76 Load 79(inF0)
-            1419:        1418 FOrdNotEqual 1417 139
-            1420:   135(bool) All 1419
-                              Store 1416(r000) 1420
-            1422:          76 Load 79(inF0)
-            1423:          76 ExtInst 1(GLSL.std.450) 4(FAbs) 1422
-                              Store 1421(r001) 1423
-            1424:          76 Load 79(inF0)
-            1425:          76 ExtInst 1(GLSL.std.450) 17(Acos) 1424
-            1427:          76 Load 79(inF0)
-            1428:        1418 FOrdNotEqual 1427 139
-            1429:   135(bool) Any 1428
-                              Store 1426(r003) 1429
-            1431:          76 Load 79(inF0)
-            1432:          76 ExtInst 1(GLSL.std.450) 16(Asin) 1431
-                              Store 1430(r004) 1432
-            1434:          76 Load 79(inF0)
-            1435:          76 ExtInst 1(GLSL.std.450) 18(Atan) 1434
-                              Store 1433(r005) 1435
-            1437:          76 Load 79(inF0)
-            1438:          76 Load 80(inF1)
-            1439:          76 ExtInst 1(GLSL.std.450) 25(Atan2) 1437 1438
-                              Store 1436(r006) 1439
-            1441:          76 Load 79(inF0)
-            1442:          76 ExtInst 1(GLSL.std.450) 9(Ceil) 1441
-                              Store 1440(r007) 1442
-            1443:          76 Load 79(inF0)
-            1445:        1418 FOrdLessThan 1443 1444
-            1446:   135(bool) Any 1445
-                              SelectionMerge 1448 None
-                              BranchConditional 1446 1447 1448
-            1447:               Label
-                                Kill
-            1448:             Label
-            1451:          76 Load 79(inF0)
-            1452:          76 Load 80(inF1)
-            1453:          76 Load 81(inF2)
-            1454:          76 ExtInst 1(GLSL.std.450) 43(FClamp) 1451 1452 1453
-                              Store 1450(r008) 1454
-            1456:          76 Load 79(inF0)
-            1457:          76 ExtInst 1(GLSL.std.450) 14(Cos) 1456
-                              Store 1455(r009) 1457
+      1444(r000):    136(ptr) Variable Function
+      1449(r001):     77(ptr) Variable Function
+      1454(r003):    136(ptr) Variable Function
+      1458(r004):     77(ptr) Variable Function
+      1461(r005):     77(ptr) Variable Function
+      1464(r006):     77(ptr) Variable Function
+      1468(r007):     77(ptr) Variable Function
+      1478(r008):     77(ptr) Variable Function
+      1483(r009):     77(ptr) Variable Function
+      1486(r010):     77(ptr) Variable Function
+      1489(r011):     77(ptr) Variable Function
+      1492(r012):     77(ptr) Variable Function
+      1495(r013):     77(ptr) Variable Function
+      1498(r014):     77(ptr) Variable Function
+      1501(r015):     77(ptr) Variable Function
+      1504(r016):     77(ptr) Variable Function
+      1507(r017):     77(ptr) Variable Function
+      1510(r018):      7(ptr) Variable Function
+      1513(r019):     77(ptr) Variable Function
+      1516(R020):     77(ptr) Variable Function
+      1519(r021):     77(ptr) Variable Function
+      1522(r022):     77(ptr) Variable Function
+      1538(r023):     77(ptr) Variable Function
+      1541(r025):     77(ptr) Variable Function
+      1544(r026):     77(ptr) Variable Function
+     1548(r026a):     77(ptr) Variable Function
+      1553(r027):     77(ptr) Variable Function
+      1556(r028):     77(ptr) Variable Function
+      1560(r029):     77(ptr) Variable Function
+      1563(r030):     77(ptr) Variable Function
+      1567(r031):     77(ptr) Variable Function
+      1571(r032):     77(ptr) Variable Function
+      1575(r033):     77(ptr) Variable Function
+      1578(r034):     77(ptr) Variable Function
+      1581(r035):     77(ptr) Variable Function
+      1584(r036):     77(ptr) Variable Function
+      1589(r037):     77(ptr) Variable Function
+      1592(r038):     77(ptr) Variable Function
+      1599(r039):     77(ptr) Variable Function
+      1602(r049):     77(ptr) Variable Function
+      1607(r041):     77(ptr) Variable Function
+      1610(r042):     77(ptr) Variable Function
+      1614(r043):     77(ptr) Variable Function
+      1617(r044):     77(ptr) Variable Function
+      1622(r046):     77(ptr) Variable Function
+            1445:          76 Load 79(inF0)
+            1447:        1446 FOrdNotEqual 1445 139
+            1448:   135(bool) All 1447
+                              Store 1444(r000) 1448
+            1450:          76 Load 79(inF0)
+            1451:          76 ExtInst 1(GLSL.std.450) 4(FAbs) 1450
+                              Store 1449(r001) 1451
+            1452:          76 Load 79(inF0)
+            1453:          76 ExtInst 1(GLSL.std.450) 17(Acos) 1452
+            1455:          76 Load 79(inF0)
+            1456:        1446 FOrdNotEqual 1455 139
+            1457:   135(bool) Any 1456
+                              Store 1454(r003) 1457
             1459:          76 Load 79(inF0)
-            1460:          76 ExtInst 1(GLSL.std.450) 20(Cosh) 1459
-                              Store 1458(r010) 1460
+            1460:          76 ExtInst 1(GLSL.std.450) 16(Asin) 1459
+                              Store 1458(r004) 1460
             1462:          76 Load 79(inF0)
-            1463:          76 DPdx 1462
-                              Store 1461(r011) 1463
+            1463:          76 ExtInst 1(GLSL.std.450) 18(Atan) 1462
+                              Store 1461(r005) 1463
             1465:          76 Load 79(inF0)
-            1466:          76 DPdxCoarse 1465
-                              Store 1464(r012) 1466
-            1468:          76 Load 79(inF0)
-            1469:          76 DPdxFine 1468
-                              Store 1467(r013) 1469
+            1466:          76 Load 80(inF1)
+            1467:          76 ExtInst 1(GLSL.std.450) 25(Atan2) 1465 1466
+                              Store 1464(r006) 1467
+            1469:          76 Load 79(inF0)
+            1470:          76 ExtInst 1(GLSL.std.450) 9(Ceil) 1469
+                              Store 1468(r007) 1470
             1471:          76 Load 79(inF0)
-            1472:          76 DPdy 1471
-                              Store 1470(r014) 1472
-            1474:          76 Load 79(inF0)
-            1475:          76 DPdyCoarse 1474
-                              Store 1473(r015) 1475
-            1477:          76 Load 79(inF0)
-            1478:          76 DPdyFine 1477
-                              Store 1476(r016) 1478
-            1480:          76 Load 79(inF0)
-            1481:          76 ExtInst 1(GLSL.std.450) 12(Degrees) 1480
-                              Store 1479(r017) 1481
-            1483:          76 Load 79(inF0)
-            1484:    6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 1483
-                              Store 1482(r018) 1484
-            1486:          76 Load 79(inF0)
-            1487:          76 ExtInst 1(GLSL.std.450) 27(Exp) 1486
-                              Store 1485(r019) 1487
-            1489:          76 Load 79(inF0)
-            1490:          76 ExtInst 1(GLSL.std.450) 29(Exp2) 1489
-                              Store 1488(R020) 1490
-            1492:          76 Load 79(inF0)
-            1493:          76 ExtInst 1(GLSL.std.450) 8(Floor) 1492
-                              Store 1491(r021) 1493
-            1495:          76 Load 79(inF0)
-            1496:          76 Load 80(inF1)
-            1497:   48(fvec4) CompositeExtract 1495 0
-            1498:   48(fvec4) CompositeExtract 1496 0
-            1499:   48(fvec4) FMod 1497 1498
-            1500:   48(fvec4) CompositeExtract 1495 1
-            1501:   48(fvec4) CompositeExtract 1496 1
-            1502:   48(fvec4) FMod 1500 1501
-            1503:   48(fvec4) CompositeExtract 1495 2
-            1504:   48(fvec4) CompositeExtract 1496 2
-            1505:   48(fvec4) FMod 1503 1504
-            1506:   48(fvec4) CompositeExtract 1495 3
-            1507:   48(fvec4) CompositeExtract 1496 3
-            1508:   48(fvec4) FMod 1506 1507
-            1509:          76 CompositeConstruct 1499 1502 1505 1508
-                              Store 1494(r022) 1509
+            1473:        1446 FOrdLessThan 1471 1472
+            1474:   135(bool) Any 1473
+                              SelectionMerge 1476 None
+                              BranchConditional 1474 1475 1476
+            1475:               Label
+                                Kill
+            1476:             Label
+            1479:          76 Load 79(inF0)
+            1480:          76 Load 80(inF1)
+            1481:          76 Load 81(inF2)
+            1482:          76 ExtInst 1(GLSL.std.450) 43(FClamp) 1479 1480 1481
+                              Store 1478(r008) 1482
+            1484:          76 Load 79(inF0)
+            1485:          76 ExtInst 1(GLSL.std.450) 14(Cos) 1484
+                              Store 1483(r009) 1485
+            1487:          76 Load 79(inF0)
+            1488:          76 ExtInst 1(GLSL.std.450) 20(Cosh) 1487
+                              Store 1486(r010) 1488
+            1490:          76 Load 79(inF0)
+            1491:          76 DPdx 1490
+                              Store 1489(r011) 1491
+            1493:          76 Load 79(inF0)
+            1494:          76 DPdxCoarse 1493
+                              Store 1492(r012) 1494
+            1496:          76 Load 79(inF0)
+            1497:          76 DPdxFine 1496
+                              Store 1495(r013) 1497
+            1499:          76 Load 79(inF0)
+            1500:          76 DPdy 1499
+                              Store 1498(r014) 1500
+            1502:          76 Load 79(inF0)
+            1503:          76 DPdyCoarse 1502
+                              Store 1501(r015) 1503
+            1505:          76 Load 79(inF0)
+            1506:          76 DPdyFine 1505
+                              Store 1504(r016) 1506
+            1508:          76 Load 79(inF0)
+            1509:          76 ExtInst 1(GLSL.std.450) 12(Degrees) 1508
+                              Store 1507(r017) 1509
             1511:          76 Load 79(inF0)
-            1512:          76 ExtInst 1(GLSL.std.450) 10(Fract) 1511
-                              Store 1510(r023) 1512
+            1512:    6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 1511
+                              Store 1510(r018) 1512
             1514:          76 Load 79(inF0)
-            1515:          76 Fwidth 1514
-                              Store 1513(r025) 1515
+            1515:          76 ExtInst 1(GLSL.std.450) 27(Exp) 1514
+                              Store 1513(r019) 1515
             1517:          76 Load 79(inF0)
-            1518:          76 Load 80(inF1)
-            1519:          76 ExtInst 1(GLSL.std.450) 53(Ldexp) 1517 1518
-                              Store 1516(r026) 1519
-            1521:          76 Load 79(inF0)
-            1522:          76 Load 80(inF1)
-            1523:          76 Load 81(inF2)
-            1524:          76 ExtInst 1(GLSL.std.450) 46(FMix) 1521 1522 1523
-                              Store 1520(r026a) 1524
-            1526:          76 Load 79(inF0)
-            1527:          76 ExtInst 1(GLSL.std.450) 28(Log) 1526
-                              Store 1525(r027) 1527
-            1529:          76 Load 79(inF0)
-            1530:          76 ExtInst 1(GLSL.std.450) 30(Log2) 1529
-            1531:          76 MatrixTimesScalar 1530 262
-                              Store 1528(r028) 1531
-            1533:          76 Load 79(inF0)
-            1534:          76 ExtInst 1(GLSL.std.450) 30(Log2) 1533
-                              Store 1532(r029) 1534
-            1536:          76 Load 79(inF0)
-            1537:          76 Load 80(inF1)
-            1538:          76 ExtInst 1(GLSL.std.450) 40(FMax) 1536 1537
-                              Store 1535(r030) 1538
-            1540:          76 Load 79(inF0)
-            1541:          76 Load 80(inF1)
-            1542:          76 ExtInst 1(GLSL.std.450) 37(FMin) 1540 1541
-                              Store 1539(r031) 1542
-            1544:          76 Load 79(inF0)
-            1545:          76 Load 80(inF1)
-            1546:          76 ExtInst 1(GLSL.std.450) 26(Pow) 1544 1545
-                              Store 1543(r032) 1546
-            1548:          76 Load 79(inF0)
-            1549:          76 ExtInst 1(GLSL.std.450) 11(Radians) 1548
-                              Store 1547(r033) 1549
-            1551:          76 Load 79(inF0)
-            1552:          76 ExtInst 1(GLSL.std.450) 2(RoundEven) 1551
-                              Store 1550(r034) 1552
+            1518:          76 ExtInst 1(GLSL.std.450) 29(Exp2) 1517
+                              Store 1516(R020) 1518
+            1520:          76 Load 79(inF0)
+            1521:          76 ExtInst 1(GLSL.std.450) 8(Floor) 1520
+                              Store 1519(r021) 1521
+            1523:          76 Load 79(inF0)
+            1524:          76 Load 80(inF1)
+            1525:   48(fvec4) CompositeExtract 1523 0
+            1526:   48(fvec4) CompositeExtract 1524 0
+            1527:   48(fvec4) FMod 1525 1526
+            1528:   48(fvec4) CompositeExtract 1523 1
+            1529:   48(fvec4) CompositeExtract 1524 1
+            1530:   48(fvec4) FMod 1528 1529
+            1531:   48(fvec4) CompositeExtract 1523 2
+            1532:   48(fvec4) CompositeExtract 1524 2
+            1533:   48(fvec4) FMod 1531 1532
+            1534:   48(fvec4) CompositeExtract 1523 3
+            1535:   48(fvec4) CompositeExtract 1524 3
+            1536:   48(fvec4) FMod 1534 1535
+            1537:          76 CompositeConstruct 1527 1530 1533 1536
+                              Store 1522(r022) 1537
+            1539:          76 Load 79(inF0)
+            1540:          76 ExtInst 1(GLSL.std.450) 10(Fract) 1539
+                              Store 1538(r023) 1540
+            1542:          76 Load 79(inF0)
+            1543:          76 Fwidth 1542
+                              Store 1541(r025) 1543
+            1545:          76 Load 79(inF0)
+            1546:          76 Load 80(inF1)
+            1547:          76 ExtInst 1(GLSL.std.450) 53(Ldexp) 1545 1546
+                              Store 1544(r026) 1547
+            1549:          76 Load 79(inF0)
+            1550:          76 Load 80(inF1)
+            1551:          76 Load 81(inF2)
+            1552:          76 ExtInst 1(GLSL.std.450) 46(FMix) 1549 1550 1551
+                              Store 1548(r026a) 1552
             1554:          76 Load 79(inF0)
-            1555:          76 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 1554
-                              Store 1553(r035) 1555
+            1555:          76 ExtInst 1(GLSL.std.450) 28(Log) 1554
+                              Store 1553(r027) 1555
             1557:          76 Load 79(inF0)
-            1558:   48(fvec4) CompositeConstruct 139 139 139 139
-            1559:   48(fvec4) CompositeConstruct 283 283 283 283
-            1560:          76 ExtInst 1(GLSL.std.450) 43(FClamp) 1557 1558 1559
-                              Store 1556(r036) 1560
-            1562:          76 Load 79(inF0)
-            1563:          76 ExtInst 1(GLSL.std.450) 6(FSign) 1562
-                              Store 1561(r037) 1563
-            1565:          76 Load 79(inF0)
-            1566:          76 ExtInst 1(GLSL.std.450) 13(Sin) 1565
-                              Store 1564(r038) 1566
-            1567:          76 Load 79(inF0)
-            1568:          76 ExtInst 1(GLSL.std.450) 13(Sin) 1567
-                              Store 80(inF1) 1568
-            1569:          76 Load 79(inF0)
-            1570:          76 ExtInst 1(GLSL.std.450) 14(Cos) 1569
-                              Store 81(inF2) 1570
+            1558:          76 ExtInst 1(GLSL.std.450) 30(Log2) 1557
+            1559:          76 MatrixTimesScalar 1558 268
+                              Store 1556(r028) 1559
+            1561:          76 Load 79(inF0)
+            1562:          76 ExtInst 1(GLSL.std.450) 30(Log2) 1561
+                              Store 1560(r029) 1562
+            1564:          76 Load 79(inF0)
+            1565:          76 Load 80(inF1)
+            1566:          76 ExtInst 1(GLSL.std.450) 40(FMax) 1564 1565
+                              Store 1563(r030) 1566
+            1568:          76 Load 79(inF0)
+            1569:          76 Load 80(inF1)
+            1570:          76 ExtInst 1(GLSL.std.450) 37(FMin) 1568 1569
+                              Store 1567(r031) 1570
             1572:          76 Load 79(inF0)
-            1573:          76 ExtInst 1(GLSL.std.450) 19(Sinh) 1572
-                              Store 1571(r039) 1573
-            1575:          76 Load 79(inF0)
-            1576:          76 Load 80(inF1)
-            1577:          76 Load 81(inF2)
-            1578:          76 ExtInst 1(GLSL.std.450) 49(SmoothStep) 1575 1576 1577
-                              Store 1574(r049) 1578
-            1580:          76 Load 79(inF0)
-            1581:          76 ExtInst 1(GLSL.std.450) 31(Sqrt) 1580
-                              Store 1579(r041) 1581
-            1583:          76 Load 79(inF0)
-            1584:          76 Load 80(inF1)
-            1585:          76 ExtInst 1(GLSL.std.450) 48(Step) 1583 1584
-                              Store 1582(r042) 1585
-            1587:          76 Load 79(inF0)
-            1588:          76 ExtInst 1(GLSL.std.450) 15(Tan) 1587
-                              Store 1586(r043) 1588
+            1573:          76 Load 80(inF1)
+            1574:          76 ExtInst 1(GLSL.std.450) 26(Pow) 1572 1573
+                              Store 1571(r032) 1574
+            1576:          76 Load 79(inF0)
+            1577:          76 ExtInst 1(GLSL.std.450) 11(Radians) 1576
+                              Store 1575(r033) 1577
+            1579:          76 Load 79(inF0)
+            1580:          76 ExtInst 1(GLSL.std.450) 2(RoundEven) 1579
+                              Store 1578(r034) 1580
+            1582:          76 Load 79(inF0)
+            1583:          76 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 1582
+                              Store 1581(r035) 1583
+            1585:          76 Load 79(inF0)
+            1586:   48(fvec4) CompositeConstruct 139 139 139 139
+            1587:   48(fvec4) CompositeConstruct 289 289 289 289
+            1588:          76 ExtInst 1(GLSL.std.450) 43(FClamp) 1585 1586 1587
+                              Store 1584(r036) 1588
             1590:          76 Load 79(inF0)
-            1591:          76 ExtInst 1(GLSL.std.450) 21(Tanh) 1590
-                              Store 1589(r044) 1591
-            1592:          76 Load 79(inF0)
-            1593:          76 Transpose 1592
+            1591:          76 ExtInst 1(GLSL.std.450) 6(FSign) 1590
+                              Store 1589(r037) 1591
+            1593:          76 Load 79(inF0)
+            1594:          76 ExtInst 1(GLSL.std.450) 13(Sin) 1593
+                              Store 1592(r038) 1594
             1595:          76 Load 79(inF0)
-            1596:          76 ExtInst 1(GLSL.std.450) 3(Trunc) 1595
-                              Store 1594(r046) 1596
-                              ReturnValue 1598
+            1596:          76 ExtInst 1(GLSL.std.450) 13(Sin) 1595
+                              Store 80(inF1) 1596
+            1597:          76 Load 79(inF0)
+            1598:          76 ExtInst 1(GLSL.std.450) 14(Cos) 1597
+                              Store 81(inF2) 1598
+            1600:          76 Load 79(inF0)
+            1601:          76 ExtInst 1(GLSL.std.450) 19(Sinh) 1600
+                              Store 1599(r039) 1601
+            1603:          76 Load 79(inF0)
+            1604:          76 Load 80(inF1)
+            1605:          76 Load 81(inF2)
+            1606:          76 ExtInst 1(GLSL.std.450) 49(SmoothStep) 1603 1604 1605
+                              Store 1602(r049) 1606
+            1608:          76 Load 79(inF0)
+            1609:          76 ExtInst 1(GLSL.std.450) 31(Sqrt) 1608
+                              Store 1607(r041) 1609
+            1611:          76 Load 79(inF0)
+            1612:          76 Load 80(inF1)
+            1613:          76 ExtInst 1(GLSL.std.450) 48(Step) 1611 1612
+                              Store 1610(r042) 1613
+            1615:          76 Load 79(inF0)
+            1616:          76 ExtInst 1(GLSL.std.450) 15(Tan) 1615
+                              Store 1614(r043) 1616
+            1618:          76 Load 79(inF0)
+            1619:          76 ExtInst 1(GLSL.std.450) 21(Tanh) 1618
+                              Store 1617(r044) 1619
+            1620:          76 Load 79(inF0)
+            1621:          76 Transpose 1620
+            1623:          76 Load 79(inF0)
+            1624:          76 ExtInst 1(GLSL.std.450) 3(Trunc) 1623
+                              Store 1622(r046) 1624
+                              ReturnValue 1626
                               FunctionEnd
 91(TestGenMul2(f1;f1;vf2;vf2;mf22;mf22;):           2 Function None 84
         85(inF0):      7(ptr) FunctionParameter
@@ -8076,51 +8193,51 @@
        89(inFM0):     61(ptr) FunctionParameter
        90(inFM1):     61(ptr) FunctionParameter
               92:             Label
-        1601(r0):      7(ptr) Variable Function
-        1605(r1):     25(ptr) Variable Function
-        1609(r2):     25(ptr) Variable Function
-        1613(r3):      7(ptr) Variable Function
-        1617(r4):     25(ptr) Variable Function
-        1621(r5):     25(ptr) Variable Function
-        1625(r6):     61(ptr) Variable Function
-        1629(r7):     61(ptr) Variable Function
-        1633(r8):     61(ptr) Variable Function
-            1602:    6(float) Load 86(inF1)
-            1603:    6(float) Load 85(inF0)
-            1604:    6(float) FMul 1602 1603
-                              Store 1601(r0) 1604
-            1606:    6(float) Load 85(inF0)
-            1607:   24(fvec2) Load 87(inFV0)
-            1608:   24(fvec2) VectorTimesScalar 1607 1606
-                              Store 1605(r1) 1608
-            1610:   24(fvec2) Load 87(inFV0)
-            1611:    6(float) Load 85(inF0)
-            1612:   24(fvec2) VectorTimesScalar 1610 1611
-                              Store 1609(r2) 1612
-            1614:   24(fvec2) Load 87(inFV0)
-            1615:   24(fvec2) Load 88(inFV1)
-            1616:    6(float) Dot 1614 1615
-                              Store 1613(r3) 1616
-            1618:   24(fvec2) Load 87(inFV0)
-            1619:          60 Load 89(inFM0)
-            1620:   24(fvec2) VectorTimesMatrix 1618 1619
-                              Store 1617(r4) 1620
-            1622:          60 Load 89(inFM0)
-            1623:   24(fvec2) Load 87(inFV0)
-            1624:   24(fvec2) MatrixTimesVector 1622 1623
-                              Store 1621(r5) 1624
-            1626:    6(float) Load 85(inF0)
-            1627:          60 Load 89(inFM0)
-            1628:          60 MatrixTimesScalar 1627 1626
-                              Store 1625(r6) 1628
-            1630:          60 Load 89(inFM0)
+        1629(r0):      7(ptr) Variable Function
+        1633(r1):     25(ptr) Variable Function
+        1637(r2):     25(ptr) Variable Function
+        1641(r3):      7(ptr) Variable Function
+        1645(r4):     25(ptr) Variable Function
+        1649(r5):     25(ptr) Variable Function
+        1653(r6):     61(ptr) Variable Function
+        1657(r7):     61(ptr) Variable Function
+        1661(r8):     61(ptr) Variable Function
+            1630:    6(float) Load 86(inF1)
             1631:    6(float) Load 85(inF0)
-            1632:          60 MatrixTimesScalar 1630 1631
-                              Store 1629(r7) 1632
-            1634:          60 Load 90(inFM1)
-            1635:          60 Load 89(inFM0)
-            1636:          60 MatrixTimesMatrix 1634 1635
-                              Store 1633(r8) 1636
+            1632:    6(float) FMul 1630 1631
+                              Store 1629(r0) 1632
+            1634:    6(float) Load 85(inF0)
+            1635:   24(fvec2) Load 87(inFV0)
+            1636:   24(fvec2) VectorTimesScalar 1635 1634
+                              Store 1633(r1) 1636
+            1638:   24(fvec2) Load 87(inFV0)
+            1639:    6(float) Load 85(inF0)
+            1640:   24(fvec2) VectorTimesScalar 1638 1639
+                              Store 1637(r2) 1640
+            1642:   24(fvec2) Load 87(inFV0)
+            1643:   24(fvec2) Load 88(inFV1)
+            1644:    6(float) Dot 1642 1643
+                              Store 1641(r3) 1644
+            1646:   24(fvec2) Load 87(inFV0)
+            1647:          60 Load 89(inFM0)
+            1648:   24(fvec2) VectorTimesMatrix 1646 1647
+                              Store 1645(r4) 1648
+            1650:          60 Load 89(inFM0)
+            1651:   24(fvec2) Load 87(inFV0)
+            1652:   24(fvec2) MatrixTimesVector 1650 1651
+                              Store 1649(r5) 1652
+            1654:    6(float) Load 85(inF0)
+            1655:          60 Load 89(inFM0)
+            1656:          60 MatrixTimesScalar 1655 1654
+                              Store 1653(r6) 1656
+            1658:          60 Load 89(inFM0)
+            1659:    6(float) Load 85(inF0)
+            1660:          60 MatrixTimesScalar 1658 1659
+                              Store 1657(r7) 1660
+            1662:          60 Load 90(inFM1)
+            1663:          60 Load 89(inFM0)
+            1664:          60 MatrixTimesMatrix 1662 1663
+                              Store 1661(r8) 1664
                               Return
                               FunctionEnd
 100(TestGenMul3(f1;f1;vf3;vf3;mf33;mf33;):           2 Function None 93
@@ -8131,51 +8248,51 @@
        98(inFM0):     69(ptr) FunctionParameter
        99(inFM1):     69(ptr) FunctionParameter
              101:             Label
-        1637(r0):      7(ptr) Variable Function
-        1641(r1):     37(ptr) Variable Function
-        1645(r2):     37(ptr) Variable Function
-        1649(r3):      7(ptr) Variable Function
-        1653(r4):     37(ptr) Variable Function
-        1657(r5):     37(ptr) Variable Function
-        1661(r6):     69(ptr) Variable Function
-        1665(r7):     69(ptr) Variable Function
-        1669(r8):     69(ptr) Variable Function
-            1638:    6(float) Load 95(inF1)
-            1639:    6(float) Load 94(inF0)
-            1640:    6(float) FMul 1638 1639
-                              Store 1637(r0) 1640
-            1642:    6(float) Load 94(inF0)
-            1643:   36(fvec3) Load 96(inFV0)
-            1644:   36(fvec3) VectorTimesScalar 1643 1642
-                              Store 1641(r1) 1644
-            1646:   36(fvec3) Load 96(inFV0)
-            1647:    6(float) Load 94(inF0)
-            1648:   36(fvec3) VectorTimesScalar 1646 1647
-                              Store 1645(r2) 1648
-            1650:   36(fvec3) Load 96(inFV0)
-            1651:   36(fvec3) Load 97(inFV1)
-            1652:    6(float) Dot 1650 1651
-                              Store 1649(r3) 1652
-            1654:   36(fvec3) Load 96(inFV0)
-            1655:          68 Load 98(inFM0)
-            1656:   36(fvec3) VectorTimesMatrix 1654 1655
-                              Store 1653(r4) 1656
-            1658:          68 Load 98(inFM0)
-            1659:   36(fvec3) Load 96(inFV0)
-            1660:   36(fvec3) MatrixTimesVector 1658 1659
-                              Store 1657(r5) 1660
-            1662:    6(float) Load 94(inF0)
-            1663:          68 Load 98(inFM0)
-            1664:          68 MatrixTimesScalar 1663 1662
-                              Store 1661(r6) 1664
-            1666:          68 Load 98(inFM0)
+        1665(r0):      7(ptr) Variable Function
+        1669(r1):     37(ptr) Variable Function
+        1673(r2):     37(ptr) Variable Function
+        1677(r3):      7(ptr) Variable Function
+        1681(r4):     37(ptr) Variable Function
+        1685(r5):     37(ptr) Variable Function
+        1689(r6):     69(ptr) Variable Function
+        1693(r7):     69(ptr) Variable Function
+        1697(r8):     69(ptr) Variable Function
+            1666:    6(float) Load 95(inF1)
             1667:    6(float) Load 94(inF0)
-            1668:          68 MatrixTimesScalar 1666 1667
-                              Store 1665(r7) 1668
-            1670:          68 Load 99(inFM1)
-            1671:          68 Load 98(inFM0)
-            1672:          68 MatrixTimesMatrix 1670 1671
-                              Store 1669(r8) 1672
+            1668:    6(float) FMul 1666 1667
+                              Store 1665(r0) 1668
+            1670:    6(float) Load 94(inF0)
+            1671:   36(fvec3) Load 96(inFV0)
+            1672:   36(fvec3) VectorTimesScalar 1671 1670
+                              Store 1669(r1) 1672
+            1674:   36(fvec3) Load 96(inFV0)
+            1675:    6(float) Load 94(inF0)
+            1676:   36(fvec3) VectorTimesScalar 1674 1675
+                              Store 1673(r2) 1676
+            1678:   36(fvec3) Load 96(inFV0)
+            1679:   36(fvec3) Load 97(inFV1)
+            1680:    6(float) Dot 1678 1679
+                              Store 1677(r3) 1680
+            1682:   36(fvec3) Load 96(inFV0)
+            1683:          68 Load 98(inFM0)
+            1684:   36(fvec3) VectorTimesMatrix 1682 1683
+                              Store 1681(r4) 1684
+            1686:          68 Load 98(inFM0)
+            1687:   36(fvec3) Load 96(inFV0)
+            1688:   36(fvec3) MatrixTimesVector 1686 1687
+                              Store 1685(r5) 1688
+            1690:    6(float) Load 94(inF0)
+            1691:          68 Load 98(inFM0)
+            1692:          68 MatrixTimesScalar 1691 1690
+                              Store 1689(r6) 1692
+            1694:          68 Load 98(inFM0)
+            1695:    6(float) Load 94(inF0)
+            1696:          68 MatrixTimesScalar 1694 1695
+                              Store 1693(r7) 1696
+            1698:          68 Load 99(inFM1)
+            1699:          68 Load 98(inFM0)
+            1700:          68 MatrixTimesMatrix 1698 1699
+                              Store 1697(r8) 1700
                               Return
                               FunctionEnd
 109(TestGenMul4(f1;f1;vf4;vf4;mf44;mf44;):           2 Function None 102
@@ -8186,51 +8303,51 @@
       107(inFM0):     77(ptr) FunctionParameter
       108(inFM1):     77(ptr) FunctionParameter
              110:             Label
-        1673(r0):      7(ptr) Variable Function
-        1677(r1):     49(ptr) Variable Function
-        1681(r2):     49(ptr) Variable Function
-        1685(r3):      7(ptr) Variable Function
-        1689(r4):     49(ptr) Variable Function
-        1693(r5):     49(ptr) Variable Function
-        1697(r6):     77(ptr) Variable Function
-        1701(r7):     77(ptr) Variable Function
-        1705(r8):     77(ptr) Variable Function
-            1674:    6(float) Load 104(inF1)
-            1675:    6(float) Load 103(inF0)
-            1676:    6(float) FMul 1674 1675
-                              Store 1673(r0) 1676
-            1678:    6(float) Load 103(inF0)
-            1679:   48(fvec4) Load 105(inFV0)
-            1680:   48(fvec4) VectorTimesScalar 1679 1678
-                              Store 1677(r1) 1680
-            1682:   48(fvec4) Load 105(inFV0)
-            1683:    6(float) Load 103(inF0)
-            1684:   48(fvec4) VectorTimesScalar 1682 1683
-                              Store 1681(r2) 1684
-            1686:   48(fvec4) Load 105(inFV0)
-            1687:   48(fvec4) Load 106(inFV1)
-            1688:    6(float) Dot 1686 1687
-                              Store 1685(r3) 1688
-            1690:   48(fvec4) Load 105(inFV0)
-            1691:          76 Load 107(inFM0)
-            1692:   48(fvec4) VectorTimesMatrix 1690 1691
-                              Store 1689(r4) 1692
-            1694:          76 Load 107(inFM0)
-            1695:   48(fvec4) Load 105(inFV0)
-            1696:   48(fvec4) MatrixTimesVector 1694 1695
-                              Store 1693(r5) 1696
-            1698:    6(float) Load 103(inF0)
-            1699:          76 Load 107(inFM0)
-            1700:          76 MatrixTimesScalar 1699 1698
-                              Store 1697(r6) 1700
-            1702:          76 Load 107(inFM0)
+        1701(r0):      7(ptr) Variable Function
+        1705(r1):     49(ptr) Variable Function
+        1709(r2):     49(ptr) Variable Function
+        1713(r3):      7(ptr) Variable Function
+        1717(r4):     49(ptr) Variable Function
+        1721(r5):     49(ptr) Variable Function
+        1725(r6):     77(ptr) Variable Function
+        1729(r7):     77(ptr) Variable Function
+        1733(r8):     77(ptr) Variable Function
+            1702:    6(float) Load 104(inF1)
             1703:    6(float) Load 103(inF0)
-            1704:          76 MatrixTimesScalar 1702 1703
-                              Store 1701(r7) 1704
-            1706:          76 Load 108(inFM1)
-            1707:          76 Load 107(inFM0)
-            1708:          76 MatrixTimesMatrix 1706 1707
-                              Store 1705(r8) 1708
+            1704:    6(float) FMul 1702 1703
+                              Store 1701(r0) 1704
+            1706:    6(float) Load 103(inF0)
+            1707:   48(fvec4) Load 105(inFV0)
+            1708:   48(fvec4) VectorTimesScalar 1707 1706
+                              Store 1705(r1) 1708
+            1710:   48(fvec4) Load 105(inFV0)
+            1711:    6(float) Load 103(inF0)
+            1712:   48(fvec4) VectorTimesScalar 1710 1711
+                              Store 1709(r2) 1712
+            1714:   48(fvec4) Load 105(inFV0)
+            1715:   48(fvec4) Load 106(inFV1)
+            1716:    6(float) Dot 1714 1715
+                              Store 1713(r3) 1716
+            1718:   48(fvec4) Load 105(inFV0)
+            1719:          76 Load 107(inFM0)
+            1720:   48(fvec4) VectorTimesMatrix 1718 1719
+                              Store 1717(r4) 1720
+            1722:          76 Load 107(inFM0)
+            1723:   48(fvec4) Load 105(inFV0)
+            1724:   48(fvec4) MatrixTimesVector 1722 1723
+                              Store 1721(r5) 1724
+            1726:    6(float) Load 103(inF0)
+            1727:          76 Load 107(inFM0)
+            1728:          76 MatrixTimesScalar 1727 1726
+                              Store 1725(r6) 1728
+            1730:          76 Load 107(inFM0)
+            1731:    6(float) Load 103(inF0)
+            1732:          76 MatrixTimesScalar 1730 1731
+                              Store 1729(r7) 1732
+            1734:          76 Load 108(inFM1)
+            1735:          76 Load 107(inFM0)
+            1736:          76 MatrixTimesMatrix 1734 1735
+                              Store 1733(r8) 1736
                               Return
                               FunctionEnd
 129(TestGenMulNxM(f1;f1;vf2;vf3;mf23;mf32;mf33;mf34;mf24;):           2 Function None 119
@@ -8244,98 +8361,98 @@
     127(inFM3x4):    116(ptr) FunctionParameter
     128(inFM2x4):    118(ptr) FunctionParameter
              130:             Label
-       1709(r00):      7(ptr) Variable Function
-       1713(r01):     25(ptr) Variable Function
-       1717(r02):     37(ptr) Variable Function
-       1721(r03):     25(ptr) Variable Function
-       1725(r04):     37(ptr) Variable Function
-       1729(r05):      7(ptr) Variable Function
-       1733(r06):      7(ptr) Variable Function
-       1737(r07):     37(ptr) Variable Function
-       1741(r08):     25(ptr) Variable Function
-       1745(r09):     25(ptr) Variable Function
-       1749(r10):     37(ptr) Variable Function
-       1753(r11):    112(ptr) Variable Function
-       1757(r12):    114(ptr) Variable Function
-       1761(r13):     61(ptr) Variable Function
-       1765(r14):    112(ptr) Variable Function
-       1769(r15):    118(ptr) Variable Function
-       1773(r16):    116(ptr) Variable Function
-            1710:    6(float) Load 121(inF1)
-            1711:    6(float) Load 120(inF0)
-            1712:    6(float) FMul 1710 1711
-                              Store 1709(r00) 1712
-            1714:    6(float) Load 120(inF0)
-            1715:   24(fvec2) Load 122(inFV2)
-            1716:   24(fvec2) VectorTimesScalar 1715 1714
-                              Store 1713(r01) 1716
-            1718:    6(float) Load 120(inF0)
-            1719:   36(fvec3) Load 123(inFV3)
-            1720:   36(fvec3) VectorTimesScalar 1719 1718
-                              Store 1717(r02) 1720
-            1722:   24(fvec2) Load 122(inFV2)
-            1723:    6(float) Load 120(inF0)
-            1724:   24(fvec2) VectorTimesScalar 1722 1723
-                              Store 1721(r03) 1724
-            1726:   36(fvec3) Load 123(inFV3)
-            1727:    6(float) Load 120(inF0)
-            1728:   36(fvec3) VectorTimesScalar 1726 1727
-                              Store 1725(r04) 1728
-            1730:   24(fvec2) Load 122(inFV2)
-            1731:   24(fvec2) Load 122(inFV2)
-            1732:    6(float) Dot 1730 1731
-                              Store 1729(r05) 1732
-            1734:   36(fvec3) Load 123(inFV3)
-            1735:   36(fvec3) Load 123(inFV3)
-            1736:    6(float) Dot 1734 1735
-                              Store 1733(r06) 1736
-            1738:         111 Load 124(inFM2x3)
-            1739:   24(fvec2) Load 122(inFV2)
-            1740:   36(fvec3) MatrixTimesVector 1738 1739
-                              Store 1737(r07) 1740
-            1742:         113 Load 125(inFM3x2)
-            1743:   36(fvec3) Load 123(inFV3)
-            1744:   24(fvec2) MatrixTimesVector 1742 1743
-                              Store 1741(r08) 1744
-            1746:   36(fvec3) Load 123(inFV3)
-            1747:         111 Load 124(inFM2x3)
-            1748:   24(fvec2) VectorTimesMatrix 1746 1747
-                              Store 1745(r09) 1748
+       1737(r00):      7(ptr) Variable Function
+       1741(r01):     25(ptr) Variable Function
+       1745(r02):     37(ptr) Variable Function
+       1749(r03):     25(ptr) Variable Function
+       1753(r04):     37(ptr) Variable Function
+       1757(r05):      7(ptr) Variable Function
+       1761(r06):      7(ptr) Variable Function
+       1765(r07):     37(ptr) Variable Function
+       1769(r08):     25(ptr) Variable Function
+       1773(r09):     25(ptr) Variable Function
+       1777(r10):     37(ptr) Variable Function
+       1781(r11):    112(ptr) Variable Function
+       1785(r12):    114(ptr) Variable Function
+       1789(r13):     61(ptr) Variable Function
+       1793(r14):    112(ptr) Variable Function
+       1797(r15):    118(ptr) Variable Function
+       1801(r16):    116(ptr) Variable Function
+            1738:    6(float) Load 121(inF1)
+            1739:    6(float) Load 120(inF0)
+            1740:    6(float) FMul 1738 1739
+                              Store 1737(r00) 1740
+            1742:    6(float) Load 120(inF0)
+            1743:   24(fvec2) Load 122(inFV2)
+            1744:   24(fvec2) VectorTimesScalar 1743 1742
+                              Store 1741(r01) 1744
+            1746:    6(float) Load 120(inF0)
+            1747:   36(fvec3) Load 123(inFV3)
+            1748:   36(fvec3) VectorTimesScalar 1747 1746
+                              Store 1745(r02) 1748
             1750:   24(fvec2) Load 122(inFV2)
-            1751:         113 Load 125(inFM3x2)
-            1752:   36(fvec3) VectorTimesMatrix 1750 1751
-                              Store 1749(r10) 1752
-            1754:    6(float) Load 120(inF0)
-            1755:         111 Load 124(inFM2x3)
-            1756:         111 MatrixTimesScalar 1755 1754
-                              Store 1753(r11) 1756
-            1758:    6(float) Load 120(inF0)
-            1759:         113 Load 125(inFM3x2)
-            1760:         113 MatrixTimesScalar 1759 1758
-                              Store 1757(r12) 1760
-            1762:         113 Load 125(inFM3x2)
-            1763:         111 Load 124(inFM2x3)
-            1764:          60 MatrixTimesMatrix 1762 1763
-                              Store 1761(r13) 1764
-            1766:          68 Load 126(inFM3x3)
-            1767:         111 Load 124(inFM2x3)
-            1768:         111 MatrixTimesMatrix 1766 1767
-                              Store 1765(r14) 1768
-            1770:         115 Load 127(inFM3x4)
-            1771:         111 Load 124(inFM2x3)
-            1772:         117 MatrixTimesMatrix 1770 1771
-                              Store 1769(r15) 1772
-            1774:         117 Load 128(inFM2x4)
-            1775:         113 Load 125(inFM3x2)
-            1776:         115 MatrixTimesMatrix 1774 1775
-                              Store 1773(r16) 1776
+            1751:    6(float) Load 120(inF0)
+            1752:   24(fvec2) VectorTimesScalar 1750 1751
+                              Store 1749(r03) 1752
+            1754:   36(fvec3) Load 123(inFV3)
+            1755:    6(float) Load 120(inF0)
+            1756:   36(fvec3) VectorTimesScalar 1754 1755
+                              Store 1753(r04) 1756
+            1758:   24(fvec2) Load 122(inFV2)
+            1759:   24(fvec2) Load 122(inFV2)
+            1760:    6(float) Dot 1758 1759
+                              Store 1757(r05) 1760
+            1762:   36(fvec3) Load 123(inFV3)
+            1763:   36(fvec3) Load 123(inFV3)
+            1764:    6(float) Dot 1762 1763
+                              Store 1761(r06) 1764
+            1766:         111 Load 124(inFM2x3)
+            1767:   24(fvec2) Load 122(inFV2)
+            1768:   36(fvec3) MatrixTimesVector 1766 1767
+                              Store 1765(r07) 1768
+            1770:         113 Load 125(inFM3x2)
+            1771:   36(fvec3) Load 123(inFV3)
+            1772:   24(fvec2) MatrixTimesVector 1770 1771
+                              Store 1769(r08) 1772
+            1774:   36(fvec3) Load 123(inFV3)
+            1775:         111 Load 124(inFM2x3)
+            1776:   24(fvec2) VectorTimesMatrix 1774 1775
+                              Store 1773(r09) 1776
+            1778:   24(fvec2) Load 122(inFV2)
+            1779:         113 Load 125(inFM3x2)
+            1780:   36(fvec3) VectorTimesMatrix 1778 1779
+                              Store 1777(r10) 1780
+            1782:    6(float) Load 120(inF0)
+            1783:         111 Load 124(inFM2x3)
+            1784:         111 MatrixTimesScalar 1783 1782
+                              Store 1781(r11) 1784
+            1786:    6(float) Load 120(inF0)
+            1787:         113 Load 125(inFM3x2)
+            1788:         113 MatrixTimesScalar 1787 1786
+                              Store 1785(r12) 1788
+            1790:         113 Load 125(inFM3x2)
+            1791:         111 Load 124(inFM2x3)
+            1792:          60 MatrixTimesMatrix 1790 1791
+                              Store 1789(r13) 1792
+            1794:          68 Load 126(inFM3x3)
+            1795:         111 Load 124(inFM2x3)
+            1796:         111 MatrixTimesMatrix 1794 1795
+                              Store 1793(r14) 1796
+            1798:         115 Load 127(inFM3x4)
+            1799:         111 Load 124(inFM2x3)
+            1800:         117 MatrixTimesMatrix 1798 1799
+                              Store 1797(r15) 1800
+            1802:         117 Load 128(inFM2x4)
+            1803:         113 Load 125(inFM3x2)
+            1804:         115 MatrixTimesMatrix 1802 1803
+                              Store 1801(r16) 1804
                               Return
                               FunctionEnd
      133(@main():131(PS_OUTPUT) Function None 132
              134:             Label
- 1778(ps_output):   1777(ptr) Variable Function
-            1781:     49(ptr) AccessChain 1778(ps_output) 1779
-                              Store 1781 1780
-            1782:131(PS_OUTPUT) Load 1778(ps_output)
-                              ReturnValue 1782
+ 1806(ps_output):   1805(ptr) Variable Function
+            1808:     49(ptr) AccessChain 1806(ps_output) 187
+                              Store 1808 1807
+            1809:131(PS_OUTPUT) Load 1806(ps_output)
+                              ReturnValue 1809
                               FunctionEnd
diff --git a/Test/baseResults/hlsl.partialFlattenLocal.vert.out b/Test/baseResults/hlsl.partialFlattenLocal.vert.out
new file mode 100755
index 0000000..7847c08
--- /dev/null
+++ b/Test/baseResults/hlsl.partialFlattenLocal.vert.out
@@ -0,0 +1,366 @@
+hlsl.partialFlattenLocal.vert
+WARNING: AST will form illegal SPIR-V; need to transform to legalize
+Shader version: 500
+0:? Sequence
+0:12  Function Definition: @main(vf4; ( temp 4-component vector of float)
+0:12    Function Parameters: 
+0:12      'pos' ( in 4-component vector of float)
+0:?     Sequence
+0:14      move second child to first child ( temp texture2D)
+0:?         'packed.tex' ( temp texture2D)
+0:14        'tex' ( uniform texture2D)
+0:15      move second child to first child ( temp 3-component vector of float)
+0:15        direct index ( temp 3-component vector of float)
+0:?           'packed.pos' ( temp 3-element array of 3-component vector of float)
+0:15          Constant:
+0:15            0 (const int)
+0:?         Constant:
+0:?           0.000000
+0:?           0.000000
+0:?           0.000000
+0:16      move second child to first child ( temp 2-component vector of float)
+0:16        direct index ( temp 2-component vector of float)
+0:?           'packed.uv' ( temp 2-element array of 2-component vector of float)
+0:16          Constant:
+0:16            0 (const int)
+0:?         Constant:
+0:?           0.000000
+0:?           1.000000
+0:17      move second child to first child ( temp float)
+0:?         'packed.x' ( temp float)
+0:17        Constant:
+0:17          1.000000
+0:18      move second child to first child ( temp int)
+0:?         'packed.n' ( temp int)
+0:18        Constant:
+0:18          3 (const int)
+0:20      Sequence
+0:20        move second child to first child ( temp int)
+0:20          'i' ( temp int)
+0:20          Constant:
+0:20            0 (const int)
+0:20        Loop with condition tested first
+0:20          Loop Condition
+0:20          Compare Less Than ( temp bool)
+0:20            'i' ( temp int)
+0:20            Constant:
+0:20              1 (const int)
+0:20          Loop Body
+0:?           Sequence
+0:21            add second child into first child ( temp 2-component vector of float)
+0:21              vector swizzle ( temp 2-component vector of float)
+0:21                indirect index ( temp 3-component vector of float)
+0:?                   'packed.pos' ( temp 3-element array of 3-component vector of float)
+0:21                  'i' ( temp int)
+0:21                Sequence
+0:21                  Constant:
+0:21                    0 (const int)
+0:21                  Constant:
+0:21                    1 (const int)
+0:21              indirect index ( temp 2-component vector of float)
+0:?                 'packed.uv' ( temp 2-element array of 2-component vector of float)
+0:21                'i' ( temp int)
+0:20          Loop Terminal Expression
+0:20          Pre-Increment ( temp int)
+0:20            'i' ( temp int)
+0:24      Sequence
+0:24        Sequence
+0:24          move second child to first child ( temp texture2D)
+0:?             'packed2.tex' ( temp texture2D)
+0:?             'packed.tex' ( temp texture2D)
+0:24          move second child to first child ( temp 3-element array of 3-component vector of float)
+0:?             'packed2.pos' ( temp 3-element array of 3-component vector of float)
+0:?             'packed.pos' ( temp 3-element array of 3-component vector of float)
+0:24          move second child to first child ( temp 2-element array of 2-component vector of float)
+0:?             'packed2.uv' ( temp 2-element array of 2-component vector of float)
+0:?             'packed.uv' ( temp 2-element array of 2-component vector of float)
+0:24          move second child to first child ( temp float)
+0:?             'packed2.x' ( temp float)
+0:?             'packed.x' ( temp float)
+0:24          move second child to first child ( temp int)
+0:?             'packed2.n' ( temp int)
+0:?             'packed.n' ( temp int)
+0:26      Branch: Return with expression
+0:26        add ( temp 4-component vector of float)
+0:26          'pos' ( in 4-component vector of float)
+0:?           Construct vec4 ( temp 4-component vector of float)
+0:26            direct index ( temp 3-component vector of float)
+0:?               'packed2.pos' ( temp 3-element array of 3-component vector of float)
+0:26              Constant:
+0:26                0 (const int)
+0:26            Constant:
+0:26              0.000000
+0:12  Function Definition: main( ( temp void)
+0:12    Function Parameters: 
+0:?     Sequence
+0:12      move second child to first child ( temp 4-component vector of float)
+0:?         'pos' ( temp 4-component vector of float)
+0:?         'pos' (layout( location=0) in 4-component vector of float)
+0:12      move second child to first child ( temp 4-component vector of float)
+0:?         '@entryPointOutput' ( out 4-component vector of float Position)
+0:12        Function Call: @main(vf4; ( temp 4-component vector of float)
+0:?           'pos' ( temp 4-component vector of float)
+0:?   Linker Objects
+0:?     'tex' ( uniform texture2D)
+0:?     '@entryPointOutput' ( out 4-component vector of float Position)
+0:?     'pos' (layout( location=0) in 4-component vector of float)
+
+
+Linked vertex stage:
+
+
+Shader version: 500
+0:? Sequence
+0:12  Function Definition: @main(vf4; ( temp 4-component vector of float)
+0:12    Function Parameters: 
+0:12      'pos' ( in 4-component vector of float)
+0:?     Sequence
+0:14      move second child to first child ( temp texture2D)
+0:?         'packed.tex' ( temp texture2D)
+0:14        'tex' ( uniform texture2D)
+0:15      move second child to first child ( temp 3-component vector of float)
+0:15        direct index ( temp 3-component vector of float)
+0:?           'packed.pos' ( temp 3-element array of 3-component vector of float)
+0:15          Constant:
+0:15            0 (const int)
+0:?         Constant:
+0:?           0.000000
+0:?           0.000000
+0:?           0.000000
+0:16      move second child to first child ( temp 2-component vector of float)
+0:16        direct index ( temp 2-component vector of float)
+0:?           'packed.uv' ( temp 2-element array of 2-component vector of float)
+0:16          Constant:
+0:16            0 (const int)
+0:?         Constant:
+0:?           0.000000
+0:?           1.000000
+0:17      move second child to first child ( temp float)
+0:?         'packed.x' ( temp float)
+0:17        Constant:
+0:17          1.000000
+0:18      move second child to first child ( temp int)
+0:?         'packed.n' ( temp int)
+0:18        Constant:
+0:18          3 (const int)
+0:20      Sequence
+0:20        move second child to first child ( temp int)
+0:20          'i' ( temp int)
+0:20          Constant:
+0:20            0 (const int)
+0:20        Loop with condition tested first
+0:20          Loop Condition
+0:20          Compare Less Than ( temp bool)
+0:20            'i' ( temp int)
+0:20            Constant:
+0:20              1 (const int)
+0:20          Loop Body
+0:?           Sequence
+0:21            add second child into first child ( temp 2-component vector of float)
+0:21              vector swizzle ( temp 2-component vector of float)
+0:21                indirect index ( temp 3-component vector of float)
+0:?                   'packed.pos' ( temp 3-element array of 3-component vector of float)
+0:21                  'i' ( temp int)
+0:21                Sequence
+0:21                  Constant:
+0:21                    0 (const int)
+0:21                  Constant:
+0:21                    1 (const int)
+0:21              indirect index ( temp 2-component vector of float)
+0:?                 'packed.uv' ( temp 2-element array of 2-component vector of float)
+0:21                'i' ( temp int)
+0:20          Loop Terminal Expression
+0:20          Pre-Increment ( temp int)
+0:20            'i' ( temp int)
+0:24      Sequence
+0:24        Sequence
+0:24          move second child to first child ( temp texture2D)
+0:?             'packed2.tex' ( temp texture2D)
+0:?             'packed.tex' ( temp texture2D)
+0:24          move second child to first child ( temp 3-element array of 3-component vector of float)
+0:?             'packed2.pos' ( temp 3-element array of 3-component vector of float)
+0:?             'packed.pos' ( temp 3-element array of 3-component vector of float)
+0:24          move second child to first child ( temp 2-element array of 2-component vector of float)
+0:?             'packed2.uv' ( temp 2-element array of 2-component vector of float)
+0:?             'packed.uv' ( temp 2-element array of 2-component vector of float)
+0:24          move second child to first child ( temp float)
+0:?             'packed2.x' ( temp float)
+0:?             'packed.x' ( temp float)
+0:24          move second child to first child ( temp int)
+0:?             'packed2.n' ( temp int)
+0:?             'packed.n' ( temp int)
+0:26      Branch: Return with expression
+0:26        add ( temp 4-component vector of float)
+0:26          'pos' ( in 4-component vector of float)
+0:?           Construct vec4 ( temp 4-component vector of float)
+0:26            direct index ( temp 3-component vector of float)
+0:?               'packed2.pos' ( temp 3-element array of 3-component vector of float)
+0:26              Constant:
+0:26                0 (const int)
+0:26            Constant:
+0:26              0.000000
+0:12  Function Definition: main( ( temp void)
+0:12    Function Parameters: 
+0:?     Sequence
+0:12      move second child to first child ( temp 4-component vector of float)
+0:?         'pos' ( temp 4-component vector of float)
+0:?         'pos' (layout( location=0) in 4-component vector of float)
+0:12      move second child to first child ( temp 4-component vector of float)
+0:?         '@entryPointOutput' ( out 4-component vector of float Position)
+0:12        Function Call: @main(vf4; ( temp 4-component vector of float)
+0:?           'pos' ( temp 4-component vector of float)
+0:?   Linker Objects
+0:?     'tex' ( uniform texture2D)
+0:?     '@entryPointOutput' ( out 4-component vector of float Position)
+0:?     'pos' (layout( location=0) in 4-component vector of float)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 97
+
+                              Capability Shader
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Vertex 4  "main" 90 93
+                              Source HLSL 500
+                              Name 4  "main"
+                              Name 11  "@main(vf4;"
+                              Name 10  "pos"
+                              Name 15  "packed.tex"
+                              Name 17  "tex"
+                              Name 24  "packed.pos"
+                              Name 35  "packed.uv"
+                              Name 41  "packed.x"
+                              Name 43  "packed.n"
+                              Name 45  "i"
+                              Name 68  "packed2.tex"
+                              Name 70  "packed2.pos"
+                              Name 72  "packed2.uv"
+                              Name 74  "packed2.x"
+                              Name 76  "packed2.n"
+                              Name 88  "pos"
+                              Name 90  "pos"
+                              Name 93  "@entryPointOutput"
+                              Name 94  "param"
+                              Decorate 17(tex) DescriptorSet 0
+                              Decorate 90(pos) Location 0
+                              Decorate 93(@entryPointOutput) BuiltIn Position
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeFloat 32
+               7:             TypeVector 6(float) 4
+               8:             TypePointer Function 7(fvec4)
+               9:             TypeFunction 7(fvec4) 8(ptr)
+              13:             TypeImage 6(float) 2D sampled format:Unknown
+              14:             TypePointer Function 13
+              16:             TypePointer UniformConstant 13
+         17(tex):     16(ptr) Variable UniformConstant
+              19:             TypeVector 6(float) 3
+              20:             TypeInt 32 0
+              21:     20(int) Constant 3
+              22:             TypeArray 19(fvec3) 21
+              23:             TypePointer Function 22
+              25:             TypeInt 32 1
+              26:     25(int) Constant 0
+              27:    6(float) Constant 0
+              28:   19(fvec3) ConstantComposite 27 27 27
+              29:             TypePointer Function 19(fvec3)
+              31:             TypeVector 6(float) 2
+              32:     20(int) Constant 2
+              33:             TypeArray 31(fvec2) 32
+              34:             TypePointer Function 33
+              36:    6(float) Constant 1065353216
+              37:   31(fvec2) ConstantComposite 27 36
+              38:             TypePointer Function 31(fvec2)
+              40:             TypePointer Function 6(float)
+              42:             TypePointer Function 25(int)
+              44:     25(int) Constant 3
+              52:     25(int) Constant 1
+              53:             TypeBool
+              89:             TypePointer Input 7(fvec4)
+         90(pos):     89(ptr) Variable Input
+              92:             TypePointer Output 7(fvec4)
+93(@entryPointOutput):     92(ptr) Variable Output
+         4(main):           2 Function None 3
+               5:             Label
+         88(pos):      8(ptr) Variable Function
+       94(param):      8(ptr) Variable Function
+              91:    7(fvec4) Load 90(pos)
+                              Store 88(pos) 91
+              95:    7(fvec4) Load 88(pos)
+                              Store 94(param) 95
+              96:    7(fvec4) FunctionCall 11(@main(vf4;) 94(param)
+                              Store 93(@entryPointOutput) 96
+                              Return
+                              FunctionEnd
+  11(@main(vf4;):    7(fvec4) Function None 9
+         10(pos):      8(ptr) FunctionParameter
+              12:             Label
+  15(packed.tex):     14(ptr) Variable Function
+  24(packed.pos):     23(ptr) Variable Function
+   35(packed.uv):     34(ptr) Variable Function
+    41(packed.x):     40(ptr) Variable Function
+    43(packed.n):     42(ptr) Variable Function
+           45(i):     42(ptr) Variable Function
+ 68(packed2.tex):     14(ptr) Variable Function
+ 70(packed2.pos):     23(ptr) Variable Function
+  72(packed2.uv):     34(ptr) Variable Function
+   74(packed2.x):     40(ptr) Variable Function
+   76(packed2.n):     42(ptr) Variable Function
+              18:          13 Load 17(tex)
+                              Store 15(packed.tex) 18
+              30:     29(ptr) AccessChain 24(packed.pos) 26
+                              Store 30 28
+              39:     38(ptr) AccessChain 35(packed.uv) 26
+                              Store 39 37
+                              Store 41(packed.x) 36
+                              Store 43(packed.n) 44
+                              Store 45(i) 26
+                              Branch 46
+              46:             Label
+                              LoopMerge 48 49 None
+                              Branch 50
+              50:             Label
+              51:     25(int) Load 45(i)
+              54:    53(bool) SLessThan 51 52
+                              BranchConditional 54 47 48
+              47:               Label
+              55:     25(int)   Load 45(i)
+              56:     25(int)   Load 45(i)
+              57:     38(ptr)   AccessChain 35(packed.uv) 56
+              58:   31(fvec2)   Load 57
+              59:     29(ptr)   AccessChain 24(packed.pos) 55
+              60:   19(fvec3)   Load 59
+              61:   31(fvec2)   VectorShuffle 60 60 0 1
+              62:   31(fvec2)   FAdd 61 58
+              63:     29(ptr)   AccessChain 24(packed.pos) 55
+              64:   19(fvec3)   Load 63
+              65:   19(fvec3)   VectorShuffle 64 62 3 4 2
+                                Store 63 65
+                                Branch 49
+              49:               Label
+              66:     25(int)   Load 45(i)
+              67:     25(int)   IAdd 66 52
+                                Store 45(i) 67
+                                Branch 46
+              48:             Label
+              69:          13 Load 15(packed.tex)
+                              Store 68(packed2.tex) 69
+              71:          22 Load 24(packed.pos)
+                              Store 70(packed2.pos) 71
+              73:          33 Load 35(packed.uv)
+                              Store 72(packed2.uv) 73
+              75:    6(float) Load 41(packed.x)
+                              Store 74(packed2.x) 75
+              77:     25(int) Load 43(packed.n)
+                              Store 76(packed2.n) 77
+              78:    7(fvec4) Load 10(pos)
+              79:     29(ptr) AccessChain 70(packed2.pos) 26
+              80:   19(fvec3) Load 79
+              81:    6(float) CompositeExtract 80 0
+              82:    6(float) CompositeExtract 80 1
+              83:    6(float) CompositeExtract 80 2
+              84:    7(fvec4) CompositeConstruct 81 82 83 27
+              85:    7(fvec4) FAdd 78 84
+                              ReturnValue 85
+                              FunctionEnd
diff --git a/Test/baseResults/hlsl.partialFlattenMixed.vert.out b/Test/baseResults/hlsl.partialFlattenMixed.vert.out
new file mode 100755
index 0000000..50c8cb9
--- /dev/null
+++ b/Test/baseResults/hlsl.partialFlattenMixed.vert.out
@@ -0,0 +1,150 @@
+hlsl.partialFlattenMixed.vert
+WARNING: AST will form illegal SPIR-V; need to transform to legalize
+Shader version: 500
+0:? Sequence
+0:10  Function Definition: @main(vf4; ( temp 4-component vector of float)
+0:10    Function Parameters: 
+0:10      'pos' ( in 4-component vector of float)
+0:?     Sequence
+0:13      Sequence
+0:13        move second child to first child ( temp texture2D)
+0:13          direct index ( temp texture2D)
+0:?             'packed.membTex' ( temp 2-element array of texture2D)
+0:13            Constant:
+0:13              0 (const int)
+0:?           'tex[0]' ( uniform texture2D)
+0:13        move second child to first child ( temp texture2D)
+0:13          direct index ( temp texture2D)
+0:?             'packed.membTex' ( temp 2-element array of texture2D)
+0:13            Constant:
+0:13              1 (const int)
+0:?           'tex[1]' ( uniform texture2D)
+0:15      Branch: Return with expression
+0:15        'pos' ( in 4-component vector of float)
+0:10  Function Definition: main( ( temp void)
+0:10    Function Parameters: 
+0:?     Sequence
+0:10      move second child to first child ( temp 4-component vector of float)
+0:?         'pos' ( temp 4-component vector of float)
+0:?         'pos' (layout( location=0) in 4-component vector of float)
+0:10      move second child to first child ( temp 4-component vector of float)
+0:?         '@entryPointOutput' ( out 4-component vector of float Position)
+0:10        Function Call: @main(vf4; ( temp 4-component vector of float)
+0:?           'pos' ( temp 4-component vector of float)
+0:?   Linker Objects
+0:?     'tex[0]' ( uniform texture2D)
+0:?     'tex[1]' ( uniform texture2D)
+0:?     '@entryPointOutput' ( out 4-component vector of float Position)
+0:?     'pos' (layout( location=0) in 4-component vector of float)
+
+
+Linked vertex stage:
+
+
+Shader version: 500
+0:? Sequence
+0:10  Function Definition: @main(vf4; ( temp 4-component vector of float)
+0:10    Function Parameters: 
+0:10      'pos' ( in 4-component vector of float)
+0:?     Sequence
+0:13      Sequence
+0:13        move second child to first child ( temp texture2D)
+0:13          direct index ( temp texture2D)
+0:?             'packed.membTex' ( temp 2-element array of texture2D)
+0:13            Constant:
+0:13              0 (const int)
+0:?           'tex[0]' ( uniform texture2D)
+0:13        move second child to first child ( temp texture2D)
+0:13          direct index ( temp texture2D)
+0:?             'packed.membTex' ( temp 2-element array of texture2D)
+0:13            Constant:
+0:13              1 (const int)
+0:?           'tex[1]' ( uniform texture2D)
+0:15      Branch: Return with expression
+0:15        'pos' ( in 4-component vector of float)
+0:10  Function Definition: main( ( temp void)
+0:10    Function Parameters: 
+0:?     Sequence
+0:10      move second child to first child ( temp 4-component vector of float)
+0:?         'pos' ( temp 4-component vector of float)
+0:?         'pos' (layout( location=0) in 4-component vector of float)
+0:10      move second child to first child ( temp 4-component vector of float)
+0:?         '@entryPointOutput' ( out 4-component vector of float Position)
+0:10        Function Call: @main(vf4; ( temp 4-component vector of float)
+0:?           'pos' ( temp 4-component vector of float)
+0:?   Linker Objects
+0:?     'tex[0]' ( uniform texture2D)
+0:?     'tex[1]' ( uniform texture2D)
+0:?     '@entryPointOutput' ( out 4-component vector of float Position)
+0:?     'pos' (layout( location=0) in 4-component vector of float)
+
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 42
+
+                              Capability Shader
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Vertex 4  "main" 35 38
+                              Source HLSL 500
+                              Name 4  "main"
+                              Name 11  "@main(vf4;"
+                              Name 10  "pos"
+                              Name 18  "packed.membTex"
+                              Name 22  "tex[0]"
+                              Name 27  "tex[1]"
+                              Name 33  "pos"
+                              Name 35  "pos"
+                              Name 38  "@entryPointOutput"
+                              Name 39  "param"
+                              Decorate 22(tex[0]) DescriptorSet 0
+                              Decorate 27(tex[1]) DescriptorSet 0
+                              Decorate 35(pos) Location 0
+                              Decorate 38(@entryPointOutput) BuiltIn Position
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeFloat 32
+               7:             TypeVector 6(float) 4
+               8:             TypePointer Function 7(fvec4)
+               9:             TypeFunction 7(fvec4) 8(ptr)
+              13:             TypeImage 6(float) 2D sampled format:Unknown
+              14:             TypeInt 32 0
+              15:     14(int) Constant 2
+              16:             TypeArray 13 15
+              17:             TypePointer Function 16
+              19:             TypeInt 32 1
+              20:     19(int) Constant 0
+              21:             TypePointer UniformConstant 13
+      22(tex[0]):     21(ptr) Variable UniformConstant
+              24:             TypePointer Function 13
+              26:     19(int) Constant 1
+      27(tex[1]):     21(ptr) Variable UniformConstant
+              34:             TypePointer Input 7(fvec4)
+         35(pos):     34(ptr) Variable Input
+              37:             TypePointer Output 7(fvec4)
+38(@entryPointOutput):     37(ptr) Variable Output
+         4(main):           2 Function None 3
+               5:             Label
+         33(pos):      8(ptr) Variable Function
+       39(param):      8(ptr) Variable Function
+              36:    7(fvec4) Load 35(pos)
+                              Store 33(pos) 36
+              40:    7(fvec4) Load 33(pos)
+                              Store 39(param) 40
+              41:    7(fvec4) FunctionCall 11(@main(vf4;) 39(param)
+                              Store 38(@entryPointOutput) 41
+                              Return
+                              FunctionEnd
+  11(@main(vf4;):    7(fvec4) Function None 9
+         10(pos):      8(ptr) FunctionParameter
+              12:             Label
+18(packed.membTex):     17(ptr) Variable Function
+              23:          13 Load 22(tex[0])
+              25:     24(ptr) AccessChain 18(packed.membTex) 20
+                              Store 25 23
+              28:          13 Load 27(tex[1])
+              29:     24(ptr) AccessChain 18(packed.membTex) 26
+                              Store 29 28
+              30:    7(fvec4) Load 10(pos)
+                              ReturnValue 30
+                              FunctionEnd
diff --git a/Test/baseResults/hlsl.structarray.flatten.frag.out b/Test/baseResults/hlsl.structarray.flatten.frag.out
index 20a0211..534ea7c 100644
--- a/Test/baseResults/hlsl.structarray.flatten.frag.out
+++ b/Test/baseResults/hlsl.structarray.flatten.frag.out
@@ -27,8 +27,14 @@
 0:26                0.400000
 0:27          texture ( temp 4-component vector of float)
 0:27            Construct combined texture-sampler ( temp sampler1D)
-0:?               'g_texdata_array2[1].tex[0]' ( uniform texture1D)
-0:?               'g_texdata_array2[1].samp[0]' ( uniform sampler)
+0:27              direct index ( temp texture1D)
+0:?                 'g_texdata_array2[1].tex' ( uniform 2-element array of texture1D)
+0:27                Constant:
+0:27                  0 (const int)
+0:27              direct index ( temp sampler)
+0:?                 'g_texdata_array2[1].samp' ( uniform 2-element array of sampler)
+0:27                Constant:
+0:27                  0 (const int)
 0:27            Constant:
 0:27              0.300000
 0:23  Function Definition: main( ( temp void)
@@ -58,20 +64,14 @@
 0:?     'g_texdata_array[2].samp' ( uniform sampler)
 0:?     'g_texdata_array[2].tex' ( uniform texture1D)
 0:?     'g_texdata_array[2].nonopaque_thing' ( uniform int)
-0:?     'g_texdata_array2[0].samp[0]' ( uniform sampler)
-0:?     'g_texdata_array2[0].samp[1]' ( uniform sampler)
-0:?     'g_texdata_array2[0].tex[0]' ( uniform texture1D)
-0:?     'g_texdata_array2[0].tex[1]' ( uniform texture1D)
+0:?     'g_texdata_array2[0].samp' ( uniform 2-element array of sampler)
+0:?     'g_texdata_array2[0].tex' ( uniform 2-element array of texture1D)
 0:?     'g_texdata_array2[0].nonopaque_thing' ( uniform int)
-0:?     'g_texdata_array2[1].samp[0]' ( uniform sampler)
-0:?     'g_texdata_array2[1].samp[1]' ( uniform sampler)
-0:?     'g_texdata_array2[1].tex[0]' ( uniform texture1D)
-0:?     'g_texdata_array2[1].tex[1]' ( uniform texture1D)
+0:?     'g_texdata_array2[1].samp' ( uniform 2-element array of sampler)
+0:?     'g_texdata_array2[1].tex' ( uniform 2-element array of texture1D)
 0:?     'g_texdata_array2[1].nonopaque_thing' ( uniform int)
-0:?     'g_texdata_array2[2].samp[0]' ( uniform sampler)
-0:?     'g_texdata_array2[2].samp[1]' ( uniform sampler)
-0:?     'g_texdata_array2[2].tex[0]' ( uniform texture1D)
-0:?     'g_texdata_array2[2].tex[1]' ( uniform texture1D)
+0:?     'g_texdata_array2[2].samp' ( uniform 2-element array of sampler)
+0:?     'g_texdata_array2[2].tex' ( uniform 2-element array of texture1D)
 0:?     'g_texdata_array2[2].nonopaque_thing' ( uniform int)
 0:?     'ps_output.color' (layout( location=0) out 4-component vector of float)
 
@@ -107,8 +107,14 @@
 0:26                0.400000
 0:27          texture ( temp 4-component vector of float)
 0:27            Construct combined texture-sampler ( temp sampler1D)
-0:?               'g_texdata_array2[1].tex[0]' ( uniform texture1D)
-0:?               'g_texdata_array2[1].samp[0]' ( uniform sampler)
+0:27              direct index ( temp texture1D)
+0:?                 'g_texdata_array2[1].tex' ( uniform 2-element array of texture1D)
+0:27                Constant:
+0:27                  0 (const int)
+0:27              direct index ( temp sampler)
+0:?                 'g_texdata_array2[1].samp' ( uniform 2-element array of sampler)
+0:27                Constant:
+0:27                  0 (const int)
 0:27            Constant:
 0:27              0.300000
 0:23  Function Definition: main( ( temp void)
@@ -138,32 +144,26 @@
 0:?     'g_texdata_array[2].samp' ( uniform sampler)
 0:?     'g_texdata_array[2].tex' ( uniform texture1D)
 0:?     'g_texdata_array[2].nonopaque_thing' ( uniform int)
-0:?     'g_texdata_array2[0].samp[0]' ( uniform sampler)
-0:?     'g_texdata_array2[0].samp[1]' ( uniform sampler)
-0:?     'g_texdata_array2[0].tex[0]' ( uniform texture1D)
-0:?     'g_texdata_array2[0].tex[1]' ( uniform texture1D)
+0:?     'g_texdata_array2[0].samp' ( uniform 2-element array of sampler)
+0:?     'g_texdata_array2[0].tex' ( uniform 2-element array of texture1D)
 0:?     'g_texdata_array2[0].nonopaque_thing' ( uniform int)
-0:?     'g_texdata_array2[1].samp[0]' ( uniform sampler)
-0:?     'g_texdata_array2[1].samp[1]' ( uniform sampler)
-0:?     'g_texdata_array2[1].tex[0]' ( uniform texture1D)
-0:?     'g_texdata_array2[1].tex[1]' ( uniform texture1D)
+0:?     'g_texdata_array2[1].samp' ( uniform 2-element array of sampler)
+0:?     'g_texdata_array2[1].tex' ( uniform 2-element array of texture1D)
 0:?     'g_texdata_array2[1].nonopaque_thing' ( uniform int)
-0:?     'g_texdata_array2[2].samp[0]' ( uniform sampler)
-0:?     'g_texdata_array2[2].samp[1]' ( uniform sampler)
-0:?     'g_texdata_array2[2].tex[0]' ( uniform texture1D)
-0:?     'g_texdata_array2[2].tex[1]' ( uniform texture1D)
+0:?     'g_texdata_array2[2].samp' ( uniform 2-element array of sampler)
+0:?     'g_texdata_array2[2].tex' ( uniform 2-element array of texture1D)
 0:?     'g_texdata_array2[2].nonopaque_thing' ( uniform int)
 0:?     'ps_output.color' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
 // Generated by (magic number): 80002
-// Id's are bound by 78
+// Id's are bound by 80
 
                               Capability Shader
                               Capability Sampled1D
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main" 51
+                              EntryPoint Fragment 4  "main" 59
                               ExecutionMode 4 OriginUpperLeft
                               Source HLSL 500
                               Name 4  "main"
@@ -175,57 +175,45 @@
                               Name 22  "g_texdata.samp"
                               Name 28  "g_texdata_array[1].tex"
                               Name 30  "g_texdata_array[1].samp"
-                              Name 36  "g_texdata_array2[1].tex[0]"
-                              Name 38  "g_texdata_array2[1].samp[0]"
-                              Name 46  "ps_output"
-                              Name 47  "param"
-                              Name 51  "ps_output.color"
-                              Name 54  "g_samp"
-                              Name 55  "g_tex"
-                              Name 57  "g_texdata.nonopaque_thing"
-                              Name 58  "g_texdata_array[0].samp"
-                              Name 59  "g_texdata_array[0].tex"
-                              Name 60  "g_texdata_array[0].nonopaque_thing"
-                              Name 61  "g_texdata_array[1].nonopaque_thing"
-                              Name 62  "g_texdata_array[2].samp"
-                              Name 63  "g_texdata_array[2].tex"
-                              Name 64  "g_texdata_array[2].nonopaque_thing"
-                              Name 65  "g_texdata_array2[0].samp[0]"
-                              Name 66  "g_texdata_array2[0].samp[1]"
-                              Name 67  "g_texdata_array2[0].tex[0]"
-                              Name 68  "g_texdata_array2[0].tex[1]"
-                              Name 69  "g_texdata_array2[0].nonopaque_thing"
-                              Name 70  "g_texdata_array2[1].samp[1]"
-                              Name 71  "g_texdata_array2[1].tex[1]"
-                              Name 72  "g_texdata_array2[1].nonopaque_thing"
-                              Name 73  "g_texdata_array2[2].samp[0]"
-                              Name 74  "g_texdata_array2[2].samp[1]"
-                              Name 75  "g_texdata_array2[2].tex[0]"
-                              Name 76  "g_texdata_array2[2].tex[1]"
-                              Name 77  "g_texdata_array2[2].nonopaque_thing"
+                              Name 40  "g_texdata_array2[1].tex"
+                              Name 45  "g_texdata_array2[1].samp"
+                              Name 54  "ps_output"
+                              Name 55  "param"
+                              Name 59  "ps_output.color"
+                              Name 62  "g_samp"
+                              Name 63  "g_tex"
+                              Name 65  "g_texdata.nonopaque_thing"
+                              Name 66  "g_texdata_array[0].samp"
+                              Name 67  "g_texdata_array[0].tex"
+                              Name 68  "g_texdata_array[0].nonopaque_thing"
+                              Name 69  "g_texdata_array[1].nonopaque_thing"
+                              Name 70  "g_texdata_array[2].samp"
+                              Name 71  "g_texdata_array[2].tex"
+                              Name 72  "g_texdata_array[2].nonopaque_thing"
+                              Name 73  "g_texdata_array2[0].samp"
+                              Name 74  "g_texdata_array2[0].tex"
+                              Name 75  "g_texdata_array2[0].nonopaque_thing"
+                              Name 76  "g_texdata_array2[1].nonopaque_thing"
+                              Name 77  "g_texdata_array2[2].samp"
+                              Name 78  "g_texdata_array2[2].tex"
+                              Name 79  "g_texdata_array2[2].nonopaque_thing"
                               Decorate 18(g_texdata.tex) DescriptorSet 0
                               Decorate 22(g_texdata.samp) DescriptorSet 0
                               Decorate 28(g_texdata_array[1].tex) DescriptorSet 0
                               Decorate 30(g_texdata_array[1].samp) DescriptorSet 0
-                              Decorate 36(g_texdata_array2[1].tex[0]) DescriptorSet 0
-                              Decorate 38(g_texdata_array2[1].samp[0]) DescriptorSet 0
-                              Decorate 51(ps_output.color) Location 0
-                              Decorate 54(g_samp) DescriptorSet 0
-                              Decorate 55(g_tex) DescriptorSet 0
-                              Decorate 58(g_texdata_array[0].samp) DescriptorSet 0
-                              Decorate 59(g_texdata_array[0].tex) DescriptorSet 0
-                              Decorate 62(g_texdata_array[2].samp) DescriptorSet 0
-                              Decorate 63(g_texdata_array[2].tex) DescriptorSet 0
-                              Decorate 65(g_texdata_array2[0].samp[0]) DescriptorSet 0
-                              Decorate 66(g_texdata_array2[0].samp[1]) DescriptorSet 0
-                              Decorate 67(g_texdata_array2[0].tex[0]) DescriptorSet 0
-                              Decorate 68(g_texdata_array2[0].tex[1]) DescriptorSet 0
-                              Decorate 70(g_texdata_array2[1].samp[1]) DescriptorSet 0
-                              Decorate 71(g_texdata_array2[1].tex[1]) DescriptorSet 0
-                              Decorate 73(g_texdata_array2[2].samp[0]) DescriptorSet 0
-                              Decorate 74(g_texdata_array2[2].samp[1]) DescriptorSet 0
-                              Decorate 75(g_texdata_array2[2].tex[0]) DescriptorSet 0
-                              Decorate 76(g_texdata_array2[2].tex[1]) DescriptorSet 0
+                              Decorate 40(g_texdata_array2[1].tex) DescriptorSet 0
+                              Decorate 45(g_texdata_array2[1].samp) DescriptorSet 0
+                              Decorate 59(ps_output.color) Location 0
+                              Decorate 62(g_samp) DescriptorSet 0
+                              Decorate 63(g_tex) DescriptorSet 0
+                              Decorate 66(g_texdata_array[0].samp) DescriptorSet 0
+                              Decorate 67(g_texdata_array[0].tex) DescriptorSet 0
+                              Decorate 70(g_texdata_array[2].samp) DescriptorSet 0
+                              Decorate 71(g_texdata_array[2].tex) DescriptorSet 0
+                              Decorate 73(g_texdata_array2[0].samp) DescriptorSet 0
+                              Decorate 74(g_texdata_array2[0].tex) DescriptorSet 0
+                              Decorate 77(g_texdata_array2[2].samp) DescriptorSet 0
+                              Decorate 78(g_texdata_array2[2].tex) DescriptorSet 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -246,46 +234,46 @@
 28(g_texdata_array[1].tex):     17(ptr) Variable UniformConstant
 30(g_texdata_array[1].samp):     21(ptr) Variable UniformConstant
               33:    6(float) Constant 1053609165
-36(g_texdata_array2[1].tex[0]):     17(ptr) Variable UniformConstant
-38(g_texdata_array2[1].samp[0]):     21(ptr) Variable UniformConstant
-              41:    6(float) Constant 1050253722
-              44:             TypePointer Function 7(fvec4)
-              50:             TypePointer Output 7(fvec4)
-51(ps_output.color):     50(ptr) Variable Output
-      54(g_samp):     21(ptr) Variable UniformConstant
-       55(g_tex):     17(ptr) Variable UniformConstant
-              56:             TypePointer UniformConstant 14(int)
-57(g_texdata.nonopaque_thing):     56(ptr) Variable UniformConstant
-58(g_texdata_array[0].samp):     21(ptr) Variable UniformConstant
-59(g_texdata_array[0].tex):     17(ptr) Variable UniformConstant
-60(g_texdata_array[0].nonopaque_thing):     56(ptr) Variable UniformConstant
-61(g_texdata_array[1].nonopaque_thing):     56(ptr) Variable UniformConstant
-62(g_texdata_array[2].samp):     21(ptr) Variable UniformConstant
-63(g_texdata_array[2].tex):     17(ptr) Variable UniformConstant
-64(g_texdata_array[2].nonopaque_thing):     56(ptr) Variable UniformConstant
-65(g_texdata_array2[0].samp[0]):     21(ptr) Variable UniformConstant
-66(g_texdata_array2[0].samp[1]):     21(ptr) Variable UniformConstant
-67(g_texdata_array2[0].tex[0]):     17(ptr) Variable UniformConstant
-68(g_texdata_array2[0].tex[1]):     17(ptr) Variable UniformConstant
-69(g_texdata_array2[0].nonopaque_thing):     56(ptr) Variable UniformConstant
-70(g_texdata_array2[1].samp[1]):     21(ptr) Variable UniformConstant
-71(g_texdata_array2[1].tex[1]):     17(ptr) Variable UniformConstant
-72(g_texdata_array2[1].nonopaque_thing):     56(ptr) Variable UniformConstant
-73(g_texdata_array2[2].samp[0]):     21(ptr) Variable UniformConstant
-74(g_texdata_array2[2].samp[1]):     21(ptr) Variable UniformConstant
-75(g_texdata_array2[2].tex[0]):     17(ptr) Variable UniformConstant
-76(g_texdata_array2[2].tex[1]):     17(ptr) Variable UniformConstant
-77(g_texdata_array2[2].nonopaque_thing):     56(ptr) Variable UniformConstant
+              36:             TypeInt 32 0
+              37:     36(int) Constant 2
+              38:             TypeArray 16 37
+              39:             TypePointer UniformConstant 38
+40(g_texdata_array2[1].tex):     39(ptr) Variable UniformConstant
+              43:             TypeArray 20 37
+              44:             TypePointer UniformConstant 43
+45(g_texdata_array2[1].samp):     44(ptr) Variable UniformConstant
+              49:    6(float) Constant 1050253722
+              52:             TypePointer Function 7(fvec4)
+              58:             TypePointer Output 7(fvec4)
+59(ps_output.color):     58(ptr) Variable Output
+      62(g_samp):     21(ptr) Variable UniformConstant
+       63(g_tex):     17(ptr) Variable UniformConstant
+              64:             TypePointer UniformConstant 14(int)
+65(g_texdata.nonopaque_thing):     64(ptr) Variable UniformConstant
+66(g_texdata_array[0].samp):     21(ptr) Variable UniformConstant
+67(g_texdata_array[0].tex):     17(ptr) Variable UniformConstant
+68(g_texdata_array[0].nonopaque_thing):     64(ptr) Variable UniformConstant
+69(g_texdata_array[1].nonopaque_thing):     64(ptr) Variable UniformConstant
+70(g_texdata_array[2].samp):     21(ptr) Variable UniformConstant
+71(g_texdata_array[2].tex):     17(ptr) Variable UniformConstant
+72(g_texdata_array[2].nonopaque_thing):     64(ptr) Variable UniformConstant
+73(g_texdata_array2[0].samp):     44(ptr) Variable UniformConstant
+74(g_texdata_array2[0].tex):     39(ptr) Variable UniformConstant
+75(g_texdata_array2[0].nonopaque_thing):     64(ptr) Variable UniformConstant
+76(g_texdata_array2[1].nonopaque_thing):     64(ptr) Variable UniformConstant
+77(g_texdata_array2[2].samp):     44(ptr) Variable UniformConstant
+78(g_texdata_array2[2].tex):     39(ptr) Variable UniformConstant
+79(g_texdata_array2[2].nonopaque_thing):     64(ptr) Variable UniformConstant
          4(main):           2 Function None 3
                5:             Label
-   46(ps_output):      9(ptr) Variable Function
-       47(param):      9(ptr) Variable Function
-              48:           2 FunctionCall 12(@main(struct-PS_OUTPUT-vf41;) 47(param)
-              49:8(PS_OUTPUT) Load 47(param)
-                              Store 46(ps_output) 49
-              52:     44(ptr) AccessChain 46(ps_output) 15
-              53:    7(fvec4) Load 52
-                              Store 51(ps_output.color) 53
+   54(ps_output):      9(ptr) Variable Function
+       55(param):      9(ptr) Variable Function
+              56:           2 FunctionCall 12(@main(struct-PS_OUTPUT-vf41;) 55(param)
+              57:8(PS_OUTPUT) Load 55(param)
+                              Store 54(ps_output) 57
+              60:     52(ptr) AccessChain 54(ps_output) 15
+              61:    7(fvec4) Load 60
+                              Store 59(ps_output.color) 61
                               Return
                               FunctionEnd
 12(@main(struct-PS_OUTPUT-vf41;):           2 Function None 10
@@ -300,12 +288,14 @@
               32:          24 SampledImage 29 31
               34:    7(fvec4) ImageSampleImplicitLod 32 33
               35:    7(fvec4) FAdd 27 34
-              37:          16 Load 36(g_texdata_array2[1].tex[0])
-              39:          20 Load 38(g_texdata_array2[1].samp[0])
-              40:          24 SampledImage 37 39
-              42:    7(fvec4) ImageSampleImplicitLod 40 41
-              43:    7(fvec4) FAdd 35 42
-              45:     44(ptr) AccessChain 11(ps_output) 15
-                              Store 45 43
+              41:     17(ptr) AccessChain 40(g_texdata_array2[1].tex) 15
+              42:          16 Load 41
+              46:     21(ptr) AccessChain 45(g_texdata_array2[1].samp) 15
+              47:          20 Load 46
+              48:          24 SampledImage 42 47
+              50:    7(fvec4) ImageSampleImplicitLod 48 49
+              51:    7(fvec4) FAdd 35 50
+              53:     52(ptr) AccessChain 11(ps_output) 15
+                              Store 53 51
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/hlsl.subpass.frag.out b/Test/baseResults/hlsl.subpass.frag.out
index 4eb6337..470699a 100644
--- a/Test/baseResults/hlsl.subpass.frag.out
+++ b/Test/baseResults/hlsl.subpass.frag.out
@@ -434,7 +434,6 @@
 // Id's are bound by 204
 
                               Capability Shader
-                              Capability StorageImageMultisample
                               Capability InputAttachment
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
diff --git a/Test/baseResults/invalidSwizzle.vert.out b/Test/baseResults/invalidSwizzle.vert.out
new file mode 100644
index 0000000..f53974b
--- /dev/null
+++ b/Test/baseResults/invalidSwizzle.vert.out
@@ -0,0 +1,34 @@
+invalidSwizzle.vert
+ERROR: 0:6: 'xx' : does not apply to this type:  global void
+ERROR: 0:7: 'xy' : does not apply to this type:  global void
+ERROR: 2 compilation errors.  No code generated.
+
+
+Shader version: 420
+ERROR: node is still EOpNull!
+0:5  Function Definition: main( ( global void)
+0:5    Function Parameters: 
+0:6    Sequence
+0:6      Function Call: f( ( global void)
+0:7      Function Call: f( ( global void)
+0:?   Linker Objects
+0:?     'gl_VertexID' ( gl_VertexId int VertexId)
+0:?     'gl_InstanceID' ( gl_InstanceId int InstanceId)
+
+
+Linked vertex stage:
+
+ERROR: Linking vertex stage: No function definition (body) found: 
+    f(
+
+Shader version: 420
+ERROR: node is still EOpNull!
+0:5  Function Definition: main( ( global void)
+0:5    Function Parameters: 
+0:6    Sequence
+0:6      Function Call: f( ( global void)
+0:7      Function Call: f( ( global void)
+0:?   Linker Objects
+0:?     'gl_VertexID' ( gl_VertexId int VertexId)
+0:?     'gl_InstanceID' ( gl_InstanceId int InstanceId)
+
diff --git a/Test/baseResults/spv.precisionNonESSamp.frag.out b/Test/baseResults/spv.precisionNonESSamp.frag.out
new file mode 100755
index 0000000..5bb1dee
--- /dev/null
+++ b/Test/baseResults/spv.precisionNonESSamp.frag.out
@@ -0,0 +1,98 @@
+spv.precisionNonESSamp.frag
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 47
+
+                              Capability Shader
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Fragment 4  "main" 9 17 27 39
+                              ExecutionMode 4 OriginUpperLeft
+                              Source GLSL 450
+                              Name 4  "main"
+                              Name 9  "color"
+                              Name 13  "s"
+                              Name 17  "v2"
+                              Name 23  "t"
+                              Name 27  "v3"
+                              Name 31  "vi1"
+                              Name 34  "i1"
+                              Name 39  "iv2"
+                              Name 42  "vi2"
+                              Name 43  "i2"
+                              Decorate 9(color) RelaxedPrecision
+                              Decorate 9(color) Location 0
+                              Decorate 13(s) RelaxedPrecision
+                              Decorate 13(s) DescriptorSet 0
+                              Decorate 14 RelaxedPrecision
+                              Decorate 17(v2) RelaxedPrecision
+                              Decorate 17(v2) Location 0
+                              Decorate 18 RelaxedPrecision
+                              Decorate 19 RelaxedPrecision
+                              Decorate 23(t) DescriptorSet 0
+                              Decorate 27(v3) RelaxedPrecision
+                              Decorate 27(v3) Location 1
+                              Decorate 28 RelaxedPrecision
+                              Decorate 31(vi1) RelaxedPrecision
+                              Decorate 34(i1) RelaxedPrecision
+                              Decorate 34(i1) DescriptorSet 0
+                              Decorate 35 RelaxedPrecision
+                              Decorate 39(iv2) RelaxedPrecision
+                              Decorate 39(iv2) Flat
+                              Decorate 39(iv2) Location 3
+                              Decorate 40 RelaxedPrecision
+                              Decorate 41 RelaxedPrecision
+                              Decorate 42(vi2) RelaxedPrecision
+                              Decorate 43(i2) DescriptorSet 0
+                              Decorate 45 RelaxedPrecision
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeFloat 32
+               7:             TypeVector 6(float) 4
+               8:             TypePointer Output 7(fvec4)
+        9(color):      8(ptr) Variable Output
+              10:             TypeImage 6(float) 2D sampled format:Unknown
+              11:             TypeSampledImage 10
+              12:             TypePointer UniformConstant 11
+           13(s):     12(ptr) Variable UniformConstant
+              15:             TypeVector 6(float) 2
+              16:             TypePointer Input 15(fvec2)
+          17(v2):     16(ptr) Variable Input
+              20:             TypeImage 6(float) 3D sampled format:Unknown
+              21:             TypeSampledImage 20
+              22:             TypePointer UniformConstant 21
+           23(t):     22(ptr) Variable UniformConstant
+              25:             TypeVector 6(float) 3
+              26:             TypePointer Input 25(fvec3)
+          27(v3):     26(ptr) Variable Input
+              30:             TypePointer Function 7(fvec4)
+              32:             TypeImage 6(float) 2D nonsampled format:Rgba32f
+              33:             TypePointer UniformConstant 32
+          34(i1):     33(ptr) Variable UniformConstant
+              36:             TypeInt 32 1
+              37:             TypeVector 36(int) 2
+              38:             TypePointer Input 37(ivec2)
+         39(iv2):     38(ptr) Variable Input
+          43(i2):     33(ptr) Variable UniformConstant
+         4(main):           2 Function None 3
+               5:             Label
+         31(vi1):     30(ptr) Variable Function
+         42(vi2):     30(ptr) Variable Function
+              14:          11 Load 13(s)
+              18:   15(fvec2) Load 17(v2)
+              19:    7(fvec4) ImageSampleImplicitLod 14 18
+                              Store 9(color) 19
+              24:          21 Load 23(t)
+              28:   25(fvec3) Load 27(v3)
+              29:    7(fvec4) ImageSampleImplicitLod 24 28
+                              Store 9(color) 29
+              35:          32 Load 34(i1)
+              40:   37(ivec2) Load 39(iv2)
+              41:    7(fvec4) ImageRead 35 40
+                              Store 31(vi1) 41
+              44:          32 Load 43(i2)
+              45:   37(ivec2) Load 39(iv2)
+              46:    7(fvec4) ImageRead 44 45
+                              Store 42(vi2) 46
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/spv.register.subpass.frag.out b/Test/baseResults/spv.register.subpass.frag.out
index 8b7c292..2a22326 100644
--- a/Test/baseResults/spv.register.subpass.frag.out
+++ b/Test/baseResults/spv.register.subpass.frag.out
@@ -4,7 +4,6 @@
 // Id's are bound by 40
 
                               Capability Shader
-                              Capability StorageImageMultisample
                               Capability InputAttachment
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
diff --git a/Test/baseResults/spv.shaderFragMaskAMD.frag.out b/Test/baseResults/spv.shaderFragMaskAMD.frag.out
index dc3eb0d..56081b1 100644
--- a/Test/baseResults/spv.shaderFragMaskAMD.frag.out
+++ b/Test/baseResults/spv.shaderFragMaskAMD.frag.out
@@ -4,7 +4,6 @@
 // Id's are bound by 80
 
                               Capability Shader
-                              Capability StorageImageMultisample
                               Capability InputAttachment
                               Capability FragmentMaskAMD
                               Extension  "SPV_AMD_shader_fragment_mask"
diff --git a/Test/baseResults/spv.subpass.frag.out b/Test/baseResults/spv.subpass.frag.out
index 8233653..7624898 100644
--- a/Test/baseResults/spv.subpass.frag.out
+++ b/Test/baseResults/spv.subpass.frag.out
@@ -4,7 +4,6 @@
 // Id's are bound by 67
 
                               Capability Shader
-                              Capability StorageImageMultisample
                               Capability InputAttachment
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
diff --git a/Test/cppDeepNest.frag b/Test/cppDeepNest.frag
new file mode 100644
index 0000000..51c436e
--- /dev/null
+++ b/Test/cppDeepNest.frag
@@ -0,0 +1,117 @@
+#ifdef O

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#if

+#endif

diff --git a/Test/cppIntMinOverNegativeOne.frag b/Test/cppIntMinOverNegativeOne.frag
new file mode 100644
index 0000000..1cdaaeb
--- /dev/null
+++ b/Test/cppIntMinOverNegativeOne.frag
@@ -0,0 +1,3 @@
+#if (-2147483648 / -1) != 0
+#error INT_MIN / -1 should yield 0, something went wrong.
+#endif
\ No newline at end of file
diff --git a/Test/hlsl.attributeGlobalBuffer.frag b/Test/hlsl.attributeGlobalBuffer.frag
new file mode 100644
index 0000000..a1177da
--- /dev/null
+++ b/Test/hlsl.attributeGlobalBuffer.frag
@@ -0,0 +1,8 @@
+[[vk::global_cbuffer_binding(5, 2)]]

+float4 u1;

+float4 u2;

+

+float4 main() : SV_Target0

+{

+    return u1 + u2;

+}
\ No newline at end of file
diff --git a/Test/hlsl.intrinsics.frag b/Test/hlsl.intrinsics.frag
index 029b156..9343f6d 100644
--- a/Test/hlsl.intrinsics.frag
+++ b/Test/hlsl.intrinsics.frag
@@ -31,6 +31,7 @@
     float r011 = ceil(inF0);
     float r012 = clamp(inF0, inF1, inF2);
     clip(inF0);
+    clip(r005);
     float r014 = cos(inF0);
     float r015 = cosh(inF0);
     int r016 = countbits(7);
@@ -108,6 +109,7 @@
     float2 r011 = ceil(inF0);
     float2 r012 = clamp(inF0, inF1, inF2);
     clip(inF0);
+    clip(inU0);
     float2 r013 = cos(inF0);
     float2 r015 = cosh(inF0);
     int2 r016 = countbits(int2(7,3));
@@ -190,6 +192,7 @@
     float3 r011 = ceil(inF0);
     float3 r012 = clamp(inF0, inF1, inF2);
     clip(inF0);
+    clip(inU0);
     float3 r013 = cos(inF0);
     float3 r014 = cosh(inF0);
     uint3 r015 = countbits(uint3(7,3,5));
@@ -271,6 +274,7 @@
     float4 r011 = ceil(inF0);
     float4 r012 = clamp(inF0, inF1, inF2);
     clip(inF0);
+    clip(inU0);
     float4 r013 = cos(inF0);
     float4 r014 = cosh(inF0);
     uint4 r015 = countbits(uint4(7,3,5,2));
diff --git a/Test/hlsl.partialFlattenLocal.vert b/Test/hlsl.partialFlattenLocal.vert
new file mode 100644
index 0000000..9d6cdc9
--- /dev/null
+++ b/Test/hlsl.partialFlattenLocal.vert
@@ -0,0 +1,27 @@
+Texture2D tex;

+

+struct Packed {

+  Texture2D     tex;

+  float3        pos[3];

+  float2        uv[2];

+  float         x;

+  int           n;

+};

+

+float4 main(float4 pos : POSITION) : SV_POSITION

+{

+  Packed packed;

+  packed.tex    = tex;

+  packed.pos[0] = float3(0, 0, 0);

+  packed.uv[0]  = float2(0, 1);

+  packed.x      = 1.0;

+  packed.n      = 3;

+

+  for (int i = 0; i < 1; ++i) {

+    packed.pos[i].xy += packed.uv[i];

+  }

+

+  Packed packed2 = packed;

+

+  return pos + float4(packed2.pos[0], 0);

+}
\ No newline at end of file
diff --git a/Test/hlsl.partialFlattenMixed.vert b/Test/hlsl.partialFlattenMixed.vert
new file mode 100644
index 0000000..3fc9d68
--- /dev/null
+++ b/Test/hlsl.partialFlattenMixed.vert
@@ -0,0 +1,16 @@
+Texture2D tex[2];

+

+struct Packed {

+    int a;

+    Texture2D     membTex[2];

+    int b;

+};

+

+float4 main(float4 pos : POSITION) : SV_POSITION

+{

+    Packed packed;

+

+    packed.membTex = tex;

+

+    return pos;

+}
\ No newline at end of file
diff --git a/Test/invalidSwizzle.vert b/Test/invalidSwizzle.vert
new file mode 100644
index 0000000..00b5625
--- /dev/null
+++ b/Test/invalidSwizzle.vert
@@ -0,0 +1,8 @@
+#version 420
+
+void f();
+
+void main() {
+    f().xx; // Scalar swizzle does not apply to void
+    f().xy; // Vector swizzle does not apply either
+}
\ No newline at end of file
diff --git a/Test/spv.precisionNonESSamp.frag b/Test/spv.precisionNonESSamp.frag
new file mode 100644
index 0000000..8abf839
--- /dev/null
+++ b/Test/spv.precisionNonESSamp.frag
@@ -0,0 +1,24 @@
+#version 450

+

+precision lowp sampler2D;

+precision lowp int;

+precision lowp float;

+

+uniform lowp sampler2D s;

+uniform highp sampler3D t;

+layout(rgba32f) uniform lowp image2D i1;

+layout(rgba32f) uniform highp image2D i2;

+

+layout(location = 0) in lowp vec2 v2;

+layout(location = 1) in lowp vec3 v3;

+layout(location = 3) flat in lowp ivec2 iv2;

+

+layout(location = 0) out lowp vec4 color;

+

+void main()

+{

+    color = texture(s, v2);

+    color = texture(t, v3);

+    lowp vec4 vi1 = imageLoad(i1, iv2);

+    lowp vec4 vi2 = imageLoad(i2, iv2);

+}

diff --git a/glslang/Include/intermediate.h b/glslang/Include/intermediate.h
index f0cda5f..d8c7a3e 100644
--- a/glslang/Include/intermediate.h
+++ b/glslang/Include/intermediate.h
@@ -944,6 +944,7 @@
 class TIntermTyped;
 class TIntermMethod;
 class TIntermSymbol;
+class TIntermLoop;
 
 } // end namespace glslang
 
@@ -971,6 +972,7 @@
     virtual       glslang::TIntermMethod*        getAsMethodNode()          { return 0; }
     virtual       glslang::TIntermSymbol*        getAsSymbolNode()          { return 0; }
     virtual       glslang::TIntermBranch*        getAsBranchNode()          { return 0; }
+	virtual       glslang::TIntermLoop*          getAsLoopNode()            { return 0; }
 
     virtual const glslang::TIntermTyped*         getAsTyped()         const { return 0; }
     virtual const glslang::TIntermOperator*      getAsOperator()      const { return 0; }
@@ -983,6 +985,7 @@
     virtual const glslang::TIntermMethod*        getAsMethodNode()    const { return 0; }
     virtual const glslang::TIntermSymbol*        getAsSymbolNode()    const { return 0; }
     virtual const glslang::TIntermBranch*        getAsBranchNode()    const { return 0; }
+	virtual const glslang::TIntermLoop*          getAsLoopNode()      const { return 0; }
     virtual ~TIntermNode() { }
 
 protected:
@@ -1064,6 +1067,8 @@
         control(ELoopControlNone)
     { }
 
+	virtual       TIntermLoop* getAsLoopNode() { return this; }
+	virtual const TIntermLoop* getAsLoopNode() const { return this; }
     virtual void traverse(TIntermTraverser*);
     TIntermNode*  getBody() const { return body; }
     TIntermTyped* getTest() const { return test; }
@@ -1133,7 +1138,6 @@
         constSubtree(nullptr)
           { name = n; }
     virtual int getId() const { return id; }
-    virtual void setId(int newId) { id = newId; }
     virtual const TString& getName() const { return name; }
     virtual void traverse(TIntermTraverser*);
     virtual       TIntermSymbol* getAsSymbolNode()       { return this; }
@@ -1147,6 +1151,10 @@
     int getFlattenSubset() const { return flattenSubset; } // -1 means full object
 #endif
 
+    // This is meant for cases where a node has already been constructed, and
+    // later on, it becomes necessary to switch to a different symbol.
+    virtual void switchId(int newId) { id = newId; }
+
 protected:
     int id;                      // the unique id of the symbol this node represents
 #ifdef ENABLE_HLSL
diff --git a/glslang/MachineIndependent/ParseContextBase.cpp b/glslang/MachineIndependent/ParseContextBase.cpp
index 447c038..bbc3cac 100644
--- a/glslang/MachineIndependent/ParseContextBase.cpp
+++ b/glslang/MachineIndependent/ParseContextBase.cpp
@@ -569,6 +569,10 @@
         firstNewMember = 0;
     }
 
+    // Update with binding and set
+    globalUniformBlock->getWritableType().getQualifier().layoutBinding = globalUniformBinding;
+    globalUniformBlock->getWritableType().getQualifier().layoutSet = globalUniformSet;
+
     // Add the requested member as a member to the global block.
     TType* type = new TType;
     type->shallowCopy(memberType);
diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp
index c03ba93..b02f77b 100644
--- a/glslang/MachineIndependent/ParseHelper.cpp
+++ b/glslang/MachineIndependent/ParseHelper.cpp
@@ -127,11 +127,6 @@
             sampler.set(EbtFloat, Esd2D);
             sampler.external = true;
             defaultSamplerPrecision[computeSamplerTypeIndex(sampler)] = EpqLow;
-        } else {
-            // Non-ES profile
-            // All default to highp.
-            for (int type = 0; type < maxSamplerIndex; ++type)
-                defaultSamplerPrecision[type] = EpqHigh;
         }
 
         // If we are parsing built-in computational variables/functions, it is meaningful to record
@@ -147,6 +142,13 @@
                 defaultPrecision[EbtUint] = EpqHigh;
                 defaultPrecision[EbtFloat] = EpqHigh;
             }
+
+            if (profile != EEsProfile) {
+                // Non-ES profile
+                // All sampler precisions default to highp.
+                for (int type = 0; type < maxSamplerIndex; ++type)
+                    defaultSamplerPrecision[type] = EpqHigh;
+            }
         }
 
         defaultPrecision[EbtSampler] = EpqLow;
@@ -664,7 +666,7 @@
     // leaving swizzles and struct/block dereferences.
 
     TIntermTyped* result = base;
-    if (base->isVector() || base->isScalar()) {
+    if (base->getBasicType() != EbtVoid && (base->isVector() || base->isScalar())) {
         if (base->isScalar()) {
             const char* dotFeature = "scalar swizzle";
             requireProfile(loc, ~EEsProfile, dotFeature);
diff --git a/glslang/MachineIndependent/ParseHelper.h b/glslang/MachineIndependent/ParseHelper.h
index 6e87266..3908a66 100644
--- a/glslang/MachineIndependent/ParseHelper.h
+++ b/glslang/MachineIndependent/ParseHelper.h
@@ -84,7 +84,9 @@
             contextPragma(true, false),
             parsingBuiltins(parsingBuiltins), scanContext(nullptr), ppContext(nullptr),
             limits(resources.limits),
-            globalUniformBlock(nullptr)
+            globalUniformBlock(nullptr),
+            globalUniformBinding(TQualifier::layoutBindingEnd),
+            globalUniformSet(TQualifier::layoutSetEnd)
     {
         if (entryPoint != nullptr)
             sourceEntryPointName = *entryPoint;
@@ -208,8 +210,10 @@
                                       TSwizzleSelectors<TVectorSelector>&);
 
     // Manage the global uniform block (default uniforms in GLSL, $Global in HLSL)
-    TVariable* globalUniformBlock;   // the actual block, inserted into the symbol table
-    int firstNewMember;              // the index of the first member not yet inserted into the symbol table
+    TVariable* globalUniformBlock;     // the actual block, inserted into the symbol table
+    unsigned int globalUniformBinding; // the block's binding number
+    unsigned int globalUniformSet;     // the block's set number
+    int firstNewMember;                // the index of the first member not yet inserted into the symbol table
     // override this to set the language-specific name
     virtual const char* getGlobalUniformBlockName() const { return ""; }
     virtual void setUniformBlockDefaults(TType&) const { }
diff --git a/glslang/MachineIndependent/preprocessor/Pp.cpp b/glslang/MachineIndependent/preprocessor/Pp.cpp
index 1b4fbae..5a552d8 100644
--- a/glslang/MachineIndependent/preprocessor/Pp.cpp
+++ b/glslang/MachineIndependent/preprocessor/Pp.cpp
@@ -84,6 +84,7 @@
 #include <cstdlib>
 #include <cstring>
 #include <cctype>
+#include <climits>
 
 #include "PpContext.h"
 #include "PpTokens.h"
@@ -241,15 +242,20 @@
         int nextAtom = atomStrings.getAtom(ppToken->name);
         if (nextAtom == PpAtomIf || nextAtom == PpAtomIfdef || nextAtom == PpAtomIfndef) {
             depth++;
-            ifdepth++;
-            elsetracker++;
+            if (ifdepth >= maxIfNesting || elsetracker >= maxIfNesting) {
+                parseContext.ppError(ppToken->loc, "maximum nesting depth exceeded", "#if/#ifdef/#ifndef", "");
+                return EndOfInput;
+            } else {
+                ifdepth++;
+                elsetracker++;
+            }
         } else if (nextAtom == PpAtomEndif) {
             token = extraTokenCheck(nextAtom, ppToken, scanToken(ppToken));
             elseSeen[elsetracker] = false;
             --elsetracker;
             if (depth == 0) {
                 // found the #endif we are looking for
-                if (ifdepth)
+                if (ifdepth > 0)
                     --ifdepth;
                 break;
             }
@@ -266,7 +272,7 @@
                     parseContext.ppError(ppToken->loc, "#elif after #else", "#elif", "");
                 /* we decrement ifdepth here, because CPPif will increment
                 * it and we really want to leave it alone */
-                if (ifdepth) {
+                if (ifdepth > 0) {
                     --ifdepth;
                     elseSeen[elsetracker] = false;
                     --elsetracker;
@@ -345,7 +351,7 @@
     int op_add(int a, int b) { return a + b; }
     int op_sub(int a, int b) { return a - b; }
     int op_mul(int a, int b) { return a * b; }
-    int op_div(int a, int b) { return a / b; }
+    int op_div(int a, int b) { return a == INT_MIN && b == -1 ? 0 : a / b; }
     int op_mod(int a, int b) { return a % b; }
     int op_pos(int a) { return a; }
     int op_neg(int a) { return -a; }
@@ -536,11 +542,12 @@
 int TPpContext::CPPif(TPpToken* ppToken)
 {
     int token = scanToken(ppToken);
-    elsetracker++;
-    ifdepth++;
-    if (ifdepth > maxIfNesting) {
+    if (ifdepth >= maxIfNesting || elsetracker >= maxIfNesting) {
         parseContext.ppError(ppToken->loc, "maximum nesting depth exceeded", "#if", "");
-        return 0;
+        return EndOfInput;
+    } else {
+        elsetracker++;
+        ifdepth++;
     }
     int res = 0;
     bool err = false;
@@ -556,11 +563,14 @@
 int TPpContext::CPPifdef(int defined, TPpToken* ppToken)
 {
     int token = scanToken(ppToken);
-    if (++ifdepth > maxIfNesting) {
+    if (ifdepth > maxIfNesting || elsetracker > maxIfNesting) {
         parseContext.ppError(ppToken->loc, "maximum nesting depth exceeded", "#ifdef", "");
-        return 0;
+        return EndOfInput;
+    } else {
+        elsetracker++;
+        ifdepth++;
     }
-    elsetracker++;
+
     if (token != PpAtomIdentifier) {
         if (defined)
             parseContext.ppError(ppToken->loc, "must be followed by macro name", "#ifdef", "");
@@ -882,16 +892,16 @@
             token = CPPdefine(ppToken);
             break;
         case PpAtomElse:
-            if (elsetracker[elseSeen])
+            if (elseSeen[elsetracker])
                 parseContext.ppError(ppToken->loc, "#else after #else", "#else", "");
-            elsetracker[elseSeen] = true;
-            if (! ifdepth)
+            elseSeen[elsetracker] = true;
+            if (ifdepth == 0)
                 parseContext.ppError(ppToken->loc, "mismatched statements", "#else", "");
             token = extraTokenCheck(PpAtomElse, ppToken, scanToken(ppToken));
             token = CPPelse(0, ppToken);
             break;
         case PpAtomElif:
-            if (! ifdepth)
+            if (ifdepth == 0)
                 parseContext.ppError(ppToken->loc, "mismatched statements", "#elif", "");
             if (elseSeen[elsetracker])
                 parseContext.ppError(ppToken->loc, "#elif after #else", "#elif", "");
@@ -902,7 +912,7 @@
             token = CPPelse(0, ppToken);
             break;
         case PpAtomEndif:
-            if (! ifdepth)
+            if (ifdepth == 0)
                 parseContext.ppError(ppToken->loc, "mismatched statements", "#endif", "");
             else {
                 elseSeen[elsetracker] = false;
diff --git a/glslang/MachineIndependent/preprocessor/PpContext.h b/glslang/MachineIndependent/preprocessor/PpContext.h
index de48e27..854bbba 100644
--- a/glslang/MachineIndependent/preprocessor/PpContext.h
+++ b/glslang/MachineIndependent/preprocessor/PpContext.h
@@ -309,7 +309,7 @@
     bool endOfReplacementList() { return inputStack.empty() || inputStack.back()->endOfReplacementList(); }
     bool isMacroInput() { return inputStack.size() > 0 && inputStack.back()->isMacroInput(); }
 
-    static const int maxIfNesting = 64;
+    static const int maxIfNesting = 65;
 
     int ifdepth;                  // current #if-#else-#endif nesting in the cpp.c file (pre-processor)
     bool elseSeen[maxIfNesting];  // Keep a track of whether an else has been seen at a particular depth
diff --git a/glslang/Public/ShaderLang.h b/glslang/Public/ShaderLang.h
index b36e384..a531072 100644
--- a/glslang/Public/ShaderLang.h
+++ b/glslang/Public/ShaderLang.h
@@ -493,8 +493,8 @@
 
     const char* getInfoLog();
     const char* getInfoDebugLog();
-
     EShLanguage getStage() const { return stage; }
+    TIntermediate* getIntermediate() const { return intermediate; }
 
 protected:
     TPoolAllocator* pool;
diff --git a/gtests/AST.FromFile.cpp b/gtests/AST.FromFile.cpp
index c4cb3c5..f96b788 100644
--- a/gtests/AST.FromFile.cpp
+++ b/gtests/AST.FromFile.cpp
@@ -78,10 +78,12 @@
         "matrixError.vert",
         "cppSimple.vert",
         "cppIndent.vert",
+        "cppIntMinOverNegativeOne.frag",
         "cppNest.vert",
         "cppBad.vert",
         "cppBad2.vert",
         "cppComplexExpr.vert",
+        "cppDeepNest.frag",
         "badChars.frag",
         "pointCoord.frag",
         "array.frag",
@@ -187,6 +189,7 @@
         "structDeref.frag",
         "structure.frag",
         "swizzle.frag",
+        "invalidSwizzle.vert",
         "syntaxError.frag",
         "test.frag",
         "texture.frag",
diff --git a/gtests/Hlsl.FromFile.cpp b/gtests/Hlsl.FromFile.cpp
index a96dbbf..3873ff7 100644
--- a/gtests/Hlsl.FromFile.cpp
+++ b/gtests/Hlsl.FromFile.cpp
@@ -100,6 +100,7 @@
         {"hlsl.attribute.frag", "PixelShaderFunction"},
         {"hlsl.attribute.expression.comp", "main"},
         {"hlsl.attributeC11.frag", "main"},
+        {"hlsl.attributeGlobalBuffer.frag", "main"},
         {"hlsl.basic.comp", "main"},
         {"hlsl.basic.geom", "main"},
         {"hlsl.boolConv.vert", "main"},
@@ -247,6 +248,7 @@
         {"hlsl.params.default.frag", "main"},
         {"hlsl.params.default.negative.frag", "main"},
         {"hlsl.partialInit.frag", "PixelShaderFunction"},
+        {"hlsl.partialFlattenLocal.vert", "main"},
         {"hlsl.pp.vert", "main"},
         {"hlsl.pp.line.frag", "main"},
         {"hlsl.precise.frag", "main"},
@@ -378,6 +380,7 @@
     ToSpirv, HlslCompileAndFlattenTest,
     ::testing::ValuesIn(std::vector<FileNameEntryPointPair>{
         {"hlsl.array.flatten.frag", "main"},
+        {"hlsl.partialFlattenMixed.vert", "main"},
     }),
     FileNameAsCustomTestSuffix
 );
diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp
index ec73ba1..9143df2 100644
--- a/gtests/Spv.FromFile.cpp
+++ b/gtests/Spv.FromFile.cpp
@@ -277,6 +277,7 @@
         "spv.Operations.frag",
         "spv.paramMemory.frag",
         "spv.precision.frag",
+        "spv.precisionNonESSamp.frag",
         "spv.prepost.frag",
         "spv.qualifiers.vert",
         "spv.sampleMaskOverrideCoverage.frag",
diff --git a/hlsl/hlslAttributes.cpp b/hlsl/hlslAttributes.cpp
index 61ef805..fccf6c1 100644
--- a/hlsl/hlslAttributes.cpp
+++ b/hlsl/hlslAttributes.cpp
@@ -36,6 +36,7 @@
 #include "hlslAttributes.h"
 #include <cstdlib>
 #include <cctype>
+#include <algorithm>
 
 namespace glslang {
     // Map the given string to an attribute enum from TAttributeType,
@@ -57,6 +58,8 @@
                 return EatLocation;
             else if (lowername == "binding")
                 return EatBinding;
+            else if (lowername == "global_cbuffer_binding")
+                return EatGlobalBinding;
         } else if (lowernameSpace.size() > 0)
             return EatNone;
 
@@ -131,4 +134,51 @@
         return attributes.find(attr) != attributes.end();
     }
 
+    // extract integers out of attribute arguments stored in attribute aggregate
+    bool TAttributeMap::getInt(TAttributeType attr, int& value, int argNum) const 
+    {
+        const TConstUnion* intConst = getConstUnion(attr, EbtInt, argNum);
+
+        if (intConst == nullptr)
+            return false;
+
+        value = intConst->getIConst();
+        return true;
+    };
+
+    // extract strings out of attribute arguments stored in attribute aggregate.
+    // convert to lower case if converToLower is true (for case-insensitive compare convenience)
+    bool TAttributeMap::getString(TAttributeType attr, TString& value, int argNum, bool convertToLower) const 
+    {
+        const TConstUnion* stringConst = getConstUnion(attr, EbtString, argNum);
+
+        if (stringConst == nullptr)
+            return false;
+
+        value = *stringConst->getSConst();
+
+        // Convenience.
+        if (convertToLower)
+            std::transform(value.begin(), value.end(), value.begin(), ::tolower);
+
+        return true;
+    };
+
+    // Helper to get attribute const union.  Returns nullptr on failure.
+    const TConstUnion* TAttributeMap::getConstUnion(TAttributeType attr, TBasicType basicType, int argNum) const
+    {
+        const TIntermAggregate* attrAgg = (*this)[attr];
+        if (attrAgg == nullptr)
+            return nullptr;
+
+        if (argNum >= int(attrAgg->getSequence().size()))
+            return nullptr;
+
+        const TConstUnion* constVal = &attrAgg->getSequence()[argNum]->getAsConstantUnion()->getConstArray()[0];
+        if (constVal == nullptr || constVal->getType() != basicType)
+            return nullptr;
+        
+        return constVal;
+    }
+
 } // end namespace glslang
diff --git a/hlsl/hlslAttributes.h b/hlsl/hlslAttributes.h
index 16ec31d..1fdb4ba 100644
--- a/hlsl/hlslAttributes.h
+++ b/hlsl/hlslAttributes.h
@@ -64,6 +64,7 @@
         EatUnroll,
         EatLoop,
         EatBinding,
+        EatGlobalBinding,
         EatLocation,
         EatInputAttachment
     };
@@ -93,7 +94,16 @@
         // True if entry exists in map (even if value is nullptr)
         bool contains(TAttributeType) const;
 
+        // Obtain attribute as integer
+        bool getInt(TAttributeType attr, int& value, int argNum = 0) const;
+
+        // Obtain attribute as string, with optional to-lower transform
+        bool getString(TAttributeType attr, TString& value, int argNum = 0, bool convertToLower = true) const;
+
     protected:
+        // Helper to get attribute const union
+        const TConstUnion* getConstUnion(TAttributeType attr, TBasicType, int argNum) const;
+
         // Find an attribute enum given its name.
         static TAttributeType attributeFromName(const TString& nameSpace, const TString& name);
 
diff --git a/hlsl/hlslParseHelper.cpp b/hlsl/hlslParseHelper.cpp
index e34ab3a..2daaa65 100755
--- a/hlsl/hlslParseHelper.cpp
+++ b/hlsl/hlslParseHelper.cpp
@@ -1146,13 +1146,22 @@
     return type;
 }
 
-// Is this a uniform array or structure which should be flattened?
-bool HlslParseContext::shouldFlatten(const TType& type) const
+// Is this an aggregate that should be flattened?
+// Can be applied to intermediate levels of type in a hierarchy.
+// Some things like flattening uniform arrays are only about the top level
+// of the aggregate, triggered on 'topLevel'.
+bool HlslParseContext::shouldFlatten(const TType& type, TStorageQualifier qualifier, bool topLevel) const
 {
-    const TStorageQualifier qualifier = type.getQualifier().storage;
-
-    return (qualifier == EvqUniform && type.isArray() && intermediate.getFlattenUniformArrays()) ||
-           (type.isStruct() && type.containsOpaque());
+    switch (qualifier) {
+    case EvqVaryingIn:
+    case EvqVaryingOut:
+        return type.isStruct() || type.isArray();
+    case EvqUniform:
+        return type.isArray() && intermediate.getFlattenUniformArrays() && topLevel ||
+               type.isStruct() && type.containsOpaque();
+    default:
+        return type.isStruct() && type.containsOpaque();
+    };
 }
 
 // Top level variable flattening: construct data
@@ -1223,7 +1232,7 @@
                                          const TQualifier& outerQualifier,
                                          const TArraySizes* builtInArraySizes)
 {
-    if (isFinalFlattening(type)) {
+    if (!shouldFlatten(type, outerQualifier.storage, false)) {
         // This is as far as we flatten.  Insert the variable.
         TVariable* memberVariable = makeInternalVariable(memberName, type);
         mergeQualifiers(memberVariable->getWritableType().getQualifier(), variable.getType().getQualifier());
@@ -1347,11 +1356,13 @@
 {
     const TType dereferencedType(base->getType(), member);  // dereferenced type
     const TIntermSymbol& symbolNode = *base->getAsSymbolNode();
-    TIntermTyped* flattened = flattenAccess(symbolNode.getId(), member, dereferencedType, symbolNode.getFlattenSubset());
+    TIntermTyped* flattened = flattenAccess(symbolNode.getId(), member, base->getQualifier().storage,
+                                            dereferencedType, symbolNode.getFlattenSubset());
 
     return flattened ? flattened : base;
 }
-TIntermTyped* HlslParseContext::flattenAccess(int uniqueId, int member, const TType& dereferencedType, int subset)
+TIntermTyped* HlslParseContext::flattenAccess(int uniqueId, int member, TStorageQualifier outerStorage,
+    const TType& dereferencedType, int subset)
 {
     const auto flattenData = flattenMap.find(uniqueId);
 
@@ -1362,7 +1373,7 @@
     int newSubset = flattenData->second.offsets[subset >= 0 ? subset + member : member];
 
     TIntermSymbol* subsetSymbol;
-    if (isFinalFlattening(dereferencedType)) {
+    if (!shouldFlatten(dereferencedType, outerStorage, false)) {
         // Finished flattening: create symbol for variable
         member = flattenData->second.offsets[newSubset];
         const TVariable* memberVariable = flattenData->second.members[member];
@@ -1670,7 +1681,7 @@
                 error(loc, "redefinition", variable->getName().c_str(), "");
 
             // Add parameters to the AST list.
-            if (shouldFlatten(variable->getType())) {
+            if (shouldFlatten(variable->getType(), variable->getType().getQualifier().storage, true)) {
                 // Expand the AST parameter nodes (but not the name mangling or symbol table view)
                 // for structures that need to be flattened.
                 flatten(*variable, false);
@@ -1678,7 +1689,8 @@
                 for (int mem = 0; mem < (int)structure->size(); ++mem) {
                     paramNodes = intermediate.growAggregate(paramNodes,
                                                             flattenAccess(variable->getUniqueId(), mem,
-                                                            *(*structure)[mem].type),
+                                                                          variable->getType().getQualifier().storage,
+                                                                          *(*structure)[mem].type),
                                                             loc);
                 }
             } else {
@@ -1717,36 +1729,33 @@
     }
 
     // MaxVertexCount
-    const TIntermAggregate* maxVertexCount = attributes[EatMaxVertexCount];
-    if (maxVertexCount != nullptr) {
-        if (! intermediate.setVertices(maxVertexCount->getSequence()[0]->getAsConstantUnion()->
-                                       getConstArray()[0].getIConst())) {
-            error(loc, "cannot change previously set maxvertexcount attribute", "", "");
+    if (attributes.contains(EatMaxVertexCount)) {
+        int maxVertexCount;
+
+        if (! attributes.getInt(EatMaxVertexCount, maxVertexCount)) {
+            error(loc, "invalid maxvertexcount", "", "");
+        } else {
+            if (! intermediate.setVertices(maxVertexCount))
+                error(loc, "cannot change previously set maxvertexcount attribute", "", "");
         }
     }
 
     // Handle [patchconstantfunction("...")]
-    const TIntermAggregate* pcfAttr = attributes[EatPatchConstantFunc]; 
-    if (pcfAttr != nullptr) {
-        const TConstUnion& pcfName = pcfAttr->getSequence()[0]->getAsConstantUnion()->getConstArray()[0];
-
-        if (pcfName.getType() != EbtString) {
+    if (attributes.contains(EatPatchConstantFunc)) {
+        TString pcfName;
+        if (! attributes.getString(EatPatchConstantFunc, pcfName, 0, false)) {
             error(loc, "invalid patch constant function", "", "");
         } else {
-            patchConstantFunctionName = *pcfName.getSConst();
+            patchConstantFunctionName = pcfName;
         }
     }
 
     // Handle [domain("...")]
-    const TIntermAggregate* domainAttr = attributes[EatDomain]; 
-    if (domainAttr != nullptr) {
-        const TConstUnion& domainType = domainAttr->getSequence()[0]->getAsConstantUnion()->getConstArray()[0];
-        if (domainType.getType() != EbtString) {
+    if (attributes.contains(EatDomain)) {
+        TString domainStr;
+        if (! attributes.getString(EatDomain, domainStr)) {
             error(loc, "invalid domain", "", "");
         } else {
-            TString domainStr = *domainType.getSConst();
-            std::transform(domainStr.begin(), domainStr.end(), domainStr.begin(), ::tolower);
-
             TLayoutGeometry domain = ElgNone;
 
             if (domainStr == "tri") {
@@ -1770,15 +1779,11 @@
     }
 
     // Handle [outputtopology("...")]
-    const TIntermAggregate* topologyAttr = attributes[EatOutputTopology];
-    if (topologyAttr != nullptr) {
-        const TConstUnion& topoType = topologyAttr->getSequence()[0]->getAsConstantUnion()->getConstArray()[0];
-        if (topoType.getType() != EbtString) {
+    if (attributes.contains(EatOutputTopology)) {
+        TString topologyStr;
+        if (! attributes.getString(EatOutputTopology, topologyStr)) {
             error(loc, "invalid outputtopology", "", "");
         } else {
-            TString topologyStr = *topoType.getSConst();
-            std::transform(topologyStr.begin(), topologyStr.end(), topologyStr.begin(), ::tolower);
-
             TVertexOrder vertexOrder = EvoNone;
             TLayoutGeometry primitive = ElgNone;
 
@@ -1808,15 +1813,11 @@
     }
 
     // Handle [partitioning("...")]
-    const TIntermAggregate* partitionAttr = attributes[EatPartitioning]; 
-    if (partitionAttr != nullptr) {
-        const TConstUnion& partType = partitionAttr->getSequence()[0]->getAsConstantUnion()->getConstArray()[0];
-        if (partType.getType() != EbtString) {
+    if (attributes.contains(EatPartitioning)) {
+        TString partitionStr;
+        if (! attributes.getString(EatPartitioning, partitionStr)) {
             error(loc, "invalid partitioning", "", "");
         } else {
-            TString partitionStr = *partType.getSConst();
-            std::transform(partitionStr.begin(), partitionStr.end(), partitionStr.begin(), ::tolower);
-
             TVertexSpacing partitioning = EvsNone;
                 
             if (partitionStr == "integer") {
@@ -1837,14 +1838,11 @@
     }
 
     // Handle [outputcontrolpoints("...")]
-    const TIntermAggregate* outputControlPoints = attributes[EatOutputControlPoints]; 
-    if (outputControlPoints != nullptr) {
-        const TConstUnion& ctrlPointConst =
-            outputControlPoints->getSequence()[0]->getAsConstantUnion()->getConstArray()[0];
-        if (ctrlPointConst.getType() != EbtInt) {
+    if (attributes.contains(EatOutputControlPoints)) {
+        int ctrlPoints;
+        if (! attributes.getInt(EatOutputControlPoints, ctrlPoints)) {
             error(loc, "invalid outputcontrolpoints", "", "");
         } else {
-            const int ctrlPoints = ctrlPointConst.getIConst();
             if (! intermediate.setVertices(ctrlPoints)) {
                 error(loc, "cannot change previously set outputcontrolpoints attribute", "", "");
             }
@@ -1856,37 +1854,31 @@
 // attributes.
 void HlslParseContext::transferTypeAttributes(const TAttributeMap& attributes, TType& type)
 {
-    // extract integers out of attribute arguments stored in attribute aggregate
-    const auto getInt = [&](TAttributeType attr, int argNum, int& value) -> bool {
-        const TIntermAggregate* attrAgg = attributes[attr];
-        if (attrAgg == nullptr)
-            return false;
-        if (argNum >= (int)attrAgg->getSequence().size())
-            return false;
-        const TConstUnion& intConst = attrAgg->getSequence()[argNum]->getAsConstantUnion()->getConstArray()[0];
-        if (intConst.getType() != EbtInt)
-            return false;
-        value = intConst.getIConst();
-        return true;
-    };
-
     // location
     int value;
-    if (getInt(EatLocation, 0, value))
+    if (attributes.getInt(EatLocation, value))
         type.getQualifier().layoutLocation = value;
 
     // binding
-    if (getInt(EatBinding, 0, value)) {
+    if (attributes.getInt(EatBinding, value)) {
         type.getQualifier().layoutBinding = value;
         type.getQualifier().layoutSet = 0;
     }
 
     // set
-    if (getInt(EatBinding, 1, value))
+    if (attributes.getInt(EatBinding, value, 1))
         type.getQualifier().layoutSet = value;
 
+    // global cbuffer binding
+    if (attributes.getInt(EatGlobalBinding, value))
+        globalUniformBinding = value;
+
+    // global cbuffer binding
+    if (attributes.getInt(EatGlobalBinding, value, 1))
+        globalUniformSet = value;
+
     // input attachment
-    if (getInt(EatInputAttachment, 0, value))
+    if (attributes.getInt(EatInputAttachment, value))
         type.getQualifier().layoutAttachment = value;
 }
 
@@ -1959,7 +1951,7 @@
             if (variable.getType().getQualifier().isArrayedIo(language)) {
                 if (variable.getType().containsBuiltIn())
                     split(variable);
-            } else
+            } else if (shouldFlatten(variable.getType(), EvqVaryingIn /* not assigned yet, but close enough */, true))
                 flatten(variable, false /* don't track linkage here, it will be tracked in assignToInterface() */);
         }
         // TODO: flatten arrays too
@@ -2644,9 +2636,9 @@
     int leftOffset = findSubtreeOffset(*left);
     int rightOffset = findSubtreeOffset(*right);
 
-    const auto getMember = [&](bool isLeft, const TType& type, int member, TIntermTyped* splitNode, int splitMember)
+    const auto getMember = [&](bool isLeft, const TType& type, int member, TIntermTyped* splitNode, int splitMember,
+                               bool flattened)
                            -> TIntermTyped * {
-        const bool flattened = isLeft ? isFlattenLeft : isFlattenRight;
         const bool split     = isLeft ? isSplitLeft   : isSplitRight;
 
         TIntermTyped* subTree;
@@ -2671,7 +2663,7 @@
                                                 intermediate.addConstantUnion(arrayElement.back(), loc), loc);
                 subTree->setType(splitDerefType);
             }
-        } else if (flattened && isFinalFlattening(derefType)) {
+        } else if (flattened && !shouldFlatten(derefType, isLeft ? leftStorage : rightStorage, false)) {
             if (isLeft)
                 subTree = intermediate.addSymbol(*(*leftVariables)[leftOffset++]);
             else
@@ -2702,12 +2694,19 @@
 
     // Cannot use auto here, because this is recursive, and auto can't work out the type without seeing the
     // whole thing.  So, we'll resort to an explicit type via std::function.
-    const std::function<void(TIntermTyped* left, TIntermTyped* right, TIntermTyped* splitLeft, TIntermTyped* splitRight)>
-    traverse = [&](TIntermTyped* left, TIntermTyped* right, TIntermTyped* splitLeft, TIntermTyped* splitRight) -> void {
+    const std::function<void(TIntermTyped* left, TIntermTyped* right, TIntermTyped* splitLeft, TIntermTyped* splitRight,
+                             bool topLevel)>
+    traverse = [&](TIntermTyped* left, TIntermTyped* right, TIntermTyped* splitLeft, TIntermTyped* splitRight,
+                   bool topLevel) -> void {
         // If we get here, we are assigning to or from a whole array or struct that must be
         // flattened, so have to do member-by-member assignment:
 
-        if (left->getType().isArray() || right->getType().isArray()) {
+        bool shouldFlattenSubsetLeft = isFlattenLeft && shouldFlatten(left->getType(), leftStorage, topLevel);
+        bool shouldFlattenSubsetRight = isFlattenRight && shouldFlatten(right->getType(), rightStorage, topLevel);
+
+        if ((left->getType().isArray() || right->getType().isArray()) &&
+              (shouldFlattenSubsetLeft  || isSplitLeft ||
+               shouldFlattenSubsetRight || isSplitRight)) {
             const int elementsL = left->getType().isArray()  ? left->getType().getOuterArraySize()  : 1;
             const int elementsR = right->getType().isArray() ? right->getType().getOuterArraySize() : 1;
 
@@ -2720,19 +2719,24 @@
                 arrayElement.push_back(element);
 
                 // Add a new AST symbol node if we have a temp variable holding a complex RHS.
-                TIntermTyped* subLeft  = getMember(true,  left->getType(),  element, left, element);
-                TIntermTyped* subRight = getMember(false, right->getType(), element, right, element);
+                TIntermTyped* subLeft  = getMember(true,  left->getType(),  element, left, element,
+                                                   shouldFlattenSubsetLeft);
+                TIntermTyped* subRight = getMember(false, right->getType(), element, right, element,
+                                                   shouldFlattenSubsetRight);
 
-                TIntermTyped* subSplitLeft =  isSplitLeft  ? getMember(true,  left->getType(),  element, splitLeft, element)
+                TIntermTyped* subSplitLeft =  isSplitLeft  ? getMember(true,  left->getType(),  element, splitLeft,
+                                                                       element, shouldFlattenSubsetLeft)
                                                            : subLeft;
-                TIntermTyped* subSplitRight = isSplitRight ? getMember(false, right->getType(), element, splitRight, element)
+                TIntermTyped* subSplitRight = isSplitRight ? getMember(false, right->getType(), element, splitRight,
+                                                                       element, shouldFlattenSubsetRight)
                                                            : subRight;
 
-                traverse(subLeft, subRight, subSplitLeft, subSplitRight);
+                traverse(subLeft, subRight, subSplitLeft, subSplitRight, false);
 
                 arrayElement.pop_back();
             }
-        } else if (left->getType().isStruct()) {
+        } else if (left->getType().isStruct() && (shouldFlattenSubsetLeft  || isSplitLeft ||
+                                                  shouldFlattenSubsetRight || isSplitRight)) {
             // struct case
             const auto& membersL = *left->getType().getStruct();
             const auto& membersR = *right->getType().getStruct();
@@ -2750,13 +2754,17 @@
                 const TType& typeL = *membersL[member].type;
                 const TType& typeR = *membersR[member].type;
 
-                TIntermTyped* subLeft  = getMember(true,  left->getType(), member, left, member);
-                TIntermTyped* subRight = getMember(false, right->getType(), member, right, member);
+                TIntermTyped* subLeft  = getMember(true,  left->getType(), member, left, member,
+                                                   shouldFlattenSubsetLeft);
+                TIntermTyped* subRight = getMember(false, right->getType(), member, right, member,
+                                                   shouldFlattenSubsetRight);
 
                 // If there is no splitting, use the same values to avoid inefficiency.
-                TIntermTyped* subSplitLeft =  isSplitLeft  ? getMember(true,  left->getType(),  member, splitLeft, memberL)
+                TIntermTyped* subSplitLeft =  isSplitLeft  ? getMember(true,  left->getType(),  member, splitLeft,
+                                                                       memberL, shouldFlattenSubsetLeft)
                                                            : subLeft;
-                TIntermTyped* subSplitRight = isSplitRight ? getMember(false, right->getType(), member, splitRight, memberR)
+                TIntermTyped* subSplitRight = isSplitRight ? getMember(false, right->getType(), member, splitRight,
+                                                                       memberR, shouldFlattenSubsetRight)
                                                            : subRight;
 
                 if (isClipOrCullDistance(subSplitLeft->getType()) || isClipOrCullDistance(subSplitRight->getType())) {
@@ -2775,9 +2783,8 @@
 
                     assignList = intermediate.growAggregate(assignList, clipCullAssign, loc);
 
-                } else if (!isFlattenLeft && !isFlattenRight &&
-                           !typeL.containsBuiltIn() &&
-                           !typeR.containsBuiltIn()) {
+                } else if (!shouldFlattenSubsetLeft && !shouldFlattenSubsetRight &&
+                           !typeL.containsBuiltIn() && !typeR.containsBuiltIn()) {
                     // If this is the final flattening (no nested types below to flatten)
                     // we'll copy the member, else recurse into the type hierarchy.
                     // However, if splitting the struct, that means we can copy a whole
@@ -2790,7 +2797,7 @@
                                                             intermediate.addAssign(op, subSplitLeft, subSplitRight, loc),
                                                             loc);
                 } else {
-                    traverse(subLeft, subRight, subSplitLeft, subSplitRight);
+                    traverse(subLeft, subRight, subSplitLeft, subSplitRight, false);
                 }
 
                 memberL += (typeL.isBuiltIn() ? 0 : 1);
@@ -2832,7 +2839,7 @@
         splitRight = intermediate.addSymbol(*getSplitNonIoVar(right->getAsSymbolNode()->getId()), loc);
 
     // This makes the whole assignment, recursing through subtypes as needed.
-    traverse(left, right, splitLeft, splitRight);
+    traverse(left, right, splitLeft, splitRight, true);
 
     assert(assignList != nullptr);
     assignList->setOperator(EOpSequence);
@@ -2994,7 +3001,7 @@
         argTex->getWritableType().getSampler().shadow = shadowMode;
         samplerType.shadow = shadowMode;
 
-        texSymbol->setId(newId);
+        texSymbol->switchId(newId);
     }
 
     txcombine->setType(TType(samplerType, EvqTemporary));
@@ -4547,14 +4554,21 @@
                     std::max(arg0->getType().getMatrixRows(), 1);
 
                 TConstUnion zero;
-                zero.setDConst(0.0);
+                if (arg0->getType().isIntegerDomain())
+                    zero.setDConst(0);
+                else
+                    zero.setDConst(0.0);
                 TConstUnionArray zeros(constComponentCount, zero);
 
                 less->getSequence().push_back(intermediate.addConstantUnion(zeros, arg0->getType(), loc, true));
 
                 compareNode = intermediate.addBuiltInFunctionCall(loc, EOpAny, true, less, TType(EbtBool));
             } else {
-                TIntermTyped* zero = intermediate.addConstantUnion(0, type0, loc, true);
+                TIntermTyped* zero;
+                if (arg0->getType().isIntegerDomain())
+                    zero = intermediate.addConstantUnion(0, loc, true);
+                else
+                    zero = intermediate.addConstantUnion(0.0, type0, loc, true);
                 compareNode = handleBinaryMath(loc, "clip", EOpLessThan, arg0, zero);
             }
 
@@ -5224,7 +5238,8 @@
                         // add buffer and counter buffer argument qualifier
                         qualifierList.push_back(qual);
                         qualifierList.push_back(qual);
-                    } else if (shouldFlatten(*(*fnCandidate)[i].type)) {
+                    } else if (shouldFlatten(*(*fnCandidate)[i].type, (*fnCandidate)[i].type->getQualifier().storage,
+                                             true)) {
                         // add structure member expansion
                         for (int memb = 0; memb < (int)(*fnCandidate)[i].type->getStruct()->size(); ++memb)
                             qualifierList.push_back(qual);
@@ -5313,7 +5328,7 @@
             if (wasFlattened(arg)) {
                 // If both formal and calling arg are to be flattened, leave that to argument
                 // expansion, not conversion.
-                if (!shouldFlatten(*function[param].type)) {
+                if (!shouldFlatten(*function[param].type, function[param].type->getQualifier().storage, true)) {
                     // Will make a two-level subtree.
                     // The deepest will copy member-by-member to build the structure to pass.
                     // The level above that will be a two-operand EOpComma sequence that follows the copy by the
@@ -5390,7 +5405,7 @@
                                         aggregate->getSequence()[param + functionParamNumberOffset]->getAsTyped() :
                                         arguments->getAsTyped());
 
-        if (wasFlattened(arg) && shouldFlatten(*function[param].type)) {
+        if (wasFlattened(arg) && shouldFlatten(*function[param].type, function[param].type->getQualifier().storage, true)) {
             // Need to pass the structure members instead of the structure.
             TVector<TIntermTyped*> memberArgs;
             for (int memb = 0; memb < (int)arg->getType().getStruct()->size(); ++memb)
@@ -7573,7 +7588,7 @@
 
     inheritGlobalDefaults(type.getQualifier());
 
-    const bool flattenVar = shouldFlatten(type);
+    const bool flattenVar = shouldFlatten(type, type.getQualifier().storage, true);
 
     // correct IO in the type
     switch (type.getQualifier().storage) {
diff --git a/hlsl/hlslParseHelper.h b/hlsl/hlslParseHelper.h
index e4c15a1..c1752f1 100755
--- a/hlsl/hlslParseHelper.h
+++ b/hlsl/hlslParseHelper.h
@@ -187,7 +187,8 @@
     void pushSwitchSequence(TIntermSequence* sequence) { switchSequenceStack.push_back(sequence); }
     void popSwitchSequence() { switchSequenceStack.pop_back(); }
 
-    virtual void growGlobalUniformBlock(const TSourceLoc&, TType&, const TString& memberName, TTypeList* typeList = nullptr) override;
+    virtual void growGlobalUniformBlock(const TSourceLoc&, TType&, const TString& memberName,
+        TTypeList* typeList = nullptr) override;
 
     // Apply L-value conversions.  E.g, turning a write to a RWTexture into an ImageStore.
     TIntermTyped* handleLvalue(const TSourceLoc&, const char* op, TIntermTyped*& node);
@@ -244,15 +245,14 @@
 
     // Array and struct flattening
     TIntermTyped* flattenAccess(TIntermTyped* base, int member);
-    TIntermTyped* flattenAccess(int uniqueId, int member, const TType&, int subset = -1);
+    TIntermTyped* flattenAccess(int uniqueId, int member, TStorageQualifier outerStorage, const TType&, int subset = -1);
     int findSubtreeOffset(const TIntermNode&) const;
     int findSubtreeOffset(const TType&, int subset, const TVector<int>& offsets) const;
-    bool shouldFlatten(const TType&) const;
+    bool shouldFlatten(const TType&, TStorageQualifier, bool topLevel) const;
     bool wasFlattened(const TIntermTyped* node) const;
     bool wasFlattened(int id) const { return flattenMap.find(id) != flattenMap.end(); }
     int  addFlattenedMember(const TVariable&, const TType&, TFlattenData&, const TString& name, bool linkage,
                             const TQualifier& outerQualifier, const TArraySizes* builtInArraySizes);
-    bool isFinalFlattening(const TType& type) const { return !(type.isStruct() || type.isArray()); }
 
     // Structure splitting (splits interstage built-in types into its own struct)
     void split(const TVariable&);
diff --git a/hlsl/hlslParseables.cpp b/hlsl/hlslParseables.cpp
index 946d91b..f806bb2 100755
--- a/hlsl/hlslParseables.cpp
+++ b/hlsl/hlslParseables.cpp
@@ -569,8 +569,8 @@
         unsigned int  stage;     // stage mask
         bool          method;    // true if it's a method.
     } hlslIntrinsics[] = {
-        // name                               retOrd   retType    argOrder          argType   stage mask
-        // -----------------------------------------------------------------------------------------------
+        // name                               retOrd   retType    argOrder          argType          stage mask     method
+        // ----------------------------------------------------------------------------------------------------------------
         { "abort",                            nullptr, nullptr,   "-",              "-",             EShLangAll,    false },
         { "abs",                              nullptr, nullptr,   "SVM",            "DFUI",          EShLangAll,    false },
         { "acos",                             nullptr, nullptr,   "SVM",            "F",             EShLangAll,    false },
@@ -589,7 +589,7 @@
         { "ceil",                             nullptr, nullptr,   "SVM",            "F",             EShLangAll,    false },
         { "CheckAccessFullyMapped",           "S",     "B" ,      "S",              "U",             EShLangPSCS,   false },
         { "clamp",                            nullptr, nullptr,   "SVM,,",          "FUI,,",         EShLangAll,    false },
-        { "clip",                             "-",     "-",       "SVM",            "F",             EShLangPS,     false },
+        { "clip",                             "-",     "-",       "SVM",            "FUI",           EShLangPS,     false },
         { "cos",                              nullptr, nullptr,   "SVM",            "F",             EShLangAll,    false },
         { "cosh",                             nullptr, nullptr,   "SVM",            "F",             EShLangAll,    false },
         { "countbits",                        nullptr, nullptr,   "SV",             "UI",            EShLangAll,    false },
diff --git a/known_good.json b/known_good.json
index 4e59cd3..ea3a808 100644
--- a/known_good.json
+++ b/known_good.json
@@ -5,14 +5,14 @@
       "site" : "github",
       "subrepo" : "KhronosGroup/SPIRV-Tools",
       "subdir" : "External/spirv-tools",
-      "commit" : "99cd25c4139e0dc914ab8a5a3b75e6fed0ad1329"
+      "commit" : "1a9061a2be884eed0e518ac19866246a5c9babc0"
     },
     {
       "name" : "spirv-tools/external/spirv-headers",
       "site" : "github",
       "subrepo" : "KhronosGroup/SPIRV-Headers",
       "subdir" : "External/spirv-tools/external/spirv-headers",
-      "commit" : "2bb92e6fe2c6aa410152fc6c63443f452acb1a65"
+      "commit" : "061097878467b8e040fbf153a837d844ef9f9f96"
     }
   ]
 }