Track expected test results and add more README information.


git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@22602 e7fa87d3-cd2b-0410-9028-fcbf551c1848
diff --git a/Install/Linux/README.txt b/Install/Linux/README.txt
new file mode 100644
index 0000000..fc5651c
--- /dev/null
+++ b/Install/Linux/README.txt
@@ -0,0 +1,13 @@
+This directory contains linux binaries for the glslang validator.  The main 

+executable is glslangValidator, which requires use of the shared object

+file libglsang.so.

+

+Installation: Executing the ./install script will copy these to /usr/local/* 
+so that they may be executed from any directory.  
+
+Alternatively, you may put them where you wish, but will then need to use 
+something like:
+
+    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:<path to libglslang.so>

+

+Usage:  Execute glslangValidator with no arguments to get a usage statement.

diff --git a/Install/Windows/README.txt b/Install/Windows/README.txt
new file mode 100644
index 0000000..ee673f3
--- /dev/null
+++ b/Install/Windows/README.txt
@@ -0,0 +1,6 @@
+This directory contains a Windows binary for the glslang validator.

+

+Installation: The executable in this directory is self sufficient, and can be 

+placed where desired; in a test directory, or in a system path, etc.

+

+Usage:  Execute glslangValidator with no arguments to get a usage statement.

diff --git a/README.txt b/README.txt
index 6f5c5b3..a5a58b2 100644
--- a/README.txt
+++ b/README.txt
@@ -55,8 +55,39 @@
 Note: Despite appearances, the use of a DLL is currently disabled; it
 simply makes a standalone executable from a statically linked library.
 
-Basic Operation
----------------
+Basic external programmatic interface
+-------------------------------------
+
+Another piece of software can programmatically translate shaders to an AST 
+using the C-style ShInitialize(), ShCompile(), et. al. interface.  The main() in 
+StandAlone/StandAlone.cpp shows an example way of using these.
+
+The Sh*() interface takes a "compiler" call-back object, which it calls after 
+building call back that is passed the AST and can then execute a backend on it.
+
+The following is a simplified resulting run-time call stack:
+
+    ShCompile(shader, compiler) -> compiler(AST) -> <back end>
+
+In practice, ShCompile() takes shader strings, default version, and
+warning/error and other options for controling compilation.
+
+Testing
+-------
+
+"Test" is an active test directory that contains test input and a
+subdirectory baseResults that contains the expected results of the
+tests.  Both the tests and baseResults are under source-code control.
+Executing the script ./runtests will generate current results in 
+the localResults directory and diff them against the baseResults.
+When you want to update the tracked test results, they need to be
+copied from localResults to baseResults
+
+There are some tests borrowed from LunarGLASS.  If LunarGLASS is
+missing, those tests just won't run.
+
+Basic Internal Operation
+------------------------
 
  -  Initial lexical analysis is done be the preprocessor in
     MachineIndependent/Preprocessor, and then refined by a GLSL scanner
diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp
index 65e9d3e..f0a39df 100644
--- a/StandAlone/StandAlone.cpp
+++ b/StandAlone/StandAlone.cpp
@@ -306,12 +306,14 @@
 void usage()
 {
     printf("Usage: standalone [ options ] filename\n"
-           "Where: filename = filename ending in .frag* or .vert*\n"
-           "-i: intermediate (glslang AST)\n"
-           "-d: delay end (keeps output up in debugger, WIN32)\n"
+           "Where: filename is a name ending in .frag or .vert\n\n"
+           "Compilation warnings and errors will be printed to stdout.\n"
+           "To get other information, use one of the following options:\n"
+           "-i: intermediate tree (glslang AST) is printed out\n"
+           "-d: delay exit\n"
            "-l: memory leak mode\n"
-           "-s: silent mode (no info log)\n"
-           "-r: relaxed semantic error checking mode\n");
+           "-s: silent mode\n"
+           "-r: relaxed semantic error-checking mode\n");
 }
 
 #ifndef _WIN32
diff --git a/Test/baseResults/120.frag.out b/Test/baseResults/120.frag.out
new file mode 100644
index 0000000..c0abb16
--- /dev/null
+++ b/Test/baseResults/120.frag.out
@@ -0,0 +1,239 @@
+ERROR: 0:9: 'in for stage inputs' : not supported for this version or the enabled extensions 

+ERROR: 0:10: 'out for stage outputs' : not supported for this version or the enabled extensions 

+ERROR: 0:54: '+' :  wrong operand types: no operation '+' exists that takes a left-hand operand of type '2-component vector of float' and a right operand of type '3-component vector of float' (or there is no acceptable conversion)

+ERROR: 0:55: '*' :  wrong operand types: no operation '*' exists that takes a left-hand operand of type 'uniform 4X2 matrix of float' and a right operand of type '3-component vector of float' (or there is no acceptable conversion)

+ERROR: 0:56: '+' :  wrong operand types: no operation '+' exists that takes a left-hand operand of type 'uniform 4X2 matrix of float' and a right operand of type 'smooth in 4-component vector of float' (or there is no acceptable conversion)

+ERROR: 0:57: '=' :  cannot convert from 'const float' to 'int'

+ERROR: 0:58: 'assign' :  cannot convert from 'bool' to 'float'

+ERROR: 0:59: '+' :  wrong operand types: no operation '+' exists that takes a left-hand operand of type 'int' and a right operand of type 'bool' (or there is no acceptable conversion)

+ERROR: 0:60: '*' :  wrong operand types: no operation '*' exists that takes a left-hand operand of type 'bool' and a right operand of type 'int' (or there is no acceptable conversion)

+ERROR: 0:60: 'assign' :  cannot convert from 'bool' to 'float'

+ERROR: 0:61: 'assign' :  cannot convert from 'int' to 'bool'

+ERROR: 0:62: '+' :  wrong operand types: no operation '+' exists that takes a left-hand operand of type 'bool' and a right operand of type 'float' (or there is no acceptable conversion)

+ERROR: 0:63: 'bitwise-or assign' : not supported for this version or the enabled extensions 

+ERROR: 0:63: 'assign' :  cannot convert from 'bool' to 'float'

+ERROR: 0:79: ':' :  wrong operand types: no operation ':' exists that takes a left-hand operand of type '4-component vector of float' and a right operand of type '4X4 matrix of float' (or there is no acceptable conversion)

+ERROR: 0:79: 'assign' :  cannot convert from '4X4 matrix of float' to 'fragColor 4-component vector of float'

+ERROR: 0:82: 'xr' : illegal - vector component fields not from the same set 

+ERROR: 0:83: 'z' : vector field selection out of range 

+ERROR: 0:84: 'assign' :  l-value required 

+ERROR: 0:90: 'int' : overloaded functions must have the same return type 

+ERROR: 0:90: 'main' : function already has a body 

+ERROR: 0:90: 'int' :  main function cannot return a value

+ERROR: 0:91: 'main' : function cannot take any parameter(s) 

+ERROR: 0:93: 'a' : variables with qualifier 'const' must be initialized 

+ERROR: 0:96: 'out' : overloaded functions must have the same parameter qualifiers 

+ERROR: 0:98: 'return' : function return is not matching type: 

+ERROR: 26 compilation errors.  No code generated.

+

+ERROR: node is still EOpNull!

+0:21  Function Definition: main( (void)

+0:21    Function Parameters: 

+0:23    Sequence

+0:23      Sequence

+0:23        move second child to first child (2X3 matrix of float)

+0:23          'm23' (2X3 matrix of float)

+0:23          Construct mat2x3 (2X3 matrix of float)

+0:23            'm' (uniform 4X2 matrix of float)

+0:27      Sequence

+0:27        move second child to first child (structure)

+0:27          'sv' (structure)

+0:27          Construct structure (structure)

+0:27            Convert int to float (float)

+0:27              'a' (int)

+0:28      Sequence

+0:28        move second child to first child (2-element array of float)

+0:28          'ia' (2-element array of float)

+0:28          Construct float (2-element array of float)

+0:28            3.000000

+0:28            direct index (float)

+0:28              'i' (smooth in 4-component vector of float)

+0:28              1 (const int)

+0:29      Sequence

+0:29        move second child to first child (float)

+0:29          'f1' (float)

+0:29          1.000000

+0:30      Sequence

+0:30        move second child to first child (float)

+0:30          'f' (float)

+0:30          Convert int to float (float)

+0:30            'a' (int)

+0:31      move second child to first child (float)

+0:31        'f' (float)

+0:31        Convert int to float (float)

+0:31          'a' (int)

+0:33      Sequence

+0:33        move second child to first child (3-component vector of float)

+0:33          'v3' (3-component vector of float)

+0:33          Convert int to float (3-component vector of float)

+0:33            'iv3' (3-component vector of int)

+0:34      move second child to first child (float)

+0:34        'f' (float)

+0:34        add (float)

+0:34          'f' (float)

+0:34          Convert int to float (float)

+0:34            'a' (int)

+0:35      move second child to first child (float)

+0:35        'f' (float)

+0:35        subtract (float)

+0:35          Convert int to float (float)

+0:35            'a' (int)

+0:35          'f' (float)

+0:36      add second child into first child (float)

+0:36        'f' (float)

+0:36        Convert int to float (float)

+0:36          'a' (int)

+0:37      move second child to first child (float)

+0:37        'f' (float)

+0:37        subtract (float)

+0:37          Convert int to float (float)

+0:37            'a' (int)

+0:37          'f' (float)

+0:38      multiply second child into first child (3-component vector of float)

+0:38        'v3' (3-component vector of float)

+0:38        Convert int to float (3-component vector of float)

+0:38          'iv3' (3-component vector of int)

+0:39      move second child to first child (3-component vector of float)

+0:39        'v3' (3-component vector of float)

+0:39        divide (3-component vector of float)

+0:39          Convert int to float (3-component vector of float)

+0:39            'iv3' (3-component vector of int)

+0:39          2.000000

+0:40      move second child to first child (3-component vector of float)

+0:40        'v3' (3-component vector of float)

+0:40        vector-scale (3-component vector of float)

+0:40          3.000000

+0:40          Convert int to float (3-component vector of float)

+0:40            'iv3' (3-component vector of int)

+0:41      move second child to first child (3-component vector of float)

+0:41        'v3' (3-component vector of float)

+0:41        vector-scale (3-component vector of float)

+0:41          2.000000

+0:41          'v3' (3-component vector of float)

+0:42      move second child to first child (3-component vector of float)

+0:42        'v3' (3-component vector of float)

+0:42        subtract (3-component vector of float)

+0:42          'v3' (3-component vector of float)

+0:42          2.000000

+0:43      Test condition and select (void)

+0:43        Condition

+0:47        logical-or (bool)

+0:46          logical-or (bool)

+0:45            logical-or (bool)

+0:44              logical-or (bool)

+0:43                logical-or (bool)

+0:43                  Compare Less Than (bool)

+0:43                    'f' (float)

+0:43                    Convert int to float (float)

+0:43                      'a' (int)

+0:44                  Compare Less Than or Equal (bool)

+0:44                    Convert int to float (float)

+0:44                      'a' (int)

+0:44                    'f' (float)

+0:45                Compare Greater Than (bool)

+0:45                  'f' (float)

+0:45                  Convert int to float (float)

+0:45                    'a' (int)

+0:46              Compare Greater Than or Equal (bool)

+0:46                'f' (float)

+0:46                Convert int to float (float)

+0:46                  'a' (int)

+0:47            Compare Equal (bool)

+0:47              Convert int to float (float)

+0:47                'a' (int)

+0:47              'f' (float)

+0:48          Compare Not Equal (bool)

+0:48            'f' (float)

+0:48            Convert int to float (float)

+0:48              'a' (int)

+0:43        true case is null

+0:49      move second child to first child (float)

+0:49        'f' (float)

+0:49        Test condition and select (float)

+0:49          Condition

+0:49          'b' (bool)

+0:49          true case

+0:49          Convert int to float (float)

+0:49            'a' (int)

+0:49          false case

+0:49          'f' (float)

+0:50      move second child to first child (float)

+0:50        'f' (float)

+0:50        Test condition and select (float)

+0:50          Condition

+0:50          'b' (bool)

+0:50          true case

+0:50          'f' (float)

+0:50          false case

+0:50          Convert int to float (float)

+0:50            'a' (int)

+0:51      move second child to first child (float)

+0:51        'f' (float)

+0:51        Convert int to float (float)

+0:51          Test condition and select (int)

+0:51            Condition

+0:51            'b' (bool)

+0:51            true case

+0:51            'a' (int)

+0:51            false case

+0:51            'a' (int)

+0:52      Sequence

+0:52        move second child to first child (structure)

+0:52          'news' (structure)

+0:52          'sv' (structure)

+0:54      vector swizzle (2-component vector of float)

+0:54        'i' (smooth in 4-component vector of float)

+0:54        Sequence

+0:54          0 (const int)

+0:54          1 (const int)

+0:55      'm' (uniform 4X2 matrix of float)

+0:56      'm' (uniform 4X2 matrix of float)

+0:58      'f' (float)

+0:59      move second child to first child (float)

+0:59        'f' (float)

+0:59        Convert int to float (float)

+0:59          'a' (int)

+0:60      'f' (float)

+0:61      'b' (bool)

+0:62      move second child to first child (bool)

+0:62        'b' (bool)

+0:62        'b' (bool)

+0:63      'f' (float)

+0:65      move second child to first child (4-component vector of float)

+0:65        'gl_FragColor' (fragColor 4-component vector of float)

+0:65        Function Call: texture2D(s21;vf2; (4-component vector of float)

+0:65          's2D' (uniform sampler2D)

+0:65          'centTexCoord' (centroid smooth in 2-component vector of float)

+0:?       Sequence

+0:79        'gl_FragColor' (fragColor 4-component vector of float)

+0:82      direct index (float)

+0:82        'gl_FragColor' (fragColor 4-component vector of float)

+0:82        0 (const int)

+0:83      direct index (float)

+0:83        'centTexCoord' (centroid smooth in 2-component vector of float)

+0:83        0 (const int)

+0:84      move second child to first child (bool)

+0:84        Comma (bool)

+0:84          'a' (int)

+0:84          'b' (bool)

+0:84        true (const bool)

+0:90  Function Definition: main( (int)

+0:90    Function Parameters: 

+0:91  Function Definition: main(i1; (void)

+0:91    Function Parameters: 

+0:91      'a' (in int)

+0:96  Function Definition: foo(f1; (int)

+0:96    Function Parameters: 

+0:96      'a' (out float)

+0:98    Sequence

+0:98      Branch: Return with expression

+0:98        3.200000

+0:99      Function Call: foo(f1; (int)

+0:99        'a' (out float)

+0:?   Linker Objects

+0:?     'i' (smooth in 4-component vector of float)

+0:?     'o' (out 4-component vector of float)

+0:?     's2D' (uniform sampler2D)

+0:?     'centTexCoord' (centroid smooth in 2-component vector of float)

+0:?     'm' (uniform 4X2 matrix of float)

+

diff --git a/Test/baseResults/120.vert.out b/Test/baseResults/120.vert.out
new file mode 100644
index 0000000..adabd12
--- /dev/null
+++ b/Test/baseResults/120.vert.out
@@ -0,0 +1,81 @@
+ERROR: 0:3: 'in for stage inputs' : not supported for this version or the enabled extensions 

+ERROR: 0:4: 'out for stage outputs' : not supported for this version or the enabled extensions 

+ERROR: 0:11: 'gl_Position' : cannot add storage, auxiliary, memory, interpolation, or precision qualifier to an existing variable 

+ERROR: 0:12: '' : can only have one auxiliary qualifier (centroid, patch, and sample) 

+ERROR: 0:12: '' : replicated qualifiers 

+ERROR: 0:12: 'foo' : identifier not previously declared 

+ERROR: 0:25: 'length' :  array must be declared with a size before using this method

+ERROR: 0:28: 'length' : incomplete method syntax 

+ERROR: 0:29: 'length' : method does not accept any arguments 

+ERROR: 0:30: 'flizbit' : only the length method is supported for array 

+ERROR: 0:30: '=' :  cannot convert from '7-element array of float' to 'int'

+ERROR: 0:31: 'flizbit' : only the length method is supported for array 

+ERROR: 0:31: 'f' : no matching overloaded function found 

+ERROR: 0:31: 'a4' : redefinition 

+ERROR: 0:32: 'arrays of arrays' : not supported with this profile: none

+ERROR: 0:33: 'arrays of arrays' : not supported with this profile: none

+ERROR: 0:34: 'arrays of arrays' : not supported with this profile: none

+ERROR: 0:35: 'arrays of arrays' : not supported with this profile: none

+ERROR: 0:36: 'arrays of arrays' : not supported with this profile: none

+ERROR: 0:37: 'arrays of arrays' : not supported with this profile: none

+ERROR: 0:37: 'constructor' : array constructor needs one argument per array element 

+ERROR: 0:37: 'arrays of arrays' : not supported with this profile: none

+ERROR: 0:38: 'arrays of arrays' : not supported with this profile: none

+ERROR: 0:38: 'constructor' : array constructor needs one argument per array element 

+ERROR: 0:38: 'arrays of arrays' : not supported with this profile: none

+ERROR: 0:43: 'uniform' :  cannot initialize this type of qualifier  

+ERROR: 0:47: 'arrays of arrays' : not supported with this profile: none

+ERROR: 0:48: 'arrays of arrays' : not supported with this profile: none

+ERROR: 0:49: 'arrays of arrays' : not supported with this profile: none

+ERROR: 0:50: 'arrays of arrays' : not supported with this profile: none

+ERROR: 30 compilation errors.  No code generated.

+

+ERROR: node is still EOpNull!

+0:15  Function Definition: main( (void)

+0:15    Function Parameters: 

+0:17    Sequence

+0:17      move second child to first child (2-component vector of float)

+0:17        'centTexCoord' (invariant smooth out 2-component vector of float)

+0:17        'attv2' (in 2-component vector of float)

+0:18      move second child to first child (4-component vector of float)

+0:18        'gl_Position' (invariant gl_Position 4-component vector of float)

+0:18        'attv4' (in 4-component vector of float)

+0:22      move second child to first child (4-component vector of float)

+0:22        'gl_Position' (invariant gl_Position 4-component vector of float)

+0:22        direct index (4-component vector of float)

+0:22          'b' (12-element array of 4-component vector of float)

+0:22          11 (const int)

+0:25      Sequence

+0:25        move second child to first child (int)

+0:25          'a1' (int)

+0:25          1 (const int)

+0:27      Sequence

+0:27        move second child to first child (int)

+0:27          'aa' (int)

+0:27          7 (const int)

+0:28      Sequence

+0:28        move second child to first child (int)

+0:28          'a2' (int)

+0:29      Sequence

+0:29        move second child to first child (int)

+0:29          'a3' (int)

+0:29          12 (const int)

+0:37      Sequence

+0:37        move second child to first child (2-element array of float)

+0:37          'md9' (2-element array of float)

+0:37          Construct float (const 2-element array of float)

+0:38      Sequence

+0:38        move second child to first child (2-element array of float)

+0:38          'md11' (2-element array of float)

+0:38          Construct float (const 2-element array of float)

+0:40      move second child to first child (float)

+0:40        'gl_PointSize' (invariant gl_PointSize float)

+0:40        3.800000

+0:?   Linker Objects

+0:?     'i' (in 4-component vector of float)

+0:?     'o' (smooth out 4-component vector of float)

+0:?     'attv2' (in 2-component vector of float)

+0:?     'attv4' (in 4-component vector of float)

+0:?     's2D' (uniform sampler2D)

+0:?     'centTexCoord' (invariant smooth out 2-component vector of float)

+

diff --git a/Test/baseResults/130.frag.out b/Test/baseResults/130.frag.out
new file mode 100644
index 0000000..38fa1aa
--- /dev/null
+++ b/Test/baseResults/130.frag.out
@@ -0,0 +1,10 @@
+0:? Sequence

+0:16  Function Definition: main( (void)

+0:16    Function Parameters: 

+0:?   Linker Objects

+0:?     'i' (smooth in 4-component vector of float)

+0:?     'o' (out 4-component vector of float)

+0:?     'fflat' (flat in float)

+0:?     'fsmooth' (smooth in float)

+0:?     'fnop' (noperspective in float)

+

diff --git a/Test/baseResults/140.frag.out b/Test/baseResults/140.frag.out
new file mode 100644
index 0000000..15a238e
--- /dev/null
+++ b/Test/baseResults/140.frag.out
@@ -0,0 +1,12 @@
+WARNING: 0:3: varying deprecated in version 130; may be removed in future release

+ERROR: 0:14: '#error' : GL_ES is not set  

+ERROR: 1 compilation errors.  No code generated.

+

+ERROR: node is still EOpNull!

+0:8  Function Definition: main( (void)

+0:8    Function Parameters: 

+0:?   Linker Objects

+0:?     'v' (smooth in 4-component vector of float)

+0:?     'i' (smooth in 4-component vector of float)

+0:?     'o' (out 4-component vector of float)

+

diff --git a/Test/baseResults/300.frag.out b/Test/baseResults/300.frag.out
new file mode 100644
index 0000000..9fc969b
--- /dev/null
+++ b/Test/baseResults/300.frag.out
@@ -0,0 +1,231 @@
+ERROR: 0:30: 'noperspective' : Reserved word. 

+ERROR: 0:30: 'noperspective' : not supported with this profile: es

+ERROR: 0:31: 'sampler/image' : samplers and images must be uniform 

+ERROR: 0:32: 'uint' : cannot apply precision statement to this type; use 'float', 'int' or a sampler type 

+ERROR: 0:39: 'structure' : samplers and images must be uniform (structure cannot contain a sampler or image)

+ERROR: 0:69: 'variable indexing sampler array' : not supported with this profile: es

+ERROR: 0:83: 'double' : Reserved word. 

+ERROR: 0:83: 'double' : not supported with this profile: es

+ERROR: 0:84: 'dvec2' : Reserved word. 

+ERROR: 0:84: 'double vector' : not supported with this profile: es

+ERROR: 0:85: 'dvec3' : Reserved word. 

+ERROR: 0:85: 'double vector' : not supported with this profile: es

+ERROR: 0:86: 'dvec4' : Reserved word. 

+ERROR: 0:86: 'double vector' : not supported with this profile: es

+ERROR: 0:101: 'arrays of arrays' : not supported with this profile: es

+ERROR: 0:102: 'arrays of arrays' : not supported with this profile: es

+ERROR: 0:102: 'arrays of arrays' : not supported with this profile: es

+ERROR: 0:103: 'arrays of arrays' : not supported with this profile: es

+ERROR: 0:100: 'arrays of arrays' : not supported with this profile: es

+ERROR: 0:106: 'imageBuffer' : Reserved word. 

+ERROR: 0:106: '' :  syntax error

+ERROR: 21 compilation errors.  No code generated.

+

+ERROR: node is still EOpNull!

+0:53  Function Definition: main( (void)

+0:53    Function Parameters: 

+0:?     Sequence

+0:57      move second child to first child (lowp 4-component vector of float)

+0:57        'v' (lowp 4-component vector of float)

+0:57        Function Call: texture(s21;vf2; (lowp 4-component vector of float)

+0:57          's2D' (uniform lowp sampler2D)

+0:57          'c2D' (smooth in lowp 2-component vector of float)

+0:58      move second child to first child (lowp 4-component vector of float)

+0:58        'v' (lowp 4-component vector of float)

+0:58        Function Call: textureProj(s31;vf4; (lowp 4-component vector of float)

+0:58          's3D' (uniform lowp sampler3D)

+0:58          'c4D' (smooth lowp 4-component vector of float)

+0:59      move second child to first child (lowp 4-component vector of float)

+0:59        'v' (lowp 4-component vector of float)

+0:59        Function Call: textureLod(sA21;vf3;f1; (lowp 4-component vector of float)

+0:59          's2DArray' (uniform lowp sampler2DArray)

+0:59          'c3D' (smooth in lowp 3-component vector of float)

+0:59          1.200000

+0:60      move second child to first child (lowp float)

+0:60        'f' (lowp float)

+0:60        Function Call: textureOffset(sS21;vf3;vi2;f1; (lowp float)

+0:60          's2DShadow' (uniform lowp sampler2DShadow)

+0:60          'c3D' (smooth in lowp 3-component vector of float)

+0:60          'ic2D' (flat in mediump 2-component vector of int)

+0:60          'c1D' (smooth in lowp float)

+0:61      move second child to first child (lowp 4-component vector of float)

+0:61        'v' (lowp 4-component vector of float)

+0:61        Function Call: texelFetch(s31;vi3;i1; (lowp 4-component vector of float)

+0:61          's3D' (uniform lowp sampler3D)

+0:61          'ic3D' (flat in mediump 3-component vector of int)

+0:61          'ic1D' (flat in mediump int)

+0:62      move second child to first child (lowp 4-component vector of float)

+0:62        'v' (lowp 4-component vector of float)

+0:62        Function Call: texelFetchOffset(s21;vi2;i1;vi2; (lowp 4-component vector of float)

+0:62          direct index (uniform lowp sampler2D)

+0:62            'arrayedSampler' (uniform 5-element array of lowp sampler2D)

+0:62            2 (const int)

+0:62          'ic2D' (flat in mediump 2-component vector of int)

+0:62          4 (const int)

+0:62          'ic2D' (flat in mediump 2-component vector of int)

+0:63      move second child to first child (lowp float)

+0:63        'f' (lowp float)

+0:63        Function Call: textureLodOffset(sS21;vf3;f1;vi2; (lowp float)

+0:63          's2DShadow' (uniform lowp sampler2DShadow)

+0:63          'c3D' (smooth in lowp 3-component vector of float)

+0:63          'c1D' (smooth in lowp float)

+0:63          'ic2D' (flat in mediump 2-component vector of int)

+0:64      move second child to first child (lowp 4-component vector of float)

+0:64        'v' (lowp 4-component vector of float)

+0:64        Function Call: textureProjLodOffset(s21;vf3;f1;vi2; (lowp 4-component vector of float)

+0:64          's2D' (uniform lowp sampler2D)

+0:64          'c3D' (smooth in lowp 3-component vector of float)

+0:64          'c1D' (smooth in lowp float)

+0:64          'ic2D' (flat in mediump 2-component vector of int)

+0:65      move second child to first child (lowp 4-component vector of float)

+0:65        'v' (lowp 4-component vector of float)

+0:65        Function Call: textureGrad(sC1;vf3;vf3;vf3; (lowp 4-component vector of float)

+0:65          'sCube' (uniform lowp samplerCube)

+0:65          'c3D' (smooth in lowp 3-component vector of float)

+0:65          'c3D' (smooth in lowp 3-component vector of float)

+0:65          'c3D' (smooth in lowp 3-component vector of float)

+0:66      move second child to first child (lowp float)

+0:66        'f' (lowp float)

+0:66        Function Call: textureGradOffset(sAS21;vf4;vf2;vf2;vi2; (lowp float)

+0:66          's2DArrayShadow' (uniform lowp sampler2DArrayShadow)

+0:66          'c4D' (smooth lowp 4-component vector of float)

+0:66          'c2D' (smooth in lowp 2-component vector of float)

+0:66          'c2D' (smooth in lowp 2-component vector of float)

+0:66          'ic2D' (flat in mediump 2-component vector of int)

+0:67      move second child to first child (lowp 4-component vector of float)

+0:67        'v' (lowp 4-component vector of float)

+0:67        Function Call: textureProjGrad(s31;vf4;vf3;vf3; (lowp 4-component vector of float)

+0:67          's3D' (uniform lowp sampler3D)

+0:67          'c4D' (smooth lowp 4-component vector of float)

+0:67          'c3D' (smooth in lowp 3-component vector of float)

+0:67          'c3D' (smooth in lowp 3-component vector of float)

+0:68      move second child to first child (lowp 4-component vector of float)

+0:68        'v' (lowp 4-component vector of float)

+0:68        Function Call: textureProjGradOffset(s21;vf3;vf2;vf2;vi2; (lowp 4-component vector of float)

+0:68          's2D' (uniform lowp sampler2D)

+0:68          'c3D' (smooth in lowp 3-component vector of float)

+0:68          'c2D' (smooth in lowp 2-component vector of float)

+0:68          'c2D' (smooth in lowp 2-component vector of float)

+0:68          'ic2D' (flat in mediump 2-component vector of int)

+0:69      move second child to first child (lowp 4-component vector of float)

+0:69        'v' (lowp 4-component vector of float)

+0:69        Function Call: texture(s21;vf2; (lowp 4-component vector of float)

+0:69          indirect index (uniform lowp sampler2D)

+0:69            'arrayedSampler' (uniform 5-element array of lowp sampler2D)

+0:69            'ic1D' (flat in mediump int)

+0:69          'c2D' (smooth in lowp 2-component vector of float)

+0:72      move second child to first child (mediump 4-component vector of int)

+0:72        'iv' (mediump 4-component vector of int)

+0:72        Function Call: texture(is21;vf2; (mediump 4-component vector of int)

+0:72          'is2D' (uniform lowp isampler2D)

+0:72          'c2D' (smooth in lowp 2-component vector of float)

+0:73      move second child to first child (mediump 4-component vector of int)

+0:73        'iv' (mediump 4-component vector of int)

+0:73        Function Call: textureProjOffset(is21;vf4;vi2; (mediump 4-component vector of int)

+0:73          'is2D' (uniform lowp isampler2D)

+0:73          'c4D' (smooth lowp 4-component vector of float)

+0:73          'ic2D' (flat in mediump 2-component vector of int)

+0:74      move second child to first child (mediump 4-component vector of int)

+0:74        'iv' (mediump 4-component vector of int)

+0:74        Function Call: textureProjLod(is21;vf3;f1; (mediump 4-component vector of int)

+0:74          'is2D' (uniform lowp isampler2D)

+0:74          'c3D' (smooth in lowp 3-component vector of float)

+0:74          'c1D' (smooth in lowp float)

+0:75      move second child to first child (mediump 4-component vector of int)

+0:75        'iv' (mediump 4-component vector of int)

+0:75        Function Call: textureProjGrad(is21;vf3;vf2;vf2; (mediump 4-component vector of int)

+0:75          'is2D' (uniform lowp isampler2D)

+0:75          'c3D' (smooth in lowp 3-component vector of float)

+0:75          'c2D' (smooth in lowp 2-component vector of float)

+0:75          'c2D' (smooth in lowp 2-component vector of float)

+0:76      move second child to first child (mediump 4-component vector of int)

+0:76        'iv' (mediump 4-component vector of int)

+0:76        Function Call: texture(is31;vf3;f1; (mediump 4-component vector of int)

+0:76          'is3D' (uniform lowp isampler3D)

+0:76          'c3D' (smooth in lowp 3-component vector of float)

+0:76          4.200000

+0:77      move second child to first child (mediump 4-component vector of int)

+0:77        'iv' (mediump 4-component vector of int)

+0:77        Function Call: textureLod(isC1;vf3;f1; (mediump 4-component vector of int)

+0:77          'isCube' (uniform lowp isamplerCube)

+0:77          'c3D' (smooth in lowp 3-component vector of float)

+0:77          'c1D' (smooth in lowp float)

+0:78      move second child to first child (mediump 4-component vector of int)

+0:78        'iv' (mediump 4-component vector of int)

+0:78        Function Call: texelFetch(isA21;vi3;i1; (mediump 4-component vector of int)

+0:78          'is2DArray' (uniform lowp isampler2DArray)

+0:78          'ic3D' (flat in mediump 3-component vector of int)

+0:78          'ic1D' (flat in mediump int)

+0:80      move second child to first child (highp 2-component vector of int)

+0:80        vector swizzle (mediump 2-component vector of int)

+0:80          'iv' (mediump 4-component vector of int)

+0:80          Sequence

+0:80            0 (const int)

+0:80            1 (const int)

+0:80        Function Call: textureSize(sSC1;i1; (highp 2-component vector of int)

+0:80          'sCubeShadow' (uniform lowp samplerCubeShadow)

+0:80          2 (const int)

+0:88      add second child into first child (highp float)

+0:88        'f' (lowp float)

+0:88        direct index (highp float)

+0:88          'gl_FragCoord' (gl_FragCoord highp 4-component vector of float)

+0:88          1 (const int)

+0:89      move second child to first child (highp float)

+0:89        'gl_FragDepth' (gl_FragDepth highp float)

+0:89        'f' (lowp float)

+0:91      move second child to first child (lowp 3-component vector of float)

+0:91        'sc' (out lowp 3-component vector of float)

+0:91        c: direct index for structure (lowp 3-component vector of float)

+0:91          's2' (smooth in structure)

+0:91          0 (const int)

+0:92      move second child to first child (lowp float)

+0:92        'sf' (out lowp float)

+0:92        f: direct index for structure (lowp float)

+0:92          's2' (smooth in structure)

+0:92          1 (const int)

+0:94      add (lowp 2-component vector of float)

+0:94        hyp. sine (lowp float)

+0:94          'c1D' (smooth in lowp float)

+0:95        vector-scale (lowp 2-component vector of float)

+0:95          hyp. cosine (lowp float)

+0:95            'c1D' (smooth in lowp float)

+0:95          hyp. tangent (lowp 2-component vector of float)

+0:95            'c2D' (smooth in lowp 2-component vector of float)

+0:96      add (lowp 4-component vector of float)

+0:96        arc hyp. sine (lowp 4-component vector of float)

+0:96          'c4D' (smooth lowp 4-component vector of float)

+0:96        arc hyp. cosine (lowp 4-component vector of float)

+0:96          'c4D' (smooth lowp 4-component vector of float)

+0:97      arc hyp. tangent (lowp 3-component vector of float)

+0:97        'c3D' (smooth in lowp 3-component vector of float)

+0:?   Linker Objects

+0:?     's2D' (uniform lowp sampler2D)

+0:?     's3D' (uniform lowp sampler3D)

+0:?     'sCube' (uniform lowp samplerCube)

+0:?     'sCubeShadow' (uniform lowp samplerCubeShadow)

+0:?     's2DShadow' (uniform lowp sampler2DShadow)

+0:?     's2DArray' (uniform lowp sampler2DArray)

+0:?     's2DArrayShadow' (uniform lowp sampler2DArrayShadow)

+0:?     'is2D' (uniform lowp isampler2D)

+0:?     'is3D' (uniform lowp isampler3D)

+0:?     'isCube' (uniform lowp isamplerCube)

+0:?     'is2DArray' (uniform lowp isampler2DArray)

+0:?     'us2D' (uniform lowp usampler2D)

+0:?     'us3D' (uniform lowp usampler3D)

+0:?     'usCube' (uniform lowp usamplerCube)

+0:?     'us2DArray' (uniform lowp usampler2DArray)

+0:?     'c1D' (smooth in lowp float)

+0:?     'c2D' (smooth in lowp 2-component vector of float)

+0:?     'c3D' (smooth in lowp 3-component vector of float)

+0:?     'ic1D' (flat in mediump int)

+0:?     'ic2D' (flat in mediump 2-component vector of int)

+0:?     'ic3D' (flat in mediump 3-component vector of int)

+0:?     'ic4D' (flat in mediump 4-component vector of int)

+0:?     'badv' (noperspective in lowp 4-component vector of float)

+0:?     'bads' (smooth in lowp sampler2D)

+0:?     'badout' (out structure)

+0:?     's2' (smooth in structure)

+0:?     'sc' (out lowp 3-component vector of float)

+0:?     'sf' (out lowp float)

+0:?     'multiInst' (layout(shared ) uniform 2-element array of block)

+

diff --git a/Test/baseResults/300.vert.out b/Test/baseResults/300.vert.out
new file mode 100644
index 0000000..7f75c65
--- /dev/null
+++ b/Test/baseResults/300.vert.out
@@ -0,0 +1,140 @@
+ERROR: 0:8: 'varying' : Reserved word. 

+ERROR: 0:8: 'varying' : no longer supported in es profile; removed in version 300

+ERROR: 0:9: 'vertex input arrays' : not supported with this profile: es

+ERROR: 0:10: '' : precision qualifier must appear as last qualifier 

+ERROR: 0:11: '' : invariant qualifier must appear first 

+ERROR: 0:12: '' : Auxiliary qualifiers (centroid, patch, and sample) must appear before storage and precision qualifiers 

+ERROR: 0:12: '' : vertex input cannot be further qualified 

+ERROR: 0:13: '' : interpolation qualifiers must appear before storage and precision qualifiers 

+ERROR: 0:14: '' : in/out must appear before const 

+ERROR: 0:15: '' : precision qualifier must appear as last qualifier 

+ERROR: 0:16: '' : can only have one interpolation qualifier (flat, smooth, noperspective) 

+ERROR: 0:17: 'sample' : Reserved word. 

+ERROR: 0:17: '' : can only have one auxiliary qualifier (centroid, patch, and sample) 

+ERROR: 0:18: 'uniform' : too many storage qualifiers 

+ERROR: 0:56: '#error' : GL_ES is set  

+ERROR: 0:62: '' : array size required 

+ERROR: 0:63: '' : array size required 

+ERROR: 0:65: '' : array size required 

+ERROR: 0:64: '' : array size required 

+ERROR: 0:67: '' : array size required 

+ERROR: 20 compilation errors.  No code generated.

+

+ERROR: node is still EOpNull!

+0:27  Function Definition: main( (void)

+0:27    Function Parameters: 

+0:29    Sequence

+0:29      Sequence

+0:29        move second child to first child (highp int)

+0:29          'id' (highp int)

+0:29          add (highp int)

+0:29            'gl_VertexID' (gl_VertexId highp int)

+0:29            'gl_InstanceID' (gl_InstanceId highp int)

+0:31      Sequence

+0:31        move second child to first child (highp int)

+0:31          'c0' (highp int)

+0:31          64 (const int)

+0:32      Sequence

+0:32        move second child to first child (highp int)

+0:32          'c1' (highp int)

+0:32          128 (const int)

+0:33      Sequence

+0:33        move second child to first child (highp int)

+0:33          'c2' (highp int)

+0:33          16 (const int)

+0:34      Sequence

+0:34        move second child to first child (highp int)

+0:34          'c3' (highp int)

+0:34          15 (const int)

+0:35      Sequence

+0:35        move second child to first child (highp int)

+0:35          'c4' (highp int)

+0:35          32 (const int)

+0:36      Sequence

+0:36        move second child to first child (highp int)

+0:36          'c5' (highp int)

+0:36          32 (const int)

+0:37      Sequence

+0:37        move second child to first child (highp int)

+0:37          'c6' (highp int)

+0:37          32 (const int)

+0:38      Sequence

+0:38        move second child to first child (highp int)

+0:38          'c7' (highp int)

+0:38          16 (const int)

+0:39      Sequence

+0:39        move second child to first child (highp int)

+0:39          'c8' (highp int)

+0:39          32 (const int)

+0:40      Sequence

+0:40        move second child to first child (highp int)

+0:40          'c9' (highp int)

+0:40          -8 (const int)

+0:41      Sequence

+0:41        move second child to first child (highp int)

+0:41          'c10' (highp int)

+0:41          7 (const int)

+0:43      Sequence

+0:43        move second child to first child (highp 3X4 matrix of float)

+0:43          'tm' (highp 3X4 matrix of float)

+0:43          transpose (highp 3X4 matrix of float)

+0:43            'm43' (uniform highp 4X3 matrix of float)

+0:44      Sequence

+0:44        move second child to first child (highp float)

+0:44          'dm' (highp float)

+0:44          determinant (highp float)

+0:44            'm44' (uniform highp 4X4 matrix of float)

+0:45      Sequence

+0:45        move second child to first child (highp 3X3 matrix of float)

+0:45          'im' (highp 3X3 matrix of float)

+0:45          inverse (highp 3X3 matrix of float)

+0:45            'm33' (uniform highp 3X3 matrix of float)

+0:47      Sequence

+0:47        move second child to first child (highp 3X2 matrix of float)

+0:47          'op' (highp 3X2 matrix of float)

+0:47          outer product (highp 3X2 matrix of float)

+0:47            'v2' (smooth out highp 2-component vector of float)

+0:47            'v3' (in highp 3-component vector of float)

+0:49      move second child to first child (highp 4-component vector of float)

+0:49        'gl_Position' (gl_Position highp 4-component vector of float)

+0:49        direct index (uniform highp 4-component vector of float)

+0:49          'm44' (uniform highp 4X4 matrix of float)

+0:49          2 (const int)

+0:50      move second child to first child (highp float)

+0:50        'gl_PointSize' (gl_PointSize highp float)

+0:50        direct index (highp float)

+0:50          'v2' (smooth out highp 2-component vector of float)

+0:50          1 (const int)

+0:52      move second child to first child (highp 3-component vector of float)

+0:52        c: direct index for structure (highp 3-component vector of float)

+0:52          's' (smooth out structure)

+0:52          0 (const int)

+0:52        'v3' (in highp 3-component vector of float)

+0:53      move second child to first child (highp float)

+0:53        f: direct index for structure (highp float)

+0:53          's' (smooth out structure)

+0:53          1 (const int)

+0:53        'dm' (highp float)

+0:68  Sequence

+0:68    move second child to first child (2-element array of highp float)

+0:68      'okayA' (2-element array of highp float)

+0:68      3.000000

+0:68      4.000000

+0:?   Linker Objects

+0:?     'm43' (uniform highp 4X3 matrix of float)

+0:?     'm33' (uniform highp 3X3 matrix of float)

+0:?     'm44' (uniform highp 4X4 matrix of float)

+0:?     'v3' (in highp 3-component vector of float)

+0:?     'v2' (smooth out highp 2-component vector of float)

+0:?     'badorder' (in highp 4-component vector of float)

+0:?     'badorder2' (invariant smooth out highp 4-component vector of float)

+0:?     'badorder4' (centroid in highp 4-component vector of float)

+0:?     'badorder3' (flat out highp 4-component vector of float)

+0:?     'rep' (smooth flat out highp 4-component vector of float)

+0:?     'rep2' (centroid smooth sample out highp 4-component vector of float)

+0:?     'rep3' (in highp 4-component vector of float)

+0:?     's' (smooth out structure)

+0:?     'ubInst' (layout(shared ) uniform 1-element array of block)

+0:?     'gl_VertexID' (gl_VertexId highp int)

+0:?     'gl_InstanceID' (gl_InstanceId highp int)

+

diff --git a/Test/baseResults/300BuiltIns.frag.out b/Test/baseResults/300BuiltIns.frag.out
new file mode 100644
index 0000000..0fb1a81
--- /dev/null
+++ b/Test/baseResults/300BuiltIns.frag.out
@@ -0,0 +1,184 @@
+ERROR: 0:6: 'float' : type requires declaration of default precision qualifier 

+ERROR: 0:70: 'noise2' : no matching overloaded function found 

+ERROR: 2 compilation errors.  No code generated.

+

+ERROR: node is still EOpNull!

+0:26  Function Definition: main( (void)

+0:26    Function Parameters: 

+0:29    Sequence

+0:29      Sequence

+0:29        move second child to first child (mediump 3-component vector of float)

+0:29          'v' (mediump 3-component vector of float)

+0:29          mix (mediump 3-component vector of float)

+0:29            'x' (mediump 3-component vector of float)

+0:29            'y' (mediump 3-component vector of float)

+0:29            'bv' (3-component vector of bool)

+0:30      Sequence

+0:30        move second child to first child (mediump 4-component vector of int)

+0:30          'iv10' (mediump 4-component vector of int)

+0:30          Absolute value (mediump 4-component vector of int)

+0:30            'iv4a' (mediump 4-component vector of int)

+0:31      Sequence

+0:31        move second child to first child (mediump 4-component vector of int)

+0:31          'iv11' (mediump 4-component vector of int)

+0:31          Sign (mediump 4-component vector of int)

+0:31            'iv4a' (mediump 4-component vector of int)

+0:32      Sequence

+0:32        move second child to first child (mediump 4-component vector of int)

+0:32          'iv12' (mediump 4-component vector of int)

+0:32          min (mediump 4-component vector of int)

+0:32            'iv4a' (mediump 4-component vector of int)

+0:32            'iv4b' (mediump 4-component vector of int)

+0:33      Sequence

+0:33        move second child to first child (mediump 4-component vector of int)

+0:33          'iv13' (mediump 4-component vector of int)

+0:33          min (mediump 4-component vector of int)

+0:33            'iv4a' (mediump 4-component vector of int)

+0:33            'imin' (mediump int)

+0:34      Sequence

+0:34        move second child to first child (mediump 2-component vector of uint)

+0:34          'u' (mediump 2-component vector of uint)

+0:34          min (mediump 2-component vector of uint)

+0:34            'uv2x' (mediump 2-component vector of uint)

+0:34            'uv2y' (mediump 2-component vector of uint)

+0:35      Sequence

+0:35        move second child to first child (mediump 4-component vector of uint)

+0:35          'uv' (mediump 4-component vector of uint)

+0:35          min (mediump 4-component vector of uint)

+0:35            'uv4y' (mediump 4-component vector of uint)

+0:35            'uy' (mediump uint)

+0:36      Sequence

+0:36        move second child to first child (mediump 3-component vector of int)

+0:36          'iv14' (mediump 3-component vector of int)

+0:36          max (mediump 3-component vector of int)

+0:36            'iv3a' (mediump 3-component vector of int)

+0:36            'iv3b' (mediump 3-component vector of int)

+0:37      Sequence

+0:37        move second child to first child (mediump 4-component vector of int)

+0:37          'iv15' (mediump 4-component vector of int)

+0:37          max (mediump 4-component vector of int)

+0:37            'iv4a' (mediump 4-component vector of int)

+0:37            'imax' (mediump int)

+0:38      Sequence

+0:38        move second child to first child (mediump 2-component vector of uint)

+0:38          'u10' (mediump 2-component vector of uint)

+0:38          max (mediump 2-component vector of uint)

+0:38            'uv2x' (mediump 2-component vector of uint)

+0:38            'uv2y' (mediump 2-component vector of uint)

+0:39      Sequence

+0:39        move second child to first child (mediump 2-component vector of uint)

+0:39          'u11' (mediump 2-component vector of uint)

+0:39          max (mediump 2-component vector of uint)

+0:39            'uv2x' (mediump 2-component vector of uint)

+0:39            'uy' (mediump uint)

+0:40      Sequence

+0:40        move second child to first child (mediump 4-component vector of int)

+0:40          'iv16' (mediump 4-component vector of int)

+0:40          clamp (mediump 4-component vector of int)

+0:40            'iv4a' (mediump 4-component vector of int)

+0:40            'iv4a' (mediump 4-component vector of int)

+0:40            'iv4b' (mediump 4-component vector of int)

+0:41      Sequence

+0:41        move second child to first child (mediump 4-component vector of int)

+0:41          'iv17' (mediump 4-component vector of int)

+0:41          clamp (mediump 4-component vector of int)

+0:41            'iv4a' (mediump 4-component vector of int)

+0:41            'imin' (mediump int)

+0:41            'imax' (mediump int)

+0:42      Sequence

+0:42        move second child to first child (mediump 2-component vector of uint)

+0:42          'u12' (mediump 2-component vector of uint)

+0:42          clamp (mediump 2-component vector of uint)

+0:42            'uv2x' (mediump 2-component vector of uint)

+0:42            'uv2y' (mediump 2-component vector of uint)

+0:42            'uv2c' (mediump 2-component vector of uint)

+0:43      Sequence

+0:43        move second child to first child (mediump 4-component vector of uint)

+0:43          'uv10' (mediump 4-component vector of uint)

+0:43          clamp (mediump 4-component vector of uint)

+0:43            'uv4y' (mediump 4-component vector of uint)

+0:43            'umin' (mediump uint)

+0:43            'umax' (mediump uint)

+0:47      Sequence

+0:47        move second child to first child (mediump 3-component vector of float)

+0:47          'v11' (mediump 3-component vector of float)

+0:47          modf (mediump 3-component vector of float)

+0:47            'x' (mediump 3-component vector of float)

+0:47            'modfOut' (mediump 3-component vector of float)

+0:49      Sequence

+0:49        move second child to first child (mediump float)

+0:49          't' (mediump float)

+0:49          trunc (mediump float)

+0:49            'f' (mediump float)

+0:50      Sequence

+0:50        move second child to first child (mediump 2-component vector of float)

+0:50          'v12' (mediump 2-component vector of float)

+0:50          round (mediump 2-component vector of float)

+0:50            'v2a' (mediump 2-component vector of float)

+0:51      Sequence

+0:51        move second child to first child (mediump 2-component vector of float)

+0:51          'v13' (mediump 2-component vector of float)

+0:51          roundEven (mediump 2-component vector of float)

+0:51            'v2a' (mediump 2-component vector of float)

+0:52      Sequence

+0:52        move second child to first child (2-component vector of bool)

+0:52          'b10' (2-component vector of bool)

+0:52          isnan (2-component vector of bool)

+0:52            'v2a' (mediump 2-component vector of float)

+0:53      Sequence

+0:53        move second child to first child (4-component vector of bool)

+0:53          'b11' (4-component vector of bool)

+0:53          isinf (4-component vector of bool)

+0:53            'v4' (mediump 4-component vector of float)

+0:56      Sequence

+0:56        move second child to first child (mediump int)

+0:56          'i' (mediump int)

+0:56          floatBitsToInt (mediump int)

+0:56            'f' (mediump float)

+0:57      Sequence

+0:57        move second child to first child (mediump 4-component vector of uint)

+0:57          'uv11' (mediump 4-component vector of uint)

+0:57          floatBitsToUint (mediump 4-component vector of uint)

+0:57            'v4' (mediump 4-component vector of float)

+0:58      Sequence

+0:58        move second child to first child (mediump 4-component vector of float)

+0:58          'v14' (mediump 4-component vector of float)

+0:58          intBitsToFloat (mediump 4-component vector of float)

+0:58            'iv4a' (mediump 4-component vector of int)

+0:59      Sequence

+0:59        move second child to first child (mediump 2-component vector of float)

+0:59          'v15' (mediump 2-component vector of float)

+0:59          uintBitsToFloat (mediump 2-component vector of float)

+0:59            'uv2c' (mediump 2-component vector of uint)

+0:62      Sequence

+0:62        move second child to first child (highp uint)

+0:62          'u19' (mediump uint)

+0:62          packSnorm2x16 (highp uint)

+0:62            'v2a' (mediump 2-component vector of float)

+0:63      Sequence

+0:63        move second child to first child (highp 2-component vector of float)

+0:63          'v20' (mediump 2-component vector of float)

+0:63          unpackSnorm2x16 (highp 2-component vector of float)

+0:63            'uy' (mediump uint)

+0:64      Sequence

+0:64        move second child to first child (highp uint)

+0:64          'u15' (mediump uint)

+0:64          packUnorm2x16 (highp uint)

+0:64            'v2a' (mediump 2-component vector of float)

+0:65      Sequence

+0:65        move second child to first child (highp 2-component vector of float)

+0:65          'v16' (mediump 2-component vector of float)

+0:65          unpackUnorm2x16 (highp 2-component vector of float)

+0:65            'uy' (mediump uint)

+0:66      Sequence

+0:66        move second child to first child (highp uint)

+0:66          'u17' (mediump uint)

+0:66          packHalf2x16 (highp uint)

+0:66            'v2b' (mediump 2-component vector of float)

+0:67      Sequence

+0:67        move second child to first child (mediump 2-component vector of float)

+0:67          'v18' (mediump 2-component vector of float)

+0:67          unpackHalf2x16 (mediump 2-component vector of float)

+0:67            'uy' (mediump uint)

+0:70      0.000000

+

diff --git a/Test/baseResults/300block.frag.out b/Test/baseResults/300block.frag.out
new file mode 100644
index 0000000..ec460b4
--- /dev/null
+++ b/Test/baseResults/300block.frag.out
@@ -0,0 +1,47 @@
+ERROR: 0:10: '' : cannot nest a structure definition inside a structure or block 

+ERROR: 0:21: '' : cannot nest a structure definition inside a structure or block 

+ERROR: 0:17: 'sampler' : member of block cannot be a sampler type 

+ERROR: 0:45: 'variable indexing block array' : not supported with this profile: es

+ERROR: 4 compilation errors.  No code generated.

+

+ERROR: node is still EOpNull!

+0:42  Function Definition: main( (void)

+0:42    Function Parameters: 

+0:44    Sequence

+0:44      Function Call: texture(is31;vf3; (mediump 4-component vector of int)

+0:44        sampler: direct index for structure (lowp isampler3D)

+0:44          's' (uniform structure)

+0:44          2 (const int)

+0:44        Construct vec3 (3-component vector of float)

+0:44          Convert int to float (float)

+0:44            ni: direct index for structure (layout(column_major shared ) mediump int)

+0:44              'inst' (layout(shared ) uniform block)

+0:44              1 (const int)

+0:44          Convert uint to float (float)

+0:44            direct index (mediump uint)

+0:44              bv: direct index for structure (layout(column_major shared ) mediump 4-component vector of uint)

+0:44                '__anon__0' (layout(shared ) uniform block)

+0:44                0 (const uint)

+0:44              1 (const int)

+0:44          Convert uint to float (float)

+0:44            direct index (mediump uint)

+0:44              nbv: direct index for structure (layout(column_major shared ) mediump 4-component vector of uint)

+0:44                direct index (layout(shared ) uniform block)

+0:44                  'insts' (layout(shared ) uniform 4-element array of block)

+0:44                  2 (const int)

+0:44                0 (const int)

+0:44              2 (const int)

+0:45      indirect index (layout(shared ) uniform block)

+0:45        'insts' (layout(shared ) uniform 4-element array of block)

+0:45        direct index (mediump uint)

+0:45          v: direct index for structure (mediump 4-component vector of uint)

+0:45            's' (uniform structure)

+0:45            1 (const int)

+0:45          0 (const int)

+0:?   Linker Objects

+0:?     's' (uniform structure)

+0:?     '__anon__0' (layout(shared ) uniform block)

+0:?     'inst' (layout(shared ) uniform block)

+0:?     'insts' (layout(shared ) uniform 4-element array of block)

+0:?     '__anon__1' (layout(shared ) uniform block)

+

diff --git a/Test/baseResults/300layout.frag.out b/Test/baseResults/300layout.frag.out
new file mode 100644
index 0000000..2610ad8
--- /dev/null
+++ b/Test/baseResults/300layout.frag.out
@@ -0,0 +1,24 @@
+ERROR: 0:4: 'color' : can only use location layout qualifier on a vertex input or fragment output 

+ERROR: 1 compilation errors.  No code generated.

+

+ERROR: node is still EOpNull!

+0:10  Function Definition: main( (void)

+0:10    Function Parameters: 

+0:12    Sequence

+0:12      move second child to first child (mediump 4-component vector of float)

+0:12        'c' (layout(location=1 ) out mediump 4-component vector of float)

+0:12        'color' (layout(location=2 ) smooth in mediump 4-component vector of float)

+0:13      move second child to first child (mediump 4-component vector of float)

+0:13        'p' (layout(location=3 ) out mediump 4-component vector of float)

+0:13        'pos' (smooth in mediump 4-component vector of float)

+0:14      move second child to first child (mediump 4-component vector of float)

+0:14        direct index (layout(location=4 ) out mediump 4-component vector of float)

+0:14          'q' (layout(location=4 ) out 2-element array of mediump 4-component vector of float)

+0:14          1 (const int)

+0:14        'pos' (smooth in mediump 4-component vector of float)

+0:?   Linker Objects

+0:?     'pos' (smooth in mediump 4-component vector of float)

+0:?     'color' (layout(location=2 ) smooth in mediump 4-component vector of float)

+0:?     'c' (layout(location=1 ) out mediump 4-component vector of float)

+0:?     'p' (layout(location=3 ) out mediump 4-component vector of float)

+

diff --git a/Test/baseResults/300layout.vert.out b/Test/baseResults/300layout.vert.out
new file mode 100644
index 0000000..241d003
--- /dev/null
+++ b/Test/baseResults/300layout.vert.out
@@ -0,0 +1,60 @@
+ERROR: 0:7: 'vertex input arrays' : not supported with this profile: es

+ERROR: 0:8: 'in' : cannot be a structure or array 

+ERROR: 0:8: 'vertex input arrays' : not supported with this profile: es

+ERROR: 0:12: 'badm4' : cannot specify matrix layout on a variable declaration 

+ERROR: 0:12: 'badm4' : cannot specify packing on a variable declaration 

+ERROR: 0:15: 'badf' : member of uniform block cannot have an auxiliary or interpolation qualifier 

+ERROR: 0:15: 'badg' : member storage qualifier cannot contradict block storage qualifier 

+ERROR: 0:28: 'T3' : nameless block contains a member that already has a name at global scope 

+ERROR: 0:35: 'badout' : only uniform interface blocks are supported 

+ERROR: 0:39: 'badout' : can only use location layout qualifier on a vertex input or fragment output 

+ERROR: 0:47: 'shared' : not supported with this profile: es

+ERROR: 0:47: 'shared' : not supported in this stage: vertex

+ERROR: 12 compilation errors.  No code generated.

+

+ERROR: node is still EOpNull!

+0:41  Function Definition: main( (void)

+0:41    Function Parameters: 

+0:43    Sequence

+0:43      move second child to first child (highp 4-component vector of float)

+0:43        'pos' (smooth out highp 4-component vector of float)

+0:43        vector-times-matrix (highp 4-component vector of float)

+0:43          'p' (layout(location=3 ) in highp 4-component vector of float)

+0:43          add (highp 4X4 matrix of float)

+0:43            add (highp 4X4 matrix of float)

+0:43              add (highp 4X4 matrix of float)

+0:43                add (highp 4X4 matrix of float)

+0:43                  M1: direct index for structure (layout(row_major std140 ) highp 4X4 matrix of float)

+0:43                    'tblock' (layout(std140 ) uniform block)

+0:43                    0 (const int)

+0:43                  M2: direct index for structure (layout(column_major std140 ) highp 4X4 matrix of float)

+0:43                    'tblock' (layout(std140 ) uniform block)

+0:43                    1 (const int)

+0:43                M4: direct index for structure (layout(row_major shared ) highp 4X4 matrix of float)

+0:43                  '__anon__1' (layout(shared ) uniform block)

+0:43                  1 (const uint)

+0:43              M3: direct index for structure (layout(column_major shared ) highp 4X4 matrix of float)

+0:43                '__anon__1' (layout(shared ) uniform block)

+0:43                0 (const uint)

+0:43            t2m: direct index for structure (layout(row_major shared ) highp 4X4 matrix of float)

+0:43              '__anon__0' (layout(shared ) uniform block)

+0:43              1 (const uint)

+0:44      move second child to first child (highp 3-component vector of float)

+0:44        'color' (smooth out highp 3-component vector of float)

+0:44        vector-times-matrix (highp 3-component vector of float)

+0:44          'c' (layout(location=7 ) in highp 3-component vector of float)

+0:44          N1: direct index for structure (layout(row_major std140 ) highp 3X3 matrix of float)

+0:44            'tblock' (layout(std140 ) uniform block)

+0:44            2 (const int)

+0:?   Linker Objects

+0:?     'c' (layout(location=7 ) in highp 3-component vector of float)

+0:?     'p' (layout(location=3 ) in highp 4-component vector of float)

+0:?     'pos' (smooth out highp 4-component vector of float)

+0:?     'color' (smooth out highp 3-component vector of float)

+0:?     'badm4' (layout(column_major shared ) uniform highp 4X4 matrix of float)

+0:?     'tblock' (layout(std140 ) uniform block)

+0:?     '__anon__0' (layout(shared ) uniform block)

+0:?     'badout' (layout(location=10 ) smooth out highp 4-component vector of float)

+0:?     'gl_VertexID' (gl_VertexId highp int)

+0:?     'gl_InstanceID' (gl_InstanceId highp int)

+

diff --git a/Test/baseResults/300operations.frag.out b/Test/baseResults/300operations.frag.out
new file mode 100644
index 0000000..effb530
--- /dev/null
+++ b/Test/baseResults/300operations.frag.out
@@ -0,0 +1,202 @@
+ERROR: 0:11: 'float' : type requires declaration of default precision qualifier 

+ERROR: 0:30: '+' :  wrong operand types: no operation '+' exists that takes a left-hand operand of type 'layout(shared ) uniform block' and a right operand of type 'layout(shared ) uniform block' (or there is no acceptable conversion)

+ERROR: 0:31: '+' :  wrong operand types: no operation '+' exists that takes a left-hand operand of type 'structure' and a right operand of type 'structure' (or there is no acceptable conversion)

+ERROR: 0:32: '+' :  wrong operand types: no operation '+' exists that takes a left-hand operand of type 'mediump int' and a right operand of type 'mediump float' (or there is no acceptable conversion)

+ERROR: 0:33: '+' :  wrong operand types: no operation '+' exists that takes a left-hand operand of type 'mediump uint' and a right operand of type 'mediump float' (or there is no acceptable conversion)

+ERROR: 0:34: '+' :  wrong operand types: no operation '+' exists that takes a left-hand operand of type 'mediump uint' and a right operand of type 'mediump int' (or there is no acceptable conversion)

+ERROR: 0:35: 'assign' :  cannot convert from 'mediump 4-component vector of int' to 'mediump 3-component vector of int'

+ERROR: 0:36: '/' :  wrong operand types: no operation '/' exists that takes a left-hand operand of type 'mediump 4-component vector of int' and a right operand of type 'mediump 4-component vector of uint' (or there is no acceptable conversion)

+ERROR: 0:37: '-' :  wrong operand types: no operation '-' exists that takes a left-hand operand of type 'mediump int' and a right operand of type 'mediump 3-component vector of float' (or there is no acceptable conversion)

+ERROR: 0:38: '+' :  wrong operand types: no operation '+' exists that takes a left-hand operand of type 'mediump 3-component vector of int' and a right operand of type 'mediump 3-component vector of uint' (or there is no acceptable conversion)

+ERROR: 0:39: '*' :  wrong operand types: no operation '*' exists that takes a left-hand operand of type '5-element array of mediump float' and a right operand of type '5-element array of mediump float' (or there is no acceptable conversion)

+ERROR: 0:40: '/' :  wrong operand types: no operation '/' exists that takes a left-hand operand of type 'bool' and a right operand of type 'bool' (or there is no acceptable conversion)

+ERROR: 0:42: '%' :  wrong operand types: no operation '%' exists that takes a left-hand operand of type 'mediump float' and a right operand of type 'mediump float' (or there is no acceptable conversion)

+ERROR: 0:43: '%' :  wrong operand types: no operation '%' exists that takes a left-hand operand of type 'mediump int' and a right operand of type 'mediump float' (or there is no acceptable conversion)

+ERROR: 0:44: '%' :  wrong operand types: no operation '%' exists that takes a left-hand operand of type 'mediump float' and a right operand of type 'mediump uint' (or there is no acceptable conversion)

+ERROR: 0:45: '++' :  l-value required "instanceName" (can't modify a uniform)

+ERROR: 0:45: '++' :  wrong operand type no operation '++' exists that takes an operand of type layout(shared ) uniform block (or there is no acceptable conversion)

+ERROR: 0:46: '++' :  wrong operand type no operation '++' exists that takes an operand of type structure (or there is no acceptable conversion)

+ERROR: 0:47: '--' :  wrong operand type no operation '--' exists that takes an operand of type 5-element array of mediump float (or there is no acceptable conversion)

+ERROR: 0:48: '++' :  wrong operand type no operation '++' exists that takes an operand of type 3-component vector of bool (or there is no acceptable conversion)

+ERROR: 0:50: '<' :  wrong operand types: no operation '<' exists that takes a left-hand operand of type 'mediump 3-component vector of int' and a right operand of type 'mediump 3-component vector of uint' (or there is no acceptable conversion)

+ERROR: 0:51: '>' :  wrong operand types: no operation '>' exists that takes a left-hand operand of type 'mediump 2X2 matrix of float' and a right operand of type 'mediump 2X2 matrix of float' (or there is no acceptable conversion)

+ERROR: 0:52: '!=' :  wrong operand types: no operation '!=' exists that takes a left-hand operand of type 'mediump 2X2 matrix of float' and a right operand of type 'mediump 4X4 matrix of float' (or there is no acceptable conversion)

+ERROR: 0:53: '>=' :  wrong operand types: no operation '>=' exists that takes a left-hand operand of type 'mediump int' and a right operand of type 'mediump uint' (or there is no acceptable conversion)

+ERROR: 0:54: '<=' :  wrong operand types: no operation '<=' exists that takes a left-hand operand of type '5-element array of mediump float' and a right operand of type '5-element array of mediump float' (or there is no acceptable conversion)

+ERROR: 0:55: '>' :  wrong operand types: no operation '>' exists that takes a left-hand operand of type 'bool' and a right operand of type 'bool' (or there is no acceptable conversion)

+ERROR: 0:57: '&&' :  wrong operand types: no operation '&&' exists that takes a left-hand operand of type 'bool' and a right operand of type '3-component vector of bool' (or there is no acceptable conversion)

+ERROR: 0:58: '^^' :  wrong operand types: no operation '^^' exists that takes a left-hand operand of type '3-component vector of bool' and a right operand of type '3-component vector of bool' (or there is no acceptable conversion)

+ERROR: 0:59: '||' :  wrong operand types: no operation '||' exists that takes a left-hand operand of type '3-component vector of bool' and a right operand of type 'bool' (or there is no acceptable conversion)

+ERROR: 0:60: '&&' :  wrong operand types: no operation '&&' exists that takes a left-hand operand of type 'mediump int' and a right operand of type 'mediump int' (or there is no acceptable conversion)

+ERROR: 0:61: '||' :  wrong operand types: no operation '||' exists that takes a left-hand operand of type 'mediump uint' and a right operand of type 'mediump uint' (or there is no acceptable conversion)

+ERROR: 0:62: '^^' :  wrong operand types: no operation '^^' exists that takes a left-hand operand of type 'mediump 2X2 matrix of float' and a right operand of type 'mediump 2X2 matrix of float' (or there is no acceptable conversion)

+ERROR: 0:64: '!' :  wrong operand type no operation '!' exists that takes an operand of type mediump uint (or there is no acceptable conversion)

+ERROR: 0:65: '!' :  wrong operand type no operation '!' exists that takes an operand of type mediump int (or there is no acceptable conversion)

+ERROR: 0:66: '!' :  wrong operand type no operation '!' exists that takes an operand of type mediump 2X2 matrix of float (or there is no acceptable conversion)

+ERROR: 0:67: '!' :  wrong operand type no operation '!' exists that takes an operand of type mediump 3-component vector of float (or there is no acceptable conversion)

+ERROR: 0:68: '!' :  wrong operand type no operation '!' exists that takes an operand of type 5-element array of mediump float (or there is no acceptable conversion)

+ERROR: 0:70: '~' :  wrong operand type no operation '~' exists that takes an operand of type mediump float (or there is no acceptable conversion)

+ERROR: 0:71: '~' :  wrong operand type no operation '~' exists that takes an operand of type mediump 4X4 matrix of float (or there is no acceptable conversion)

+ERROR: 0:72: '~' :  wrong operand type no operation '~' exists that takes an operand of type mediump 3-component vector of float (or there is no acceptable conversion)

+ERROR: 0:73: '~' :  wrong operand type no operation '~' exists that takes an operand of type 5-element array of mediump float (or there is no acceptable conversion)

+ERROR: 0:74: '~' :  wrong operand type no operation '~' exists that takes an operand of type layout(shared ) uniform block (or there is no acceptable conversion)

+ERROR: 0:76: '<<' :  wrong operand types: no operation '<<' exists that takes a left-hand operand of type 'mediump int' and a right operand of type 'mediump 3-component vector of int' (or there is no acceptable conversion)

+ERROR: 0:77: '<<' :  wrong operand types: no operation '<<' exists that takes a left-hand operand of type 'mediump uint' and a right operand of type 'mediump 3-component vector of uint' (or there is no acceptable conversion)

+ERROR: 0:78: '>>' :  wrong operand types: no operation '>>' exists that takes a left-hand operand of type 'mediump int' and a right operand of type 'mediump float' (or there is no acceptable conversion)

+ERROR: 0:79: '>>' :  wrong operand types: no operation '>>' exists that takes a left-hand operand of type 'mediump float' and a right operand of type 'mediump int' (or there is no acceptable conversion)

+ERROR: 0:80: '>>' :  wrong operand types: no operation '>>' exists that takes a left-hand operand of type 'mediump 4X4 matrix of float' and a right operand of type 'mediump int' (or there is no acceptable conversion)

+ERROR: 0:81: '>>' :  wrong operand types: no operation '>>' exists that takes a left-hand operand of type '5-element array of mediump float' and a right operand of type 'mediump uint' (or there is no acceptable conversion)

+ERROR: 0:82: '>>' :  wrong operand types: no operation '>>' exists that takes a left-hand operand of type 'mediump 3-component vector of int' and a right operand of type 'mediump 4-component vector of int' (or there is no acceptable conversion)

+ERROR: 0:84: '&' :  wrong operand types: no operation '&' exists that takes a left-hand operand of type 'mediump int' and a right operand of type 'mediump uint' (or there is no acceptable conversion)

+ERROR: 0:85: '^' :  wrong operand types: no operation '^' exists that takes a left-hand operand of type 'mediump uint' and a right operand of type 'mediump 3-component vector of uint' (or there is no acceptable conversion)

+ERROR: 0:86: '|' :  wrong operand types: no operation '|' exists that takes a left-hand operand of type 'mediump int' and a right operand of type 'mediump 3-component vector of uint' (or there is no acceptable conversion)

+ERROR: 0:87: '&' :  wrong operand types: no operation '&' exists that takes a left-hand operand of type 'mediump uint' and a right operand of type 'mediump float' (or there is no acceptable conversion)

+ERROR: 0:88: '|' :  wrong operand types: no operation '|' exists that takes a left-hand operand of type 'mediump 2X2 matrix of float' and a right operand of type 'mediump 2X2 matrix of float' (or there is no acceptable conversion)

+ERROR: 0:89: '^' :  wrong operand types: no operation '^' exists that takes a left-hand operand of type 'structure' and a right operand of type 'structure' (or there is no acceptable conversion)

+ERROR: 0:90: 'assign' :  l-value required 

+ERROR: 56 compilation errors.  No code generated.

+

+ERROR: node is still EOpNull!

+0:13  Function Definition: main( (void)

+0:13    Function Parameters: 

+0:?     Sequence

+0:30      'instanceName' (layout(shared ) uniform block)

+0:31      's' (structure)

+0:32      'i' (mediump int)

+0:33      'u' (mediump uint)

+0:34      'u' (mediump uint)

+0:35      'iv3' (mediump 3-component vector of int)

+0:36      'iv4' (mediump 4-component vector of int)

+0:37      'i' (mediump int)

+0:38      'iv3' (mediump 3-component vector of int)

+0:39      'a' (5-element array of mediump float)

+0:40      'b' (bool)

+0:42      'f' (mediump float)

+0:43      'i' (mediump int)

+0:44      'f' (mediump float)

+0:45      'instanceName' (layout(shared ) uniform block)

+0:46      's' (structure)

+0:47      'a' (5-element array of mediump float)

+0:48      'b3' (3-component vector of bool)

+0:50      false (const bool)

+0:51      false (const bool)

+0:52      false (const bool)

+0:53      false (const bool)

+0:54      false (const bool)

+0:55      false (const bool)

+0:57      false (const bool)

+0:58      false (const bool)

+0:59      false (const bool)

+0:60      false (const bool)

+0:61      false (const bool)

+0:62      false (const bool)

+0:64      'u' (mediump uint)

+0:65      'i' (mediump int)

+0:66      'm2' (mediump 2X2 matrix of float)

+0:67      'v3' (mediump 3-component vector of float)

+0:68      'a' (5-element array of mediump float)

+0:70      'f' (mediump float)

+0:71      'm4' (mediump 4X4 matrix of float)

+0:72      'v3' (mediump 3-component vector of float)

+0:73      'a' (5-element array of mediump float)

+0:74      'instanceName' (layout(shared ) uniform block)

+0:76      'i' (mediump int)

+0:77      'u' (mediump uint)

+0:78      'i' (mediump int)

+0:79      'f' (mediump float)

+0:80      'm4' (mediump 4X4 matrix of float)

+0:81      'a' (5-element array of mediump float)

+0:82      'iv3' (mediump 3-component vector of int)

+0:84      'i' (mediump int)

+0:85      'u' (mediump uint)

+0:86      'i' (mediump int)

+0:87      'u' (mediump uint)

+0:88      'm2' (mediump 2X2 matrix of float)

+0:89      's' (structure)

+0:90      move second child to first child (mediump float)

+0:90        move second child to first child (mediump float)

+0:90          'f' (mediump float)

+0:90          'f' (mediump float)

+0:90        'f' (mediump float)

+0:93      vector-scale (mediump 4-component vector of float)

+0:93        'f' (mediump float)

+0:93        'v4' (mediump 4-component vector of float)

+0:94      add (mediump uint)

+0:94        'u' (mediump uint)

+0:94        'u' (mediump uint)

+0:95      divide (mediump 4-component vector of uint)

+0:95        'uv4' (mediump 4-component vector of uint)

+0:95        'u' (mediump uint)

+0:96      subtract second child into first child (mediump 3-component vector of int)

+0:96        'iv3' (mediump 3-component vector of int)

+0:96        'iv3' (mediump 3-component vector of int)

+0:98      mod second child into first child (mediump int)

+0:98        'i' (mediump int)

+0:98        3 (const int)

+0:99      mod (mediump 3-component vector of uint)

+0:99        'uv3' (mediump 3-component vector of uint)

+0:99        4 (const uint)

+0:100      Pre-Decrement (mediump 2X2 matrix of float)

+0:100        'm2' (mediump 2X2 matrix of float)

+0:101      Post-Increment (mediump 4-component vector of int)

+0:101        'iv4' (mediump 4-component vector of int)

+0:103      Compare Not Equal (bool)

+0:103        'm4' (mediump 4X4 matrix of float)

+0:103        'm4' (mediump 4X4 matrix of float)

+0:104      Compare Equal (bool)

+0:104        'm2' (mediump 2X2 matrix of float)

+0:104        'm2' (mediump 2X2 matrix of float)

+0:105      Compare Less Than or Equal (bool)

+0:105        'i' (mediump int)

+0:105        'i' (mediump int)

+0:106      Compare Equal (bool)

+0:106        'a' (5-element array of mediump float)

+0:106        'a' (5-element array of mediump float)

+0:107      Compare Not Equal (bool)

+0:107        's' (structure)

+0:107        's' (structure)

+0:109      logical-and (bool)

+0:109        'b' (bool)

+0:109        'b' (bool)

+0:110      logical-or (bool)

+0:110        'b' (bool)

+0:110        'b' (bool)

+0:111      logical-xor (bool)

+0:111        'b' (bool)

+0:111        'b' (bool)

+0:113      Comma (mediump 3-component vector of uint)

+0:113        Negate conditional (bool)

+0:113          'b' (bool)

+0:113        'uv3' (mediump 3-component vector of uint)

+0:115      Bitwise not (mediump int)

+0:115        'i' (mediump int)

+0:116      Bitwise not (mediump uint)

+0:116        'u' (mediump uint)

+0:117      Bitwise not (mediump 3-component vector of uint)

+0:117        'uv3' (mediump 3-component vector of uint)

+0:118      Bitwise not (mediump 3-component vector of int)

+0:118        'iv3' (mediump 3-component vector of int)

+0:120      left shift second child into first child (mediump 3-component vector of uint)

+0:120        'uv3' (mediump 3-component vector of uint)

+0:120        'i' (mediump int)

+0:121      right-shift (mediump int)

+0:121        'i' (mediump int)

+0:121        'i' (mediump int)

+0:122      left-shift (mediump uint)

+0:122        'u' (mediump uint)

+0:122        'u' (mediump uint)

+0:123      right-shift (mediump 3-component vector of int)

+0:123        'iv3' (mediump 3-component vector of int)

+0:123        'iv3' (mediump 3-component vector of int)

+0:125      bitwise and (mediump int)

+0:125        'i' (mediump int)

+0:125        'i' (mediump int)

+0:126      inclusive-or (mediump uint)

+0:126        'u' (mediump uint)

+0:126        'u' (mediump uint)

+0:127      exclusive-or (mediump 3-component vector of int)

+0:127        'iv3' (mediump 3-component vector of int)

+0:127        'iv3' (mediump 3-component vector of int)

+0:?   Linker Objects

+0:?     'instanceName' (layout(shared ) uniform block)

+

diff --git a/Test/baseResults/300scope.vert.out b/Test/baseResults/300scope.vert.out
new file mode 100644
index 0000000..2eef9be
--- /dev/null
+++ b/Test/baseResults/300scope.vert.out
@@ -0,0 +1,95 @@
+ERROR: 0:5: 'a' : redefinition 

+ERROR: 0:17: 'b' : illegal redeclaration 

+ERROR: 0:19: 'f' : redefinition 

+ERROR: 0:20: 'tan' : redefinition 

+ERROR: 0:21: 'redeclaration of built-in function' : not supported with this profile: es

+ERROR: 0:22: 'redeclaration of built-in function' : not supported with this profile: es

+ERROR: 0:31: 'local function declaration' : not supported with this profile: es

+ERROR: 0:50: 'z' : undeclared identifier 

+ERROR: 0:50: 'z' : redefinition 

+ERROR: 9 compilation errors.  No code generated.

+

+ERROR: node is still EOpNull!

+0:3  Function Definition: f(i1;i1;i1; (highp int)

+0:3    Function Parameters: 

+0:3      'a' (in highp int)

+0:3      'b' (in highp int)

+0:3      'c' (in highp int)

+0:?     Sequence

+0:8      Sequence

+0:8        Sequence

+0:8          move second child to first child (highp float)

+0:8            'a' (highp float)

+0:8            add (highp float)

+0:8              Convert int to float (highp float)

+0:8                'a' (in highp int)

+0:8              1.000000

+0:11      Branch: Return with expression

+0:11        'a' (in highp int)

+0:22  Function Definition: cos(f1; (highp float)

+0:22    Function Parameters: 

+0:22      'x' (in highp float)

+0:24    Sequence

+0:24      Branch: Return with expression

+0:24        1.000000

+0:29  Function Definition: main( (void)

+0:29    Function Parameters: 

+0:?     Sequence

+0:32      Function Call: g( (highp int)

+0:35      'sin' (highp float)

+0:37      Function Call: f(i1;i1;i1; (highp int)

+0:37        1 (const int)

+0:37        2 (const int)

+0:37        3 (const int)

+0:40      move second child to first child (highp float)

+0:40        'f' (highp float)

+0:40        3.000000

+0:42      move second child to first child (highp 4-component vector of float)

+0:42        'gl_Position' (invariant gl_Position highp 4-component vector of float)

+0:42        Construct vec4 (highp 4-component vector of float)

+0:42          'f' (highp float)

+0:44      Sequence

+0:44        Sequence

+0:44          move second child to first child (highp int)

+0:44            'f' (highp int)

+0:44            0 (const int)

+0:44        Loop with condition tested first

+0:44          Loop Condition

+0:44          Compare Less Than (bool)

+0:44            'f' (highp int)

+0:44            10 (const int)

+0:44          Loop Body

+0:45          Pre-Increment (highp int)

+0:45            'f' (highp int)

+0:44          Loop Terminal Expression

+0:44          Pre-Increment (highp int)

+0:44            'f' (highp int)

+0:47      Sequence

+0:47        move second child to first child (highp int)

+0:47          'x' (highp int)

+0:47          1 (const int)

+0:49      Sequence

+0:49        Sequence

+0:49          move second child to first child (highp float)

+0:49            'x' (highp float)

+0:49            2.000000

+0:49          move second child to first child (highp float)

+0:49            'y' (highp float)

+0:49            'x' (highp float)

+0:53      Sequence

+0:53        Sequence

+0:53          move second child to first child (highp int)

+0:53            'x' (highp int)

+0:53            'x' (highp int)

+0:61      Sequence

+0:61        Sequence

+0:61          move second child to first child (structure)

+0:61            'S' (structure)

+0:61            0 (const int)

+0:62        x: direct index for structure (highp int)

+0:62          'S' (structure)

+0:62          0 (const int)

+0:?   Linker Objects

+0:?     'gl_VertexID' (gl_VertexId highp int)

+0:?     'gl_InstanceID' (gl_InstanceId highp int)

+

diff --git a/Test/baseResults/330.frag.out b/Test/baseResults/330.frag.out
new file mode 100644
index 0000000..61aa5bf
--- /dev/null
+++ b/Test/baseResults/330.frag.out
@@ -0,0 +1,22 @@
+WARNING: 0:6: varying deprecated in version 130; may be removed in future release

+0:? Sequence

+0:8  Function Definition: main( (void)

+0:8    Function Parameters: 

+0:10    Sequence

+0:10      move second child to first child (4-component vector of float)

+0:10        'gl_FragColor' (fragColor 4-component vector of float)

+0:10        'varyingVar' (smooth in 4-component vector of float)

+0:11      move second child to first child (4-component vector of float)

+0:11        direct index (fragColor 4-component vector of float)

+0:11          'gl_FragData' (fragColor 32-element array of 4-component vector of float)

+0:11          1 (const int)

+0:11        'inVar' (smooth in 4-component vector of float)

+0:12      Sequence

+0:12        move second child to first child (int)

+0:12          'buffer' (int)

+0:12          4 (const int)

+0:?   Linker Objects

+0:?     'inVar' (smooth in 4-component vector of float)

+0:?     'outVar' (out 4-component vector of float)

+0:?     'varyingVar' (smooth in 4-component vector of float)

+

diff --git a/Test/baseResults/330comp.frag.out b/Test/baseResults/330comp.frag.out
new file mode 100644
index 0000000..993804c
--- /dev/null
+++ b/Test/baseResults/330comp.frag.out
@@ -0,0 +1,19 @@
+0:? Sequence

+0:8  Function Definition: main( (void)

+0:8    Function Parameters: 

+0:10    Sequence

+0:10      move second child to first child (4-component vector of float)

+0:10        'gl_FragColor' (fragColor 4-component vector of float)

+0:10        'varyingVar' (smooth in 4-component vector of float)

+0:11      move second child to first child (4-component vector of float)

+0:11        direct index (fragColor 4-component vector of float)

+0:11          'gl_FragData' (fragColor 32-element array of 4-component vector of float)

+0:11          1 (const int)

+0:11        vector-times-matrix (4-component vector of float)

+0:11          'inVar' (smooth in 4-component vector of float)

+0:11          'gl_ModelViewMatrix' (uniform 4X4 matrix of float)

+0:?   Linker Objects

+0:?     'inVar' (smooth in 4-component vector of float)

+0:?     'outVar' (out 4-component vector of float)

+0:?     'varyingVar' (smooth in 4-component vector of float)

+

diff --git a/Test/baseResults/400.frag.out b/Test/baseResults/400.frag.out
new file mode 100644
index 0000000..fe78303
--- /dev/null
+++ b/Test/baseResults/400.frag.out
@@ -0,0 +1,18 @@
+ERROR: 0:11: 'variable indexing sampler array' : not supported for this version or the enabled extensions 

+ERROR: 1 compilation errors.  No code generated.

+

+ERROR: node is still EOpNull!

+0:8  Function Definition: main( (void)

+0:8    Function Parameters: 

+0:?     Sequence

+0:11      move second child to first child (4-component vector of float)

+0:11        'v' (4-component vector of float)

+0:11        Function Call: texture(s21;vf2; (4-component vector of float)

+0:11          indirect index (uniform sampler2D)

+0:11            'arrayedSampler' (uniform 5-element array of sampler2D)

+0:11            'i' (flat in int)

+0:11          'c2D' (smooth in 2-component vector of float)

+0:?   Linker Objects

+0:?     'c2D' (smooth in 2-component vector of float)

+0:?     'i' (flat in int)

+

diff --git a/Test/baseResults/420.vert.out b/Test/baseResults/420.vert.out
new file mode 100644
index 0000000..50c2093
--- /dev/null
+++ b/Test/baseResults/420.vert.out
@@ -0,0 +1,9 @@
+WARNING: 0:3: varying deprecated in version 130; may be removed in future release

+ERROR: 0:3: 'varying' : no longer supported in core profile; removed in version 420

+ERROR: 0:7: '' : vertex input cannot be further qualified 

+ERROR: 0:11: '' : can only have one interpolation qualifier (flat, smooth, noperspective) 

+ERROR: 0:12: '' : can only have one auxiliary qualifier (centroid, patch, and sample) 

+ERROR: 0:13: 'uniform' : too many storage qualifiers 

+ERROR: 5 compilation errors.  No code generated.

+

+

diff --git a/Test/baseResults/430scope.vert.out b/Test/baseResults/430scope.vert.out
new file mode 100644
index 0000000..540d52b
--- /dev/null
+++ b/Test/baseResults/430scope.vert.out
@@ -0,0 +1,91 @@
+ERROR: 0:5: 'a' : redefinition 

+ERROR: 0:17: 'b' : illegal redeclaration 

+ERROR: 0:19: 'f' : redefinition 

+ERROR: 0:50: 'z' : undeclared identifier 

+ERROR: 0:50: 'z' : redefinition 

+ERROR: 5 compilation errors.  No code generated.

+

+ERROR: node is still EOpNull!

+0:3  Function Definition: f(i1;i1;i1; (int)

+0:3    Function Parameters: 

+0:3      'a' (in int)

+0:3      'b' (in int)

+0:3      'c' (in int)

+0:?     Sequence

+0:8      Sequence

+0:8        Sequence

+0:8          move second child to first child (float)

+0:8            'a' (float)

+0:8            add (float)

+0:8              Convert int to float (float)

+0:8                'a' (in int)

+0:8              1.000000

+0:11      Branch: Return with expression

+0:11        'a' (in int)

+0:22  Function Definition: cos(f1; (float)

+0:22    Function Parameters: 

+0:22      'x' (in float)

+0:24    Sequence

+0:24      Branch: Return with expression

+0:24        1.000000

+0:29  Function Definition: main( (void)

+0:29    Function Parameters: 

+0:?     Sequence

+0:32      Function Call: g( (int)

+0:35      'sin' (float)

+0:37      Function Call: f(i1;i1;i1; (int)

+0:37        1 (const int)

+0:37        2 (const int)

+0:37        3 (const int)

+0:40      move second child to first child (float)

+0:40        'f' (float)

+0:40        3.000000

+0:42      move second child to first child (4-component vector of float)

+0:42        'gl_Position' (invariant gl_Position 4-component vector of float)

+0:42        Construct vec4 (4-component vector of float)

+0:42          'f' (float)

+0:44      Sequence

+0:44        Sequence

+0:44          move second child to first child (int)

+0:44            'f' (int)

+0:44            0 (const int)

+0:44        Loop with condition tested first

+0:44          Loop Condition

+0:44          Compare Less Than (bool)

+0:44            'f' (int)

+0:44            10 (const int)

+0:44          Loop Body

+0:45          Pre-Increment (int)

+0:45            'f' (int)

+0:44          Loop Terminal Expression

+0:44          Pre-Increment (int)

+0:44            'f' (int)

+0:47      Sequence

+0:47        move second child to first child (int)

+0:47          'x' (int)

+0:47          1 (const int)

+0:49      Sequence

+0:49        Sequence

+0:49          move second child to first child (float)

+0:49            'x' (float)

+0:49            2.000000

+0:49          move second child to first child (float)

+0:49            'y' (float)

+0:49            'x' (float)

+0:53      Sequence

+0:53        Sequence

+0:53          move second child to first child (int)

+0:53            'x' (int)

+0:53            'x' (int)

+0:61      Sequence

+0:61        Sequence

+0:61          move second child to first child (structure)

+0:61            'S' (structure)

+0:61            0 (const int)

+0:62        x: direct index for structure (int)

+0:62          'S' (structure)

+0:62          0 (const int)

+0:?   Linker Objects

+0:?     'gl_VertexID' (gl_VertexId int)

+0:?     'gl_InstanceID' (gl_InstanceId int)

+

diff --git a/Test/baseResults/Operations.frag.out b/Test/baseResults/Operations.frag.out
new file mode 100644
index 0000000..ce568bd
--- /dev/null
+++ b/Test/baseResults/Operations.frag.out
@@ -0,0 +1,408 @@
+0:? Sequence

+0:15  Function Definition: main( (void)

+0:15    Function Parameters: 

+0:?     Sequence

+0:27      move second child to first child (4-component vector of float)

+0:27        'v' (4-component vector of float)

+0:27        radians (4-component vector of float)

+0:27          'uv4' (uniform 4-component vector of float)

+0:28      add second child into first child (4-component vector of float)

+0:28        'v' (4-component vector of float)

+0:28        degrees (4-component vector of float)

+0:28          'v' (4-component vector of float)

+0:29      add second child into first child (4-component vector of float)

+0:29        'v' (4-component vector of float)

+0:29        Comma (4-component vector of float)

+0:29          move second child to first child (int)

+0:29            'i' (int)

+0:29            component-wise multiply (int)

+0:29              'ui' (uniform int)

+0:29              'ui' (uniform int)

+0:29          sine (4-component vector of float)

+0:29            'v' (4-component vector of float)

+0:30      add second child into first child (4-component vector of float)

+0:30        'v' (4-component vector of float)

+0:30        cosine (4-component vector of float)

+0:30          'v' (4-component vector of float)

+0:31      add second child into first child (4-component vector of float)

+0:31        'v' (4-component vector of float)

+0:31        tangent (4-component vector of float)

+0:31          'v' (4-component vector of float)

+0:32      add second child into first child (4-component vector of float)

+0:32        'v' (4-component vector of float)

+0:32        arc sine (4-component vector of float)

+0:32          'v' (4-component vector of float)

+0:33      add second child into first child (4-component vector of float)

+0:33        'v' (4-component vector of float)

+0:33        arc cosine (4-component vector of float)

+0:33          'v' (4-component vector of float)

+0:35      add second child into first child (4-component vector of float)

+0:35        'v' (4-component vector of float)

+0:35        arc tangent (4-component vector of float)

+0:35          'v' (4-component vector of float)

+0:36      add second child into first child (4-component vector of float)

+0:36        'v' (4-component vector of float)

+0:36        hyp. sine (4-component vector of float)

+0:36          'v' (4-component vector of float)

+0:37      add second child into first child (4-component vector of float)

+0:37        'v' (4-component vector of float)

+0:37        hyp. cosine (4-component vector of float)

+0:37          'v' (4-component vector of float)

+0:38      add second child into first child (4-component vector of float)

+0:38        'v' (4-component vector of float)

+0:38        hyp. tangent (4-component vector of float)

+0:38          'v' (4-component vector of float)

+0:39      add second child into first child (4-component vector of float)

+0:39        'v' (4-component vector of float)

+0:39        arc hyp. sine (4-component vector of float)

+0:39          'v' (4-component vector of float)

+0:40      add second child into first child (4-component vector of float)

+0:40        'v' (4-component vector of float)

+0:40        arc hyp. cosine (4-component vector of float)

+0:40          'v' (4-component vector of float)

+0:41      add second child into first child (4-component vector of float)

+0:41        'v' (4-component vector of float)

+0:41        arc hyp. tangent (4-component vector of float)

+0:41          'v' (4-component vector of float)

+0:43      add second child into first child (4-component vector of float)

+0:43        'v' (4-component vector of float)

+0:43        pow (4-component vector of float)

+0:43          'v' (4-component vector of float)

+0:43          'v' (4-component vector of float)

+0:44      add second child into first child (4-component vector of float)

+0:44        'v' (4-component vector of float)

+0:44        exp (4-component vector of float)

+0:44          'v' (4-component vector of float)

+0:45      add second child into first child (4-component vector of float)

+0:45        'v' (4-component vector of float)

+0:45        log (4-component vector of float)

+0:45          'v' (4-component vector of float)

+0:46      add second child into first child (4-component vector of float)

+0:46        'v' (4-component vector of float)

+0:46        exp2 (4-component vector of float)

+0:46          'v' (4-component vector of float)

+0:47      add second child into first child (4-component vector of float)

+0:47        'v' (4-component vector of float)

+0:47        log2 (4-component vector of float)

+0:47          'v' (4-component vector of float)

+0:48      add second child into first child (4-component vector of float)

+0:48        'v' (4-component vector of float)

+0:48        sqrt (4-component vector of float)

+0:48          'v' (4-component vector of float)

+0:49      add second child into first child (4-component vector of float)

+0:49        'v' (4-component vector of float)

+0:49        inverse sqrt (4-component vector of float)

+0:49          'v' (4-component vector of float)

+0:50      add second child into first child (4-component vector of float)

+0:50        'v' (4-component vector of float)

+0:50        Absolute value (4-component vector of float)

+0:50          'v' (4-component vector of float)

+0:51      add second child into first child (4-component vector of float)

+0:51        'v' (4-component vector of float)

+0:51        Sign (4-component vector of float)

+0:51          'v' (4-component vector of float)

+0:52      add second child into first child (4-component vector of float)

+0:52        'v' (4-component vector of float)

+0:52        Floor (4-component vector of float)

+0:52          'v' (4-component vector of float)

+0:60      add second child into first child (4-component vector of float)

+0:60        'v' (4-component vector of float)

+0:60        Ceiling (4-component vector of float)

+0:60          'v' (4-component vector of float)

+0:61      add second child into first child (4-component vector of float)

+0:61        'v' (4-component vector of float)

+0:61        Fraction (4-component vector of float)

+0:61          'v' (4-component vector of float)

+0:62      add second child into first child (4-component vector of float)

+0:62        'v' (4-component vector of float)

+0:62        mod (4-component vector of float)

+0:62          'v' (4-component vector of float)

+0:62          'v' (4-component vector of float)

+0:63      add second child into first child (4-component vector of float)

+0:63        'v' (4-component vector of float)

+0:63        mod (4-component vector of float)

+0:63          'v' (4-component vector of float)

+0:63          direct index (float)

+0:63            'v' (4-component vector of float)

+0:63            0 (const int)

+0:69      add second child into first child (4-component vector of float)

+0:69        'v' (4-component vector of float)

+0:69        min (4-component vector of float)

+0:69          'v' (4-component vector of float)

+0:69          'uv4' (uniform 4-component vector of float)

+0:70      add second child into first child (4-component vector of float)

+0:70        'v' (4-component vector of float)

+0:70        max (4-component vector of float)

+0:70          'v' (4-component vector of float)

+0:70          'uv4' (uniform 4-component vector of float)

+0:71      add second child into first child (4-component vector of float)

+0:71        'v' (4-component vector of float)

+0:71        clamp (4-component vector of float)

+0:71          'v' (4-component vector of float)

+0:71          'uv4' (uniform 4-component vector of float)

+0:71          'uv4' (uniform 4-component vector of float)

+0:72      add second child into first child (4-component vector of float)

+0:72        'v' (4-component vector of float)

+0:72        mix (4-component vector of float)

+0:72          'v' (4-component vector of float)

+0:72          'v' (4-component vector of float)

+0:72          'v' (4-component vector of float)

+0:86      add second child into first child (4-component vector of float)

+0:86        'v' (4-component vector of float)

+0:86        step (4-component vector of float)

+0:86          'v' (4-component vector of float)

+0:86          'v' (4-component vector of float)

+0:87      add second child into first child (4-component vector of float)

+0:87        'v' (4-component vector of float)

+0:87        smoothstep (4-component vector of float)

+0:87          'v' (4-component vector of float)

+0:87          'v' (4-component vector of float)

+0:87          'v' (4-component vector of float)

+0:88      add second child into first child (4-component vector of float)

+0:88        'v' (4-component vector of float)

+0:88        normalize (4-component vector of float)

+0:88          'v' (4-component vector of float)

+0:89      add second child into first child (4-component vector of float)

+0:89        'v' (4-component vector of float)

+0:89        face-forward (4-component vector of float)

+0:89          'v' (4-component vector of float)

+0:89          'v' (4-component vector of float)

+0:89          'v' (4-component vector of float)

+0:90      add second child into first child (4-component vector of float)

+0:90        'v' (4-component vector of float)

+0:90        reflect (4-component vector of float)

+0:90          'v' (4-component vector of float)

+0:90          'v' (4-component vector of float)

+0:91      add second child into first child (4-component vector of float)

+0:91        'v' (4-component vector of float)

+0:91        refract (4-component vector of float)

+0:91          'v' (4-component vector of float)

+0:91          'v' (4-component vector of float)

+0:91          'uf' (uniform float)

+0:92      add second child into first child (4-component vector of float)

+0:92        'v' (4-component vector of float)

+0:92        dPdx (4-component vector of float)

+0:92          'v' (4-component vector of float)

+0:93      add second child into first child (4-component vector of float)

+0:93        'v' (4-component vector of float)

+0:93        dPdy (4-component vector of float)

+0:93          'v' (4-component vector of float)

+0:94      add second child into first child (4-component vector of float)

+0:94        'v' (4-component vector of float)

+0:94        fwidth (4-component vector of float)

+0:94          'v' (4-component vector of float)

+0:128      move second child to first child (bool)

+0:128        'b' (bool)

+0:128        any (bool)

+0:128          Compare Less Than (4-component vector of bool)

+0:128            'v' (4-component vector of float)

+0:128            'uv4' (uniform 4-component vector of float)

+0:129      move second child to first child (bool)

+0:129        'b' (bool)

+0:129        logical-and (bool)

+0:129          'b' (bool)

+0:129          any (bool)

+0:129            Compare Less Than or Equal (4-component vector of bool)

+0:129              'v' (4-component vector of float)

+0:129              'uv4' (uniform 4-component vector of float)

+0:130      move second child to first child (bool)

+0:130        'b' (bool)

+0:130        logical-and (bool)

+0:130          'b' (bool)

+0:130          any (bool)

+0:130            Compare Greater Than (4-component vector of bool)

+0:130              'v' (4-component vector of float)

+0:130              'uv4' (uniform 4-component vector of float)

+0:131      move second child to first child (bool)

+0:131        'b' (bool)

+0:131        logical-and (bool)

+0:131          'b' (bool)

+0:131          any (bool)

+0:131            Compare Greater Than or Equal (4-component vector of bool)

+0:131              'v' (4-component vector of float)

+0:131              'uv4' (uniform 4-component vector of float)

+0:132      move second child to first child (bool)

+0:132        'b' (bool)

+0:132        logical-and (bool)

+0:132          'b' (bool)

+0:132          any (bool)

+0:132            Equal (4-component vector of bool)

+0:132              'ub41' (uniform 4-component vector of bool)

+0:132              'ub42' (uniform 4-component vector of bool)

+0:133      move second child to first child (bool)

+0:133        'b' (bool)

+0:133        logical-and (bool)

+0:133          'b' (bool)

+0:133          any (bool)

+0:133            NotEqual (4-component vector of bool)

+0:133              'ub41' (uniform 4-component vector of bool)

+0:133              'ub42' (uniform 4-component vector of bool)

+0:134      move second child to first child (bool)

+0:134        'b' (bool)

+0:134        logical-and (bool)

+0:134          'b' (bool)

+0:134          any (bool)

+0:134            'ub41' (uniform 4-component vector of bool)

+0:135      move second child to first child (bool)

+0:135        'b' (bool)

+0:135        logical-and (bool)

+0:135          'b' (bool)

+0:135          all (bool)

+0:135            'ub41' (uniform 4-component vector of bool)

+0:136      move second child to first child (bool)

+0:136        'b' (bool)

+0:136        logical-and (bool)

+0:136          'b' (bool)

+0:136          any (bool)

+0:136            Negate conditional (4-component vector of bool)

+0:136              'ub41' (uniform 4-component vector of bool)

+0:138      move second child to first child (int)

+0:138        'i' (int)

+0:138        divide (int)

+0:138          subtract (int)

+0:138            component-wise multiply (int)

+0:138              add (int)

+0:138                'i' (int)

+0:138                'ui' (uniform int)

+0:138              'i' (int)

+0:138            'ui' (uniform int)

+0:138          'i' (int)

+0:139      move second child to first child (int)

+0:139        'i' (int)

+0:139        mod (int)

+0:139          'i' (int)

+0:139          'ui' (uniform int)

+0:140      Test condition and select (void)

+0:140        Condition

+0:140        logical-or (bool)

+0:140          Compare Equal (bool)

+0:140            'i' (int)

+0:140            'ui' (uniform int)

+0:140          logical-xor (bool)

+0:140            logical-and (bool)

+0:140              Compare Not Equal (bool)

+0:140                'i' (int)

+0:140                'ui' (uniform int)

+0:140              Compare Equal (bool)

+0:140                'i' (int)

+0:140                'ui' (uniform int)

+0:140            Compare Not Equal (bool)

+0:140              'i' (int)

+0:140              2 (const int)

+0:140        true case

+0:141        Pre-Increment (int)

+0:141          'i' (int)

+0:143      move second child to first child (float)

+0:143        'f' (float)

+0:143        divide (float)

+0:143          subtract (float)

+0:143            component-wise multiply (float)

+0:143              add (float)

+0:143                'uf' (uniform float)

+0:143                'uf' (uniform float)

+0:143              'uf' (uniform float)

+0:143            'uf' (uniform float)

+0:143          'uf' (uniform float)

+0:145      add second child into first child (float)

+0:145        'f' (float)

+0:145        length (float)

+0:145          'v' (4-component vector of float)

+0:146      add second child into first child (float)

+0:146        'f' (float)

+0:146        distance (float)

+0:146          'v' (4-component vector of float)

+0:146          'v' (4-component vector of float)

+0:147      add second child into first child (float)

+0:147        'f' (float)

+0:147        dot-product (float)

+0:147          'v' (4-component vector of float)

+0:147          'v' (4-component vector of float)

+0:148      add second child into first child (float)

+0:148        'f' (float)

+0:148        dot-product (float)

+0:148          'f' (float)

+0:148          'uf' (uniform float)

+0:149      add second child into first child (float)

+0:149        'f' (float)

+0:149        direct index (float)

+0:149          cross-product (3-component vector of float)

+0:149            vector swizzle (3-component vector of float)

+0:149              'v' (4-component vector of float)

+0:149              Sequence

+0:149                0 (const int)

+0:149                1 (const int)

+0:149                2 (const int)

+0:149            vector swizzle (3-component vector of float)

+0:149              'v' (4-component vector of float)

+0:149              Sequence

+0:149                0 (const int)

+0:149                1 (const int)

+0:149                2 (const int)

+0:149          0 (const int)

+0:151      Test condition and select (void)

+0:151        Condition

+0:151        logical-or (bool)

+0:151          Compare Equal (bool)

+0:151            'f' (float)

+0:151            'uf' (uniform float)

+0:151          logical-and (bool)

+0:151            Compare Not Equal (bool)

+0:151              'f' (float)

+0:151              'uf' (uniform float)

+0:151            Compare Not Equal (bool)

+0:151              'f' (float)

+0:151              2.000000

+0:151        true case

+0:152        Pre-Increment (float)

+0:152          'f' (float)

+0:154      and second child into first child (int)

+0:154        'i' (int)

+0:154        'ui' (uniform int)

+0:155      or second child into first child (int)

+0:155        'i' (int)

+0:155        66 (const int)

+0:156      exclusive or second child into first child (int)

+0:156        'i' (int)

+0:156        'ui' (uniform int)

+0:157      mod second child into first child (int)

+0:157        'i' (int)

+0:157        17 (const int)

+0:158      right shift second child into first child (int)

+0:158        'i' (int)

+0:158        2 (const int)

+0:159      left shift second child into first child (int)

+0:159        'i' (int)

+0:159        'ui' (uniform int)

+0:160      move second child to first child (int)

+0:160        'i' (int)

+0:160        Bitwise not (int)

+0:160          'i' (int)

+0:161      move second child to first child (bool)

+0:161        'b' (bool)

+0:161        Negate conditional (bool)

+0:161          'b' (bool)

+0:163      move second child to first child (4-component vector of float)

+0:163        'gl_FragColor' (fragColor 4-component vector of float)

+0:163        Test condition and select (4-component vector of float)

+0:163          Condition

+0:163          'b' (bool)

+0:163          true case

+0:163          add (4-component vector of float)

+0:163            add (4-component vector of float)

+0:163              Construct vec4 (4-component vector of float)

+0:163                Convert int to float (float)

+0:163                  'i' (int)

+0:163              Construct vec4 (4-component vector of float)

+0:163                'f' (float)

+0:163            'v' (4-component vector of float)

+0:163          false case

+0:163          'v' (4-component vector of float)

+0:?   Linker Objects

+0:?     'uiv4' (uniform 4-component vector of int)

+0:?     'uv4' (uniform 4-component vector of float)

+0:?     'ub' (uniform bool)

+0:?     'ub41' (uniform 4-component vector of bool)

+0:?     'ub42' (uniform 4-component vector of bool)

+0:?     'uf' (uniform float)

+0:?     'ui' (uniform int)

+

diff --git a/Test/baseResults/aggOps.frag.out b/Test/baseResults/aggOps.frag.out
new file mode 100644
index 0000000..a8fc4b8
--- /dev/null
+++ b/Test/baseResults/aggOps.frag.out
@@ -0,0 +1,128 @@
+WARNING: 0:4: varying deprecated in version 130; may be removed in future release

+WARNING: 0:6: varying deprecated in version 130; may be removed in future release

+0:? Sequence

+0:23  Function Definition: main( (void)

+0:23    Function Parameters: 

+0:?     Sequence

+0:27      move second child to first child (3-element array of structure)

+0:27        'a' (3-element array of structure)

+0:27        Construct structure (3-element array of structure)

+0:27          Construct structure (structure)

+0:27            Convert float to int (int)

+0:27              direct index (float)

+0:27                'u' (smooth in 4-component vector of float)

+0:27                0 (const int)

+0:27            direct index (float)

+0:27              'u' (smooth in 4-component vector of float)

+0:27              1 (const int)

+0:27          Construct structure (structure)

+0:27            Convert float to int (int)

+0:27              direct index (float)

+0:27                'u' (smooth in 4-component vector of float)

+0:27                2 (const int)

+0:27            direct index (float)

+0:27              'u' (smooth in 4-component vector of float)

+0:27              3 (const int)

+0:27          14 (const int)

+0:27          14.000000

+0:28      move second child to first child (3-element array of structure)

+0:28        'b' (3-element array of structure)

+0:28        Construct structure (3-element array of structure)

+0:28          17 (const int)

+0:28          17.000000

+0:28          Construct structure (structure)

+0:28            Convert float to int (int)

+0:28              direct index (float)

+0:28                'w' (smooth in 4-component vector of float)

+0:28                0 (const int)

+0:28            direct index (float)

+0:28              'w' (smooth in 4-component vector of float)

+0:28              1 (const int)

+0:28          Construct structure (structure)

+0:28            Convert float to int (int)

+0:28              direct index (float)

+0:28                'w' (smooth in 4-component vector of float)

+0:28                2 (const int)

+0:28            direct index (float)

+0:28              'w' (smooth in 4-component vector of float)

+0:28              3 (const int)

+0:30      Test condition and select (void)

+0:30        Condition

+0:30        Compare Equal (bool)

+0:30          'foo2a' (uniform structure)

+0:30          'foo2b' (uniform structure)

+0:30        true case

+0:31        move second child to first child (4-component vector of float)

+0:31          'v' (4-component vector of float)

+0:31          Function Call: texture2D(s21;vf2; (4-component vector of float)

+0:31            'sampler' (uniform sampler2D)

+0:31            'coord' (smooth in 2-component vector of float)

+0:30        false case

+0:33        move second child to first child (4-component vector of float)

+0:33          'v' (4-component vector of float)

+0:33          Function Call: texture2D(s21;vf2; (4-component vector of float)

+0:33            'sampler' (uniform sampler2D)

+0:33            vector-scale (2-component vector of float)

+0:33              2.000000

+0:33              'coord' (smooth in 2-component vector of float)

+0:35      Test condition and select (void)

+0:35        Condition

+0:35        Compare Equal (bool)

+0:35          'u' (smooth in 4-component vector of float)

+0:35          'v' (4-component vector of float)

+0:35        true case

+0:36        vector scale second child into first child (4-component vector of float)

+0:36          'v' (4-component vector of float)

+0:36          3.000000

+0:38      Test condition and select (void)

+0:38        Condition

+0:38        Compare Not Equal (bool)

+0:38          'u' (smooth in 4-component vector of float)

+0:38          'v' (4-component vector of float)

+0:38        true case

+0:39        vector scale second child into first child (4-component vector of float)

+0:39          'v' (4-component vector of float)

+0:39          4.000000

+0:41      Test condition and select (void)

+0:41        Condition

+0:41        Compare Equal (bool)

+0:41          'coord' (smooth in 2-component vector of float)

+0:41          vector swizzle (2-component vector of float)

+0:41            'v' (4-component vector of float)

+0:41            Sequence

+0:41              1 (const int)

+0:41              3 (const int)

+0:41        true case

+0:42        vector scale second child into first child (4-component vector of float)

+0:42          'v' (4-component vector of float)

+0:42          5.000000

+0:44      Test condition and select (void)

+0:44        Condition

+0:44        Compare Equal (bool)

+0:44          'a' (3-element array of structure)

+0:44          'b' (3-element array of structure)

+0:44        true case

+0:45        vector scale second child into first child (4-component vector of float)

+0:45          'v' (4-component vector of float)

+0:45          6.000000

+0:47      Test condition and select (void)

+0:47        Condition

+0:47        Compare Not Equal (bool)

+0:47          'a' (3-element array of structure)

+0:47          'b' (3-element array of structure)

+0:47        true case

+0:48        vector scale second child into first child (4-component vector of float)

+0:48          'v' (4-component vector of float)

+0:48          7.000000

+0:50      move second child to first child (4-component vector of float)

+0:50        'gl_FragColor' (fragColor 4-component vector of float)

+0:50        'v' (4-component vector of float)

+0:?   Linker Objects

+0:?     'sampler' (uniform sampler2D)

+0:?     'coord' (smooth in 2-component vector of float)

+0:?     'u' (smooth in 4-component vector of float)

+0:?     'w' (smooth in 4-component vector of float)

+0:?     'foo1' (uniform structure)

+0:?     'foo2a' (uniform structure)

+0:?     'foo2b' (uniform structure)

+

diff --git a/Test/baseResults/always-discard.frag.out b/Test/baseResults/always-discard.frag.out
new file mode 100644
index 0000000..9dedfb6
--- /dev/null
+++ b/Test/baseResults/always-discard.frag.out
@@ -0,0 +1,102 @@
+0:? Sequence

+0:4  Function Definition: main( (void)

+0:4    Function Parameters: 

+0:6    Sequence

+0:6      Sequence

+0:6        move second child to first child (4-component vector of float)

+0:6          'white' (4-component vector of float)

+0:6          1.000000

+0:6          1.000000

+0:6          1.000000

+0:6          1.000000

+0:7      Sequence

+0:7        move second child to first child (4-component vector of float)

+0:7          'black' (4-component vector of float)

+0:7          0.200000

+0:7          0.200000

+0:7          0.200000

+0:7          0.200000

+0:8      Sequence

+0:8        move second child to first child (4-component vector of float)

+0:8          'color' (4-component vector of float)

+0:8          'white' (4-component vector of float)

+0:11      Sequence

+0:11        move second child to first child (float)

+0:11          'x' (float)

+0:11          subtract (float)

+0:11            component-wise multiply (float)

+0:11              direct index (float)

+0:11                'tex_coord' (smooth in 2-component vector of float)

+0:11                0 (const int)

+0:11              2.000000

+0:11            1.000000

+0:12      Sequence

+0:12        move second child to first child (float)

+0:12          'y' (float)

+0:12          subtract (float)

+0:12            component-wise multiply (float)

+0:12              direct index (float)

+0:12                'tex_coord' (smooth in 2-component vector of float)

+0:12                1 (const int)

+0:12              2.000000

+0:12            1.000000

+0:14      Sequence

+0:14        move second child to first child (float)

+0:14          'radius' (float)

+0:14          sqrt (float)

+0:14            add (float)

+0:14              component-wise multiply (float)

+0:14                'x' (float)

+0:14                'x' (float)

+0:14              component-wise multiply (float)

+0:14                'y' (float)

+0:14                'y' (float)

+0:15      Test condition and select (void)

+0:15        Condition

+0:15        Compare Greater Than (bool)

+0:15          'radius' (float)

+0:15          1.000000

+0:15        true case

+0:16        Sequence

+0:16          Test condition and select (void)

+0:16            Condition

+0:16            Compare Greater Than (bool)

+0:16              'radius' (float)

+0:16              1.100000

+0:16            true case

+0:17            Sequence

+0:17              Pre-Increment (4-component vector of float)

+0:17                'color' (4-component vector of float)

+0:20          move second child to first child (4-component vector of float)

+0:20            'gl_FragColor' (fragColor 4-component vector of float)

+0:20            'color' (4-component vector of float)

+0:22          Test condition and select (void)

+0:22            Condition

+0:22            Compare Greater Than (bool)

+0:22              'radius' (float)

+0:22              1.200000

+0:22            true case

+0:23            Sequence

+0:23              Pre-Increment (4-component vector of float)

+0:23                'color' (4-component vector of float)

+0:28      Branch: Kill

+0:31      Test condition and select (void)

+0:31        Condition

+0:31        Compare Greater Than or Equal (bool)

+0:31          'radius' (float)

+0:31          0.750000

+0:31        true case

+0:32        subtract second child into first child (4-component vector of float)

+0:32          'color' (4-component vector of float)

+0:32          Absolute value (float)

+0:32            divide (float)

+0:32              pow (float)

+0:32                'radius' (float)

+0:32                16.000000

+0:32              2.000000

+0:34      move second child to first child (4-component vector of float)

+0:34        'gl_FragColor' (fragColor 4-component vector of float)

+0:34        'color' (4-component vector of float)

+0:?   Linker Objects

+0:?     'tex_coord' (smooth in 2-component vector of float)

+

diff --git a/Test/baseResults/always-discard2.frag.out b/Test/baseResults/always-discard2.frag.out
new file mode 100644
index 0000000..e45cdb8
--- /dev/null
+++ b/Test/baseResults/always-discard2.frag.out
@@ -0,0 +1,49 @@
+0:? Sequence

+0:4  Function Definition: main( (void)

+0:4    Function Parameters: 

+0:6    Sequence

+0:6      Sequence

+0:6        move second child to first child (4-component vector of float)

+0:6          'white' (4-component vector of float)

+0:6          1.000000

+0:6          1.000000

+0:6          1.000000

+0:6          1.000000

+0:7      Sequence

+0:7        move second child to first child (4-component vector of float)

+0:7          'black' (4-component vector of float)

+0:7          0.200000

+0:7          0.200000

+0:7          0.200000

+0:7          0.200000

+0:8      Sequence

+0:8        move second child to first child (4-component vector of float)

+0:8          'color' (4-component vector of float)

+0:8          'white' (4-component vector of float)

+0:11      Sequence

+0:11        move second child to first child (float)

+0:11          'x' (float)

+0:11          subtract (float)

+0:11            component-wise multiply (float)

+0:11              direct index (float)

+0:11                'tex_coord' (smooth in 2-component vector of float)

+0:11                0 (const int)

+0:11              2.000000

+0:11            1.000000

+0:12      Sequence

+0:12        move second child to first child (float)

+0:12          'y' (float)

+0:12          subtract (float)

+0:12            component-wise multiply (float)

+0:12              direct index (float)

+0:12                'tex_coord' (smooth in 2-component vector of float)

+0:12                1 (const int)

+0:12              2.000000

+0:12            1.000000

+0:14      Branch: Kill

+0:17      move second child to first child (4-component vector of float)

+0:17        'gl_FragColor' (fragColor 4-component vector of float)

+0:17        'color' (4-component vector of float)

+0:?   Linker Objects

+0:?     'tex_coord' (smooth in 2-component vector of float)

+

diff --git a/Test/baseResults/array.frag.out b/Test/baseResults/array.frag.out
new file mode 100644
index 0000000..f12c264
--- /dev/null
+++ b/Test/baseResults/array.frag.out
@@ -0,0 +1,151 @@
+ERROR: 0:21: '[' :  array index out of range '2'

+ERROR: 0:27: '[' :  array must be redeclared with a size before being indexed with a variable

+ERROR: 0:30: 'assign' :  cannot convert from '4-element array of float' to '5-element array of float'

+ERROR: 0:31: 'assign' :  cannot convert from '4-element array of float' to 'unsized array of float'

+ERROR: 0:33: 'foo' : no matching overloaded function found 

+ERROR: 0:42: '[' :  array index out of range '5'

+ERROR: 0:45: '[' :  array index out of range '1000'

+ERROR: 0:46: '[' :  array index out of range '-1'

+ERROR: 0:52: '[' :  array index '2' out of range

+ERROR: 0:54: 'const' :  non-matching types for const initializer  

+ERROR: 0:56: '=' :  cannot convert from 'const 2-element array of int' to '3-element array of int'

+ERROR: 0:57: '[]' : scalar integer expression required 

+ERROR: 0:57: '[' :  array index out of range '-858993459'

+ERROR: 0:58: '[]' : scalar integer expression required 

+ERROR: 14 compilation errors.  No code generated.

+

+ERROR: node is still EOpNull!

+0:9  Function Definition: foo(f1[5]; (4-element array of float)

+0:9    Function Parameters: 

+0:9      'a' (in 5-element array of float)

+0:11    Sequence

+0:11      Branch: Return with expression

+0:11        Construct float (4-element array of float)

+0:11          direct index (in float)

+0:11            'a' (in 5-element array of float)

+0:11            0 (const int)

+0:11          direct index (in float)

+0:11            'a' (in 5-element array of float)

+0:11            1 (const int)

+0:11          direct index (in float)

+0:11            'a' (in 5-element array of float)

+0:11            2 (const int)

+0:11          direct index (in float)

+0:11            'a' (in 5-element array of float)

+0:11            3 (const int)

+0:14  Function Definition: bar(f1[5]; (void)

+0:14    Function Parameters: 

+0:14      '' (in 5-element array of float)

+0:16  Function Definition: main( (void)

+0:16    Function Parameters: 

+0:?     Sequence

+0:?       Sequence

+0:21        move second child to first child (float)

+0:21          direct index (float)

+0:21            'gu' (2-element array of float)

+0:21            2 (const int)

+0:21          4.000000

+0:24      move second child to first child (float)

+0:24        direct index (float)

+0:24          'gu' (unsized array of float)

+0:24          2 (const int)

+0:24        4.000000

+0:26      move second child to first child (float)

+0:26        direct index (float)

+0:26          'gu' (unsized array of float)

+0:26          3 (const int)

+0:26        3.000000

+0:27      move second child to first child (float)

+0:27        indirect index (float)

+0:27          'gu' (unsized array of float)

+0:27          'a' (uniform int)

+0:27        5.000000

+0:29      move second child to first child (4-element array of float)

+0:29        'g4' (4-element array of float)

+0:29        Function Call: foo(f1[5]; (4-element array of float)

+0:29          'g5' (5-element array of float)

+0:30      'g5' (5-element array of float)

+0:31      'gu' (unsized array of float)

+0:33      0.000000

+0:34      Function Call: bar(f1[5]; (void)

+0:34        'g5' (5-element array of float)

+0:36      Test condition and select (void)

+0:36        Condition

+0:36        Compare Equal (bool)

+0:36          1.000000

+0:36          2.000000

+0:36          3.000000

+0:36          4.000000

+0:36          'g4' (4-element array of float)

+0:36        true case

+0:37        move second child to first child (float)

+0:37          direct index (float)

+0:37            'gu' (unsized array of float)

+0:37            0 (const int)

+0:37          2.000000

+0:40      move second child to first child (float)

+0:40        direct index (float)

+0:40          'u' (5-element array of float)

+0:40          2 (const int)

+0:40        3.000000

+0:42      move second child to first child (float)

+0:42        direct index (float)

+0:42          'u' (5-element array of float)

+0:42          5 (const int)

+0:42        5.000000

+0:43      Function Call: foo(f1[5]; (4-element array of float)

+0:43        'u' (5-element array of float)

+0:45      move second child to first child (4-component vector of float)

+0:45        direct index (fragColor 4-component vector of float)

+0:45          'gl_FragData' (fragColor 32-element array of 4-component vector of float)

+0:45          1000 (const int)

+0:45        1.000000

+0:45        1.000000

+0:45        1.000000

+0:45        1.000000

+0:46      move second child to first child (4-component vector of float)

+0:46        direct index (fragColor 4-component vector of float)

+0:46          'gl_FragData' (fragColor 32-element array of 4-component vector of float)

+0:46          -1 (const int)

+0:46        1.000000

+0:46        1.000000

+0:46        1.000000

+0:46        1.000000

+0:47      move second child to first child (4-component vector of float)

+0:47        direct index (fragColor 4-component vector of float)

+0:47          'gl_FragData' (fragColor 32-element array of 4-component vector of float)

+0:47          3 (const int)

+0:47        1.000000

+0:47        1.000000

+0:47        1.000000

+0:47        1.000000

+0:50      Sequence

+0:50        move second child to first child (int)

+0:50          'sum' (int)

+0:50          3 (const int)

+0:51      add second child into first child (int)

+0:51        'sum' (int)

+0:51        2 (const int)

+0:52      add second child into first child (int)

+0:52        'sum' (int)

+0:52        3 (const int)

+0:55      Sequence

+0:55        move second child to first child (2-element array of int)

+0:55          'ica' (2-element array of int)

+0:55          3 (const int)

+0:55          2 (const int)

+0:57      move second child to first child (int)

+0:57        direct index (int)

+0:57          'ica' (2-element array of int)

+0:57          3.100000

+0:57        3 (const int)

+0:58      move second child to first child (int)

+0:58        indirect index (int)

+0:58          'ica' (2-element array of int)

+0:58          direct index (float)

+0:58            'u' (5-element array of float)

+0:58            1 (const int)

+0:58        4 (const int)

+0:?   Linker Objects

+0:?     'a' (uniform int)

+

diff --git a/Test/baseResults/array100.frag.out b/Test/baseResults/array100.frag.out
new file mode 100644
index 0000000..83577c9
--- /dev/null
+++ b/Test/baseResults/array100.frag.out
@@ -0,0 +1,103 @@
+ERROR: 0:3: 'float' : type requires declaration of default precision qualifier 

+ERROR: 0:3: '' : array size required 

+ERROR: 0:9: 'arrayed type' : not supported for this version or the enabled extensions 

+ERROR: 0:9: 'arrayed type' : not supported for this version or the enabled extensions 

+ERROR: 0:11: 'arrayed constructor' : not supported for this version or the enabled extensions 

+ERROR: 0:21: '[' :  array index out of range '2'

+ERROR: 0:25: 'assign' :  cannot convert from '4-element array of mediump float' to '5-element array of mediump float'

+ERROR: 0:26: 'assign' :  cannot convert from '4-element array of mediump float' to '1-element array of mediump float'

+ERROR: 0:28: 'foo' : no matching overloaded function found 

+ERROR: 0:31: 'arrayed constructor' : not supported for this version or the enabled extensions 

+ERROR: 0:35: '[' :  array index out of range '5'

+ERROR: 0:38: '[' :  array index out of range '1000'

+ERROR: 0:39: '[' :  array index out of range '-1'

+ERROR: 13 compilation errors.  No code generated.

+

+ERROR: node is still EOpNull!

+0:9  Function Definition: foo(f1[5]; (4-element array of mediump float)

+0:9    Function Parameters: 

+0:9      'a' (in 5-element array of mediump float)

+0:11    Sequence

+0:11      Branch: Return with expression

+0:11        Construct float (4-element array of float)

+0:11          direct index (in mediump float)

+0:11            'a' (in 5-element array of mediump float)

+0:11            0 (const int)

+0:11          direct index (in mediump float)

+0:11            'a' (in 5-element array of mediump float)

+0:11            1 (const int)

+0:11          direct index (in mediump float)

+0:11            'a' (in 5-element array of mediump float)

+0:11            2 (const int)

+0:11          direct index (in mediump float)

+0:11            'a' (in 5-element array of mediump float)

+0:11            3 (const int)

+0:14  Function Definition: bar(f1[5]; (void)

+0:14    Function Parameters: 

+0:14      '' (in 5-element array of mediump float)

+0:16  Function Definition: main( (void)

+0:16    Function Parameters: 

+0:?     Sequence

+0:?       Sequence

+0:21        move second child to first child (mediump float)

+0:21          direct index (mediump float)

+0:21            'gu' (2-element array of mediump float)

+0:21            2 (const int)

+0:21          4.000000

+0:24      move second child to first child (4-element array of mediump float)

+0:24        'g4' (4-element array of mediump float)

+0:24        Function Call: foo(f1[5]; (4-element array of mediump float)

+0:24          'g5' (5-element array of mediump float)

+0:25      'g5' (5-element array of mediump float)

+0:26      'gu' (1-element array of mediump float)

+0:28      0.000000

+0:29      Function Call: bar(f1[5]; (void)

+0:29        'g5' (5-element array of mediump float)

+0:31      Test condition and select (void)

+0:31        Condition

+0:31        Compare Equal (bool)

+0:31          1.000000

+0:31          2.000000

+0:31          3.000000

+0:31          4.000000

+0:31          'g4' (4-element array of mediump float)

+0:31        true case

+0:32        move second child to first child (mediump float)

+0:32          direct index (mediump float)

+0:32            'gu' (1-element array of mediump float)

+0:32            0 (const int)

+0:32          2.000000

+0:35      move second child to first child (mediump float)

+0:35        direct index (mediump float)

+0:35          'u' (5-element array of mediump float)

+0:35          5 (const int)

+0:35        5.000000

+0:36      Function Call: foo(f1[5]; (4-element array of mediump float)

+0:36        'u' (5-element array of mediump float)

+0:38      move second child to first child (4-component vector of float)

+0:38        direct index (fragColor 4-component vector of float)

+0:38          'gl_FragData' (fragColor 32-element array of 4-component vector of float)

+0:38          1000 (const int)

+0:38        1.000000

+0:38        1.000000

+0:38        1.000000

+0:38        1.000000

+0:39      move second child to first child (4-component vector of float)

+0:39        direct index (fragColor 4-component vector of float)

+0:39          'gl_FragData' (fragColor 32-element array of 4-component vector of float)

+0:39          -1 (const int)

+0:39        1.000000

+0:39        1.000000

+0:39        1.000000

+0:39        1.000000

+0:40      move second child to first child (4-component vector of float)

+0:40        direct index (fragColor 4-component vector of float)

+0:40          'gl_FragData' (fragColor 32-element array of 4-component vector of float)

+0:40          3 (const int)

+0:40        1.000000

+0:40        1.000000

+0:40        1.000000

+0:40        1.000000

+0:?   Linker Objects

+0:?     'a' (uniform mediump int)

+

diff --git a/Test/baseResults/comment.frag.out b/Test/baseResults/comment.frag.out
new file mode 100644
index 0000000..5f748f1
--- /dev/null
+++ b/Test/baseResults/comment.frag.out
@@ -0,0 +1,6 @@
+0:? Sequence

+0:17  Function Definition: main( (void)

+0:17    Function Parameters: 

+0:?   Linker Objects

+0:?     'v' (smooth in 4-component vector of float)

+

diff --git a/Test/baseResults/conditionalDiscard.frag.out b/Test/baseResults/conditionalDiscard.frag.out
new file mode 100644
index 0000000..d96b5b6
--- /dev/null
+++ b/Test/baseResults/conditionalDiscard.frag.out
@@ -0,0 +1,27 @@
+0:? Sequence

+0:6  Function Definition: main( (void)

+0:6    Function Parameters: 

+0:8    Sequence

+0:8      Sequence

+0:8        move second child to first child (4-component vector of float)

+0:8          'v' (4-component vector of float)

+0:8          Function Call: texture2D(s21;vf2; (4-component vector of float)

+0:8            'tex' (uniform sampler2D)

+0:8            'coord' (smooth in 2-component vector of float)

+0:10      Test condition and select (void)

+0:10        Condition

+0:10        Compare Equal (bool)

+0:10          'v' (4-component vector of float)

+0:10          0.100000

+0:10          0.200000

+0:10          0.300000

+0:10          0.400000

+0:10        true case

+0:11        Branch: Kill

+0:13      move second child to first child (4-component vector of float)

+0:13        'gl_FragColor' (fragColor 4-component vector of float)

+0:13        'v' (4-component vector of float)

+0:?   Linker Objects

+0:?     'tex' (uniform sampler2D)

+0:?     'coord' (smooth in 2-component vector of float)

+

diff --git a/Test/baseResults/constErrors.frag.out b/Test/baseResults/constErrors.frag.out
new file mode 100644
index 0000000..dcbf735
--- /dev/null
+++ b/Test/baseResults/constErrors.frag.out
@@ -0,0 +1,17 @@
+ERROR: 0:14: '=' :  assigning non-constant to 'const int'

+ERROR: 0:17: '' : constant expression required 

+ERROR: 0:17: '' : array size must be a constant integer expression 

+ERROR: 0:18: '' : constant expression required 

+ERROR: 0:18: '' : array size must be a constant integer expression 

+ERROR: 0:19: '' : constant expression required 

+ERROR: 0:19: '' : array size must be a constant integer expression 

+ERROR: 7 compilation errors.  No code generated.

+

+ERROR: node is still EOpNull!

+0:10  Function Definition: main( (void)

+0:10    Function Parameters: 

+0:?   Linker Objects

+0:?     'inVar' (smooth in 4-component vector of float)

+0:?     'outVar' (out 4-component vector of float)

+0:?     'uniformInt' (uniform int)

+

diff --git a/Test/baseResults/constFold.frag.out b/Test/baseResults/constFold.frag.out
new file mode 100644
index 0000000..f1dd4a7
--- /dev/null
+++ b/Test/baseResults/constFold.frag.out
@@ -0,0 +1,78 @@
+0:? Sequence

+0:24  Function Definition: main( (void)

+0:24    Function Parameters: 

+0:26    Sequence

+0:26      Sequence

+0:26        move second child to first child (4-component vector of float)

+0:26          'dx' (4-component vector of float)

+0:26          dPdx (4-component vector of float)

+0:26            'inv' (smooth in 4-component vector of float)

+0:33      move second child to first child (4-component vector of float)

+0:33        'FragColor' (out 4-component vector of float)

+0:33        2.000000

+0:33        6.000000

+0:33        3.000000

+0:33        171.887339

+0:38      move second child to first child (4-component vector of float)

+0:38        'FragColor' (out 4-component vector of float)

+0:38        3.000000

+0:38        2.000000

+0:38        0.001593

+0:38        -0.999999

+0:39      move second child to first child (2-component vector of float)

+0:39        'out2' (out 2-component vector of float)

+0:39        5.600000

+0:39        5.800000

+0:40      move second child to first child (4-component vector of float)

+0:40        'out3' (out 4-component vector of float)

+0:40        20.085537

+0:40        2.302585

+0:40        16.000000

+0:40        8.000000

+0:41      move second child to first child (4-component vector of float)

+0:41        'out4' (out 4-component vector of float)

+0:41        10.000000

+0:41        0.100000

+0:41        4.700000

+0:41        10.900000

+0:42      move second child to first child (4-component vector of int)

+0:42        'out5' (out 4-component vector of int)

+0:42        8 (const int)

+0:42        17 (const int)

+0:42        -1 (const int)

+0:42        1 (const int)

+0:43      move second child to first child (3-component vector of float)

+0:43        'out6' (out 3-component vector of float)

+0:43        -1.000000

+0:43        1.000000

+0:43        0.000000

+0:44      move second child to first child (4-component vector of float)

+0:44        'out7' (out 4-component vector of float)

+0:44        4.000000

+0:44        -4.000000

+0:44        5.000000

+0:44        -5.000000

+0:45      move second child to first child (4-component vector of float)

+0:45        'out8' (out 4-component vector of float)

+0:45        4.000000

+0:45        5.000000

+0:45        4.000000

+0:45        -6.000000

+0:46      move second child to first child (4-component vector of float)

+0:46        'out9' (out 4-component vector of float)

+0:46        8.000000

+0:46        -4.000000

+0:46        0.345000

+0:46        0.400000

+0:?   Linker Objects

+0:?     'inv' (smooth in 4-component vector of float)

+0:?     'FragColor' (out 4-component vector of float)

+0:?     'out2' (out 2-component vector of float)

+0:?     'out3' (out 4-component vector of float)

+0:?     'out4' (out 4-component vector of float)

+0:?     'out5' (out 4-component vector of int)

+0:?     'out6' (out 3-component vector of float)

+0:?     'out7' (out 4-component vector of float)

+0:?     'out8' (out 4-component vector of float)

+0:?     'out9' (out 4-component vector of float)

+

diff --git a/Test/baseResults/conversion.frag.out b/Test/baseResults/conversion.frag.out
new file mode 100644
index 0000000..1ba0c4f
--- /dev/null
+++ b/Test/baseResults/conversion.frag.out
@@ -0,0 +1,441 @@
+0:? Sequence

+0:33  Function Definition: main( (void)

+0:33    Function Parameters: 

+0:35    Sequence

+0:35      Sequence

+0:35        move second child to first child (bool)

+0:35          'b' (bool)

+0:35          logical-xor (bool)

+0:35            Convert int to bool (bool)

+0:35              'u_i' (uniform int)

+0:35            Convert float to bool (bool)

+0:35              'u_f' (uniform float)

+0:36      Sequence

+0:36        move second child to first child (2-component vector of bool)

+0:36          'b2' (2-component vector of bool)

+0:36          Construct bvec2 (2-component vector of bool)

+0:36            Convert int to bool (bool)

+0:36              'u_i' (uniform int)

+0:36            Convert float to bool (bool)

+0:36              'u_f' (uniform float)

+0:37      Sequence

+0:37        move second child to first child (3-component vector of bool)

+0:37          'b3' (3-component vector of bool)

+0:37          Construct bvec3 (3-component vector of bool)

+0:37            Convert int to bool (bool)

+0:37              'u_i' (uniform int)

+0:37            Convert float to bool (bool)

+0:37              'u_f' (uniform float)

+0:37            Convert int to bool (bool)

+0:37              'i_i' (flat in int)

+0:38      Sequence

+0:38        move second child to first child (4-component vector of bool)

+0:38          'b4' (4-component vector of bool)

+0:38          Construct bvec4 (4-component vector of bool)

+0:38            Convert int to bool (bool)

+0:38              'u_i' (uniform int)

+0:38            Convert float to bool (bool)

+0:38              'u_f' (uniform float)

+0:38            Convert int to bool (bool)

+0:38              'i_i' (flat in int)

+0:38            Convert float to bool (bool)

+0:38              'i_f' (smooth in float)

+0:40      Sequence

+0:40        move second child to first child (int)

+0:40          'i' (int)

+0:40          add (int)

+0:40            Convert float to int (int)

+0:40              'u_f' (uniform float)

+0:40            Convert bool to int (int)

+0:40              'b' (bool)

+0:41      Sequence

+0:41        move second child to first child (2-component vector of int)

+0:41          'i2' (2-component vector of int)

+0:41          add (2-component vector of int)

+0:41            Convert float to int (2-component vector of int)

+0:41              'u_f2' (uniform 2-component vector of float)

+0:41            Convert bool to int (2-component vector of int)

+0:41              'b2' (2-component vector of bool)

+0:42      Sequence

+0:42        move second child to first child (3-component vector of int)

+0:42          'i3' (3-component vector of int)

+0:42          add (3-component vector of int)

+0:42            Convert float to int (3-component vector of int)

+0:42              'u_f3' (uniform 3-component vector of float)

+0:42            Convert bool to int (3-component vector of int)

+0:42              'b3' (3-component vector of bool)

+0:43      Sequence

+0:43        move second child to first child (4-component vector of int)

+0:43          'i4' (4-component vector of int)

+0:43          add (4-component vector of int)

+0:43            Convert float to int (4-component vector of int)

+0:43              'u_f4' (uniform 4-component vector of float)

+0:43            Convert bool to int (4-component vector of int)

+0:43              'b4' (4-component vector of bool)

+0:45      Sequence

+0:45        move second child to first child (float)

+0:45          'f' (float)

+0:45          Convert int to float (float)

+0:45            'i' (int)

+0:46      Sequence

+0:46        move second child to first child (2-component vector of float)

+0:46          'f2' (2-component vector of float)

+0:46          Convert int to float (2-component vector of float)

+0:46            'i2' (2-component vector of int)

+0:47      Sequence

+0:47        move second child to first child (3-component vector of float)

+0:47          'f3' (3-component vector of float)

+0:47          Convert int to float (3-component vector of float)

+0:47            'i3' (3-component vector of int)

+0:48      Sequence

+0:48        move second child to first child (4-component vector of float)

+0:48          'f4' (4-component vector of float)

+0:48          Convert int to float (4-component vector of float)

+0:48            'i4' (4-component vector of int)

+0:50      add second child into first child (float)

+0:50        'f' (float)

+0:50        add (float)

+0:50          Convert int to float (float)

+0:50            'i' (int)

+0:50          Convert bool to float (float)

+0:50            'b' (bool)

+0:51      subtract second child into first child (2-component vector of float)

+0:51        'f2' (2-component vector of float)

+0:51        add (2-component vector of float)

+0:51          Convert int to float (2-component vector of float)

+0:51            'i2' (2-component vector of int)

+0:51          Convert bool to float (2-component vector of float)

+0:51            'b2' (2-component vector of bool)

+0:52      divide second child into first child (3-component vector of float)

+0:52        'f3' (3-component vector of float)

+0:52        add (3-component vector of float)

+0:52          Convert int to float (3-component vector of float)

+0:52            'i3' (3-component vector of int)

+0:52          Convert bool to float (3-component vector of float)

+0:52            'b3' (3-component vector of bool)

+0:53      add second child into first child (4-component vector of float)

+0:53        'f4' (4-component vector of float)

+0:53        add (4-component vector of float)

+0:53          Convert int to float (4-component vector of float)

+0:53            'i4' (4-component vector of int)

+0:53          Convert bool to float (4-component vector of float)

+0:53            'b4' (4-component vector of bool)

+0:55      add second child into first child (4-component vector of float)

+0:55        'f4' (4-component vector of float)

+0:55        Convert bool to float (4-component vector of float)

+0:55          Convert int to bool (4-component vector of bool)

+0:55            'i_i4' (flat in 4-component vector of int)

+0:56      add second child into first child (4-component vector of float)

+0:56        'f4' (4-component vector of float)

+0:56        Convert bool to float (4-component vector of float)

+0:56          Convert float to bool (4-component vector of bool)

+0:56            'u_f4' (uniform 4-component vector of float)

+0:58      add second child into first child (float)

+0:58        'f' (float)

+0:58        subtract (float)

+0:58          'f' (float)

+0:58          Convert int to float (float)

+0:58            'i' (int)

+0:59      add second child into first child (2-component vector of float)

+0:59        'f2' (2-component vector of float)

+0:59        add (2-component vector of float)

+0:59          Construct vec2 (2-component vector of float)

+0:59            'f' (float)

+0:59            Convert int to float (float)

+0:59              'i' (int)

+0:59          Convert int to float (2-component vector of float)

+0:59            'i2' (2-component vector of int)

+0:60      add second child into first child (3-component vector of float)

+0:60        'f3' (3-component vector of float)

+0:60        add (3-component vector of float)

+0:60          Convert int to float (3-component vector of float)

+0:60            'i3' (3-component vector of int)

+0:60          Construct vec3 (3-component vector of float)

+0:60            'f' (float)

+0:60            Convert int to float (float)

+0:60              'i' (int)

+0:60            'f' (float)

+0:61      add second child into first child (4-component vector of float)

+0:61        'f4' (4-component vector of float)

+0:61        add (4-component vector of float)

+0:61          Construct vec4 (4-component vector of float)

+0:61            Convert bool to float (float)

+0:61              'b' (bool)

+0:61            Convert int to float (float)

+0:61              'i' (int)

+0:61            'f' (float)

+0:61            Convert int to float (float)

+0:61              'i' (int)

+0:61          Convert int to float (4-component vector of float)

+0:61            'i4' (4-component vector of int)

+0:63      add second child into first child (2-component vector of float)

+0:63        'f2' (2-component vector of float)

+0:63        vector-scale (2-component vector of float)

+0:63          Construct vec2 (2-component vector of float)

+0:63            'f' (float)

+0:63            Convert int to float (float)

+0:63              'i' (int)

+0:63          Convert int to float (float)

+0:63            'i' (int)

+0:64      add second child into first child (3-component vector of float)

+0:64        'f3' (3-component vector of float)

+0:64        add (3-component vector of float)

+0:64          Construct vec3 (3-component vector of float)

+0:64            'f' (float)

+0:64            Convert int to float (float)

+0:64              'i' (int)

+0:64            'f' (float)

+0:64          Convert int to float (float)

+0:64            'i' (int)

+0:65      add second child into first child (4-component vector of float)

+0:65        'f4' (4-component vector of float)

+0:65        subtract (4-component vector of float)

+0:65          Convert int to float (float)

+0:65            'i' (int)

+0:65          Construct vec4 (4-component vector of float)

+0:65            Convert bool to float (float)

+0:65              'b' (bool)

+0:65            Convert int to float (float)

+0:65              'i' (int)

+0:65            'f' (float)

+0:65            Convert int to float (float)

+0:65              'i' (int)

+0:67      add second child into first child (2-component vector of int)

+0:67        'i2' (2-component vector of int)

+0:67        Construct ivec2 (2-component vector of int)

+0:67          Convert float to int (int)

+0:67            'f' (float)

+0:67          'i' (int)

+0:68      add second child into first child (3-component vector of int)

+0:68        'i3' (3-component vector of int)

+0:68        Construct ivec3 (3-component vector of int)

+0:68          Convert float to int (int)

+0:68            'f' (float)

+0:68          'i' (int)

+0:68          Convert float to int (int)

+0:68            'f' (float)

+0:69      add second child into first child (4-component vector of int)

+0:69        'i4' (4-component vector of int)

+0:69        Construct ivec4 (4-component vector of int)

+0:69          Convert bool to int (int)

+0:69            'b' (bool)

+0:69          'i' (int)

+0:69          Convert float to int (int)

+0:69            'f' (float)

+0:69          'i' (int)

+0:71      Test condition and select (void)

+0:71        Condition

+0:72        logical-or (bool)

+0:71          logical-or (bool)

+0:71            logical-or (bool)

+0:71              Compare Less Than (bool)

+0:71                'f' (float)

+0:71                Convert int to float (float)

+0:71                  'i' (int)

+0:71              Compare Less Than (bool)

+0:71                Convert int to float (float)

+0:71                  'i' (int)

+0:71                'f' (float)

+0:72            Compare Equal (bool)

+0:72              'f2' (2-component vector of float)

+0:72              Convert int to float (2-component vector of float)

+0:72                'i2' (2-component vector of int)

+0:73          Compare Not Equal (bool)

+0:73            Convert int to float (3-component vector of float)

+0:73              'i3' (3-component vector of int)

+0:73            'f3' (3-component vector of float)

+0:71        true case

+0:74        move second child to first child (float)

+0:74          'f' (float)

+0:74          add (float)

+0:74            Test condition and select (float)

+0:74              Condition

+0:74              'b' (bool)

+0:74              true case

+0:74              Convert int to float (float)

+0:74                'i' (int)

+0:74              false case

+0:74              direct index (float)

+0:74                'f2' (2-component vector of float)

+0:74                0 (const int)

+0:74            Test condition and select (float)

+0:74              Condition

+0:74              direct index (bool)

+0:74                'b2' (2-component vector of bool)

+0:74                0 (const int)

+0:74              true case

+0:74              direct index (float)

+0:74                'f3' (3-component vector of float)

+0:74                0 (const int)

+0:74              false case

+0:74              Convert int to float (float)

+0:74                direct index (int)

+0:74                  'i2' (2-component vector of int)

+0:74                  1 (const int)

+0:76      move second child to first child (4-component vector of float)

+0:76        'gl_FragColor' (fragColor 4-component vector of float)

+0:86        Test condition and select (4-component vector of float)

+0:86          Condition

+0:85          logical-or (bool)

+0:84            logical-or (bool)

+0:83              logical-or (bool)

+0:82                logical-or (bool)

+0:81                  logical-or (bool)

+0:80                    logical-or (bool)

+0:79                      logical-or (bool)

+0:78                        logical-or (bool)

+0:77                          logical-or (bool)

+0:77                            'b' (bool)

+0:78                            direct index (bool)

+0:78                              'b2' (2-component vector of bool)

+0:78                              0 (const int)

+0:79                          direct index (bool)

+0:79                            'b2' (2-component vector of bool)

+0:79                            1 (const int)

+0:80                        direct index (bool)

+0:80                          'b3' (3-component vector of bool)

+0:80                          0 (const int)

+0:81                      direct index (bool)

+0:81                        'b3' (3-component vector of bool)

+0:81                        1 (const int)

+0:82                    direct index (bool)

+0:82                      'b3' (3-component vector of bool)

+0:82                      2 (const int)

+0:83                  direct index (bool)

+0:83                    'b4' (4-component vector of bool)

+0:83                    0 (const int)

+0:84                direct index (bool)

+0:84                  'b4' (4-component vector of bool)

+0:84                  1 (const int)

+0:85              direct index (bool)

+0:85                'b4' (4-component vector of bool)

+0:85                2 (const int)

+0:86            direct index (bool)

+0:86              'b4' (4-component vector of bool)

+0:86              3 (const int)

+0:86          true case

+0:105          Construct vec4 (4-component vector of float)

+0:105            add (float)

+0:104              add (float)

+0:103                add (float)

+0:102                  add (float)

+0:101                    add (float)

+0:100                      add (float)

+0:99                        add (float)

+0:98                          add (float)

+0:97                            add (float)

+0:96                              add (float)

+0:95                                Convert int to float (float)

+0:95                                  add (int)

+0:94                                    add (int)

+0:93                                      add (int)

+0:92                                        add (int)

+0:91                                          add (int)

+0:90                                            add (int)

+0:89                                              add (int)

+0:88                                                add (int)

+0:87                                                  add (int)

+0:87                                                    'i' (int)

+0:88                                                    direct index (int)

+0:88                                                      'i2' (2-component vector of int)

+0:88                                                      0 (const int)

+0:89                                                  direct index (int)

+0:89                                                    'i2' (2-component vector of int)

+0:89                                                    1 (const int)

+0:90                                                direct index (int)

+0:90                                                  'i3' (3-component vector of int)

+0:90                                                  0 (const int)

+0:91                                              direct index (int)

+0:91                                                'i3' (3-component vector of int)

+0:91                                                1 (const int)

+0:92                                            direct index (int)

+0:92                                              'i3' (3-component vector of int)

+0:92                                              2 (const int)

+0:93                                          direct index (int)

+0:93                                            'i4' (4-component vector of int)

+0:93                                            0 (const int)

+0:94                                        direct index (int)

+0:94                                          'i4' (4-component vector of int)

+0:94                                          1 (const int)

+0:95                                      direct index (int)

+0:95                                        'i4' (4-component vector of int)

+0:95                                        2 (const int)

+0:96                                    direct index (int)

+0:96                                      'i4' (4-component vector of int)

+0:96                                      3 (const int)

+0:97                                'f' (float)

+0:98                              direct index (float)

+0:98                                'f2' (2-component vector of float)

+0:98                                0 (const int)

+0:99                            direct index (float)

+0:99                              'f2' (2-component vector of float)

+0:99                              1 (const int)

+0:100                          direct index (float)

+0:100                            'f3' (3-component vector of float)

+0:100                            0 (const int)

+0:101                        direct index (float)

+0:101                          'f3' (3-component vector of float)

+0:101                          1 (const int)

+0:102                      direct index (float)

+0:102                        'f3' (3-component vector of float)

+0:102                        2 (const int)

+0:103                    direct index (float)

+0:103                      'f4' (4-component vector of float)

+0:103                      0 (const int)

+0:104                  direct index (float)

+0:104                    'f4' (4-component vector of float)

+0:104                    1 (const int)

+0:105                direct index (float)

+0:105                  'f4' (4-component vector of float)

+0:105                  2 (const int)

+0:106              direct index (float)

+0:106                'f4' (4-component vector of float)

+0:106                3 (const int)

+0:86          false case

+0:106          1.000000

+0:106          1.000000

+0:106          1.000000

+0:106          1.000000

+0:109      Sequence

+0:109        move second child to first child (4-component vector of int)

+0:109          'cv2' (4-component vector of int)

+0:109          1 (const int)

+0:109          1 (const int)

+0:109          1 (const int)

+0:109          1 (const int)

+0:110      Sequence

+0:110        move second child to first child (4-component vector of bool)

+0:110          'cv5' (4-component vector of bool)

+0:110          Convert int to bool (4-component vector of bool)

+0:110            'cv2' (4-component vector of int)

+0:111      add second child into first child (4-component vector of float)

+0:111        'gl_FragColor' (fragColor 4-component vector of float)

+0:111        Construct float (float)

+0:111          Convert bool to float (4-component vector of float)

+0:111            'cv5' (4-component vector of bool)

+0:?   Linker Objects

+0:?     'u_b' (uniform bool)

+0:?     'u_b2' (uniform 2-component vector of bool)

+0:?     'u_b3' (uniform 3-component vector of bool)

+0:?     'u_b4' (uniform 4-component vector of bool)

+0:?     'u_i' (uniform int)

+0:?     'u_i2' (uniform 2-component vector of int)

+0:?     'u_i3' (uniform 3-component vector of int)

+0:?     'u_i4' (uniform 4-component vector of int)

+0:?     'u_f' (uniform float)

+0:?     'u_f2' (uniform 2-component vector of float)

+0:?     'u_f3' (uniform 3-component vector of float)

+0:?     'u_f4' (uniform 4-component vector of float)

+0:?     'i_b' (uniform bool)

+0:?     'i_b2' (uniform 2-component vector of bool)

+0:?     'i_b3' (uniform 3-component vector of bool)

+0:?     'i_b4' (uniform 4-component vector of bool)

+0:?     'i_i' (flat in int)

+0:?     'i_i2' (flat in 2-component vector of int)

+0:?     'i_i3' (flat in 3-component vector of int)

+0:?     'i_i4' (flat in 4-component vector of int)

+0:?     'i_f' (smooth in float)

+0:?     'i_f2' (smooth in 2-component vector of float)

+0:?     'i_f3' (smooth in 3-component vector of float)

+0:?     'i_f4' (smooth in 4-component vector of float)

+

diff --git a/Test/baseResults/cppComplexExpr.vert.out b/Test/baseResults/cppComplexExpr.vert.out
new file mode 100644
index 0000000..48ae895
--- /dev/null
+++ b/Test/baseResults/cppComplexExpr.vert.out
@@ -0,0 +1,23 @@
+WARNING: 0:1: '#version' : statement missing: use #version on first line of shader 

+0:? Sequence

+0:4  Sequence

+0:4    move second child to first child (highp float)

+0:4      'sum' (highp float)

+0:4      0.000000

+0:6  Function Definition: main( (void)

+0:6    Function Parameters: 

+0:10    Sequence

+0:10      add second child into first child (highp float)

+0:10        'sum' (highp float)

+0:10        1.000000

+0:15      add second child into first child (highp float)

+0:15        'sum' (highp float)

+0:15        20.000000

+0:30      add second child into first child (highp float)

+0:30        'sum' (highp float)

+0:30        300.000000

+0:39      move second child to first child (highp 4-component vector of float)

+0:39        'gl_Position' (gl_Position highp 4-component vector of float)

+0:39        Construct vec4 (highp 4-component vector of float)

+0:39          'sum' (highp float)

+

diff --git a/Test/baseResults/cppIndent.vert.out b/Test/baseResults/cppIndent.vert.out
new file mode 100644
index 0000000..7ae92d6
--- /dev/null
+++ b/Test/baseResults/cppIndent.vert.out
@@ -0,0 +1,28 @@
+0:? Sequence

+0:5  Sequence

+0:5    move second child to first child (float)

+0:5      'sum' (float)

+0:5      0.000000

+0:7  Function Definition: main( (void)

+0:7    Function Parameters: 

+0:12    Sequence

+0:12      add second child into first child (float)

+0:12        'sum' (float)

+0:12        1.000000

+0:22      add second child into first child (float)

+0:22        'sum' (float)

+0:22        300.000000

+0:37      add second child into first child (float)

+0:37        'sum' (float)

+0:37        600000.000000

+0:47      add second child into first child (float)

+0:47        'sum' (float)

+0:47        80000000.000000

+0:52      add second child into first child (float)

+0:52        'sum' (float)

+0:52        900000000.000000

+0:56      move second child to first child (4-component vector of float)

+0:56        'gl_Position' (gl_Position 4-component vector of float)

+0:56        Construct vec4 (4-component vector of float)

+0:56          'sum' (float)

+

diff --git a/Test/baseResults/cppNest.vert.out b/Test/baseResults/cppNest.vert.out
new file mode 100644
index 0000000..1d33459
--- /dev/null
+++ b/Test/baseResults/cppNest.vert.out
@@ -0,0 +1,31 @@
+0:? Sequence

+0:5  Sequence

+0:5    move second child to first child (float)

+0:5      'sum' (float)

+0:5      0.000000

+0:7  Function Definition: main( (void)

+0:7    Function Parameters: 

+0:12    Sequence

+0:12      add second child into first child (float)

+0:12        'sum' (float)

+0:12        1.000000

+0:21      add second child into first child (float)

+0:21        'sum' (float)

+0:21        300.000000

+0:61      add second child into first child (float)

+0:61        'sum' (float)

+0:61        600000.000000

+0:65      add second child into first child (float)

+0:65        'sum' (float)

+0:65        80000000.000000

+0:69      add second child into first child (float)

+0:69        'sum' (float)

+0:69        900000000.000000

+0:76      add second child into first child (float)

+0:76        'sum' (float)

+0:76        7000000.000000

+0:86      move second child to first child (4-component vector of float)

+0:86        'gl_Position' (gl_Position 4-component vector of float)

+0:86        Construct vec4 (4-component vector of float)

+0:86          'sum' (float)

+

diff --git a/Test/baseResults/cppSimple.vert.out b/Test/baseResults/cppSimple.vert.out
new file mode 100644
index 0000000..6dcdca3
--- /dev/null
+++ b/Test/baseResults/cppSimple.vert.out
@@ -0,0 +1,73 @@
+ERROR: 0:77: '#error' : good1  

+ERROR: 0:81: '#error' : good2  

+ERROR: 0:85: '#error' : good3  

+ERROR: 0:89: '#error' : good4  

+ERROR: 0:93: '#error' : good5  

+ERROR: 0:97: '#error' : good6  

+ERROR: 0:101: 'preprocessor' : expected ')' 

+ERROR: 0:101: '#error' : bad1  

+WARNING: 0:104: '#if' : unexpected tokens following #if directive - expected a newline 

+ERROR: 0:105: '#error' : bad2  

+ERROR: 0:109: 'preprocessor' : expected ')' 

+ERROR: 0:109: '#error' : bad3  

+WARNING: 0:112: '#if' : unexpected tokens following #if directive - expected a newline 

+ERROR: 0:113: '#error' : bad4  

+ERROR: 0:117: 'preprocessor' : expected ')' 

+ERROR: 0:117: '#error' : bad5  

+WARNING: 0:120: '#if' : unexpected tokens following #if directive - expected a newline 

+ERROR: 0:121: '#error' : bad6  

+ERROR: 0:133: '#' : preprocessor directive cannot be preceded by another token 

+INTERNAL ERROR: 0:133: Unknown PP token

+ERROR: 0:133: '' :  syntax error

+ERROR: 17 compilation errors.  No code generated.

+

+ERROR: node is still EOpNull!

+0:5  Sequence

+0:5    move second child to first child (float)

+0:5      'sum' (float)

+0:5      0.000000

+0:7  Function Definition: main( (void)

+0:7    Function Parameters: 

+0:12    Sequence

+0:12      add second child into first child (float)

+0:12        'sum' (float)

+0:12        1.000000

+0:22      add second child into first child (float)

+0:22        'sum' (float)

+0:22        300.000000

+0:37      add second child into first child (float)

+0:37        'sum' (float)

+0:37        600000.000000

+0:48      add second child into first child (float)

+0:48        'sum' (float)

+0:48        7000000.000000

+0:53      add second child into first child (float)

+0:53        'sum' (float)

+0:53        80000000.000000

+0:58      add second child into first child (float)

+0:58        'sum' (float)

+0:58        900000000.000000

+0:65      add second child into first child (float)

+0:65        'sum' (float)

+0:65        0.050000

+0:69      move second child to first child (4-component vector of float)

+0:69        'gl_Position' (gl_Position 4-component vector of float)

+0:69        Construct vec4 (4-component vector of float)

+0:69          'sum' (float)

+0:124  Sequence

+0:124    move second child to first child (int)

+0:124      'linenumber' (int)

+0:124      124 (const int)

+0:125  Sequence

+0:125    move second child to first child (int)

+0:125      'filenumber' (int)

+0:125      0 (const int)

+0:126  Sequence

+0:126    move second child to first child (int)

+0:126      'version' (int)

+0:126      110 (const int)

+0:130  Sequence

+0:130    move second child to first child (float)

+0:130      'twoPi' (float)

+0:130      6.280000

+

diff --git a/Test/baseResults/dataOut.frag.out b/Test/baseResults/dataOut.frag.out
new file mode 100644
index 0000000..bbaf345
--- /dev/null
+++ b/Test/baseResults/dataOut.frag.out
@@ -0,0 +1,13 @@
+WARNING: 0:3: varying deprecated in version 130; may be removed in future release

+0:? Sequence

+0:5  Function Definition: main( (void)

+0:5    Function Parameters: 

+0:7    Sequence

+0:7      move second child to first child (4-component vector of float)

+0:7        direct index (fragColor 4-component vector of float)

+0:7          'gl_FragData' (fragColor 32-element array of 4-component vector of float)

+0:7          1 (const int)

+0:7        'Color' (smooth in 4-component vector of float)

+0:?   Linker Objects

+0:?     'Color' (smooth in 4-component vector of float)

+

diff --git a/Test/baseResults/dataOutIndirect.frag.out b/Test/baseResults/dataOutIndirect.frag.out
new file mode 100644
index 0000000..5a6f27d
--- /dev/null
+++ b/Test/baseResults/dataOutIndirect.frag.out
@@ -0,0 +1,14 @@
+WARNING: 0:3: varying deprecated in version 130; may be removed in future release

+0:? Sequence

+0:7  Function Definition: main( (void)

+0:7    Function Parameters: 

+0:9    Sequence

+0:9      move second child to first child (4-component vector of float)

+0:9        indirect index (fragColor 4-component vector of float)

+0:9          'gl_FragData' (fragColor 32-element array of 4-component vector of float)

+0:9          'i' (uniform int)

+0:9        'Color' (smooth in 4-component vector of float)

+0:?   Linker Objects

+0:?     'Color' (smooth in 4-component vector of float)

+0:?     'i' (uniform int)

+

diff --git a/Test/baseResults/deepRvalue.frag.out b/Test/baseResults/deepRvalue.frag.out
new file mode 100644
index 0000000..c7c5a7d
--- /dev/null
+++ b/Test/baseResults/deepRvalue.frag.out
@@ -0,0 +1,118 @@
+0:? Sequence

+0:5  Sequence

+0:5    move second child to first child (4-component vector of float)

+0:5      'v1' (4-component vector of float)

+0:5      2.000000

+0:5      3.000000

+0:5      5.000000

+0:5      7.000000

+0:6  Sequence

+0:6    move second child to first child (4-component vector of float)

+0:6      'v2' (4-component vector of float)

+0:6      11.000000

+0:6      13.000000

+0:6      17.000000

+0:6      19.000000

+0:7  Sequence

+0:7    move second child to first child (4-component vector of float)

+0:7      'v3' (4-component vector of float)

+0:7      23.000000

+0:7      29.000000

+0:7      31.000000

+0:7      37.000000

+0:8  Sequence

+0:8    move second child to first child (4-component vector of float)

+0:8      'v4' (4-component vector of float)

+0:8      41.000000

+0:8      43.000000

+0:8      47.000000

+0:8      53.000000

+0:16  Function Definition: main( (void)

+0:16    Function Parameters: 

+0:18    Sequence

+0:18      Sequence

+0:18        move second child to first child (4X4 matrix of float)

+0:18          'm' (4X4 matrix of float)

+0:18          Construct mat4 (4X4 matrix of float)

+0:18            'v1' (4-component vector of float)

+0:18            'v2' (4-component vector of float)

+0:18            'v3' (4-component vector of float)

+0:18            'v4' (4-component vector of float)

+0:20      Sequence

+0:20        move second child to first child (4X4 matrix of float)

+0:20          'mm' (4X4 matrix of float)

+0:20          component-wise multiply (4X4 matrix of float)

+0:20            'm' (4X4 matrix of float)

+0:20            'm' (4X4 matrix of float)

+0:21      Sequence

+0:21        move second child to first child (float)

+0:21          'f' (float)

+0:21          direct index (float)

+0:21            direct index (4-component vector of float)

+0:21              'mm' (4X4 matrix of float)

+0:21              1 (const int)

+0:21            3 (const int)

+0:24      Sequence

+0:24        move second child to first child (float)

+0:24          'g' (float)

+0:24          direct index (float)

+0:24            direct index (4-component vector of float)

+0:24              component-wise multiply (4X4 matrix of float)

+0:24                'm' (4X4 matrix of float)

+0:24                'm' (4X4 matrix of float)

+0:24              2 (const int)

+0:24            1 (const int)

+0:26      Sequence

+0:26        move second child to first child (float)

+0:26          'h' (float)

+0:26          5.000000

+0:28      Sequence

+0:28        move second child to first child (float)

+0:28          'i' (float)

+0:28          direct index (float)

+0:28            Function Call: texture2D(s21;vf2; (4-component vector of float)

+0:28              'sampler' (uniform sampler2D)

+0:28              0.500000

+0:28              0.500000

+0:28            1 (const int)

+0:30      add second child into first child (float)

+0:30        'i' (float)

+0:30        direct index (float)

+0:30          Test condition and select (4-component vector of float)

+0:30            Condition

+0:30            Compare Greater Than (bool)

+0:30              'i' (float)

+0:30              0.100000

+0:30            true case

+0:30            'v1' (4-component vector of float)

+0:30            false case

+0:30            'v2' (4-component vector of float)

+0:30          3 (const int)

+0:33      add second child into first child (float)

+0:33        'i' (float)

+0:33        direct index (float)

+0:33          direct index (2-component vector of float)

+0:33            b: direct index for structure (3-element array of 2-component vector of float)

+0:33              move second child to first child (structure)

+0:33                't' (structure)

+0:33                1 (const int)

+0:33                2.000000

+0:33                3.000000

+0:33                4.000000

+0:33                5.000000

+0:33                6.000000

+0:33                7.000000

+0:33                true (const bool)

+0:33              1 (const int)

+0:33            2 (const int)

+0:33          1 (const int)

+0:35      move second child to first child (4-component vector of float)

+0:35        'gl_FragColor' (fragColor 4-component vector of float)

+0:35        Construct vec4 (4-component vector of float)

+0:35          'f' (float)

+0:35          'g' (float)

+0:35          'h' (float)

+0:35          'i' (float)

+0:?   Linker Objects

+0:?     'sampler' (uniform sampler2D)

+

diff --git a/Test/baseResults/depthOut.frag.out b/Test/baseResults/depthOut.frag.out
new file mode 100644
index 0000000..77c448a
--- /dev/null
+++ b/Test/baseResults/depthOut.frag.out
@@ -0,0 +1,20 @@
+WARNING: 0:3: varying deprecated in version 130; may be removed in future release

+WARNING: 0:4: varying deprecated in version 130; may be removed in future release

+0:? Sequence

+0:8  Function Definition: main( (void)

+0:8    Function Parameters: 

+0:10    Sequence

+0:10      move second child to first child (float)

+0:10        'gl_FragDepth' (gl_FragDepth float)

+0:10        'Depth' (smooth in float)

+0:11      move second child to first child (4-component vector of float)

+0:11        'gl_FragColor' (fragColor 4-component vector of float)

+0:11        'Color' (smooth in 4-component vector of float)

+0:12      move second child to first child (4-component vector of float)

+0:12        'foo' (out 4-component vector of float)

+0:12        'Color' (smooth in 4-component vector of float)

+0:?   Linker Objects

+0:?     'Color' (smooth in 4-component vector of float)

+0:?     'Depth' (smooth in float)

+0:?     'foo' (out 4-component vector of float)

+

diff --git a/Test/baseResults/discard-dce.frag.out b/Test/baseResults/discard-dce.frag.out
new file mode 100644
index 0000000..6cc221f
--- /dev/null
+++ b/Test/baseResults/discard-dce.frag.out
@@ -0,0 +1,102 @@
+0:? Sequence

+0:4  Function Definition: main( (void)

+0:4    Function Parameters: 

+0:6    Sequence

+0:6      Sequence

+0:6        move second child to first child (4-component vector of float)

+0:6          'white' (4-component vector of float)

+0:6          1.000000

+0:6          1.000000

+0:6          1.000000

+0:6          1.000000

+0:7      Sequence

+0:7        move second child to first child (4-component vector of float)

+0:7          'black' (4-component vector of float)

+0:7          0.200000

+0:7          0.200000

+0:7          0.200000

+0:7          0.200000

+0:8      Sequence

+0:8        move second child to first child (4-component vector of float)

+0:8          'color' (4-component vector of float)

+0:8          'white' (4-component vector of float)

+0:11      Sequence

+0:11        move second child to first child (float)

+0:11          'x' (float)

+0:11          subtract (float)

+0:11            component-wise multiply (float)

+0:11              direct index (float)

+0:11                'tex_coord' (smooth in 2-component vector of float)

+0:11                0 (const int)

+0:11              2.000000

+0:11            1.000000

+0:12      Sequence

+0:12        move second child to first child (float)

+0:12          'y' (float)

+0:12          subtract (float)

+0:12            component-wise multiply (float)

+0:12              direct index (float)

+0:12                'tex_coord' (smooth in 2-component vector of float)

+0:12                1 (const int)

+0:12              2.000000

+0:12            1.000000

+0:14      Sequence

+0:14        move second child to first child (float)

+0:14          'radius' (float)

+0:14          sqrt (float)

+0:14            add (float)

+0:14              component-wise multiply (float)

+0:14                'x' (float)

+0:14                'x' (float)

+0:14              component-wise multiply (float)

+0:14                'y' (float)

+0:14                'y' (float)

+0:15      Test condition and select (void)

+0:15        Condition

+0:15        Compare Greater Than (bool)

+0:15          'radius' (float)

+0:15          1.000000

+0:15        true case

+0:16        Sequence

+0:16          Test condition and select (void)

+0:16            Condition

+0:16            Compare Greater Than (bool)

+0:16              'radius' (float)

+0:16              1.100000

+0:16            true case

+0:17            Sequence

+0:17              Pre-Increment (4-component vector of float)

+0:17                'color' (4-component vector of float)

+0:20          move second child to first child (4-component vector of float)

+0:20            'gl_FragColor' (fragColor 4-component vector of float)

+0:20            'color' (4-component vector of float)

+0:22          Test condition and select (void)

+0:22            Condition

+0:22            Compare Greater Than (bool)

+0:22              'radius' (float)

+0:22              1.200000

+0:22            true case

+0:23            Sequence

+0:23              Pre-Increment (4-component vector of float)

+0:23                'color' (4-component vector of float)

+0:26          Branch: Kill

+0:30      Test condition and select (void)

+0:30        Condition

+0:30        Compare Greater Than or Equal (bool)

+0:30          'radius' (float)

+0:30          0.750000

+0:30        true case

+0:31        subtract second child into first child (4-component vector of float)

+0:31          'color' (4-component vector of float)

+0:31          Absolute value (float)

+0:31            divide (float)

+0:31              pow (float)

+0:31                'radius' (float)

+0:31                16.000000

+0:31              2.000000

+0:33      move second child to first child (4-component vector of float)

+0:33        'gl_FragColor' (fragColor 4-component vector of float)

+0:33        'color' (4-component vector of float)

+0:?   Linker Objects

+0:?     'tex_coord' (smooth in 2-component vector of float)

+

diff --git a/Test/baseResults/doWhileLoop.frag.out b/Test/baseResults/doWhileLoop.frag.out
new file mode 100644
index 0000000..ead28f9
--- /dev/null
+++ b/Test/baseResults/doWhileLoop.frag.out
@@ -0,0 +1,28 @@
+0:? Sequence

+0:7  Function Definition: main( (void)

+0:7    Function Parameters: 

+0:9    Sequence

+0:9      Sequence

+0:9        move second child to first child (4-component vector of float)

+0:9          'color' (4-component vector of float)

+0:9          'BaseColor' (smooth in 4-component vector of float)

+0:13      Loop with condition not tested first

+0:13        Loop Condition

+0:13        Compare Less Than (bool)

+0:13          direct index (float)

+0:13            'color' (4-component vector of float)

+0:13            0 (const int)

+0:13          'd' (uniform float)

+0:13        Loop Body

+0:12        Sequence

+0:12          add second child into first child (4-component vector of float)

+0:12            'color' (4-component vector of float)

+0:12            'bigColor' (uniform 4-component vector of float)

+0:15      move second child to first child (4-component vector of float)

+0:15        'gl_FragColor' (fragColor 4-component vector of float)

+0:15        'color' (4-component vector of float)

+0:?   Linker Objects

+0:?     'bigColor' (uniform 4-component vector of float)

+0:?     'BaseColor' (smooth in 4-component vector of float)

+0:?     'd' (uniform float)

+

diff --git a/Test/baseResults/earlyReturnDiscard.frag.out b/Test/baseResults/earlyReturnDiscard.frag.out
new file mode 100644
index 0000000..f82ff3c
--- /dev/null
+++ b/Test/baseResults/earlyReturnDiscard.frag.out
@@ -0,0 +1,118 @@
+0:? Sequence

+0:19  Function Definition: main( (void)

+0:19    Function Parameters: 

+0:21    Sequence

+0:21      Sequence

+0:21        move second child to first child (4-component vector of float)

+0:21          'color' (4-component vector of float)

+0:21          'BaseColor' (smooth in 4-component vector of float)

+0:24      move second child to first child (4-component vector of float)

+0:24        'color2' (4-component vector of float)

+0:24        'otherColor' (uniform 4-component vector of float)

+0:26      Test condition and select (void)

+0:26        Condition

+0:26        Compare Greater Than (bool)

+0:26          'c' (smooth in float)

+0:26          'd' (uniform float)

+0:26        true case

+0:27        add second child into first child (4-component vector of float)

+0:27          'color' (4-component vector of float)

+0:27          'bigColor' (uniform 4-component vector of float)

+0:26        false case

+0:29        add second child into first child (4-component vector of float)

+0:29          'color' (4-component vector of float)

+0:29          'smallColor' (uniform 4-component vector of float)

+0:31      Test condition and select (void)

+0:31        Condition

+0:31        Compare Less Than (bool)

+0:31          direct index (float)

+0:31            'color' (4-component vector of float)

+0:31            2 (const int)

+0:31          'minimum' (uniform float)

+0:31        true case

+0:32        Branch: Return

+0:34      Post-Increment (float)

+0:34        direct index (float)

+0:34          'color' (4-component vector of float)

+0:34          2 (const int)

+0:36      Test condition and select (void)

+0:36        Condition

+0:36        Compare Greater Than (bool)

+0:36          direct index (float)

+0:36            'color' (4-component vector of float)

+0:36            2 (const int)

+0:36          'threshhold' (uniform float)

+0:36        true case

+0:37        Branch: Kill

+0:39      Post-Increment (4-component vector of float)

+0:39        'color' (4-component vector of float)

+0:42      Test condition and select (void)

+0:42        Condition

+0:42        Compare Greater Than (bool)

+0:42          direct index (float)

+0:42            'color' (4-component vector of float)

+0:42            3 (const int)

+0:42          'threshhold2' (uniform float)

+0:42        true case

+0:43        Sequence

+0:43          Test condition and select (void)

+0:43            Condition

+0:43            Compare Greater Than (bool)

+0:43              direct index (float)

+0:43                'color' (4-component vector of float)

+0:43                2 (const int)

+0:43              'threshhold2' (uniform float)

+0:43            true case

+0:44            Branch: Return

+0:43            false case

+0:45            Test condition and select (void)

+0:45              Condition

+0:45              'b' (uniform bool)

+0:45              true case

+0:46              Post-Increment (float)

+0:46                direct index (float)

+0:46                  'color' (4-component vector of float)

+0:46                  2 (const int)

+0:45              false case

+0:48              Sequence

+0:48                Test condition and select (void)

+0:48                  Condition

+0:48                  Compare Less Than (bool)

+0:48                    direct index (float)

+0:48                      'color' (4-component vector of float)

+0:48                      0 (const int)

+0:48                    'minimum' (uniform float)

+0:48                  true case

+0:49                  Sequence

+0:49                    Branch: Kill

+0:48                  false case

+0:51                  Sequence

+0:51                    Post-Increment (4-component vector of float)

+0:51                      'color' (4-component vector of float)

+0:42        false case

+0:55        Sequence

+0:55          Test condition and select (void)

+0:55            Condition

+0:55            'b' (uniform bool)

+0:55            true case

+0:56            Branch: Kill

+0:55            false case

+0:58            Branch: Return

+0:101      move second child to first child (4-component vector of float)

+0:101        'gl_FragColor' (fragColor 4-component vector of float)

+0:101        component-wise multiply (4-component vector of float)

+0:101          'color' (4-component vector of float)

+0:101          'color2' (4-component vector of float)

+0:?   Linker Objects

+0:?     'd' (uniform float)

+0:?     'bigColor' (uniform 4-component vector of float)

+0:?     'smallColor' (uniform 4-component vector of float)

+0:?     'otherColor' (uniform 4-component vector of float)

+0:?     'c' (smooth in float)

+0:?     'threshhold' (uniform float)

+0:?     'threshhold2' (uniform float)

+0:?     'threshhold3' (uniform float)

+0:?     'minimum' (uniform float)

+0:?     'BaseColor' (smooth in 4-component vector of float)

+0:?     'b' (uniform bool)

+

diff --git a/Test/baseResults/errors.frag.out b/Test/baseResults/errors.frag.out
new file mode 100644
index 0000000..73d991b
--- /dev/null
+++ b/Test/baseResults/errors.frag.out
@@ -0,0 +1,12 @@
+WARNING: 0:1: '#version' : statement missing: use #version on first line of shader 

+ERROR: 0:1: 'main' : function cannot take any parameter(s) 

+ERROR: 0:1: 'int' :  main function cannot return a value

+ERROR: 2 compilation errors.  No code generated.

+

+0:1Function Definition: main(i1; (mediump int)

+0:1  Function Parameters: 

+0:1    'foo' (in mediump int)

+0:3  Sequence

+0:3    Branch: Return with expression

+0:3      1 (const int)

+

diff --git a/Test/baseResults/flowControl.frag.out b/Test/baseResults/flowControl.frag.out
new file mode 100644
index 0000000..606671d
--- /dev/null
+++ b/Test/baseResults/flowControl.frag.out
@@ -0,0 +1,37 @@
+0:? Sequence

+0:10  Function Definition: main( (void)

+0:10    Function Parameters: 

+0:12    Sequence

+0:12      Sequence

+0:12        move second child to first child (4-component vector of float)

+0:12          'color' (4-component vector of float)

+0:12          'BaseColor' (smooth in 4-component vector of float)

+0:15      move second child to first child (4-component vector of float)

+0:15        'color2' (4-component vector of float)

+0:15        'otherColor' (uniform 4-component vector of float)

+0:17      Test condition and select (void)

+0:17        Condition

+0:17        Compare Greater Than (bool)

+0:17          'c' (smooth in float)

+0:17          'd' (uniform float)

+0:17        true case

+0:18        add second child into first child (4-component vector of float)

+0:18          'color' (4-component vector of float)

+0:18          'bigColor' (uniform 4-component vector of float)

+0:17        false case

+0:20        add second child into first child (4-component vector of float)

+0:20          'color' (4-component vector of float)

+0:20          'smallColor' (uniform 4-component vector of float)

+0:22      move second child to first child (4-component vector of float)

+0:22        'gl_FragColor' (fragColor 4-component vector of float)

+0:22        component-wise multiply (4-component vector of float)

+0:22          'color' (4-component vector of float)

+0:22          'color2' (4-component vector of float)

+0:?   Linker Objects

+0:?     'd' (uniform float)

+0:?     'bigColor' (uniform 4-component vector of float)

+0:?     'smallColor' (uniform 4-component vector of float)

+0:?     'otherColor' (uniform 4-component vector of float)

+0:?     'c' (smooth in float)

+0:?     'BaseColor' (smooth in 4-component vector of float)

+

diff --git a/Test/baseResults/forLoop.frag.out b/Test/baseResults/forLoop.frag.out
new file mode 100644
index 0000000..40e267c
--- /dev/null
+++ b/Test/baseResults/forLoop.frag.out
@@ -0,0 +1,34 @@
+0:? Sequence

+0:8  Function Definition: main( (void)

+0:8    Function Parameters: 

+0:10    Sequence

+0:10      Sequence

+0:10        move second child to first child (4-component vector of float)

+0:10          'color' (4-component vector of float)

+0:10          'BaseColor' (smooth in 4-component vector of float)

+0:12      Sequence

+0:12        Sequence

+0:12          move second child to first child (int)

+0:12            'i' (int)

+0:12            0 (const int)

+0:12        Loop with condition tested first

+0:12          Loop Condition

+0:12          Compare Less Than (bool)

+0:12            'i' (int)

+0:12            'Count' (uniform int)

+0:12          Loop Body

+0:13          Sequence

+0:13            add second child into first child (4-component vector of float)

+0:13              'color' (4-component vector of float)

+0:13              'bigColor' (uniform 4-component vector of float)

+0:12          Loop Terminal Expression

+0:12          Pre-Increment (int)

+0:12            'i' (int)

+0:16      move second child to first child (4-component vector of float)

+0:16        'gl_FragColor' (fragColor 4-component vector of float)

+0:16        'color' (4-component vector of float)

+0:?   Linker Objects

+0:?     'bigColor' (uniform 4-component vector of float)

+0:?     'BaseColor' (smooth in 4-component vector of float)

+0:?     'Count' (uniform int)

+

diff --git a/Test/baseResults/forwardRef.frag.out b/Test/baseResults/forwardRef.frag.out
new file mode 100644
index 0000000..46170da
--- /dev/null
+++ b/Test/baseResults/forwardRef.frag.out
@@ -0,0 +1,54 @@
+0:? Sequence

+0:11  Function Definition: main( (void)

+0:11    Function Parameters: 

+0:13    Sequence

+0:13      Sequence

+0:13        move second child to first child (4-component vector of float)

+0:13          'color' (4-component vector of float)

+0:13          Construct vec4 (4-component vector of float)

+0:13            Function Call: foo(vf4; (float)

+0:13              'BaseColor' (smooth in 4-component vector of float)

+0:15      Function Call: bar( (void)

+0:16      Sequence

+0:16        move second child to first child (float)

+0:16          'f' (float)

+0:16          Function Call: unreachableReturn( (float)

+0:18      move second child to first child (4-component vector of float)

+0:18        'gl_FragColor' (fragColor 4-component vector of float)

+0:18        vector-scale (4-component vector of float)

+0:18          'color' (4-component vector of float)

+0:18          'f' (float)

+0:21  Function Definition: bar( (void)

+0:21    Function Parameters: 

+0:25  Function Definition: unreachableReturn( (float)

+0:25    Function Parameters: 

+0:27    Sequence

+0:27      Function Call: bar( (void)

+0:28      Test condition and select (void)

+0:28        Condition

+0:28        Compare Less Than (bool)

+0:28          'd' (uniform float)

+0:28          4.200000

+0:28        true case

+0:29        Branch: Return with expression

+0:29          1.200000

+0:28        false case

+0:31        Branch: Return with expression

+0:31          4.500000

+0:34  Function Definition: foo(vf4; (float)

+0:34    Function Parameters: 

+0:34      'bar' (in 4-component vector of float)

+0:36    Sequence

+0:36      Branch: Return with expression

+0:36        add (float)

+0:36          direct index (float)

+0:36            'bar' (in 4-component vector of float)

+0:36            0 (const int)

+0:36          direct index (float)

+0:36            'bar' (in 4-component vector of float)

+0:36            1 (const int)

+0:?   Linker Objects

+0:?     'bigColor' (uniform 4-component vector of float)

+0:?     'BaseColor' (smooth in 4-component vector of float)

+0:?     'd' (uniform float)

+

diff --git a/Test/baseResults/functionCall.frag.out b/Test/baseResults/functionCall.frag.out
new file mode 100644
index 0000000..a162445
--- /dev/null
+++ b/Test/baseResults/functionCall.frag.out
@@ -0,0 +1,79 @@
+WARNING: 0:4: varying deprecated in version 130; may be removed in future release

+0:? Sequence

+0:7  Sequence

+0:7    move second child to first child (float)

+0:7      'h' (float)

+0:7      0.000000

+0:9  Function Definition: foo(vf4; (float)

+0:9    Function Parameters: 

+0:9      'bar' (in 4-component vector of float)

+0:11    Sequence

+0:11      Branch: Return with expression

+0:11        add (float)

+0:11          direct index (float)

+0:11            'bar' (in 4-component vector of float)

+0:11            0 (const int)

+0:11          direct index (float)

+0:11            'bar' (in 4-component vector of float)

+0:11            1 (const int)

+0:14  Function Definition: bar( (void)

+0:14    Function Parameters: 

+0:18  Function Definition: unreachableReturn( (float)

+0:18    Function Parameters: 

+0:20    Sequence

+0:20      Test condition and select (void)

+0:20        Condition

+0:20        Compare Less Than (bool)

+0:20          'd' (uniform float)

+0:20          4.200000

+0:20        true case

+0:21        Branch: Return with expression

+0:21          1.200000

+0:20        false case

+0:23        Branch: Return with expression

+0:23          4.500000

+0:27  Function Definition: missingReturn( (float)

+0:27    Function Parameters: 

+0:29    Sequence

+0:29      Test condition and select (void)

+0:29        Condition

+0:29        Compare Less Than (bool)

+0:29          'd' (uniform float)

+0:29          4.500000

+0:29        true case

+0:30        Sequence

+0:30          move second child to first child (float)

+0:30            'h' (float)

+0:30            'd' (uniform float)

+0:31          Branch: Return with expression

+0:31            3.900000

+0:35  Function Definition: main( (void)

+0:35    Function Parameters: 

+0:37    Sequence

+0:37      Sequence

+0:37        move second child to first child (4-component vector of float)

+0:37          'color' (4-component vector of float)

+0:37          Construct vec4 (4-component vector of float)

+0:37            Function Call: foo(vf4; (float)

+0:37              'BaseColor' (smooth in 4-component vector of float)

+0:39      Function Call: bar( (void)

+0:40      Sequence

+0:40        move second child to first child (float)

+0:40          'f' (float)

+0:40          Function Call: unreachableReturn( (float)

+0:41      Sequence

+0:41        move second child to first child (float)

+0:41          'g' (float)

+0:41          Function Call: missingReturn( (float)

+0:43      move second child to first child (4-component vector of float)

+0:43        'gl_FragColor' (fragColor 4-component vector of float)

+0:43        vector-scale (4-component vector of float)

+0:43          vector-scale (4-component vector of float)

+0:43            'color' (4-component vector of float)

+0:43            'f' (float)

+0:43          'h' (float)

+0:?   Linker Objects

+0:?     'bigColor' (uniform 4-component vector of float)

+0:?     'BaseColor' (smooth in 4-component vector of float)

+0:?     'd' (uniform float)

+

diff --git a/Test/baseResults/functionSemantics.frag.out b/Test/baseResults/functionSemantics.frag.out
new file mode 100644
index 0000000..35af953
--- /dev/null
+++ b/Test/baseResults/functionSemantics.frag.out
@@ -0,0 +1,100 @@
+0:? Sequence

+0:3  Function Definition: foo(i1;i1;i1;i1;i1;i1; (mediump int)

+0:3    Function Parameters: 

+0:3      'a' (in mediump int)

+0:3      'b' (const (read only) mediump int)

+0:3      'c' (in mediump int)

+0:3      'd' (const (read only) mediump int)

+0:3      'e' (out mediump int)

+0:3      'f' (inout mediump int)

+0:5    Sequence

+0:5      Sequence

+0:5        move second child to first child (mediump int)

+0:5          'sum' (mediump int)

+0:5          add (mediump int)

+0:5            add (mediump int)

+0:5              add (mediump int)

+0:5                add (mediump int)

+0:5                  'a' (in mediump int)

+0:5                  'b' (const (read only) mediump int)

+0:5                'c' (in mediump int)

+0:5              'd' (const (read only) mediump int)

+0:5            'f' (inout mediump int)

+0:8      multiply second child into first child (mediump int)

+0:8        'a' (in mediump int)

+0:8        64 (const int)

+0:10      multiply second child into first child (mediump int)

+0:10        'c' (in mediump int)

+0:10        64 (const int)

+0:12      move second child to first child (mediump int)

+0:12        'e' (out mediump int)

+0:12        1024 (const int)

+0:13      multiply second child into first child (mediump int)

+0:13        'f' (inout mediump int)

+0:13        64 (const int)

+0:15      add second child into first child (mediump int)

+0:15        'sum' (mediump int)

+0:15        add (mediump int)

+0:15          add (mediump int)

+0:15            add (mediump int)

+0:15              add (mediump int)

+0:15                add (mediump int)

+0:15                  'a' (in mediump int)

+0:15                  component-wise multiply (mediump int)

+0:15                    64 (const int)

+0:15                    'b' (const (read only) mediump int)

+0:15                'c' (in mediump int)

+0:15              component-wise multiply (mediump int)

+0:15                64 (const int)

+0:15                'd' (const (read only) mediump int)

+0:15            'e' (out mediump int)

+0:15          'f' (inout mediump int)

+0:18      Branch: Return with expression

+0:18        'sum' (mediump int)

+0:21  Function Definition: main( (void)

+0:21    Function Parameters: 

+0:?     Sequence

+0:24      Sequence

+0:24        move second child to first child (mediump int)

+0:24          't' (mediump int)

+0:24          2 (const int)

+0:28      move second child to first child (mediump int)

+0:28        direct index (mediump int)

+0:28          t: direct index for structure (mediump 4-component vector of int)

+0:28            'f' (structure)

+0:28            0 (const int)

+0:28          1 (const int)

+0:28        32 (const int)

+0:30      Sequence

+0:30        move second child to first child (mediump int)

+0:30          'color' (mediump int)

+0:30          Function Call: foo(i1;i1;i1;i1;i1;i1; (mediump int)

+0:30            1 (const int)

+0:30            2 (const int)

+0:30            add (mediump int)

+0:30              't' (mediump int)

+0:30              't' (mediump int)

+0:30            8 (const int)

+0:30            'e' (mediump int)

+0:30            direct index (mediump int)

+0:30              t: direct index for structure (mediump 4-component vector of int)

+0:30                'f' (structure)

+0:30                0 (const int)

+0:30              1 (const int)

+0:32      add second child into first child (mediump int)

+0:32        'color' (mediump int)

+0:32        component-wise multiply (mediump int)

+0:32          128 (const int)

+0:32          add (mediump int)

+0:32            'e' (mediump int)

+0:32            direct index (mediump int)

+0:32              t: direct index for structure (mediump 4-component vector of int)

+0:32                'f' (structure)

+0:32                0 (const int)

+0:32              1 (const int)

+0:35      move second child to first child (mediump 4-component vector of float)

+0:35        'gl_FragColor' (fragColor mediump 4-component vector of float)

+0:35        Construct vec4 (mediump 4-component vector of float)

+0:35          Convert int to float (mediump float)

+0:35            'color' (mediump int)

+

diff --git a/Test/baseResults/length.frag.out b/Test/baseResults/length.frag.out
new file mode 100644
index 0000000..bb8f8a6
--- /dev/null
+++ b/Test/baseResults/length.frag.out
@@ -0,0 +1,21 @@
+0:? Sequence

+0:11  Function Definition: main( (void)

+0:11    Function Parameters: 

+0:?     Sequence

+0:15      Sequence

+0:15        move second child to first child (2-component vector of float)

+0:15          't' (2-component vector of float)

+0:15          add (2-component vector of float)

+0:15            direct index (smooth in 2-component vector of float)

+0:15              'v' (smooth in 2-element array of 2-component vector of float)

+0:15              0 (const int)

+0:15            direct index (smooth in 2-component vector of float)

+0:15              'v' (smooth in 2-element array of 2-component vector of float)

+0:15              1 (const int)

+0:17      move second child to first child (4-component vector of float)

+0:17        'gl_FragColor' (fragColor 4-component vector of float)

+0:17        30.000000

+0:17        30.000000

+0:17        30.000000

+0:17        30.000000

+

diff --git a/Test/baseResults/lineContinuation.vert.out b/Test/baseResults/lineContinuation.vert.out
new file mode 100644
index 0000000..2e56483
--- /dev/null
+++ b/Test/baseResults/lineContinuation.vert.out
@@ -0,0 +1,17 @@
+ERROR: 0:6: '#error' : e1  

+ERROR: 0:11: '#error' : e2  

+ERROR: 0:18: '#error' : e3  

+ERROR: 3 compilation errors.  No code generated.

+

+ERROR: node is still EOpNull!

+0:20  Function Definition: main( (void)

+0:20    Function Parameters: 

+0:20    Sequence

+0:20      move second child to first child (highp 4-component vector of float)

+0:20        'gl_Position' (gl_Position highp 4-component vector of float)

+0:20        Construct vec4 (highp 4-component vector of float)

+0:20          'foo' (highp float)

+0:?   Linker Objects

+0:?     'gl_VertexID' (gl_VertexId highp int)

+0:?     'gl_InstanceID' (gl_InstanceId highp int)

+

diff --git a/Test/baseResults/localAggregates.frag.out b/Test/baseResults/localAggregates.frag.out
new file mode 100644
index 0000000..3e839fb
--- /dev/null
+++ b/Test/baseResults/localAggregates.frag.out
@@ -0,0 +1,168 @@
+WARNING: 0:4: varying deprecated in version 130; may be removed in future release

+WARNING: 0:5: varying deprecated in version 130; may be removed in future release

+0:? Sequence

+0:34  Function Definition: main( (void)

+0:34    Function Parameters: 

+0:?     Sequence

+0:41      move second child to first child (structure)

+0:41        'locals2' (structure)

+0:41        s2_1: direct index for structure (structure)

+0:41          'foo3' (uniform structure)

+0:41          0 (const int)

+0:43      Test condition and select (void)

+0:43        Condition

+0:43        Compare Greater Than (bool)

+0:43          i: direct index for structure (int)

+0:43            s2_1: direct index for structure (structure)

+0:43              'foo3' (uniform structure)

+0:43              0 (const int)

+0:43            0 (const int)

+0:43          0 (const int)

+0:43        true case

+0:44        Sequence

+0:44          move second child to first child (float)

+0:44            f: direct index for structure (float)

+0:44              s1_1: direct index for structure (structure)

+0:44                'locals2' (structure)

+0:44                2 (const int)

+0:44              1 (const int)

+0:44            1.000000

+0:45          move second child to first child (float)

+0:45            direct index (float)

+0:45              'localFArray' (16-element array of float)

+0:45              4 (const int)

+0:45            direct index (float)

+0:45              'coord' (smooth in 2-component vector of float)

+0:45              0 (const int)

+0:46          move second child to first child (int)

+0:46            direct index (int)

+0:46              'localIArray' (8-element array of int)

+0:46              2 (const int)

+0:46            i: direct index for structure (int)

+0:46              s2_1: direct index for structure (structure)

+0:46                'foo3' (uniform structure)

+0:46                0 (const int)

+0:46              0 (const int)

+0:43        false case

+0:48        Sequence

+0:48          move second child to first child (float)

+0:48            f: direct index for structure (float)

+0:48              s1_1: direct index for structure (structure)

+0:48                'locals2' (structure)

+0:48                2 (const int)

+0:48              1 (const int)

+0:48            direct index (float)

+0:48              'coord' (smooth in 2-component vector of float)

+0:48              0 (const int)

+0:49          move second child to first child (float)

+0:49            direct index (float)

+0:49              'localFArray' (16-element array of float)

+0:49              4 (const int)

+0:49            1.000000

+0:50          move second child to first child (int)

+0:50            direct index (int)

+0:50              'localIArray' (8-element array of int)

+0:50              2 (const int)

+0:50            0 (const int)

+0:53      Test condition and select (void)

+0:53        Condition

+0:53        Compare Equal (bool)

+0:53          direct index (int)

+0:53            'localIArray' (8-element array of int)

+0:53            2 (const int)

+0:53          0 (const int)

+0:53        true case

+0:54        Pre-Increment (float)

+0:54          direct index (float)

+0:54            'localFArray' (16-element array of float)

+0:54            4 (const int)

+0:57      Sequence

+0:57        move second child to first child (int)

+0:57          'x' (int)

+0:57          5 (const int)

+0:58      move second child to first child (float)

+0:58        indirect index (float)

+0:58          'localArray' (16-element array of float)

+0:58          'x' (int)

+0:58        direct index (float)

+0:58          'coord' (smooth in 2-component vector of float)

+0:58          0 (const int)

+0:62      Sequence

+0:62        Sequence

+0:62          move second child to first child (int)

+0:62            'i' (int)

+0:62            0 (const int)

+0:62        Loop with condition tested first

+0:62          Loop Condition

+0:62          Compare Less Than (bool)

+0:62            'i' (int)

+0:62            16 (const int)

+0:62          Loop Body

+0:63          move second child to first child (float)

+0:63            indirect index (float)

+0:63              'a' (16-element array of float)

+0:63              'i' (int)

+0:63            0.000000

+0:62          Loop Terminal Expression

+0:62          Post-Increment (int)

+0:62            'i' (int)

+0:65      Test condition and select (void)

+0:65        Condition

+0:65        Compare Equal (bool)

+0:65          'condition' (uniform int)

+0:65          1 (const int)

+0:65        true case

+0:66        move second child to first child (16-element array of float)

+0:66          'a' (16-element array of float)

+0:66          'localArray' (16-element array of float)

+0:68      move second child to first child (4-component vector of float)

+0:68        bleh: direct index for structure (4-component vector of float)

+0:68          'locals2' (structure)

+0:68          3 (const int)

+0:68        'color' (smooth in 4-component vector of float)

+0:69      move second child to first child (float)

+0:69        direct index (float)

+0:69          bleh: direct index for structure (4-component vector of float)

+0:69            'locals2' (structure)

+0:69            3 (const int)

+0:69          2 (const int)

+0:69        direct index (float)

+0:69          'coord' (smooth in 2-component vector of float)

+0:69          1 (const int)

+0:71      move second child to first child (4-component vector of float)

+0:71        'gl_FragColor' (fragColor 4-component vector of float)

+0:71        component-wise multiply (4-component vector of float)

+0:71          vector-scale (4-component vector of float)

+0:71            bleh: direct index for structure (4-component vector of float)

+0:71              'locals2' (structure)

+0:71              3 (const int)

+0:71            add (float)

+0:71              add (float)

+0:71                add (float)

+0:71                  direct index (float)

+0:71                    'localFArray' (16-element array of float)

+0:71                    4 (const int)

+0:71                  f: direct index for structure (float)

+0:71                    s1_1: direct index for structure (structure)

+0:71                      'locals2' (structure)

+0:71                      2 (const int)

+0:71                    1 (const int)

+0:71                indirect index (float)

+0:71                  'localArray' (16-element array of float)

+0:71                  'x' (int)

+0:71              indirect index (float)

+0:71                'a' (16-element array of float)

+0:71                'x' (int)

+0:71          Function Call: texture2D(s21;vf2; (4-component vector of float)

+0:71            'sampler' (uniform sampler2D)

+0:71            'coord' (smooth in 2-component vector of float)

+0:?   Linker Objects

+0:?     'sampler' (uniform sampler2D)

+0:?     'coord' (smooth in 2-component vector of float)

+0:?     'color' (smooth in 4-component vector of float)

+0:?     'foo' (uniform structure)

+0:?     'foo2' (uniform structure)

+0:?     'foo3' (uniform structure)

+0:?     'uFloatArray' (uniform 16-element array of float)

+0:?     'condition' (uniform int)

+

diff --git a/Test/baseResults/loops.frag.out b/Test/baseResults/loops.frag.out
new file mode 100644
index 0000000..0cc1c9a
--- /dev/null
+++ b/Test/baseResults/loops.frag.out
@@ -0,0 +1,856 @@
+WARNING: 0:14: varying deprecated in version 130; may be removed in future release

+0:? Sequence

+0:53  Function Definition: main( (void)

+0:53    Function Parameters: 

+0:55    Sequence

+0:55      Sequence

+0:55        move second child to first child (4-component vector of float)

+0:55          'color' (4-component vector of float)

+0:55          'BaseColor' (smooth in 4-component vector of float)

+0:58      Loop with condition tested first

+0:58        Loop Condition

+0:58        true (const bool)

+0:58        Loop Body

+0:59        Sequence

+0:59          Test condition and select (void)

+0:59            Condition

+0:59            Compare Less Than (bool)

+0:59              direct index (float)

+0:59                'color' (4-component vector of float)

+0:59                0 (const int)

+0:59              0.330000

+0:59            true case

+0:60            Sequence

+0:60              add second child into first child (4-component vector of float)

+0:60                'color' (4-component vector of float)

+0:60                0.330000

+0:60                0.330000

+0:60                0.330000

+0:60                0.330000

+0:61              Branch: Break

+0:63          Test condition and select (void)

+0:63            Condition

+0:63            Compare Less Than (bool)

+0:63              direct index (float)

+0:63                'color' (4-component vector of float)

+0:63                0 (const int)

+0:63              0.660000

+0:63            true case

+0:64            Sequence

+0:64              add second child into first child (4-component vector of float)

+0:64                'color' (4-component vector of float)

+0:64                0.660000

+0:64                0.660000

+0:64                0.660000

+0:64                0.660000

+0:65              Branch: Break

+0:68          add second child into first child (4-component vector of float)

+0:68            'color' (4-component vector of float)

+0:68            0.330000

+0:68            0.330000

+0:68            0.330000

+0:68            0.330000

+0:69          Branch: Break

+0:73      Loop with condition tested first

+0:73        Loop Condition

+0:73        Compare Less Than (bool)

+0:73          direct index (float)

+0:73            'color' (4-component vector of float)

+0:73            0 (const int)

+0:73          'd' (uniform float)

+0:73        Loop Body

+0:74        Sequence

+0:74          add second child into first child (4-component vector of float)

+0:74            'color' (4-component vector of float)

+0:74            'bigColor' (uniform 4-component vector of float)

+0:78      Loop with condition tested first

+0:78        Loop Condition

+0:78        Compare Less Than (bool)

+0:78          direct index (float)

+0:78            'color' (4-component vector of float)

+0:78            2 (const int)

+0:78          'd' (uniform float)

+0:78        Loop Body

+0:79        Sequence

+0:79          add second child into first child (4-component vector of float)

+0:79            'color' (4-component vector of float)

+0:79            'bigColor1_1' (uniform 4-component vector of float)

+0:80          Test condition and select (void)

+0:80            Condition

+0:80            Compare Less Than (bool)

+0:80              direct index (float)

+0:80                'color' (4-component vector of float)

+0:80                3 (const int)

+0:80              'd' (uniform float)

+0:80            true case

+0:81            Branch: Continue

+0:83          add second child into first child (4-component vector of float)

+0:83            'color' (4-component vector of float)

+0:83            'bigColor1_1' (uniform 4-component vector of float)

+0:87      Loop with condition tested first

+0:87        Loop Condition

+0:87        Compare Less Than (bool)

+0:87          direct index (float)

+0:87            'color' (4-component vector of float)

+0:87            0 (const int)

+0:87          42.000000

+0:87        Loop Body

+0:88        Sequence

+0:88          Pre-Increment (4-component vector of float)

+0:88            'color' (4-component vector of float)

+0:92      Loop with condition tested first

+0:92        Loop Condition

+0:92        logical-and (bool)

+0:92          Compare Less Than (bool)

+0:92            direct index (float)

+0:92              'color' (4-component vector of float)

+0:92              3 (const int)

+0:92            'd2' (uniform float)

+0:92          Compare Less Than (bool)

+0:92            direct index (float)

+0:92              'color' (4-component vector of float)

+0:92              1 (const int)

+0:92            'd3' (uniform float)

+0:92        Loop Body

+0:93        Sequence

+0:93          add second child into first child (4-component vector of float)

+0:93            'color' (4-component vector of float)

+0:93            'bigColor1_2' (uniform 4-component vector of float)

+0:97      Loop with condition tested first

+0:97        Loop Condition

+0:97        Compare Less Than (bool)

+0:97          direct index (float)

+0:97            'color' (4-component vector of float)

+0:97            2 (const int)

+0:97          'd3' (uniform float)

+0:97        Loop Body

+0:98        Sequence

+0:98          add second child into first child (4-component vector of float)

+0:98            'color' (4-component vector of float)

+0:98            'bigColor1_3' (uniform 4-component vector of float)

+0:99          Test condition and select (void)

+0:99            Condition

+0:99            Compare Less Than (bool)

+0:99              direct index (float)

+0:99                'color' (4-component vector of float)

+0:99                1 (const int)

+0:99              'd4' (uniform float)

+0:99            true case

+0:100            Branch: Break

+0:101          add second child into first child (4-component vector of float)

+0:101            'color' (4-component vector of float)

+0:101            'bigColor1_3' (uniform 4-component vector of float)

+0:105      Sequence

+0:105        Sequence

+0:105          move second child to first child (int)

+0:105            'i' (int)

+0:105            0 (const int)

+0:105        Loop with condition tested first

+0:105          Loop Condition

+0:105          Compare Less Than (bool)

+0:105            'i' (int)

+0:105            'Count' (uniform int)

+0:105          Loop Body

+0:106          Sequence

+0:106            add second child into first child (4-component vector of float)

+0:106              'color' (4-component vector of float)

+0:106              'bigColor2' (uniform 4-component vector of float)

+0:105          Loop Terminal Expression

+0:105          Pre-Increment (int)

+0:105            'i' (int)

+0:112      Loop with condition not tested first

+0:112        Loop Condition

+0:112        Compare Less Than (bool)

+0:112          direct index (float)

+0:112            'color' (4-component vector of float)

+0:112            0 (const int)

+0:112          'd2' (uniform float)

+0:112        Loop Body

+0:111        Sequence

+0:111          add second child into first child (4-component vector of float)

+0:111            'color' (4-component vector of float)

+0:111            'bigColor3' (uniform 4-component vector of float)

+0:115      Sequence

+0:115        Sequence

+0:115          move second child to first child (int)

+0:115            'i' (int)

+0:115            0 (const int)

+0:115        Loop with condition tested first

+0:115          Loop Condition

+0:115          Compare Less Than (bool)

+0:115            'i' (int)

+0:115            42 (const int)

+0:115          Loop Body

+0:116          Sequence

+0:116            add second child into first child (float)

+0:116              direct index (float)

+0:116                'color' (4-component vector of float)

+0:116                2 (const int)

+0:116              'd3' (uniform float)

+0:115          Loop Terminal Expression

+0:115          Pre-Increment (int)

+0:115            'i' (int)

+0:120      Sequence

+0:120        Sequence

+0:120          move second child to first child (int)

+0:120            'i' (int)

+0:120            0 (const int)

+0:120        Loop with condition tested first

+0:120          Loop Condition

+0:120          Compare Less Than (bool)

+0:120            'i' (int)

+0:120            100 (const int)

+0:120          Loop Body

+0:121          Sequence

+0:121            Test condition and select (void)

+0:121              Condition

+0:121              Compare Less Than (bool)

+0:121                direct index (float)

+0:121                  'color' (4-component vector of float)

+0:121                  2 (const int)

+0:121                20.000000

+0:121              true case

+0:122              Post-Increment (float)

+0:122                direct index (float)

+0:122                  'color' (4-component vector of float)

+0:122                  0 (const int)

+0:121              false case

+0:124              Post-Increment (float)

+0:124                direct index (float)

+0:124                  'color' (4-component vector of float)

+0:124                  1 (const int)

+0:125            Test condition and select (void)

+0:125              Condition

+0:125              Compare Less Than (bool)

+0:125                direct index (float)

+0:125                  'color' (4-component vector of float)

+0:125                  3 (const int)

+0:125                20.000000

+0:125              true case

+0:126              Test condition and select (void)

+0:126                Condition

+0:126                Compare Greater Than (bool)

+0:126                  direct index (float)

+0:126                    'color' (4-component vector of float)

+0:126                    2 (const int)

+0:126                  direct index (float)

+0:126                    'color' (4-component vector of float)

+0:126                    1 (const int)

+0:126                true case

+0:127                0 (const int)

+0:120          Loop Terminal Expression

+0:120          Pre-Increment (int)

+0:120            'i' (int)

+0:131      Sequence

+0:131        Sequence

+0:131          move second child to first child (int)

+0:131            'i' (int)

+0:131            0 (const int)

+0:131        Loop with condition tested first

+0:131          Loop Condition

+0:131          Compare Less Than (bool)

+0:131            'i' (int)

+0:131            120 (const int)

+0:131          Loop Body

+0:132          Sequence

+0:132            Test condition and select (void)

+0:132              Condition

+0:132              Compare Less Than (bool)

+0:132                direct index (float)

+0:132                  'color' (4-component vector of float)

+0:132                  2 (const int)

+0:132                20.000000

+0:132              true case

+0:133              Post-Increment (float)

+0:133                direct index (float)

+0:133                  'color' (4-component vector of float)

+0:133                  0 (const int)

+0:132              false case

+0:135              Post-Increment (float)

+0:135                direct index (float)

+0:135                  'color' (4-component vector of float)

+0:135                  1 (const int)

+0:131          Loop Terminal Expression

+0:131          Pre-Increment (int)

+0:131            'i' (int)

+0:139      Sequence

+0:139        Sequence

+0:139          move second child to first child (int)

+0:139            'i' (int)

+0:139            0 (const int)

+0:139        Loop with condition tested first

+0:139          Loop Condition

+0:139          Compare Less Than (bool)

+0:139            'i' (int)

+0:139            42 (const int)

+0:139          Loop Body

+0:140          Sequence

+0:140            add second child into first child (float)

+0:140              direct index (float)

+0:140                'color' (4-component vector of float)

+0:140                2 (const int)

+0:140              'd3' (uniform float)

+0:141            Test condition and select (void)

+0:141              Condition

+0:141              Compare Less Than (bool)

+0:141                direct index (float)

+0:141                  'color' (4-component vector of float)

+0:141                  0 (const int)

+0:141                'd4' (uniform float)

+0:141              true case

+0:142              Branch: Continue

+0:143            Pre-Increment (float)

+0:143              direct index (float)

+0:143                'color' (4-component vector of float)

+0:143                3 (const int)

+0:139          Loop Terminal Expression

+0:139          Pre-Increment (int)

+0:139            'i' (int)

+0:147      Sequence

+0:147        Sequence

+0:147          move second child to first child (int)

+0:147            'i' (int)

+0:147            0 (const int)

+0:147        Loop with condition tested first

+0:147          Loop Condition

+0:147          Compare Less Than (bool)

+0:147            'i' (int)

+0:147            42 (const int)

+0:147          Loop Body

+0:148          Sequence

+0:148            add second child into first child (float)

+0:148              direct index (float)

+0:148                'color' (4-component vector of float)

+0:148                2 (const int)

+0:148              'd3' (uniform float)

+0:149            Test condition and select (void)

+0:149              Condition

+0:149              Compare Less Than (bool)

+0:149                direct index (float)

+0:149                  'color' (4-component vector of float)

+0:149                  0 (const int)

+0:149                'd4' (uniform float)

+0:149              true case

+0:150              Branch: Break

+0:151            Pre-Increment (float)

+0:151              direct index (float)

+0:151                'color' (4-component vector of float)

+0:151                3 (const int)

+0:147          Loop Terminal Expression

+0:147          Pre-Increment (int)

+0:147            'i' (int)

+0:163      Loop with condition not tested first

+0:163        Loop Condition

+0:163        Compare Less Than (bool)

+0:163          direct index (float)

+0:163            'color' (4-component vector of float)

+0:163            2 (const int)

+0:163          'd4' (uniform float)

+0:163        Loop Body

+0:156        Sequence

+0:156          add second child into first child (4-component vector of float)

+0:156            'color' (4-component vector of float)

+0:156            'bigColor4' (uniform 4-component vector of float)

+0:157          Test condition and select (void)

+0:157            Condition

+0:157            Compare Less Than (bool)

+0:157              direct index (float)

+0:157                'color' (4-component vector of float)

+0:157                0 (const int)

+0:157              'd4' (uniform float)

+0:157            true case

+0:158            Branch: Continue

+0:159          Test condition and select (void)

+0:159            Condition

+0:159            Compare Less Than (bool)

+0:159              direct index (float)

+0:159                'color' (4-component vector of float)

+0:159                1 (const int)

+0:159              'd4' (uniform float)

+0:159            true case

+0:160            add second child into first child (float)

+0:160              direct index (float)

+0:160                'color' (4-component vector of float)

+0:160                1 (const int)

+0:160              'd4' (uniform float)

+0:159            false case

+0:162            add second child into first child (float)

+0:162              direct index (float)

+0:162                'color' (4-component vector of float)

+0:162                0 (const int)

+0:162              'd4' (uniform float)

+0:170      Loop with condition not tested first

+0:170        Loop Condition

+0:170        Compare Less Than (bool)

+0:170          direct index (float)

+0:170            'color' (4-component vector of float)

+0:170            0 (const int)

+0:170          'd5' (uniform float)

+0:170        Loop Body

+0:167        Sequence

+0:167          add second child into first child (4-component vector of float)

+0:167            'color' (4-component vector of float)

+0:167            'bigColor5' (uniform 4-component vector of float)

+0:168          Test condition and select (void)

+0:168            Condition

+0:168            Compare Less Than (bool)

+0:168              direct index (float)

+0:168                'color' (4-component vector of float)

+0:168                1 (const int)

+0:168              'd5' (uniform float)

+0:168            true case

+0:169            add second child into first child (float)

+0:169              direct index (float)

+0:169                'color' (4-component vector of float)

+0:169                1 (const int)

+0:169              'd5' (uniform float)

+0:173      Test condition and select (void)

+0:173        Condition

+0:173        Compare Less Than (bool)

+0:173          direct index (float)

+0:173            'color' (4-component vector of float)

+0:173            0 (const int)

+0:173          'd6' (uniform float)

+0:173        true case

+0:174        Sequence

+0:174          Loop with condition tested first

+0:174            Loop Condition

+0:174            Compare Less Than (bool)

+0:174              direct index (float)

+0:174                'color' (4-component vector of float)

+0:174                1 (const int)

+0:174              'd6' (uniform float)

+0:174            Loop Body

+0:175            add second child into first child (4-component vector of float)

+0:175              'color' (4-component vector of float)

+0:175              'bigColor6' (uniform 4-component vector of float)

+0:173        false case

+0:177        Sequence

+0:177          Loop with condition tested first

+0:177            Loop Condition

+0:177            Compare Less Than (bool)

+0:177              direct index (float)

+0:177                'color' (4-component vector of float)

+0:177                2 (const int)

+0:177              'd6' (uniform float)

+0:177            Loop Body

+0:178            add second child into first child (float)

+0:178              direct index (float)

+0:178                'color' (4-component vector of float)

+0:178                2 (const int)

+0:178              direct index (float)

+0:178                'bigColor6' (uniform 4-component vector of float)

+0:178                2 (const int)

+0:182      Test condition and select (void)

+0:182        Condition

+0:182        Compare Less Than (bool)

+0:182          direct index (float)

+0:182            'color' (4-component vector of float)

+0:182            0 (const int)

+0:182          'd6' (uniform float)

+0:182        true case

+0:183        Sequence

+0:183          Loop with condition tested first

+0:183            Loop Condition

+0:183            Compare Less Than (bool)

+0:183              direct index (float)

+0:183                'color' (4-component vector of float)

+0:183                1 (const int)

+0:183              'd6' (uniform float)

+0:183            Loop Body

+0:184            Sequence

+0:184              add second child into first child (4-component vector of float)

+0:184                'color' (4-component vector of float)

+0:184                'bigColor6' (uniform 4-component vector of float)

+0:185              Test condition and select (void)

+0:185                Condition

+0:185                Compare Less Than (bool)

+0:185                  'd7' (uniform float)

+0:185                  1.000000

+0:185                true case

+0:186                Branch: Break

+0:182        false case

+0:190        Sequence

+0:190          Loop with condition tested first

+0:190            Loop Condition

+0:190            Compare Less Than (bool)

+0:190              direct index (float)

+0:190                'color' (4-component vector of float)

+0:190                2 (const int)

+0:190              'd6' (uniform float)

+0:190            Loop Body

+0:191            add second child into first child (float)

+0:191              direct index (float)

+0:191                'color' (4-component vector of float)

+0:191                2 (const int)

+0:191              direct index (float)

+0:191                'bigColor6' (uniform 4-component vector of float)

+0:191                2 (const int)

+0:209      Loop with condition not tested first

+0:209        Loop Condition

+0:209        true (const bool)

+0:209        Loop Body

+0:197        Sequence

+0:197          Test condition and select (void)

+0:197            Condition

+0:197            Compare Less Than (bool)

+0:197              'd7' (uniform float)

+0:197              0.000000

+0:197            true case

+0:198            Branch: Break

+0:200          add second child into first child (4-component vector of float)

+0:200            'color' (4-component vector of float)

+0:200            'bigColor7' (uniform 4-component vector of float)

+0:202          Test condition and select (void)

+0:202            Condition

+0:202            Compare Less Than (bool)

+0:202              'd7' (uniform float)

+0:202              1.000000

+0:202            true case

+0:203            Sequence

+0:203              Post-Increment (float)

+0:203                direct index (float)

+0:203                  'color' (4-component vector of float)

+0:203                  2 (const int)

+0:204              Branch: Break

+0:207          add second child into first child (4-component vector of float)

+0:207            'color' (4-component vector of float)

+0:207            'BaseColor' (smooth in 4-component vector of float)

+0:234      Loop with condition not tested first

+0:234        Loop Condition

+0:234        Compare Less Than (bool)

+0:234          direct index (float)

+0:234            'color' (4-component vector of float)

+0:234            2 (const int)

+0:234          'd8' (uniform float)

+0:234        Loop Body

+0:217        Sequence

+0:217          Test condition and select (void)

+0:217            Condition

+0:217            Compare Less Than (bool)

+0:217              'd8' (uniform float)

+0:217              0.000000

+0:217            true case

+0:218            Branch: Break

+0:220          add second child into first child (4-component vector of float)

+0:220            'color' (4-component vector of float)

+0:220            'bigColor7' (uniform 4-component vector of float)

+0:222          Test condition and select (void)

+0:222            Condition

+0:222            Compare Less Than (bool)

+0:222              'd8' (uniform float)

+0:222              1.000000

+0:222            true case

+0:223            Sequence

+0:223              Post-Increment (float)

+0:223                direct index (float)

+0:223                  'color' (4-component vector of float)

+0:223                  2 (const int)

+0:224              Test condition and select (void)

+0:224                Condition

+0:224                Compare Less Than (bool)

+0:224                  'd8' (uniform float)

+0:224                  2.000000

+0:224                true case

+0:225                Sequence

+0:225                  Post-Increment (float)

+0:225                    direct index (float)

+0:225                      'color' (4-component vector of float)

+0:225                      1 (const int)

+0:224                false case

+0:227                Sequence

+0:227                  Post-Increment (float)

+0:227                    direct index (float)

+0:227                      'color' (4-component vector of float)

+0:227                      0 (const int)

+0:229              Branch: Break

+0:232          add second child into first child (4-component vector of float)

+0:232            'color' (4-component vector of float)

+0:232            'BaseColor' (smooth in 4-component vector of float)

+0:237      Loop with condition tested first

+0:237        Loop Condition

+0:237        Compare Less Than (bool)

+0:237          direct index (float)

+0:237            'color' (4-component vector of float)

+0:237            3 (const int)

+0:237          'd9' (uniform float)

+0:237        Loop Body

+0:238        Sequence

+0:238          Test condition and select (void)

+0:238            Condition

+0:238            Compare Greater Than (bool)

+0:238              'd9' (uniform float)

+0:238              'd8' (uniform float)

+0:238            true case

+0:239            Sequence

+0:239              Test condition and select (void)

+0:239                Condition

+0:239                Compare Less Than or Equal (bool)

+0:239                  direct index (float)

+0:239                    'color' (4-component vector of float)

+0:239                    0 (const int)

+0:239                  'd7' (uniform float)

+0:239                true case

+0:240                Sequence

+0:240                  Test condition and select (void)

+0:240                    Condition

+0:240                    Compare Equal (bool)

+0:240                      direct index (float)

+0:240                        'color' (4-component vector of float)

+0:240                        2 (const int)

+0:240                      5.000000

+0:240                    true case

+0:241                    Post-Increment (float)

+0:241                      direct index (float)

+0:241                        'color' (4-component vector of float)

+0:241                        3 (const int)

+0:240                    false case

+0:243                    Branch: Break

+0:250      Loop with condition tested first

+0:250        Loop Condition

+0:250        Compare Less Than (bool)

+0:250          direct index (float)

+0:250            'color' (4-component vector of float)

+0:250            2 (const int)

+0:250          'd10' (uniform float)

+0:250        Loop Body

+0:251        Sequence

+0:251          Post-Increment (float)

+0:251            direct index (float)

+0:251              'color' (4-component vector of float)

+0:251              1 (const int)

+0:252          Test condition and select (void)

+0:252            Condition

+0:252            Compare Less Than (bool)

+0:252              direct index (float)

+0:252                'color' (4-component vector of float)

+0:252                1 (const int)

+0:252              'd11' (uniform float)

+0:252            true case

+0:253            Sequence

+0:253              Post-Increment (float)

+0:253                direct index (float)

+0:253                  'color' (4-component vector of float)

+0:253                  2 (const int)

+0:254              Test condition and select (void)

+0:254                Condition

+0:254                Compare Less Than (bool)

+0:254                  direct index (float)

+0:254                    'color' (4-component vector of float)

+0:254                    3 (const int)

+0:254                  'd12' (uniform float)

+0:254                true case

+0:255                Post-Increment (float)

+0:255                  direct index (float)

+0:255                    'color' (4-component vector of float)

+0:255                    3 (const int)

+0:254                false case

+0:257                Post-Increment (float)

+0:257                  direct index (float)

+0:257                    'color' (4-component vector of float)

+0:257                    0 (const int)

+0:258              Branch: Continue

+0:261          Post-Increment (4-component vector of float)

+0:261            'color' (4-component vector of float)

+0:262          Branch: Break

+0:266      Loop with condition tested first

+0:266        Loop Condition

+0:266        Compare Less Than (bool)

+0:266          direct index (float)

+0:266            'color' (4-component vector of float)

+0:266            0 (const int)

+0:266          10.000000

+0:266        Loop Body

+0:267        Sequence

+0:267          add second child into first child (4-component vector of float)

+0:267            'color' (4-component vector of float)

+0:267            'bigColor8' (uniform 4-component vector of float)

+0:269          Test condition and select (void)

+0:269            Condition

+0:269            Compare Less Than (bool)

+0:269              direct index (float)

+0:269                'color' (4-component vector of float)

+0:269                2 (const int)

+0:269              'd8' (uniform float)

+0:269            true case

+0:270            Test condition and select (void)

+0:270              Condition

+0:270              Compare Less Than (bool)

+0:270                direct index (float)

+0:270                  'color' (4-component vector of float)

+0:270                  3 (const int)

+0:270                'd6' (uniform float)

+0:270              true case

+0:271              Branch: Continue

+0:273          add second child into first child (float)

+0:273            direct index (float)

+0:273              'color' (4-component vector of float)

+0:273              1 (const int)

+0:273            direct index (float)

+0:273              'bigColor8' (uniform 4-component vector of float)

+0:273              0 (const int)

+0:276      Post-Increment (4-component vector of float)

+0:276        'color' (4-component vector of float)

+0:277      move second child to first child (4-component vector of float)

+0:277        'gl_FragColor' (fragColor 4-component vector of float)

+0:277        'color' (4-component vector of float)

+0:280      Loop with condition tested first

+0:280        Loop Condition

+0:280        Compare Less Than (bool)

+0:280          direct index (float)

+0:280            'color' (4-component vector of float)

+0:280            0 (const int)

+0:280          'd14' (uniform float)

+0:280        Loop Body

+0:281        Sequence

+0:281          Test condition and select (void)

+0:281            Condition

+0:281            Compare Less Than (bool)

+0:281              direct index (float)

+0:281                'color' (4-component vector of float)

+0:281                1 (const int)

+0:281              'd15' (uniform float)

+0:281            true case

+0:282            Sequence

+0:282              Branch: Return

+0:281            false case

+0:285            Post-Increment (4-component vector of float)

+0:285              'color' (4-component vector of float)

+0:288      Post-Increment (4-component vector of float)

+0:288        'color' (4-component vector of float)

+0:290      Loop with condition tested first

+0:290        Loop Condition

+0:290        Compare Less Than (bool)

+0:290          direct index (float)

+0:290            'color' (4-component vector of float)

+0:290            3 (const int)

+0:290          'd16' (uniform float)

+0:290        Loop Body

+0:291        Sequence

+0:291          Post-Increment (float)

+0:291            direct index (float)

+0:291              'color' (4-component vector of float)

+0:291              3 (const int)

+0:296      Loop with condition tested first

+0:296        Loop Condition

+0:296        logical-and (bool)

+0:296          Compare Less Than (bool)

+0:296            direct index (float)

+0:296              'color' (4-component vector of float)

+0:296              3 (const int)

+0:296            'd2' (uniform float)

+0:296          Compare Less Than (bool)

+0:296            direct index (float)

+0:296              'color' (4-component vector of float)

+0:296              1 (const int)

+0:296            'd3' (uniform float)

+0:296        Loop Body

+0:297        Sequence

+0:297          add second child into first child (4-component vector of float)

+0:297            'color' (4-component vector of float)

+0:297            'bigColor1_2' (uniform 4-component vector of float)

+0:298          Test condition and select (void)

+0:298            Condition

+0:298            Compare Less Than (bool)

+0:298              direct index (float)

+0:298                'color' (4-component vector of float)

+0:298                2 (const int)

+0:298              'd3' (uniform float)

+0:298            true case

+0:299            Branch: Return

+0:307      Loop with condition not tested first

+0:307        Loop Condition

+0:307        Compare Less Than (bool)

+0:307          direct index (float)

+0:307            'color' (4-component vector of float)

+0:307            0 (const int)

+0:307          'd17' (uniform float)

+0:307        Loop Body

+0:304        Sequence

+0:304          Test condition and select (void)

+0:304            Condition

+0:304            Compare Less Than (bool)

+0:304              direct index (float)

+0:304                'color' (4-component vector of float)

+0:304                1 (const int)

+0:304              'd18' (uniform float)

+0:304            true case

+0:305            Branch: Return

+0:306          Post-Increment (4-component vector of float)

+0:306            'color' (4-component vector of float)

+0:310      Loop with condition tested first

+0:310        Loop Condition

+0:310        Compare Less Than (bool)

+0:310          direct index (float)

+0:310            'color' (4-component vector of float)

+0:310            1 (const int)

+0:310          'd16' (uniform float)

+0:310        Loop Body

+0:311        Sequence

+0:311          Test condition and select (void)

+0:311            Condition

+0:311            Compare Less Than (bool)

+0:311              direct index (float)

+0:311                'color' (4-component vector of float)

+0:311                3 (const int)

+0:311              'd16' (uniform float)

+0:311            true case

+0:312            Sequence

+0:312              Branch: Kill

+0:311            false case

+0:314            Post-Increment (4-component vector of float)

+0:314              'color' (4-component vector of float)

+0:317      Post-Increment (4-component vector of float)

+0:317        'color' (4-component vector of float)

+0:319      move second child to first child (4-component vector of float)

+0:319        'gl_FragColor' (fragColor 4-component vector of float)

+0:319        'color' (4-component vector of float)

+0:?   Linker Objects

+0:?     'bigColor' (uniform 4-component vector of float)

+0:?     'bigColor1_1' (uniform 4-component vector of float)

+0:?     'bigColor1_2' (uniform 4-component vector of float)

+0:?     'bigColor1_3' (uniform 4-component vector of float)

+0:?     'bigColor2' (uniform 4-component vector of float)

+0:?     'bigColor3' (uniform 4-component vector of float)

+0:?     'bigColor4' (uniform 4-component vector of float)

+0:?     'bigColor5' (uniform 4-component vector of float)

+0:?     'bigColor6' (uniform 4-component vector of float)

+0:?     'bigColor7' (uniform 4-component vector of float)

+0:?     'bigColor8' (uniform 4-component vector of float)

+0:?     'BaseColor' (smooth in 4-component vector of float)

+0:?     'd' (uniform float)

+0:?     'd2' (uniform float)

+0:?     'd3' (uniform float)

+0:?     'd4' (uniform float)

+0:?     'd5' (uniform float)

+0:?     'd6' (uniform float)

+0:?     'd7' (uniform float)

+0:?     'd8' (uniform float)

+0:?     'd9' (uniform float)

+0:?     'd10' (uniform float)

+0:?     'd11' (uniform float)

+0:?     'd12' (uniform float)

+0:?     'd13' (uniform float)

+0:?     'd14' (uniform float)

+0:?     'd15' (uniform float)

+0:?     'd16' (uniform float)

+0:?     'd17' (uniform float)

+0:?     'd18' (uniform float)

+0:?     'd19' (uniform float)

+0:?     'd20' (uniform float)

+0:?     'd21' (uniform float)

+0:?     'd22' (uniform float)

+0:?     'd23' (uniform float)

+0:?     'd24' (uniform float)

+0:?     'd25' (uniform float)

+0:?     'd26' (uniform float)

+0:?     'd27' (uniform float)

+0:?     'd28' (uniform float)

+0:?     'd29' (uniform float)

+0:?     'd30' (uniform float)

+0:?     'd31' (uniform float)

+0:?     'd32' (uniform float)

+0:?     'd33' (uniform float)

+0:?     'd34' (uniform float)

+0:?     'Count' (uniform int)

+

diff --git a/Test/baseResults/loopsArtificial.frag.out b/Test/baseResults/loopsArtificial.frag.out
new file mode 100644
index 0000000..5681ac4
--- /dev/null
+++ b/Test/baseResults/loopsArtificial.frag.out
@@ -0,0 +1,194 @@
+WARNING: 0:14: varying deprecated in version 130; may be removed in future release

+0:? Sequence

+0:53  Function Definition: main( (void)

+0:53    Function Parameters: 

+0:55    Sequence

+0:55      Sequence

+0:55        move second child to first child (4-component vector of float)

+0:55          'color' (4-component vector of float)

+0:55          'BaseColor' (smooth in 4-component vector of float)

+0:71      Loop with condition not tested first

+0:71        Loop Condition

+0:71        Compare Less Than (bool)

+0:71          direct index (float)

+0:71            'color' (4-component vector of float)

+0:71            2 (const int)

+0:71          'd4' (uniform float)

+0:71        Loop Body

+0:59        Sequence

+0:59          add second child into first child (4-component vector of float)

+0:59            'color' (4-component vector of float)

+0:59            'bigColor4' (uniform 4-component vector of float)

+0:60          Test condition and select (void)

+0:60            Condition

+0:60            Compare Less Than (bool)

+0:60              direct index (float)

+0:60                'color' (4-component vector of float)

+0:60                0 (const int)

+0:60              'd4' (uniform float)

+0:60            true case

+0:61            Sequence

+0:61              add second child into first child (float)

+0:61                direct index (float)

+0:61                  'color' (4-component vector of float)

+0:61                  2 (const int)

+0:61                2.000000

+0:62              Test condition and select (void)

+0:62                Condition

+0:62                Compare Less Than (bool)

+0:62                  direct index (float)

+0:62                    'color' (4-component vector of float)

+0:62                    2 (const int)

+0:62                  'd4' (uniform float)

+0:62                true case

+0:63                Sequence

+0:63                  Post-Increment (float)

+0:63                    direct index (float)

+0:63                      'color' (4-component vector of float)

+0:63                      0 (const int)

+0:64                  Branch: Continue

+0:67          Test condition and select (void)

+0:67            Condition

+0:67            Compare Less Than (bool)

+0:67              direct index (float)

+0:67                'color' (4-component vector of float)

+0:67                1 (const int)

+0:67              'd4' (uniform float)

+0:67            true case

+0:68            add second child into first child (float)

+0:68              direct index (float)

+0:68                'color' (4-component vector of float)

+0:68                1 (const int)

+0:68              'd4' (uniform float)

+0:67            false case

+0:70            add second child into first child (float)

+0:70              direct index (float)

+0:70                'color' (4-component vector of float)

+0:70                0 (const int)

+0:70              'd4' (uniform float)

+0:74      Loop with condition tested first

+0:74        Loop Condition

+0:74        Compare Less Than (bool)

+0:74          direct index (float)

+0:74            'color' (4-component vector of float)

+0:74            3 (const int)

+0:74          'd13' (uniform float)

+0:74        Loop Body

+0:75        Sequence

+0:75          Test condition and select (void)

+0:75            Condition

+0:75            Compare Less Than (bool)

+0:75              direct index (float)

+0:75                'color' (4-component vector of float)

+0:75                2 (const int)

+0:75              'd13' (uniform float)

+0:75            true case

+0:76            Post-Increment (4-component vector of float)

+0:76              'color' (4-component vector of float)

+0:75            false case

+0:78            Post-Decrement (4-component vector of float)

+0:78              'color' (4-component vector of float)

+0:80          add second child into first child (4-component vector of float)

+0:80            'color' (4-component vector of float)

+0:80            'bigColor4' (uniform 4-component vector of float)

+0:81          Test condition and select (void)

+0:81            Condition

+0:81            Compare Less Than (bool)

+0:81              direct index (float)

+0:81                'color' (4-component vector of float)

+0:81                0 (const int)

+0:81              'd4' (uniform float)

+0:81            true case

+0:82            Sequence

+0:82              add second child into first child (float)

+0:82                direct index (float)

+0:82                  'color' (4-component vector of float)

+0:82                  2 (const int)

+0:82                2.000000

+0:83              Test condition and select (void)

+0:83                Condition

+0:83                Compare Less Than (bool)

+0:83                  direct index (float)

+0:83                    'color' (4-component vector of float)

+0:83                    2 (const int)

+0:83                  'd4' (uniform float)

+0:83                true case

+0:84                Sequence

+0:84                  Post-Increment (float)

+0:84                    direct index (float)

+0:84                      'color' (4-component vector of float)

+0:84                      0 (const int)

+0:85                  Branch: Continue

+0:88          Test condition and select (void)

+0:88            Condition

+0:88            Compare Less Than (bool)

+0:88              direct index (float)

+0:88                'color' (4-component vector of float)

+0:88                1 (const int)

+0:88              'd4' (uniform float)

+0:88            true case

+0:89            add second child into first child (float)

+0:89              direct index (float)

+0:89                'color' (4-component vector of float)

+0:89                1 (const int)

+0:89              'd4' (uniform float)

+0:88            false case

+0:91            add second child into first child (float)

+0:91              direct index (float)

+0:91                'color' (4-component vector of float)

+0:91                0 (const int)

+0:91              'd4' (uniform float)

+0:94      Post-Increment (4-component vector of float)

+0:94        'color' (4-component vector of float)

+0:95      move second child to first child (4-component vector of float)

+0:95        'gl_FragColor' (fragColor 4-component vector of float)

+0:95        'color' (4-component vector of float)

+0:?   Linker Objects

+0:?     'bigColor' (uniform 4-component vector of float)

+0:?     'bigColor1_1' (uniform 4-component vector of float)

+0:?     'bigColor1_2' (uniform 4-component vector of float)

+0:?     'bigColor1_3' (uniform 4-component vector of float)

+0:?     'bigColor2' (uniform 4-component vector of float)

+0:?     'bigColor3' (uniform 4-component vector of float)

+0:?     'bigColor4' (uniform 4-component vector of float)

+0:?     'bigColor5' (uniform 4-component vector of float)

+0:?     'bigColor6' (uniform 4-component vector of float)

+0:?     'bigColor7' (uniform 4-component vector of float)

+0:?     'bigColor8' (uniform 4-component vector of float)

+0:?     'BaseColor' (smooth in 4-component vector of float)

+0:?     'd' (uniform float)

+0:?     'd2' (uniform float)

+0:?     'd3' (uniform float)

+0:?     'd4' (uniform float)

+0:?     'd5' (uniform float)

+0:?     'd6' (uniform float)

+0:?     'd7' (uniform float)

+0:?     'd8' (uniform float)

+0:?     'd9' (uniform float)

+0:?     'd10' (uniform float)

+0:?     'd11' (uniform float)

+0:?     'd12' (uniform float)

+0:?     'd13' (uniform float)

+0:?     'd14' (uniform float)

+0:?     'd15' (uniform float)

+0:?     'd16' (uniform float)

+0:?     'd17' (uniform float)

+0:?     'd18' (uniform float)

+0:?     'd19' (uniform float)

+0:?     'd20' (uniform float)

+0:?     'd21' (uniform float)

+0:?     'd22' (uniform float)

+0:?     'd23' (uniform float)

+0:?     'd24' (uniform float)

+0:?     'd25' (uniform float)

+0:?     'd26' (uniform float)

+0:?     'd27' (uniform float)

+0:?     'd28' (uniform float)

+0:?     'd29' (uniform float)

+0:?     'd30' (uniform float)

+0:?     'd31' (uniform float)

+0:?     'd32' (uniform float)

+0:?     'd33' (uniform float)

+0:?     'd34' (uniform float)

+0:?     'Count' (uniform int)

+

diff --git a/Test/baseResults/matrix.frag.out b/Test/baseResults/matrix.frag.out
new file mode 100644
index 0000000..2c28b78
--- /dev/null
+++ b/Test/baseResults/matrix.frag.out
@@ -0,0 +1,212 @@
+WARNING: 0:6: varying deprecated in version 130; may be removed in future release

+WARNING: 0:17: varying deprecated in version 130; may be removed in future release

+WARNING: 0:22: varying deprecated in version 130; may be removed in future release

+0:? Sequence

+0:25  Function Definition: main( (void)

+0:25    Function Parameters: 

+0:27    Sequence

+0:27      move second child to first child (4-component vector of float)

+0:27        'gl_FragColor' (fragColor 4-component vector of float)

+0:27        Construct vec4 (4-component vector of float)

+0:27          direct index (uniform 4-component vector of float)

+0:27            'un34' (uniform 4X4 matrix of float)

+0:27            1 (const int)

+0:28      add second child into first child (4-component vector of float)

+0:28        'gl_FragColor' (fragColor 4-component vector of float)

+0:28        Construct vec4 (4-component vector of float)

+0:28          vector-times-matrix (3-component vector of float)

+0:28            'Color' (smooth in 3-component vector of float)

+0:28            'colorTransform' (uniform 3X3 matrix of float)

+0:28          1.000000

+0:30      Test condition and select (void)

+0:30        Condition

+0:30        Compare Not Equal (bool)

+0:30          'm' (uniform 4X4 matrix of float)

+0:30          'n' (uniform 4X4 matrix of float)

+0:30        true case

+0:31        add second child into first child (4-component vector of float)

+0:31          'gl_FragColor' (fragColor 4-component vector of float)

+0:31          'v' (smooth in 4-component vector of float)

+0:30        false case

+0:33        Sequence

+0:33          add second child into first child (4-component vector of float)

+0:33            'gl_FragColor' (fragColor 4-component vector of float)

+0:33            matrix-times-vector (4-component vector of float)

+0:33              'm' (uniform 4X4 matrix of float)

+0:33              'v' (smooth in 4-component vector of float)

+0:34          add second child into first child (4-component vector of float)

+0:34            'gl_FragColor' (fragColor 4-component vector of float)

+0:34            vector-times-matrix (4-component vector of float)

+0:34              'v' (smooth in 4-component vector of float)

+0:34              subtract (4X4 matrix of float)

+0:34                'm' (uniform 4X4 matrix of float)

+0:34                'n' (uniform 4X4 matrix of float)

+0:42      Sequence

+0:42        move second child to first child (4X4 matrix of float)

+0:42          'm34' (4X4 matrix of float)

+0:45          Construct mat4 (4X4 matrix of float)

+0:42            component-wise multiply (float)

+0:42              direct index (float)

+0:42                'v' (smooth in 4-component vector of float)

+0:42                0 (const int)

+0:42              direct index (float)

+0:42                'u' (smooth in 4-component vector of float)

+0:42                0 (const int)

+0:42            component-wise multiply (float)

+0:42              direct index (float)

+0:42                'v' (smooth in 4-component vector of float)

+0:42                0 (const int)

+0:42              direct index (float)

+0:42                'u' (smooth in 4-component vector of float)

+0:42                1 (const int)

+0:42            component-wise multiply (float)

+0:42              direct index (float)

+0:42                'v' (smooth in 4-component vector of float)

+0:42                0 (const int)

+0:42              direct index (float)

+0:42                'u' (smooth in 4-component vector of float)

+0:42                2 (const int)

+0:42            component-wise multiply (float)

+0:42              direct index (float)

+0:42                'v' (smooth in 4-component vector of float)

+0:42                0 (const int)

+0:42              direct index (float)

+0:42                'u' (smooth in 4-component vector of float)

+0:42                3 (const int)

+0:43            component-wise multiply (float)

+0:43              direct index (float)

+0:43                'v' (smooth in 4-component vector of float)

+0:43                1 (const int)

+0:43              direct index (float)

+0:43                'u' (smooth in 4-component vector of float)

+0:43                0 (const int)

+0:43            component-wise multiply (float)

+0:43              direct index (float)

+0:43                'v' (smooth in 4-component vector of float)

+0:43                1 (const int)

+0:43              direct index (float)

+0:43                'u' (smooth in 4-component vector of float)

+0:43                1 (const int)

+0:43            component-wise multiply (float)

+0:43              direct index (float)

+0:43                'v' (smooth in 4-component vector of float)

+0:43                1 (const int)

+0:43              direct index (float)

+0:43                'u' (smooth in 4-component vector of float)

+0:43                2 (const int)

+0:43            component-wise multiply (float)

+0:43              direct index (float)

+0:43                'v' (smooth in 4-component vector of float)

+0:43                1 (const int)

+0:43              direct index (float)

+0:43                'u' (smooth in 4-component vector of float)

+0:43                3 (const int)

+0:44            component-wise multiply (float)

+0:44              direct index (float)

+0:44                'v' (smooth in 4-component vector of float)

+0:44                2 (const int)

+0:44              direct index (float)

+0:44                'u' (smooth in 4-component vector of float)

+0:44                0 (const int)

+0:44            component-wise multiply (float)

+0:44              direct index (float)

+0:44                'v' (smooth in 4-component vector of float)

+0:44                2 (const int)

+0:44              direct index (float)

+0:44                'u' (smooth in 4-component vector of float)

+0:44                1 (const int)

+0:44            component-wise multiply (float)

+0:44              direct index (float)

+0:44                'v' (smooth in 4-component vector of float)

+0:44                2 (const int)

+0:44              direct index (float)

+0:44                'u' (smooth in 4-component vector of float)

+0:44                2 (const int)

+0:44            component-wise multiply (float)

+0:44              direct index (float)

+0:44                'v' (smooth in 4-component vector of float)

+0:44                2 (const int)

+0:44              direct index (float)

+0:44                'u' (smooth in 4-component vector of float)

+0:44                3 (const int)

+0:45            component-wise multiply (float)

+0:45              direct index (float)

+0:45                'v' (smooth in 4-component vector of float)

+0:45                3 (const int)

+0:45              direct index (float)

+0:45                'u' (smooth in 4-component vector of float)

+0:45                0 (const int)

+0:45            component-wise multiply (float)

+0:45              direct index (float)

+0:45                'v' (smooth in 4-component vector of float)

+0:45                3 (const int)

+0:45              direct index (float)

+0:45                'u' (smooth in 4-component vector of float)

+0:45                1 (const int)

+0:45            component-wise multiply (float)

+0:45              direct index (float)

+0:45                'v' (smooth in 4-component vector of float)

+0:45                3 (const int)

+0:45              direct index (float)

+0:45                'u' (smooth in 4-component vector of float)

+0:45                2 (const int)

+0:45            component-wise multiply (float)

+0:45              direct index (float)

+0:45                'v' (smooth in 4-component vector of float)

+0:45                3 (const int)

+0:45              direct index (float)

+0:45                'u' (smooth in 4-component vector of float)

+0:45                3 (const int)

+0:46      add second child into first child (4X4 matrix of float)

+0:46        'm34' (4X4 matrix of float)

+0:46        Construct mat4 (4X4 matrix of float)

+0:46          direct index (float)

+0:46            'v' (smooth in 4-component vector of float)

+0:46            0 (const int)

+0:47      add second child into first child (4X4 matrix of float)

+0:47        'm34' (4X4 matrix of float)

+0:47        Construct mat4 (4X4 matrix of float)

+0:47          'u' (smooth in 4-component vector of float)

+0:47          direct index (float)

+0:47            'u' (smooth in 4-component vector of float)

+0:47            0 (const int)

+0:47          'u' (smooth in 4-component vector of float)

+0:47          direct index (float)

+0:47            'u' (smooth in 4-component vector of float)

+0:47            0 (const int)

+0:47          'u' (smooth in 4-component vector of float)

+0:47          direct index (float)

+0:47            'u' (smooth in 4-component vector of float)

+0:47            0 (const int)

+0:47          direct index (float)

+0:47            'u' (smooth in 4-component vector of float)

+0:47            0 (const int)

+0:51      Test condition and select (void)

+0:51        Condition

+0:51        Compare Equal (bool)

+0:51          'm34' (4X4 matrix of float)

+0:51          'un34' (uniform 4X4 matrix of float)

+0:51        true case

+0:52        add second child into first child (4-component vector of float)

+0:52          'gl_FragColor' (fragColor 4-component vector of float)

+0:52          matrix-times-vector (4-component vector of float)

+0:52            'm34' (4X4 matrix of float)

+0:52            'u' (smooth in 4-component vector of float)

+0:51        false case

+0:54        add second child into first child (4-component vector of float)

+0:54          'gl_FragColor' (fragColor 4-component vector of float)

+0:54          matrix-times-vector (4-component vector of float)

+0:54            matrix-multiply (4X4 matrix of float)

+0:54              'un34' (uniform 4X4 matrix of float)

+0:54              'um43' (uniform 4X4 matrix of float)

+0:54            'v' (smooth in 4-component vector of float)

+0:?   Linker Objects

+0:?     'colorTransform' (uniform 3X3 matrix of float)

+0:?     'Color' (smooth in 3-component vector of float)

+0:?     'm' (uniform 4X4 matrix of float)

+0:?     'n' (uniform 4X4 matrix of float)

+0:?     'um43' (uniform 4X4 matrix of float)

+0:?     'un34' (uniform 4X4 matrix of float)

+0:?     'v' (smooth in 4-component vector of float)

+0:?     'u' (smooth in 4-component vector of float)

+

diff --git a/Test/baseResults/matrix2.frag.out b/Test/baseResults/matrix2.frag.out
new file mode 100644
index 0000000..8bf9225
--- /dev/null
+++ b/Test/baseResults/matrix2.frag.out
@@ -0,0 +1,144 @@
+WARNING: 0:4: varying deprecated in version 130; may be removed in future release

+WARNING: 0:13: varying deprecated in version 130; may be removed in future release

+WARNING: 0:15: varying deprecated in version 130; may be removed in future release

+0:? Sequence

+0:19  Function Definition: main( (void)

+0:19    Function Parameters: 

+0:21    Sequence

+0:21      Sequence

+0:21        move second child to first child (3X4 matrix of float)

+0:21          'm34' (3X4 matrix of float)

+0:21          outer product (3X4 matrix of float)

+0:21            'v' (smooth in 4-component vector of float)

+0:21            'u' (smooth in 3-component vector of float)

+0:23      add second child into first child (3X4 matrix of float)

+0:23        'm34' (3X4 matrix of float)

+0:23        4.300000

+0:23        0.000000

+0:23        0.000000

+0:23        0.000000

+0:23        0.000000

+0:23        4.300000

+0:23        0.000000

+0:23        0.000000

+0:23        0.000000

+0:23        0.000000

+0:23        4.300000

+0:23        0.000000

+0:25      move second child to first child (4-component vector of float)

+0:25        'FragColor' (out 4-component vector of float)

+0:25        Construct vec4 (4-component vector of float)

+0:25          'Color' (smooth in 3-component vector of float)

+0:25          1.000000

+0:26      multiply second child into first child (4-component vector of float)

+0:26        'FragColor' (out 4-component vector of float)

+0:26        Construct vec4 (4-component vector of float)

+0:26          vector-times-matrix (3-component vector of float)

+0:26            'FragColor' (out 4-component vector of float)

+0:26            'm34' (3X4 matrix of float)

+0:26          1.000000

+0:28      matrix scale second child into first child (3X4 matrix of float)

+0:28        'm34' (3X4 matrix of float)

+0:28        direct index (float)

+0:28          'v' (smooth in 4-component vector of float)

+0:28          0 (const int)

+0:30      Sequence

+0:30        move second child to first child (4X4 matrix of float)

+0:30          'm44' (4X4 matrix of float)

+0:30          Construct mat4 (4X4 matrix of float)

+0:30            'un34' (uniform 3X4 matrix of float)

+0:32      add second child into first child (4X4 matrix of float)

+0:32        'm44' (4X4 matrix of float)

+0:32        matrix-multiply (4X4 matrix of float)

+0:32          'm34' (3X4 matrix of float)

+0:32          'um43' (uniform 4X3 matrix of float)

+0:34      add second child into first child (4-component vector of float)

+0:34        'FragColor' (out 4-component vector of float)

+0:34        matrix-times-vector (4-component vector of float)

+0:34          Negate value (4X4 matrix of float)

+0:34            'm44' (4X4 matrix of float)

+0:34          'v' (smooth in 4-component vector of float)

+0:36      matrix mult second child into first child (4-component vector of float)

+0:36        'FragColor' (out 4-component vector of float)

+0:36        component-wise multiply (4X4 matrix of float)

+0:36          'm44' (4X4 matrix of float)

+0:36          'm44' (4X4 matrix of float)

+0:38      move second child to first child (3X4 matrix of float)

+0:38        'm34' (3X4 matrix of float)

+0:38        transpose (3X4 matrix of float)

+0:38          'um43' (uniform 4X3 matrix of float)

+0:39      multiply second child into first child (4-component vector of float)

+0:39        'FragColor' (out 4-component vector of float)

+0:39        Construct vec4 (4-component vector of float)

+0:39          vector-times-matrix (3-component vector of float)

+0:39            'FragColor' (out 4-component vector of float)

+0:39            'm34' (3X4 matrix of float)

+0:39          1.000000

+0:40      multiply second child into first child (4-component vector of float)

+0:40        'FragColor' (out 4-component vector of float)

+0:40        Construct vec4 (4-component vector of float)

+0:40          determinant (float)

+0:40            'um4' (uniform 4X4 matrix of float)

+0:41      Sequence

+0:41        move second child to first child (2X2 matrix of float)

+0:41          'inv' (2X2 matrix of float)

+0:41          inverse (2X2 matrix of float)

+0:41            'um2' (uniform 2X2 matrix of float)

+0:42      multiply second child into first child (4-component vector of float)

+0:42        'FragColor' (out 4-component vector of float)

+0:42        Construct vec4 (4-component vector of float)

+0:42          direct index (float)

+0:42            direct index (2-component vector of float)

+0:42              'inv' (2X2 matrix of float)

+0:42              0 (const int)

+0:42            0 (const int)

+0:42          direct index (float)

+0:42            direct index (2-component vector of float)

+0:42              'inv' (2X2 matrix of float)

+0:42              1 (const int)

+0:42            0 (const int)

+0:42          direct index (float)

+0:42            direct index (2-component vector of float)

+0:42              'inv' (2X2 matrix of float)

+0:42              0 (const int)

+0:42            1 (const int)

+0:42          direct index (float)

+0:42            direct index (2-component vector of float)

+0:42              'inv' (2X2 matrix of float)

+0:42              1 (const int)

+0:42            1 (const int)

+0:43      Sequence

+0:43        move second child to first child (3X3 matrix of float)

+0:43          'inv3' (3X3 matrix of float)

+0:43          inverse (3X3 matrix of float)

+0:43            'um3' (uniform 3X3 matrix of float)

+0:44      multiply second child into first child (4-component vector of float)

+0:44        'FragColor' (out 4-component vector of float)

+0:44        Construct vec4 (4-component vector of float)

+0:44          direct index (float)

+0:44            direct index (3-component vector of float)

+0:44              'inv3' (3X3 matrix of float)

+0:44              2 (const int)

+0:44            1 (const int)

+0:46      Sequence

+0:46        move second child to first child (4X4 matrix of float)

+0:46          'inv4' (4X4 matrix of float)

+0:46          inverse (4X4 matrix of float)

+0:46            'um4' (uniform 4X4 matrix of float)

+0:47      matrix mult second child into first child (4-component vector of float)

+0:47        'FragColor' (out 4-component vector of float)

+0:47        'inv4' (4X4 matrix of float)

+0:?   Linker Objects

+0:?     'colorTransform' (uniform 3X3 matrix of float)

+0:?     'Color' (smooth in 3-component vector of float)

+0:?     'm' (uniform 4X4 matrix of float)

+0:?     'n' (uniform 4X4 matrix of float)

+0:?     'um43' (uniform 4X3 matrix of float)

+0:?     'un34' (uniform 3X4 matrix of float)

+0:?     'um2' (uniform 2X2 matrix of float)

+0:?     'um3' (uniform 3X3 matrix of float)

+0:?     'um4' (uniform 4X4 matrix of float)

+0:?     'v' (smooth in 4-component vector of float)

+0:?     'u' (smooth in 3-component vector of float)

+0:?     'FragColor' (out 4-component vector of float)

+

diff --git a/Test/baseResults/matrixError.vert.out b/Test/baseResults/matrixError.vert.out
new file mode 100644
index 0000000..9412393
--- /dev/null
+++ b/Test/baseResults/matrixError.vert.out
@@ -0,0 +1,29 @@
+ERROR: 0:10: 'constructor' : too many arguments 

+ERROR: 0:7: '=' :  cannot assign to 'const 2X4 matrix of float'

+ERROR: 0:17: 'assign' :  cannot convert from '2-component vector of float' to '3-component vector of float'

+ERROR: 0:18: 'assign' :  cannot convert from '2-component vector of float' to '3-component vector of float'

+ERROR: 0:19: '.' : field selection not allowed on matrix 

+ERROR: 0:21: '[' :  index out of range '2'

+ERROR: 0:21: '[' :  index out of range '4'

+ERROR: 7 compilation errors.  No code generated.

+

+ERROR: node is still EOpNull!

+0:12  Function Definition: main( (void)

+0:12    Function Parameters: 

+0:?     Sequence

+0:17      'a' (3-component vector of float)

+0:18      'b' (3-component vector of float)

+0:19      'm23' (2X3 matrix of float)

+0:21      move second child to first child (4-component vector of float)

+0:21        'gl_Position' (gl_Position 4-component vector of float)

+0:21        Construct vec4 (4-component vector of float)

+0:21          matrix-times-vector (3-component vector of float)

+0:21            matrix-multiply (3X3 matrix of float)

+0:21              'm23' (2X3 matrix of float)

+0:21              'm32' (uniform 3X2 matrix of float)

+0:21            'v3' (in 3-component vector of float)

+0:21          'm24' (float)

+0:?   Linker Objects

+0:?     'v3' (in 3-component vector of float)

+0:?     'm32' (uniform 3X2 matrix of float)

+

diff --git a/Test/baseResults/newTexture.frag.out b/Test/baseResults/newTexture.frag.out
new file mode 100644
index 0000000..8bb8a41
--- /dev/null
+++ b/Test/baseResults/newTexture.frag.out
@@ -0,0 +1,204 @@
+0:? Sequence

+0:34  Function Definition: main( (void)

+0:34    Function Parameters: 

+0:36    Sequence

+0:36      Sequence

+0:36        move second child to first child (4-component vector of float)

+0:36          'v' (4-component vector of float)

+0:36          Function Call: texture(s21;vf2; (4-component vector of float)

+0:36            's2D' (uniform sampler2D)

+0:36            'c2D' (smooth in 2-component vector of float)

+0:37      add second child into first child (4-component vector of float)

+0:37        'v' (4-component vector of float)

+0:37        Function Call: textureProj(s31;vf4; (4-component vector of float)

+0:37          's3D' (uniform sampler3D)

+0:37          'c4D' (smooth in 4-component vector of float)

+0:38      add second child into first child (4-component vector of float)

+0:38        'v' (4-component vector of float)

+0:38        Function Call: textureLod(sA21;vf3;f1; (4-component vector of float)

+0:38          's2DArray' (uniform sampler2DArray)

+0:38          'c3D' (smooth in 3-component vector of float)

+0:38          1.200000

+0:39      add second child into first child (float)

+0:39        direct index (float)

+0:39          'v' (4-component vector of float)

+0:39          1 (const int)

+0:39        Function Call: textureOffset(sS21;vf3;vi2;f1; (float)

+0:39          's2DShadow' (uniform sampler2DShadow)

+0:39          'c3D' (smooth in 3-component vector of float)

+0:39          'ic2D' (flat in 2-component vector of int)

+0:39          'c1D' (smooth in float)

+0:40      add second child into first child (4-component vector of float)

+0:40        'v' (4-component vector of float)

+0:40        Function Call: texelFetch(s31;vi3;i1; (4-component vector of float)

+0:40          's3D' (uniform sampler3D)

+0:40          'ic3D' (flat in 3-component vector of int)

+0:40          'ic1D' (flat in int)

+0:41      add second child into first child (4-component vector of float)

+0:41        'v' (4-component vector of float)

+0:41        Function Call: texelFetchOffset(s21;vi2;i1;vi2; (4-component vector of float)

+0:41          's2D' (uniform sampler2D)

+0:41          'ic2D' (flat in 2-component vector of int)

+0:41          4 (const int)

+0:41          'ic2D' (flat in 2-component vector of int)

+0:42      add second child into first child (float)

+0:42        direct index (float)

+0:42          'v' (4-component vector of float)

+0:42          1 (const int)

+0:42        Function Call: textureLodOffset(sS21;vf3;f1;vi2; (float)

+0:42          's2DShadow' (uniform sampler2DShadow)

+0:42          'c3D' (smooth in 3-component vector of float)

+0:42          'c1D' (smooth in float)

+0:42          'ic2D' (flat in 2-component vector of int)

+0:43      add second child into first child (4-component vector of float)

+0:43        'v' (4-component vector of float)

+0:43        Function Call: textureProjLodOffset(s21;vf3;f1;vi2; (4-component vector of float)

+0:43          's2D' (uniform sampler2D)

+0:43          'c3D' (smooth in 3-component vector of float)

+0:43          'c1D' (smooth in float)

+0:43          'ic2D' (flat in 2-component vector of int)

+0:44      add second child into first child (4-component vector of float)

+0:44        'v' (4-component vector of float)

+0:44        Function Call: textureGrad(sC1;vf3;vf3;vf3; (4-component vector of float)

+0:44          'sCube' (uniform samplerCube)

+0:44          'c3D' (smooth in 3-component vector of float)

+0:44          'c3D' (smooth in 3-component vector of float)

+0:44          'c3D' (smooth in 3-component vector of float)

+0:45      add second child into first child (float)

+0:45        direct index (float)

+0:45          'v' (4-component vector of float)

+0:45          0 (const int)

+0:45        Function Call: textureGradOffset(sAS21;vf4;vf2;vf2;vi2; (float)

+0:45          's2DArrayShadow' (uniform sampler2DArrayShadow)

+0:45          'c4D' (smooth in 4-component vector of float)

+0:45          'c2D' (smooth in 2-component vector of float)

+0:45          'c2D' (smooth in 2-component vector of float)

+0:45          'ic2D' (flat in 2-component vector of int)

+0:46      add second child into first child (4-component vector of float)

+0:46        'v' (4-component vector of float)

+0:46        Function Call: textureProjGrad(s31;vf4;vf3;vf3; (4-component vector of float)

+0:46          's3D' (uniform sampler3D)

+0:46          'c4D' (smooth in 4-component vector of float)

+0:46          'c3D' (smooth in 3-component vector of float)

+0:46          'c3D' (smooth in 3-component vector of float)

+0:47      add second child into first child (4-component vector of float)

+0:47        'v' (4-component vector of float)

+0:47        Function Call: textureProjGradOffset(s21;vf3;vf2;vf2;vi2; (4-component vector of float)

+0:47          's2D' (uniform sampler2D)

+0:47          'c3D' (smooth in 3-component vector of float)

+0:47          'c2D' (smooth in 2-component vector of float)

+0:47          'c2D' (smooth in 2-component vector of float)

+0:47          'ic2D' (flat in 2-component vector of int)

+0:49      Sequence

+0:49        move second child to first child (4-component vector of int)

+0:49          'iv' (4-component vector of int)

+0:49          Function Call: texture(is21;vf2; (4-component vector of int)

+0:49            'is2D' (uniform isampler2D)

+0:49            'c2D' (smooth in 2-component vector of float)

+0:50      add second child into first child (4-component vector of float)

+0:50        'v' (4-component vector of float)

+0:50        Convert int to float (4-component vector of float)

+0:50          'iv' (4-component vector of int)

+0:51      move second child to first child (4-component vector of int)

+0:51        'iv' (4-component vector of int)

+0:51        Function Call: textureProjOffset(is21;vf4;vi2; (4-component vector of int)

+0:51          'is2D' (uniform isampler2D)

+0:51          'c4D' (smooth in 4-component vector of float)

+0:51          'ic2D' (flat in 2-component vector of int)

+0:52      add second child into first child (4-component vector of float)

+0:52        'v' (4-component vector of float)

+0:52        Convert int to float (4-component vector of float)

+0:52          'iv' (4-component vector of int)

+0:53      move second child to first child (4-component vector of int)

+0:53        'iv' (4-component vector of int)

+0:53        Function Call: textureProjLod(is21;vf3;f1; (4-component vector of int)

+0:53          'is2D' (uniform isampler2D)

+0:53          'c3D' (smooth in 3-component vector of float)

+0:53          'c1D' (smooth in float)

+0:54      add second child into first child (4-component vector of float)

+0:54        'v' (4-component vector of float)

+0:54        Convert int to float (4-component vector of float)

+0:54          'iv' (4-component vector of int)

+0:55      move second child to first child (4-component vector of int)

+0:55        'iv' (4-component vector of int)

+0:55        Function Call: textureProjGrad(is21;vf3;vf2;vf2; (4-component vector of int)

+0:55          'is2D' (uniform isampler2D)

+0:55          'c3D' (smooth in 3-component vector of float)

+0:55          'c2D' (smooth in 2-component vector of float)

+0:55          'c2D' (smooth in 2-component vector of float)

+0:56      add second child into first child (4-component vector of float)

+0:56        'v' (4-component vector of float)

+0:56        Convert int to float (4-component vector of float)

+0:56          'iv' (4-component vector of int)

+0:57      move second child to first child (4-component vector of int)

+0:57        'iv' (4-component vector of int)

+0:57        Function Call: texture(is31;vf3;f1; (4-component vector of int)

+0:57          'is3D' (uniform isampler3D)

+0:57          'c3D' (smooth in 3-component vector of float)

+0:57          4.200000

+0:58      add second child into first child (4-component vector of float)

+0:58        'v' (4-component vector of float)

+0:58        Convert int to float (4-component vector of float)

+0:58          'iv' (4-component vector of int)

+0:59      move second child to first child (4-component vector of int)

+0:59        'iv' (4-component vector of int)

+0:59        Function Call: textureLod(isC1;vf3;f1; (4-component vector of int)

+0:59          'isCube' (uniform isamplerCube)

+0:59          'c3D' (smooth in 3-component vector of float)

+0:59          'c1D' (smooth in float)

+0:60      add second child into first child (4-component vector of float)

+0:60        'v' (4-component vector of float)

+0:60        Convert int to float (4-component vector of float)

+0:60          'iv' (4-component vector of int)

+0:61      move second child to first child (4-component vector of int)

+0:61        'iv' (4-component vector of int)

+0:61        Function Call: texelFetch(isA21;vi3;i1; (4-component vector of int)

+0:61          'is2DArray' (uniform isampler2DArray)

+0:61          'ic3D' (flat in 3-component vector of int)

+0:61          'ic1D' (flat in int)

+0:62      add second child into first child (4-component vector of float)

+0:62        'v' (4-component vector of float)

+0:62        Convert int to float (4-component vector of float)

+0:62          'iv' (4-component vector of int)

+0:64      Sequence

+0:64        move second child to first child (2-component vector of int)

+0:64          'iv2' (2-component vector of int)

+0:64          Function Call: textureSize(sSC1;i1; (2-component vector of int)

+0:64            'sCubeShadow' (uniform samplerCubeShadow)

+0:64            2 (const int)

+0:67      move second child to first child (4-component vector of float)

+0:67        'FragData' (out 4-component vector of float)

+0:67        add (4-component vector of float)

+0:67          'v' (4-component vector of float)

+0:67          Construct vec4 (4-component vector of float)

+0:67            Convert int to float (2-component vector of float)

+0:67              'iv2' (2-component vector of int)

+0:67            0.000000

+0:67            0.000000

+0:?   Linker Objects

+0:?     's2D' (uniform sampler2D)

+0:?     's3D' (uniform sampler3D)

+0:?     'sCube' (uniform samplerCube)

+0:?     'sCubeShadow' (uniform samplerCubeShadow)

+0:?     's2DShadow' (uniform sampler2DShadow)

+0:?     's2DArray' (uniform sampler2DArray)

+0:?     's2DArrayShadow' (uniform sampler2DArrayShadow)

+0:?     'is2D' (uniform isampler2D)

+0:?     'is3D' (uniform isampler3D)

+0:?     'isCube' (uniform isamplerCube)

+0:?     'is2DArray' (uniform isampler2DArray)

+0:?     'is2Dms' (uniform isampler2DMS)

+0:?     'us2D' (uniform usampler2D)

+0:?     'us3D' (uniform usampler3D)

+0:?     'usCube' (uniform usamplerCube)

+0:?     'us2DArray' (uniform usampler2DArray)

+0:?     'c1D' (smooth in float)

+0:?     'c2D' (smooth in 2-component vector of float)

+0:?     'c3D' (smooth in 3-component vector of float)

+0:?     'c4D' (smooth in 4-component vector of float)

+0:?     'ic1D' (flat in int)

+0:?     'ic2D' (flat in 2-component vector of int)

+0:?     'ic3D' (flat in 3-component vector of int)

+0:?     'ic4D' (flat in 4-component vector of int)

+0:?     'FragData' (out 4-component vector of float)

+

diff --git a/Test/baseResults/nonSquare.vert.out b/Test/baseResults/nonSquare.vert.out
new file mode 100644
index 0000000..5ee5ea1
--- /dev/null
+++ b/Test/baseResults/nonSquare.vert.out
@@ -0,0 +1,62 @@
+0:? Sequence

+0:15  Function Definition: main( (void)

+0:15    Function Parameters: 

+0:?     Sequence

+0:20      move second child to first child (2-component vector of float)

+0:20        'a' (2-component vector of float)

+0:20        vector-times-matrix (2-component vector of float)

+0:20          'v3' (in 3-component vector of float)

+0:20          'm23' (2X3 matrix of float)

+0:21      move second child to first child (2-component vector of float)

+0:21        'b' (2-component vector of float)

+0:21        matrix-times-vector (2-component vector of float)

+0:21          'm32' (uniform 3X2 matrix of float)

+0:21          'v3' (in 3-component vector of float)

+0:23      move second child to first child (4-component vector of float)

+0:23        'gl_Position' (gl_Position 4-component vector of float)

+0:24        add (4-component vector of float)

+0:24          add (4-component vector of float)

+0:24            add (4-component vector of float)

+0:23              add (4-component vector of float)

+0:23                Construct vec4 (4-component vector of float)

+0:23                  matrix-times-vector (3-component vector of float)

+0:23                    matrix-multiply (3X3 matrix of float)

+0:23                      'm23' (2X3 matrix of float)

+0:23                      'm32' (uniform 3X2 matrix of float)

+0:23                    'v3' (in 3-component vector of float)

+0:23                  0.000000

+0:24                matrix-times-vector (4-component vector of float)

+0:24                  3.000000

+0:24                  6.000000

+0:24                  0.000000

+0:24                  0.000000

+0:24                  9.000000

+0:24                  12.000000

+0:24                  0.000000

+0:24                  0.000000

+0:24                  15.000000

+0:24                  18.000000

+0:24                  0.000000

+0:24                  0.000000

+0:24                  21.000000

+0:24                  24.000000

+0:24                  0.000000

+0:24                  0.000000

+0:24                  'v4' (in 4-component vector of float)

+0:24              50.000000

+0:24              110.000000

+0:24              170.000000

+0:24              230.000000

+0:24            30.000000

+0:24            60.000000

+0:24            0.000000

+0:24            0.000000

+0:24          20.000000

+0:24          10.000000

+0:24          6.000000

+0:24          5.000000

+0:?   Linker Objects

+0:?     'v3' (in 3-component vector of float)

+0:?     'v4' (in 4-component vector of float)

+0:?     'm32' (uniform 3X2 matrix of float)

+

diff --git a/Test/baseResults/numeral.frag.out b/Test/baseResults/numeral.frag.out
new file mode 100644
index 0000000..6b99a42
--- /dev/null
+++ b/Test/baseResults/numeral.frag.out
@@ -0,0 +1,308 @@
+ERROR: 0:14: '' : octal literal digit too large 

+ERROR: 0:15: '' : octal literal digit too large 

+ERROR: 0:16: '' : octal literal digit too large 

+ERROR: 0:17: '' : octal literal too big 

+ERROR: 0:18: '' : octal literal too big 

+ERROR: 0:23: '' : octal literal digit too large 

+ERROR: 0:24: '' : octal literal digit too large 

+ERROR: 0:49: '' : bad digit in hexidecimal literal 

+ERROR: 0:50: '' : hexidecimal literal too big 

+ERROR: 0:88: '' : float literal needs a decimal point or exponent 

+ERROR: 10 compilation errors.  No code generated.

+

+ERROR: node is still EOpNull!

+0:3  Function Definition: main( (void)

+0:3    Function Parameters: 

+0:5    Sequence

+0:5      Sequence

+0:5        move second child to first child (int)

+0:5          'o00' (int)

+0:5          0 (const int)

+0:6      Sequence

+0:6        move second child to first child (int)

+0:6          'o000' (int)

+0:6          0 (const int)

+0:7      Sequence

+0:7        move second child to first child (int)

+0:7          'o0000' (int)

+0:7          0 (const int)

+0:8      Sequence

+0:8        move second child to first child (int)

+0:8          'o5' (int)

+0:8          5 (const int)

+0:9      Sequence

+0:9        move second child to first child (int)

+0:9          'o05' (int)

+0:9          5 (const int)

+0:10      Sequence

+0:10        move second child to first child (int)

+0:10          'o006' (int)

+0:10          6 (const int)

+0:11      Sequence

+0:11        move second child to first child (int)

+0:11          'o7' (int)

+0:11          7 (const int)

+0:12      Sequence

+0:12        move second child to first child (int)

+0:12          'o58' (int)

+0:12          58 (const int)

+0:13      Sequence

+0:13        move second child to first child (int)

+0:13          'omax' (int)

+0:13          -1 (const int)

+0:14      Sequence

+0:14        move second child to first child (int)

+0:14          'o8' (int)

+0:14          0 (const int)

+0:15      Sequence

+0:15        move second child to first child (int)

+0:15          'o08' (int)

+0:15          0 (const int)

+0:16      Sequence

+0:16        move second child to first child (int)

+0:16          'o009' (int)

+0:16          0 (const int)

+0:17      Sequence

+0:17        move second child to first child (int)

+0:17          'obig' (int)

+0:17          995208915 (const int)

+0:18      Sequence

+0:18        move second child to first child (int)

+0:18          'omax1' (int)

+0:18          536870912 (const int)

+0:20      Sequence

+0:20        move second child to first child (uint)

+0:20          'uo5' (uint)

+0:20          5 (const uint)

+0:21      Sequence

+0:21        move second child to first child (uint)

+0:21          'uo6' (uint)

+0:21          6 (const uint)

+0:22      Sequence

+0:22        move second child to first child (uint)

+0:22          'uo7' (uint)

+0:22          7 (const uint)

+0:23      Sequence

+0:23        move second child to first child (uint)

+0:23          'uo8' (uint)

+0:23          0 (const uint)

+0:24      Sequence

+0:24        move second child to first child (uint)

+0:24          'uo9' (uint)

+0:24          0 (const uint)

+0:26      Sequence

+0:26        move second child to first child (int)

+0:26          'h0' (int)

+0:26          0 (const int)

+0:27      Sequence

+0:27        move second child to first child (int)

+0:27          'h00' (int)

+0:27          0 (const int)

+0:28      Sequence

+0:28        move second child to first child (int)

+0:28          'h000' (int)

+0:28          0 (const int)

+0:29      Sequence

+0:29        move second child to first child (int)

+0:29          'h1' (int)

+0:29          1 (const int)

+0:30      Sequence

+0:30        move second child to first child (int)

+0:30          'h2' (int)

+0:30          2 (const int)

+0:31      Sequence

+0:31        move second child to first child (int)

+0:31          'h300' (int)

+0:31          768 (const int)

+0:32      Sequence

+0:32        move second child to first child (int)

+0:32          'hABCDEF' (int)

+0:32          11259375 (const int)

+0:33      Sequence

+0:33        move second child to first child (int)

+0:33          'hFFFFFFFF' (int)

+0:33          -1 (const int)

+0:34      Sequence

+0:34        move second child to first child (int)

+0:34          'h12345678' (int)

+0:34          12345678 (const int)

+0:35      Sequence

+0:35        move second child to first child (int)

+0:35          'hToBeOrNotToBe' (int)

+0:35          -1 (const int)

+0:37      Sequence

+0:37        move second child to first child (uint)

+0:37          'uh0' (uint)

+0:37          0 (const uint)

+0:38      Sequence

+0:38        move second child to first child (uint)

+0:38          'uhg' (uint)

+0:38          12 (const uint)

+0:39      Sequence

+0:39        move second child to first child (uint)

+0:39          'uh000' (uint)

+0:39          0 (const uint)

+0:40      Sequence

+0:40        move second child to first child (uint)

+0:40          'uh1' (uint)

+0:40          1 (const uint)

+0:41      Sequence

+0:41        move second child to first child (uint)

+0:41          'uh2' (uint)

+0:41          2 (const uint)

+0:42      Sequence

+0:42        move second child to first child (uint)

+0:42          'uh300' (uint)

+0:42          768 (const uint)

+0:43      Sequence

+0:43        move second child to first child (uint)

+0:43          'uhABCDEF' (uint)

+0:43          11259375 (const uint)

+0:44      Sequence

+0:44        move second child to first child (uint)

+0:44          'uhFFFFFFFF' (uint)

+0:44          4294967295 (const uint)

+0:45      Sequence

+0:45        move second child to first child (uint)

+0:45          'uh12345678' (uint)

+0:45          12345678 (const uint)

+0:46      Sequence

+0:46        move second child to first child (uint)

+0:46          'uhToBeOrNotToBe' (uint)

+0:46          4294967295 (const uint)

+0:49      Sequence

+0:49        move second child to first child (int)

+0:49          'he2' (int)

+0:49          0 (const int)

+0:50      Sequence

+0:50        move second child to first child (int)

+0:50          'hbig' (int)

+0:50          -1 (const int)

+0:52      Sequence

+0:52        move second child to first child (float)

+0:52          'f1' (float)

+0:52          1.000000

+0:53      Sequence

+0:53        move second child to first child (float)

+0:53          'f2' (float)

+0:53          2.000000

+0:54      Sequence

+0:54        move second child to first child (float)

+0:54          'f3' (float)

+0:54          3.000000

+0:55      Sequence

+0:55        move second child to first child (float)

+0:55          'f4' (float)

+0:55          4.000000

+0:56      Sequence

+0:56        move second child to first child (float)

+0:56          'f5' (float)

+0:56          5.000000

+0:57      Sequence

+0:57        move second child to first child (float)

+0:57          'f6' (float)

+0:57          6.000000

+0:58      Sequence

+0:58        move second child to first child (float)

+0:58          'f7' (float)

+0:58          7.000000

+0:59      Sequence

+0:59        move second child to first child (float)

+0:59          'f8' (float)

+0:59          8.000000

+0:60      Sequence

+0:60        move second child to first child (float)

+0:60          'f9' (float)

+0:60          9.000000

+0:61      Sequence

+0:61        move second child to first child (float)

+0:61          'f10' (float)

+0:61          10.000000

+0:62      Sequence

+0:62        move second child to first child (float)

+0:62          'f11' (float)

+0:62          11.000000

+0:63      Sequence

+0:63        move second child to first child (float)

+0:63          'f12' (float)

+0:63          12.000000

+0:64      Sequence

+0:64        move second child to first child (float)

+0:64          'f543' (float)

+0:64          543.000000

+0:65      Sequence

+0:65        move second child to first child (float)

+0:65          'f6789' (float)

+0:65          6789.000000

+0:66      Sequence

+0:66        move second child to first child (float)

+0:66          'f88' (float)

+0:66          88.000000

+0:68      Sequence

+0:68        move second child to first child (float)

+0:68          'g1' (float)

+0:68          53876.000000

+0:69      Sequence

+0:69        move second child to first child (float)

+0:69          'g2' (float)

+0:69          0.040000

+0:70      Sequence

+0:70        move second child to first child (float)

+0:70          'g3' (float)

+0:70          100000.000000

+0:71      Sequence

+0:71        move second child to first child (float)

+0:71          'g4' (float)

+0:71          0.007321

+0:72      Sequence

+0:72        move second child to first child (float)

+0:72          'g5' (float)

+0:72          32000.000000

+0:73      Sequence

+0:73        move second child to first child (float)

+0:73          'g6' (float)

+0:73          0.000005

+0:74      Sequence

+0:74        move second child to first child (float)

+0:74          'g7' (float)

+0:74          0.450000

+0:75      Sequence

+0:75        move second child to first child (float)

+0:75          'g8' (float)

+0:75          60000000000.000000

+0:77      Sequence

+0:77        move second child to first child (double)

+0:77          'gf1' (double)

+0:77          1.000000

+0:78      Sequence

+0:78        move second child to first child (double)

+0:78          'gf2' (double)

+0:78          2.000000

+0:79      Sequence

+0:79        move second child to first child (double)

+0:79          'gf3' (double)

+0:79          3.000000

+0:80      Sequence

+0:80        move second child to first child (double)

+0:80          'gf4' (double)

+0:80          4.000000

+0:81      Sequence

+0:81        move second child to first child (float)

+0:81          'gf5' (float)

+0:81          5.000000

+0:82      Sequence

+0:82        move second child to first child (float)

+0:82          'gf6' (float)

+0:82          6.000000

+0:88      Sequence

+0:88        move second child to first child (float)

+0:88          'e5' (float)

+0:88          5.000000

+0:?   Linker Objects

+0:?     'c2' (layout(location=2 ) out 4-component vector of float)

+0:?     'c3' (layout(location=3 ) out 4-component vector of float)

+0:?     'c4' (layout(location=4 ) out 4-component vector of float)

+0:?     'c5' (layout(location=5 ) out 4-component vector of float)

+0:?     'c6' (layout(location=6 ) out 4-component vector of float)

+0:?     'c7' (layout(location=7 ) out 4-component vector of float)

+

diff --git a/Test/baseResults/pointCoord.frag.out b/Test/baseResults/pointCoord.frag.out
new file mode 100644
index 0000000..5b01501
--- /dev/null
+++ b/Test/baseResults/pointCoord.frag.out
@@ -0,0 +1,30 @@
+WARNING: 0:1: '#version' : statement missing: use #version on first line of shader 

+0:? Sequence

+0:5  Function Definition: main( (void)

+0:5    Function Parameters: 

+0:?     Sequence

+0:9      Test condition and select (void)

+0:9        Condition

+0:9        Compare Less Than (bool)

+0:9          length (mediump float)

+0:9            'gl_PointCoord' (gl_PointCoord mediump 2-component vector of float)

+0:9          0.300000

+0:9        true case

+0:10        move second child to first child (highp 4-component vector of float)

+0:10          'color' (highp 4-component vector of float)

+0:10          Function Call: texture2D(s21;vf2; (lowp 4-component vector of float)

+0:10            'sampler' (uniform lowp sampler2D)

+0:10            'gl_PointCoord' (gl_PointCoord mediump 2-component vector of float)

+0:9        false case

+0:12        move second child to first child (highp 4-component vector of float)

+0:12          'color' (highp 4-component vector of float)

+0:12          0.000000

+0:12          0.000000

+0:12          0.000000

+0:12          0.000000

+0:14      move second child to first child (highp 4-component vector of float)

+0:14        'gl_FragColor' (fragColor mediump 4-component vector of float)

+0:14        'color' (highp 4-component vector of float)

+0:?   Linker Objects

+0:?     'sampler' (uniform lowp sampler2D)

+

diff --git a/Test/baseResults/precision.frag.out b/Test/baseResults/precision.frag.out
new file mode 100644
index 0000000..e36f97a
--- /dev/null
+++ b/Test/baseResults/precision.frag.out
@@ -0,0 +1,105 @@
+ERROR: 0:3: 'float' : type requires declaration of default precision qualifier 

+ERROR: 0:18: 'int' : cannot apply precision statement to this type; use 'float', 'int' or a sampler type 

+ERROR: 0:19: 'int' : cannot apply precision statement to this type; use 'float', 'int' or a sampler type 

+ERROR: 0:21: 'float' : cannot apply precision statement to this type; use 'float', 'int' or a sampler type 

+ERROR: 0:72: 'bool' : cannot apply precision statement to this type; use 'float', 'int' or a sampler type 

+ERROR: 0:75: 'structure' : cannot apply precision statement to this type; use 'float', 'int' or a sampler type 

+ERROR: 0:76: 'bool' : type cannot have precision qualifier 

+ERROR: 7 compilation errors.  No code generated.

+

+ERROR: node is still EOpNull!

+0:5  Function Definition: foo(vf3; (lowp 2-component vector of float)

+0:5    Function Parameters: 

+0:5      'mv3' (in mediump 3-component vector of float)

+0:?     Sequence

+0:8      Branch: Return with expression

+0:8        vector swizzle (highp 2-component vector of float)

+0:8          'hv4' (highp 4-component vector of float)

+0:8          Sequence

+0:8            0 (const int)

+0:8            1 (const int)

+0:25  Function Definition: main( (void)

+0:25    Function Parameters: 

+0:27    Sequence

+0:27      Sequence

+0:27        move second child to first child (highp int)

+0:27          'sum' (lowp int)

+0:27          add (highp int)

+0:27            'global_medium' (mediump int)

+0:27            'global_high' (highp int)

+0:29      move second child to first child (mediump 4-component vector of float)

+0:29        'gl_FragColor' (fragColor mediump 4-component vector of float)

+0:29        Construct vec4 (mediump 4-component vector of float)

+0:29          'color' (smooth in mediump 3-component vector of float)

+0:29          1.000000

+0:32      add second child into first child (highp int)

+0:32        'sum' (lowp int)

+0:32        'level1_high' (highp int)

+0:36      add second child into first child (lowp int)

+0:36        'sum' (lowp int)

+0:36        'level1_low' (lowp int)

+0:41      Sequence

+0:41        move second child to first child (mediump float)

+0:41          'd' (lowp float)

+0:41          distance (mediump float)

+0:41            'arg1' (lowp float)

+0:41            'arg2' (mediump float)

+0:?       Sequence

+0:45        add second child into first child (lowp int)

+0:45          'sum' (lowp int)

+0:45          'level2_low' (lowp int)

+0:49        add second child into first child (highp int)

+0:49          'sum' (lowp int)

+0:49          'level2_high' (highp int)

+0:58        Loop with condition not tested first

+0:58          Loop Condition

+0:58          true (const bool)

+0:58          Loop Body

+0:?           Sequence

+0:?             Sequence

+0:54              add second child into first child (mediump int)

+0:54                'sum' (lowp int)

+0:54                'level4_medium' (mediump int)

+0:57            add second child into first child (highp int)

+0:57              'sum' (lowp int)

+0:57              'level3_high' (highp int)

+0:60        add second child into first child (highp int)

+0:60          'sum' (lowp int)

+0:60          'level2_high2' (highp int)

+0:63      add second child into first child (lowp int)

+0:63        'sum' (lowp int)

+0:63        'level1_low3' (lowp int)

+0:65      add second child into first child (lowp int)

+0:65        'sum' (lowp int)

+0:65        add (lowp int)

+0:65          4 (const int)

+0:65          direct index (lowp int)

+0:65            add (lowp 2-component vector of int)

+0:65              component-wise multiply (lowp 2-component vector of int)

+0:65                Construct ivec2 (lowp 2-component vector of int)

+0:65                  'level1_low3' (lowp int)

+0:65                Construct ivec2 (lowp 2-component vector of int)

+0:65                  'level1_high' (highp int)

+0:65              Construct ivec2 (lowp 2-component vector of int)

+0:65                Comma (highp int)

+0:65                  'level1_low3' (lowp int)

+0:65                  'level1_high' (highp int)

+0:65            0 (const int)

+0:67      Function Call: texture2D(s21;vf2; (lowp 4-component vector of float)

+0:67        'samplerLow' (uniform lowp sampler2D)

+0:67        0.100000

+0:67        0.200000

+0:68      Function Call: texture2D(s21;vf2; (mediump 4-component vector of float)

+0:68        'samplerMed' (uniform mediump sampler2D)

+0:68        0.100000

+0:68        0.200000

+0:69      Function Call: texture2D(s21;vf2; (highp 4-component vector of float)

+0:69        'samplerHigh' (uniform highp sampler2D)

+0:69        0.100000

+0:69        0.200000

+0:?   Linker Objects

+0:?     'color' (smooth in mediump 3-component vector of float)

+0:?     'samplerLow' (uniform lowp sampler2D)

+0:?     'samplerMed' (uniform mediump sampler2D)

+0:?     'samplerHigh' (uniform highp sampler2D)

+

diff --git a/Test/baseResults/precision.vert.out b/Test/baseResults/precision.vert.out
new file mode 100644
index 0000000..ed13267
--- /dev/null
+++ b/Test/baseResults/precision.vert.out
@@ -0,0 +1,45 @@
+ERROR: 0:7: 'sampler/image' : type requires declaration of default precision qualifier 

+ERROR: 0:8: 'sampler/image' : type requires declaration of default precision qualifier 

+ERROR: 0:14: 'sampler/image' : type requires declaration of default precision qualifier 

+ERROR: 3 compilation errors.  No code generated.

+

+ERROR: node is still EOpNull!

+0:18  Function Definition: main( (void)

+0:18    Function Parameters: 

+0:20    Sequence

+0:20      Sequence

+0:20        move second child to first child (highp 4-component vector of float)

+0:20          't' (highp 4-component vector of float)

+0:20          Function Call: texture(s21;vf2; (highp 4-component vector of float)

+0:20            's2D' (uniform lowp sampler2D)

+0:20            0.100000

+0:20            0.200000

+0:21      add second child into first child (highp 4-component vector of float)

+0:21        't' (highp 4-component vector of float)

+0:21        Function Call: texture(s21;vf2; (highp 4-component vector of float)

+0:21          's2Dhigh' (uniform highp sampler2D)

+0:21          0.100000

+0:21          0.200000

+0:22      add second child into first child (highp 4-component vector of float)

+0:22        't' (highp 4-component vector of float)

+0:22        Function Call: texture(sAS21;vf4; (highp float)

+0:22          's2dAS' (uniform mediump sampler2DArrayShadow)

+0:22          0.500000

+0:22          0.500000

+0:22          0.500000

+0:22          0.500000

+0:24      move second child to first child (highp 4-component vector of float)

+0:24        'gl_Position' (gl_Position highp 4-component vector of float)

+0:24        'pos' (in highp 4-component vector of float)

+0:?   Linker Objects

+0:?     'pos' (in highp 4-component vector of float)

+0:?     's2D' (uniform lowp sampler2D)

+0:?     'sCube' (uniform lowp samplerCube)

+0:?     'is2DAbad' (uniform mediump isampler2DArray)

+0:?     's2dASbad' (uniform mediump sampler2DArrayShadow)

+0:?     's2dAS' (uniform mediump sampler2DArrayShadow)

+0:?     'is2DAbad2' (uniform mediump isampler2DArray)

+0:?     's2Dhigh' (uniform highp sampler2D)

+0:?     'gl_VertexID' (gl_VertexId highp int)

+0:?     'gl_InstanceID' (gl_InstanceId highp int)

+

diff --git a/Test/baseResults/prepost.frag.out b/Test/baseResults/prepost.frag.out
new file mode 100644
index 0000000..bddbcae
--- /dev/null
+++ b/Test/baseResults/prepost.frag.out
@@ -0,0 +1,112 @@
+0:3Function Definition: main( (void)

+0:3  Function Parameters: 

+0:?   Sequence

+0:10    Sequence

+0:10      move second child to first child (int)

+0:10        'index' (int)

+0:10        5 (const int)

+0:12    move second child to first child (float)

+0:12      direct index (float)

+0:12        y: direct index for structure (5-element array of float)

+0:12          'str' (structure)

+0:12          0 (const int)

+0:12        4 (const int)

+0:12      2.000000

+0:13    move second child to first child (float)

+0:13      't' (float)

+0:13      Pre-Increment (float)

+0:13        indirect index (float)

+0:13          y: direct index for structure (5-element array of float)

+0:13            'str' (structure)

+0:13            0 (const int)

+0:13          Pre-Decrement (int)

+0:13            'index' (int)

+0:14    add second child into first child (float)

+0:14      direct index (float)

+0:14        y: direct index for structure (5-element array of float)

+0:14          'str' (structure)

+0:14          0 (const int)

+0:14        4 (const int)

+0:14      't' (float)

+0:15    move second child to first child (float)

+0:15      't' (float)

+0:15      Post-Decrement (float)

+0:15        direct index (float)

+0:15          y: direct index for structure (5-element array of float)

+0:15            'str' (structure)

+0:15            0 (const int)

+0:15          4 (const int)

+0:16    add second child into first child (float)

+0:16      indirect index (float)

+0:16        y: direct index for structure (5-element array of float)

+0:16          'str' (structure)

+0:16          0 (const int)

+0:16        Post-Increment (int)

+0:16          'index' (int)

+0:16      't' (float)

+0:17    Pre-Decrement (float)

+0:17      indirect index (float)

+0:17        y: direct index for structure (5-element array of float)

+0:17          'str' (structure)

+0:17          0 (const int)

+0:17        Pre-Decrement (int)

+0:17          'index' (int)

+0:19    Sequence

+0:19      move second child to first child (float)

+0:19        'x' (float)

+0:19        direct index (float)

+0:19          y: direct index for structure (5-element array of float)

+0:19            'str' (structure)

+0:19            0 (const int)

+0:19          4 (const int)

+0:20    Pre-Increment (float)

+0:20      'x' (float)

+0:21    Pre-Decrement (float)

+0:21      'x' (float)

+0:22    Post-Increment (float)

+0:22      'x' (float)

+0:23    Post-Decrement (float)

+0:23      'x' (float)

+0:27    Sequence

+0:27      move second child to first child (float)

+0:27        'y' (float)

+0:27        component-wise multiply (float)

+0:27          'x' (float)

+0:27          Pre-Increment (float)

+0:27            'x' (float)

+0:28    Sequence

+0:28      move second child to first child (float)

+0:28        'z' (float)

+0:28        component-wise multiply (float)

+0:28          'y' (float)

+0:28          Post-Decrement (float)

+0:28            'x' (float)

+0:33    Sequence

+0:33      move second child to first child (4-component vector of float)

+0:33        'v' (4-component vector of float)

+0:33        1.000000

+0:33        2.000000

+0:33        3.000000

+0:33        4.000000

+0:34    move second child to first child (float)

+0:34      direct index (float)

+0:34        'v' (4-component vector of float)

+0:34        1 (const int)

+0:34      Post-Decrement (float)

+0:34        direct index (float)

+0:34          'v' (4-component vector of float)

+0:34          2 (const int)

+0:35    move second child to first child (float)

+0:35      direct index (float)

+0:35        'v' (4-component vector of float)

+0:35        0 (const int)

+0:35      Pre-Decrement (float)

+0:35        direct index (float)

+0:35          'v' (4-component vector of float)

+0:35          3 (const int)

+0:37    move second child to first child (4-component vector of float)

+0:37      'gl_FragColor' (fragColor 4-component vector of float)

+0:37      vector-scale (4-component vector of float)

+0:37        'z' (float)

+0:37        'v' (4-component vector of float)

+

diff --git a/Test/baseResults/sample.frag.out b/Test/baseResults/sample.frag.out
new file mode 100644
index 0000000..0b5f302
--- /dev/null
+++ b/Test/baseResults/sample.frag.out
@@ -0,0 +1,12 @@
+0:? Sequence

+0:38  Function Definition: main( (void)

+0:38    Function Parameters: 

+0:40    Sequence

+0:40      move second child to first child (4-component vector of float)

+0:40        'gl_FragColor' (fragColor 4-component vector of float)

+0:40        Construct vec4 (4-component vector of float)

+0:40          'color' (smooth in 3-component vector of float)

+0:40          1.000000

+0:?   Linker Objects

+0:?     'color' (smooth in 3-component vector of float)

+

diff --git a/Test/baseResults/sample.vert.out b/Test/baseResults/sample.vert.out
new file mode 100644
index 0000000..34628e3
--- /dev/null
+++ b/Test/baseResults/sample.vert.out
@@ -0,0 +1,17 @@
+0:? Sequence

+0:38  Function Definition: main( (void)

+0:38    Function Parameters: 

+0:40    Sequence

+0:40      move second child to first child (3-component vector of float)

+0:40        'color' (smooth out 3-component vector of float)

+0:40        1.000000

+0:40        1.000000

+0:40        1.000000

+0:42      move second child to first child (4-component vector of float)

+0:42        'gl_Position' (gl_Position 4-component vector of float)

+0:42        matrix-times-vector (4-component vector of float)

+0:42          'gl_ModelViewProjectionMatrix' (uniform 4X4 matrix of float)

+0:42          'gl_Vertex' (in 4-component vector of float)

+0:?   Linker Objects

+0:?     'color' (smooth out 3-component vector of float)

+

diff --git a/Test/baseResults/simpleFunctionCall.frag.out b/Test/baseResults/simpleFunctionCall.frag.out
new file mode 100644
index 0000000..fa0bee7
--- /dev/null
+++ b/Test/baseResults/simpleFunctionCall.frag.out
@@ -0,0 +1,18 @@
+WARNING: 0:4: varying deprecated in version 130; may be removed in future release

+0:? Sequence

+0:7  Function Definition: foo( (4-component vector of float)

+0:7    Function Parameters: 

+0:9    Sequence

+0:9      Branch: Return with expression

+0:9        'BaseColor' (smooth in 4-component vector of float)

+0:12  Function Definition: main( (void)

+0:12    Function Parameters: 

+0:14    Sequence

+0:14      move second child to first child (4-component vector of float)

+0:14        'gl_FragColor' (fragColor 4-component vector of float)

+0:14        Function Call: foo( (4-component vector of float)

+0:?   Linker Objects

+0:?     'bigColor' (uniform 4-component vector of float)

+0:?     'BaseColor' (smooth in 4-component vector of float)

+0:?     'd' (uniform float)

+

diff --git a/Test/baseResults/solidworks.frag.out b/Test/baseResults/solidworks.frag.out
new file mode 100644
index 0000000..624479c
--- /dev/null
+++ b/Test/baseResults/solidworks.frag.out
@@ -0,0 +1,2947 @@
+0:? Sequence

+0:210  Function Definition: saturate(vf4; (4-component vector of float)

+0:210    Function Parameters: 

+0:210      'value' (in 4-component vector of float)

+0:212    Sequence

+0:212      Branch: Return with expression

+0:212        clamp (4-component vector of float)

+0:212          'value' (in 4-component vector of float)

+0:212          0.000000

+0:212          1.000000

+0:214  Function Definition: saturate(vf3; (3-component vector of float)

+0:214    Function Parameters: 

+0:214      'value' (in 3-component vector of float)

+0:216    Sequence

+0:216      Branch: Return with expression

+0:216        clamp (3-component vector of float)

+0:216          'value' (in 3-component vector of float)

+0:216          0.000000

+0:216          1.000000

+0:218  Function Definition: saturate(vf2; (2-component vector of float)

+0:218    Function Parameters: 

+0:218      'value' (in 2-component vector of float)

+0:220    Sequence

+0:220      Branch: Return with expression

+0:220        clamp (2-component vector of float)

+0:220          'value' (in 2-component vector of float)

+0:220          0.000000

+0:220          1.000000

+0:222  Function Definition: saturate(f1; (float)

+0:222    Function Parameters: 

+0:222      'value' (in float)

+0:224    Sequence

+0:224      Branch: Return with expression

+0:224        clamp (float)

+0:224          'value' (in float)

+0:224          0.000000

+0:224          1.000000

+0:227  Function Definition: SphereMapCoord(vf3; (2-component vector of float)

+0:227    Function Parameters: 

+0:227      'envcoord' (in 3-component vector of float)

+0:229    Sequence

+0:229      Sequence

+0:229        move second child to first child (3-component vector of float)

+0:229          'd' (3-component vector of float)

+0:229          normalize (3-component vector of float)

+0:229            'envcoord' (in 3-component vector of float)

+0:230      Branch: Return with expression

+0:230        Construct vec2 (2-component vector of float)

+0:230          subtract (float)

+0:230            component-wise multiply (float)

+0:230              component-wise multiply (float)

+0:230                arc tangent (float)

+0:230                  direct index (float)

+0:230                    'd' (3-component vector of float)

+0:230                    2 (const int)

+0:230                  direct index (float)

+0:230                    'd' (3-component vector of float)

+0:230                    0 (const int)

+0:230                0.318309

+0:230              0.500000

+0:230            0.250000

+0:230          add (float)

+0:230            component-wise multiply (float)

+0:230              arc sine (float)

+0:230                direct index (float)

+0:230                  'd' (3-component vector of float)

+0:230                  1 (const int)

+0:230              0.318309

+0:230            0.500000

+0:233  Function Definition: Flip(vf2;b1; (2-component vector of float)

+0:233    Function Parameters: 

+0:233      'coord' (in 2-component vector of float)

+0:233      'envmapFlip' (const (read only) bool)

+0:235    Sequence

+0:235      Test condition and select (void)

+0:235        Condition

+0:235        'envmapFlip' (const (read only) bool)

+0:235        true case

+0:235        Branch: Return with expression

+0:235          Construct vec2 (2-component vector of float)

+0:235            direct index (float)

+0:235              'coord' (in 2-component vector of float)

+0:235              0 (const int)

+0:235            subtract (float)

+0:235              1.000000

+0:235              direct index (float)

+0:235                'coord' (in 2-component vector of float)

+0:235                1 (const int)

+0:235        false case

+0:236        Branch: Return with expression

+0:236          'coord' (in 2-component vector of float)

+0:239  Function Definition: Affine(vf4; (3-component vector of float)

+0:239    Function Parameters: 

+0:239      'v' (in 4-component vector of float)

+0:241    Sequence

+0:241      Branch: Return with expression

+0:241        vector-scale (3-component vector of float)

+0:241          vector swizzle (3-component vector of float)

+0:241            'v' (in 4-component vector of float)

+0:241            Sequence

+0:241              0 (const int)

+0:241              1 (const int)

+0:241              2 (const int)

+0:241          divide (float)

+0:241            1.000000

+0:241            direct index (float)

+0:241              'v' (in 4-component vector of float)

+0:241              3 (const int)

+0:246  Function Definition: myExp(f1; (float)

+0:246    Function Parameters: 

+0:246      'x' (in float)

+0:246    Sequence

+0:246      Branch: Return with expression

+0:246        pow (float)

+0:246          2.718282

+0:246          'x' (in float)

+0:247  Function Definition: myLog(f1; (float)

+0:247    Function Parameters: 

+0:247      'x' (in float)

+0:247    Sequence

+0:247      Branch: Return with expression

+0:247        log (float)

+0:247          'x' (in float)

+0:249  Function Definition: myExpBase(f1;f1; (float)

+0:249    Function Parameters: 

+0:249      'x' (in float)

+0:249      'base' (in float)

+0:249    Sequence

+0:249      Branch: Return with expression

+0:249        pow (float)

+0:249          'base' (in float)

+0:249          'x' (in float)

+0:250  Function Definition: myLogBase(f1;f1; (float)

+0:250    Function Parameters: 

+0:250      'x' (in float)

+0:250      'base' (in float)

+0:250    Sequence

+0:250      Branch: Return with expression

+0:250        divide (float)

+0:250          log (float)

+0:250            'x' (in float)

+0:250          log (float)

+0:250            'base' (in float)

+0:255  Function Definition: GetLuminance(vf3; (float)

+0:255    Function Parameters: 

+0:255      'color' (in 3-component vector of float)

+0:257    Sequence

+0:257      Branch: Return with expression

+0:257        max (float)

+0:257          dot-product (float)

+0:257            0.300000

+0:257            0.590000

+0:257            0.110000

+0:257            'color' (in 3-component vector of float)

+0:257          0.000000

+0:261  Function Definition: nonZeroSign(f1; (float)

+0:261    Function Parameters: 

+0:261      'x' (in float)

+0:263    Sequence

+0:263      Branch: Return with expression

+0:263        Test condition and select (const float)

+0:263          Condition

+0:263          Compare Less Than (bool)

+0:263            'x' (in float)

+0:263            0.000000

+0:263          true case

+0:263          -1.000000

+0:263          false case

+0:263          1.000000

+0:266  Function Definition: ApplyMat2D(vf2;mf44; (2-component vector of float)

+0:266    Function Parameters: 

+0:266      'v' (in 2-component vector of float)

+0:266      'm' (in 4X4 matrix of float)

+0:268    Sequence

+0:268      Branch: Return with expression

+0:268        vector swizzle (2-component vector of float)

+0:268          matrix-times-vector (4-component vector of float)

+0:268            'm' (in 4X4 matrix of float)

+0:268            Construct vec4 (4-component vector of float)

+0:268              'v' (in 2-component vector of float)

+0:268              0.000000

+0:268              1.000000

+0:268          Sequence

+0:268            0 (const int)

+0:268            1 (const int)

+0:272  Function Definition: saturateLight(vf4; (4-component vector of float)

+0:272    Function Parameters: 

+0:272      'value' (in 4-component vector of float)

+0:275    Sequence

+0:275      Branch: Return with expression

+0:275        Function Call: saturate(vf4; (4-component vector of float)

+0:275          'value' (in 4-component vector of float)

+0:277  Function Definition: saturateLight(vf3; (3-component vector of float)

+0:277    Function Parameters: 

+0:277      'value' (in 3-component vector of float)

+0:280    Sequence

+0:280      Branch: Return with expression

+0:280        Function Call: saturate(vf3; (3-component vector of float)

+0:280          'value' (in 3-component vector of float)

+0:282  Function Definition: saturateLight(vf2; (2-component vector of float)

+0:282    Function Parameters: 

+0:282      'value' (in 2-component vector of float)

+0:285    Sequence

+0:285      Branch: Return with expression

+0:285        Function Call: saturate(vf2; (2-component vector of float)

+0:285          'value' (in 2-component vector of float)

+0:287  Function Definition: saturateLight(f1; (float)

+0:287    Function Parameters: 

+0:287      'value' (in float)

+0:290    Sequence

+0:290      Branch: Return with expression

+0:290        Function Call: saturate(f1; (float)

+0:290          'value' (in float)

+0:293  Function Definition: SetSwizzleInW(vf3;vf4;vf4;vf4; (void)

+0:293    Function Parameters: 

+0:293      'value' (in 3-component vector of float)

+0:293      'vx' (inout 4-component vector of float)

+0:293      'vy' (inout 4-component vector of float)

+0:293      'vz' (inout 4-component vector of float)

+0:295    Sequence

+0:295      move second child to first child (float)

+0:295        direct index (float)

+0:295          'vx' (inout 4-component vector of float)

+0:295          3 (const int)

+0:295        direct index (float)

+0:295          'value' (in 3-component vector of float)

+0:295          0 (const int)

+0:296      move second child to first child (float)

+0:296        direct index (float)

+0:296          'vy' (inout 4-component vector of float)

+0:296          3 (const int)

+0:296        direct index (float)

+0:296          'value' (in 3-component vector of float)

+0:296          1 (const int)

+0:297      move second child to first child (float)

+0:297        direct index (float)

+0:297          'vz' (inout 4-component vector of float)

+0:297          3 (const int)

+0:297        direct index (float)

+0:297          'value' (in 3-component vector of float)

+0:297          2 (const int)

+0:299  Function Definition: GetSwizzleInW(vf4;vf4;vf4; (3-component vector of float)

+0:299    Function Parameters: 

+0:299      'vx' (in 4-component vector of float)

+0:299      'vy' (in 4-component vector of float)

+0:299      'vz' (in 4-component vector of float)

+0:301    Sequence

+0:301      Branch: Return with expression

+0:301        Construct vec3 (3-component vector of float)

+0:301          direct index (float)

+0:301            'vx' (in 4-component vector of float)

+0:301            3 (const int)

+0:301          direct index (float)

+0:301            'vy' (in 4-component vector of float)

+0:301            3 (const int)

+0:301          direct index (float)

+0:301            'vz' (in 4-component vector of float)

+0:301            3 (const int)

+0:304  Function Definition: Max3(vf3; (float)

+0:304    Function Parameters: 

+0:304      'lightSpec' (in 3-component vector of float)

+0:306    Sequence

+0:306      Sequence

+0:306        move second child to first child (float)

+0:306          'maxSpec' (float)

+0:306          Test condition and select (float)

+0:306            Condition

+0:306            Compare Greater Than (bool)

+0:306              direct index (float)

+0:306                'lightSpec' (in 3-component vector of float)

+0:306                0 (const int)

+0:306              direct index (float)

+0:306                'lightSpec' (in 3-component vector of float)

+0:306                1 (const int)

+0:306            true case

+0:306            direct index (float)

+0:306              'lightSpec' (in 3-component vector of float)

+0:306              0 (const int)

+0:306            false case

+0:306            direct index (float)

+0:306              'lightSpec' (in 3-component vector of float)

+0:306              1 (const int)

+0:307      Test condition and select (void)

+0:307        Condition

+0:307        Compare Greater Than (bool)

+0:307          direct index (float)

+0:307            'lightSpec' (in 3-component vector of float)

+0:307            2 (const int)

+0:307          'maxSpec' (float)

+0:307        true case

+0:307        move second child to first child (float)

+0:307          'maxSpec' (float)

+0:307          direct index (float)

+0:307            'lightSpec' (in 3-component vector of float)

+0:307            2 (const int)

+0:308      Branch: Return with expression

+0:308        'maxSpec' (float)

+0:311  Function Definition: pGetProjectedPosition(vf4;mf44; (4-component vector of float)

+0:311    Function Parameters: 

+0:311      'oPosition' (in 4-component vector of float)

+0:311      'o2pMatrix' (in 4X4 matrix of float)

+0:313    Sequence

+0:313      Branch: Return with expression

+0:313        matrix-times-vector (4-component vector of float)

+0:313          'o2pMatrix' (in 4X4 matrix of float)

+0:313          'oPosition' (in 4-component vector of float)

+0:316  Function Definition: eGetNormal(vf3;mf33;b1; (3-component vector of float)

+0:316    Function Parameters: 

+0:316      'oNormal' (in 3-component vector of float)

+0:316      'o2eMatrix' (in 3X3 matrix of float)

+0:316      'bDoubleSided' (in bool)

+0:318    Sequence

+0:318      Sequence

+0:318        move second child to first child (3-component vector of float)

+0:318          'normal' (3-component vector of float)

+0:318          normalize (3-component vector of float)

+0:318            matrix-times-vector (3-component vector of float)

+0:318              'o2eMatrix' (in 3X3 matrix of float)

+0:318              'oNormal' (in 3-component vector of float)

+0:320      Test condition and select (void)

+0:320        Condition

+0:320        logical-and (bool)

+0:320          Compare Less Than (bool)

+0:320            direct index (float)

+0:320              'normal' (3-component vector of float)

+0:320              2 (const int)

+0:320            0.000000

+0:320          'bDoubleSided' (in bool)

+0:320        true case

+0:322        Sequence

+0:322          move second child to first child (3-component vector of float)

+0:322            'normal' (3-component vector of float)

+0:322            Negate value (3-component vector of float)

+0:322              'normal' (3-component vector of float)

+0:324      Branch: Return with expression

+0:324        'normal' (3-component vector of float)

+0:326  Function Definition: t2eGetMatrixTBN(mf33;vf3;vf3;b1; (3X3 matrix of float)

+0:326    Function Parameters: 

+0:326      'o2eMatrix' (in 3X3 matrix of float)

+0:326      'oNormal' (in 3-component vector of float)

+0:326      'oTangent' (in 3-component vector of float)

+0:326      'bDoubleSided' (in bool)

+0:?     Sequence

+0:331      move second child to first child (3-component vector of float)

+0:331        direct index (3-component vector of float)

+0:331          'res' (3X3 matrix of float)

+0:331          2 (const int)

+0:331        normalize (3-component vector of float)

+0:331          matrix-times-vector (3-component vector of float)

+0:331            'o2eMatrix' (in 3X3 matrix of float)

+0:331            'oNormal' (in 3-component vector of float)

+0:332      move second child to first child (3-component vector of float)

+0:332        direct index (3-component vector of float)

+0:332          'res' (3X3 matrix of float)

+0:332          0 (const int)

+0:332        normalize (3-component vector of float)

+0:332          matrix-times-vector (3-component vector of float)

+0:332            'o2eMatrix' (in 3X3 matrix of float)

+0:332            'oTangent' (in 3-component vector of float)

+0:333      move second child to first child (3-component vector of float)

+0:333        direct index (3-component vector of float)

+0:333          'res' (3X3 matrix of float)

+0:333          1 (const int)

+0:333        normalize (3-component vector of float)

+0:333          cross-product (3-component vector of float)

+0:333            direct index (3-component vector of float)

+0:333              'res' (3X3 matrix of float)

+0:333              0 (const int)

+0:333            direct index (3-component vector of float)

+0:333              'res' (3X3 matrix of float)

+0:333              2 (const int)

+0:334      move second child to first child (3-component vector of float)

+0:334        direct index (3-component vector of float)

+0:334          'res' (3X3 matrix of float)

+0:334          0 (const int)

+0:334        normalize (3-component vector of float)

+0:334          cross-product (3-component vector of float)

+0:334            direct index (3-component vector of float)

+0:334              'res' (3X3 matrix of float)

+0:334              2 (const int)

+0:334            direct index (3-component vector of float)

+0:334              'res' (3X3 matrix of float)

+0:334              1 (const int)

+0:336      Test condition and select (void)

+0:336        Condition

+0:336        logical-and (bool)

+0:336          Compare Less Than (bool)

+0:336            direct index (float)

+0:336              direct index (3-component vector of float)

+0:336                'res' (3X3 matrix of float)

+0:336                2 (const int)

+0:336              2 (const int)

+0:336            0.000000

+0:336          'bDoubleSided' (in bool)

+0:336        true case

+0:338        Sequence

+0:338          move second child to first child (3-component vector of float)

+0:338            direct index (3-component vector of float)

+0:338              'res' (3X3 matrix of float)

+0:338              2 (const int)

+0:338            Negate value (3-component vector of float)

+0:338              direct index (3-component vector of float)

+0:338                'res' (3X3 matrix of float)

+0:338                2 (const int)

+0:340      Branch: Return with expression

+0:340        'res' (3X3 matrix of float)

+0:342  Function Definition: CreateMatrixTBN(vf3;vf3;b1; (3X3 matrix of float)

+0:342    Function Parameters: 

+0:342      'eTangent' (in 3-component vector of float)

+0:342      'eNormal' (in 3-component vector of float)

+0:342      'bDoubleSided' (in bool)

+0:?     Sequence

+0:347      move second child to first child (3-component vector of float)

+0:347        direct index (3-component vector of float)

+0:347          'res' (3X3 matrix of float)

+0:347          2 (const int)

+0:347        'eNormal' (in 3-component vector of float)

+0:348      move second child to first child (3-component vector of float)

+0:348        direct index (3-component vector of float)

+0:348          'res' (3X3 matrix of float)

+0:348          0 (const int)

+0:348        'eTangent' (in 3-component vector of float)

+0:349      move second child to first child (3-component vector of float)

+0:349        direct index (3-component vector of float)

+0:349          'res' (3X3 matrix of float)

+0:349          1 (const int)

+0:349        Negate value (3-component vector of float)

+0:349          normalize (3-component vector of float)

+0:349            cross-product (3-component vector of float)

+0:349              direct index (3-component vector of float)

+0:349                'res' (3X3 matrix of float)

+0:349                2 (const int)

+0:349              direct index (3-component vector of float)

+0:349                'res' (3X3 matrix of float)

+0:349                0 (const int)

+0:351      Test condition and select (void)

+0:351        Condition

+0:351        logical-and (bool)

+0:351          Compare Less Than (bool)

+0:351            direct index (float)

+0:351              direct index (3-component vector of float)

+0:351                'res' (3X3 matrix of float)

+0:351                2 (const int)

+0:351              2 (const int)

+0:351            0.000000

+0:351          'bDoubleSided' (in bool)

+0:351        true case

+0:353        Sequence

+0:353          move second child to first child (3-component vector of float)

+0:353            direct index (3-component vector of float)

+0:353              'res' (3X3 matrix of float)

+0:353              2 (const int)

+0:353            Negate value (3-component vector of float)

+0:353              direct index (3-component vector of float)

+0:353                'res' (3X3 matrix of float)

+0:353                2 (const int)

+0:355      Branch: Return with expression

+0:355        'res' (3X3 matrix of float)

+0:357  Function Definition: tGetBumpNormal(s21;vf2;b1; (3-component vector of float)

+0:357    Function Parameters: 

+0:357      'normalMap' (in sampler2D)

+0:357      'commonCoord' (in 2-component vector of float)

+0:357      'bNormalHack' (in bool)

+0:359    Sequence

+0:359      Sequence

+0:359        move second child to first child (3-component vector of float)

+0:359          'tBumpNormal' (3-component vector of float)

+0:359          subtract (3-component vector of float)

+0:359            vector-scale (3-component vector of float)

+0:359              2.000000

+0:359              Construct vec3 (3-component vector of float)

+0:359                Function Call: texture2D(s21;vf2; (4-component vector of float)

+0:359                  'normalMap' (in sampler2D)

+0:359                  'commonCoord' (in 2-component vector of float)

+0:359            1.000000

+0:359            1.000000

+0:359            1.000000

+0:360      Test condition and select (void)

+0:360        Condition

+0:360        'bNormalHack' (in bool)

+0:360        true case

+0:362        Sequence

+0:362          vector scale second child into first child (3-component vector of float)

+0:362            'tBumpNormal' (3-component vector of float)

+0:362            0.800000

+0:364      Branch: Return with expression

+0:364        normalize (3-component vector of float)

+0:364          'tBumpNormal' (3-component vector of float)

+0:366  Function Definition: tGetBumpMapNormal(s21;vf2;b1;f1; (3-component vector of float)

+0:366    Function Parameters: 

+0:366      'normalMap' (in sampler2D)

+0:366      'commonCoord' (in 2-component vector of float)

+0:366      'bNormalHack' (in bool)

+0:366      'scale' (in float)

+0:368    Sequence

+0:368      Sequence

+0:368        move second child to first child (float)

+0:368          'up' (float)

+0:368          direct index (float)

+0:368            Construct vec3 (3-component vector of float)

+0:368              Function Call: texture2D(s21;vf2; (4-component vector of float)

+0:368                'normalMap' (in sampler2D)

+0:368                Construct vec2 (2-component vector of float)

+0:368                  direct index (float)

+0:368                    'commonCoord' (in 2-component vector of float)

+0:368                    0 (const int)

+0:368                  add (float)

+0:368                    direct index (float)

+0:368                      'commonCoord' (in 2-component vector of float)

+0:368                      1 (const int)

+0:368                    0.010000

+0:368            0 (const int)

+0:369      Sequence

+0:369        move second child to first child (float)

+0:369          'down' (float)

+0:369          direct index (float)

+0:369            Construct vec3 (3-component vector of float)

+0:369              Function Call: texture2D(s21;vf2; (4-component vector of float)

+0:369                'normalMap' (in sampler2D)

+0:369                Construct vec2 (2-component vector of float)

+0:369                  direct index (float)

+0:369                    'commonCoord' (in 2-component vector of float)

+0:369                    0 (const int)

+0:369                  subtract (float)

+0:369                    direct index (float)

+0:369                      'commonCoord' (in 2-component vector of float)

+0:369                      1 (const int)

+0:369                    0.010000

+0:369            0 (const int)

+0:370      Sequence

+0:370        move second child to first child (float)

+0:370          'left' (float)

+0:370          direct index (float)

+0:370            Construct vec3 (3-component vector of float)

+0:370              Function Call: texture2D(s21;vf2; (4-component vector of float)

+0:370                'normalMap' (in sampler2D)

+0:370                Construct vec2 (2-component vector of float)

+0:370                  subtract (float)

+0:370                    direct index (float)

+0:370                      'commonCoord' (in 2-component vector of float)

+0:370                      0 (const int)

+0:370                    0.010000

+0:370                  direct index (float)

+0:370                    'commonCoord' (in 2-component vector of float)

+0:370                    1 (const int)

+0:370            0 (const int)

+0:371      Sequence

+0:371        move second child to first child (float)

+0:371          'right' (float)

+0:371          direct index (float)

+0:371            Construct vec3 (3-component vector of float)

+0:371              Function Call: texture2D(s21;vf2; (4-component vector of float)

+0:371                'normalMap' (in sampler2D)

+0:371                Construct vec2 (2-component vector of float)

+0:371                  add (float)

+0:371                    direct index (float)

+0:371                      'commonCoord' (in 2-component vector of float)

+0:371                      0 (const int)

+0:371                    0.010000

+0:371                  direct index (float)

+0:371                    'commonCoord' (in 2-component vector of float)

+0:371                    1 (const int)

+0:371            0 (const int)

+0:372      Sequence

+0:372        move second child to first child (3-component vector of float)

+0:372          'tBumpNormal' (3-component vector of float)

+0:372          Construct vec3 (3-component vector of float)

+0:372            subtract (float)

+0:372              'right' (float)

+0:372              'left' (float)

+0:372            subtract (float)

+0:372              'down' (float)

+0:372              'up' (float)

+0:372            'scale' (in float)

+0:373      Branch: Return with expression

+0:373        normalize (3-component vector of float)

+0:373          'tBumpNormal' (3-component vector of float)

+0:381  Function Definition: GetEyeInfo(vf4;mf44; (structure)

+0:381    Function Parameters: 

+0:381      'oPosition' (in 4-component vector of float)

+0:381      'o2eMatrix' (in 4X4 matrix of float)

+0:?     Sequence

+0:384      move second child to first child (4-component vector of float)

+0:384        ePosition: direct index for structure (4-component vector of float)

+0:384          'res' (structure)

+0:384          0 (const int)

+0:384        matrix-times-vector (4-component vector of float)

+0:384          'o2eMatrix' (in 4X4 matrix of float)

+0:384          'oPosition' (in 4-component vector of float)

+0:385      move second child to first child (3-component vector of float)

+0:385        eEyeDirection: direct index for structure (3-component vector of float)

+0:385          'res' (structure)

+0:385          1 (const int)

+0:385        normalize (3-component vector of float)

+0:385          vector swizzle (3-component vector of float)

+0:385            ePosition: direct index for structure (4-component vector of float)

+0:385              'res' (structure)

+0:385              0 (const int)

+0:385            Sequence

+0:385              0 (const int)

+0:385              1 (const int)

+0:385              2 (const int)

+0:387      Branch: Return with expression

+0:387        'res' (structure)

+0:390  Function Definition: eGetReflection(vf3;vf3;vf3; (3-component vector of float)

+0:390    Function Parameters: 

+0:390      'eNormal' (in 3-component vector of float)

+0:390      'eEnvEyePosition' (in 3-component vector of float)

+0:390      'eEyeCoordPosition' (in 3-component vector of float)

+0:392    Sequence

+0:392      Sequence

+0:392        move second child to first child (3-component vector of float)

+0:392          'viewVec' (3-component vector of float)

+0:392          subtract (3-component vector of float)

+0:392            'eEyeCoordPosition' (in 3-component vector of float)

+0:392            'eEnvEyePosition' (in 3-component vector of float)

+0:393      Branch: Return with expression

+0:393        subtract (3-component vector of float)

+0:393          'viewVec' (3-component vector of float)

+0:393          vector-scale (3-component vector of float)

+0:393            vector-scale (3-component vector of float)

+0:393              2.000000

+0:393              'eNormal' (in 3-component vector of float)

+0:393            dot-product (float)

+0:393              'eNormal' (in 3-component vector of float)

+0:393              'viewVec' (3-component vector of float)

+0:397  Function Definition: oGetAutomaticTangent(vf3;mf44; (3-component vector of float)

+0:397    Function Parameters: 

+0:397      'nNormal' (in 3-component vector of float)

+0:397      'n2oMatrix' (in 4X4 matrix of float)

+0:400    Sequence

+0:400      Sequence

+0:400        move second child to first child (3-component vector of float)

+0:400          'nAbsnormal' (3-component vector of float)

+0:400          Absolute value (3-component vector of float)

+0:400            'nNormal' (in 3-component vector of float)

+0:403      Sequence

+0:403        move second child to first child (3-component vector of float)

+0:403          'teststep' (3-component vector of float)

+0:403          step (3-component vector of float)

+0:403            0.000000

+0:403            0.000000

+0:403            0.000000

+0:403            subtract (3-component vector of float)

+0:403              'nAbsnormal' (3-component vector of float)

+0:403              vector swizzle (3-component vector of float)

+0:403                'nAbsnormal' (3-component vector of float)

+0:403                Sequence

+0:403                  1 (const int)

+0:403                  2 (const int)

+0:403                  0 (const int)

+0:404      Sequence

+0:404        move second child to first child (3-component vector of float)

+0:404          'teststep2' (3-component vector of float)

+0:404          subtract (3-component vector of float)

+0:404            1.000000

+0:404            1.000000

+0:404            1.000000

+0:404            vector swizzle (3-component vector of float)

+0:404              'teststep' (3-component vector of float)

+0:404              Sequence

+0:404                2 (const int)

+0:404                0 (const int)

+0:404                1 (const int)

+0:405      Sequence

+0:405        move second child to first child (3-component vector of float)

+0:405          'cmp' (3-component vector of float)

+0:405          component-wise multiply (3-component vector of float)

+0:405            'teststep' (3-component vector of float)

+0:405            'teststep2' (3-component vector of float)

+0:408      Test condition and select (void)

+0:408        Condition

+0:408        Compare Equal (bool)

+0:408          direct index (float)

+0:408            'cmp' (3-component vector of float)

+0:408            2 (const int)

+0:408          1.000000

+0:408        true case

+0:410        Sequence

+0:410          Branch: Return with expression

+0:410            1.000000

+0:410            0.000000

+0:410            0.000000

+0:412      Sequence

+0:412        move second child to first child (float)

+0:412          'nSign' (float)

+0:412          dot-product (float)

+0:412            Sign (3-component vector of float)

+0:412              'nNormal' (in 3-component vector of float)

+0:412            'cmp' (3-component vector of float)

+0:413      Test condition and select (void)

+0:413        Condition

+0:413        Compare Equal (bool)

+0:413          direct index (float)

+0:413            'cmp' (3-component vector of float)

+0:413            1 (const int)

+0:413          1.000000

+0:413        true case

+0:414        Branch: Return with expression

+0:414          Construct vec3 (3-component vector of float)

+0:414            Negate value (float)

+0:414              'nSign' (float)

+0:414            0.000000

+0:414            0.000000

+0:413        false case

+0:416        Branch: Return with expression

+0:416          Construct vec3 (3-component vector of float)

+0:416            0.000000

+0:416            'nSign' (float)

+0:416            0.000000

+0:418  Function Definition: xGetAutomaticTexCoords(vf3;vf3;mf44; (2-component vector of float)

+0:418    Function Parameters: 

+0:418      'nPos' (in 3-component vector of float)

+0:418      'nNormal' (in 3-component vector of float)

+0:418      'n2xMatrix' (in 4X4 matrix of float)

+0:421    Sequence

+0:421      Sequence

+0:421        move second child to first child (3-component vector of float)

+0:421          'nAbsnormal' (3-component vector of float)

+0:421          Absolute value (3-component vector of float)

+0:421            'nNormal' (in 3-component vector of float)

+0:424      Sequence

+0:424        move second child to first child (3-component vector of float)

+0:424          'teststep' (3-component vector of float)

+0:424          step (3-component vector of float)

+0:424            0.000000

+0:424            0.000000

+0:424            0.000000

+0:424            subtract (3-component vector of float)

+0:424              'nAbsnormal' (3-component vector of float)

+0:424              vector swizzle (3-component vector of float)

+0:424                'nAbsnormal' (3-component vector of float)

+0:424                Sequence

+0:424                  1 (const int)

+0:424                  2 (const int)

+0:424                  0 (const int)

+0:425      Sequence

+0:425        move second child to first child (3-component vector of float)

+0:425          'teststep2' (3-component vector of float)

+0:425          subtract (3-component vector of float)

+0:425            1.000000

+0:425            1.000000

+0:425            1.000000

+0:425            vector swizzle (3-component vector of float)

+0:425              'teststep' (3-component vector of float)

+0:425              Sequence

+0:425                2 (const int)

+0:425                0 (const int)

+0:425                1 (const int)

+0:426      Sequence

+0:426        move second child to first child (3-component vector of float)

+0:426          'cmp' (3-component vector of float)

+0:426          component-wise multiply (3-component vector of float)

+0:426            'teststep' (3-component vector of float)

+0:426            'teststep2' (3-component vector of float)

+0:429      Sequence

+0:429        move second child to first child (3-component vector of float)

+0:429          'nNormalsign' (3-component vector of float)

+0:429          Sign (3-component vector of float)

+0:429            'nNormal' (in 3-component vector of float)

+0:432      multiply second child into first child (float)

+0:432        direct index (float)

+0:432          'nNormalsign' (3-component vector of float)

+0:432          1 (const int)

+0:432        -1.000000

+0:433      multiply second child into first child (float)

+0:433        direct index (float)

+0:433          'cmp' (3-component vector of float)

+0:433          2 (const int)

+0:433        direct index (float)

+0:433          'nNormalsign' (3-component vector of float)

+0:433          2 (const int)

+0:434      Sequence

+0:434        move second child to first child (2-component vector of float)

+0:434          'nTexcoord' (2-component vector of float)

+0:434          Construct vec2 (2-component vector of float)

+0:434            dot-product (float)

+0:434              component-wise multiply (3-component vector of float)

+0:434                'nNormalsign' (3-component vector of float)

+0:434                vector swizzle (3-component vector of float)

+0:434                  'nPos' (in 3-component vector of float)

+0:434                  Sequence

+0:434                    1 (const int)

+0:434                    0 (const int)

+0:434                    0 (const int)

+0:434              'cmp' (3-component vector of float)

+0:434            dot-product (float)

+0:434              vector swizzle (3-component vector of float)

+0:434                'nPos' (in 3-component vector of float)

+0:434                Sequence

+0:434                  2 (const int)

+0:434                  2 (const int)

+0:434                  1 (const int)

+0:434              'cmp' (3-component vector of float)

+0:437      Branch: Return with expression

+0:437        Function Call: ApplyMat2D(vf2;mf44; (2-component vector of float)

+0:437          'nTexcoord' (2-component vector of float)

+0:437          'n2xMatrix' (in 4X4 matrix of float)

+0:440  Function Definition: oGetCylindricalTangent(vf3;mf44; (3-component vector of float)

+0:440    Function Parameters: 

+0:440      'nPos' (in 3-component vector of float)

+0:440      'n2oMatrix' (in 4X4 matrix of float)

+0:443    Sequence

+0:443      Sequence

+0:443        move second child to first child (float)

+0:443          'l' (float)

+0:443          length (float)

+0:443            vector swizzle (2-component vector of float)

+0:443              'nPos' (in 3-component vector of float)

+0:443              Sequence

+0:443                0 (const int)

+0:443                2 (const int)

+0:444      Sequence

+0:444        move second child to first child (2-component vector of float)

+0:444          'nCylnormal' (2-component vector of float)

+0:444          divide (2-component vector of float)

+0:444            vector swizzle (2-component vector of float)

+0:444              'nPos' (in 3-component vector of float)

+0:444              Sequence

+0:444                0 (const int)

+0:444                2 (const int)

+0:444            add (float)

+0:444              'l' (float)

+0:444              0.001000

+0:446      Branch: Return with expression

+0:446        vector swizzle (3-component vector of float)

+0:446          matrix-times-vector (4-component vector of float)

+0:446            'n2oMatrix' (in 4X4 matrix of float)

+0:446            Construct vec4 (4-component vector of float)

+0:446              direct index (float)

+0:446                'nCylnormal' (2-component vector of float)

+0:446                1 (const int)

+0:446              0.000000

+0:446              Negate value (float)

+0:446                direct index (float)

+0:446                  'nCylnormal' (2-component vector of float)

+0:446                  0 (const int)

+0:446              0.000000

+0:446          Sequence

+0:446            0 (const int)

+0:446            1 (const int)

+0:446            2 (const int)

+0:448  Function Definition: xGetCylindricalTexCoords(vf3;mf44; (2-component vector of float)

+0:448    Function Parameters: 

+0:448      'nPos' (in 3-component vector of float)

+0:448      'n2xMatrix' (in 4X4 matrix of float)

+0:450    Sequence

+0:450      Sequence

+0:450        move second child to first child (2-component vector of float)

+0:450          'nDir' (2-component vector of float)

+0:450          normalize (2-component vector of float)

+0:450            vector swizzle (2-component vector of float)

+0:450              'nPos' (in 3-component vector of float)

+0:450              Sequence

+0:450                0 (const int)

+0:450                2 (const int)

+0:451      Sequence

+0:451        move second child to first child (float)

+0:451          'angle' (float)

+0:451          component-wise multiply (float)

+0:451            arc cosine (float)

+0:451              Negate value (float)

+0:451                direct index (float)

+0:451                  'nDir' (2-component vector of float)

+0:451                  0 (const int)

+0:451            Function Call: nonZeroSign(f1; (float)

+0:451              direct index (float)

+0:451                'nDir' (2-component vector of float)

+0:451                1 (const int)

+0:452      Sequence

+0:452        move second child to first child (2-component vector of float)

+0:452          'nTexcoord' (2-component vector of float)

+0:452          Construct vec2 (2-component vector of float)

+0:452            component-wise multiply (float)

+0:452              component-wise multiply (float)

+0:452                0.159155

+0:452                add (float)

+0:452                  3.141592

+0:452                  'angle' (float)

+0:452              'faceWidth' (uniform float)

+0:452            direct index (float)

+0:452              'nPos' (in 3-component vector of float)

+0:452              1 (const int)

+0:453      Branch: Return with expression

+0:453        Function Call: ApplyMat2D(vf2;mf44; (2-component vector of float)

+0:453          'nTexcoord' (2-component vector of float)

+0:453          'n2xMatrix' (in 4X4 matrix of float)

+0:455  Function Definition: xGetSphericalTexCoords(vf3;mf44; (2-component vector of float)

+0:455    Function Parameters: 

+0:455      'nDir' (in 3-component vector of float)

+0:455      'n2xMatrix' (in 4X4 matrix of float)

+0:457    Sequence

+0:457      move second child to first child (3-component vector of float)

+0:457        'nDir' (in 3-component vector of float)

+0:457        normalize (3-component vector of float)

+0:457          'nDir' (in 3-component vector of float)

+0:458      Sequence

+0:458        move second child to first child (2-component vector of float)

+0:458          'nTexcoord' (2-component vector of float)

+0:458          vector-scale (2-component vector of float)

+0:458            component-wise multiply (float)

+0:458              'faceWidth' (uniform float)

+0:458              0.318309

+0:458            Construct vec2 (2-component vector of float)

+0:458              subtract (float)

+0:458                1.570796

+0:458                component-wise multiply (float)

+0:458                  arc tangent (float)

+0:458                    direct index (float)

+0:458                      'nDir' (in 3-component vector of float)

+0:458                      2 (const int)

+0:458                    Negate value (float)

+0:458                      direct index (float)

+0:458                        'nDir' (in 3-component vector of float)

+0:458                        0 (const int)

+0:458                  0.500000

+0:458              arc cosine (float)

+0:458                direct index (float)

+0:458                  'nDir' (in 3-component vector of float)

+0:458                  1 (const int)

+0:459      Branch: Return with expression

+0:459        Function Call: ApplyMat2D(vf2;mf44; (2-component vector of float)

+0:459          'nTexcoord' (2-component vector of float)

+0:459          'n2xMatrix' (in 4X4 matrix of float)

+0:462  Function Definition: oGetProjectedTangent(mf44; (3-component vector of float)

+0:462    Function Parameters: 

+0:462      'n2oMatrix' (in 4X4 matrix of float)

+0:464    Sequence

+0:464      Branch: Return with expression

+0:464        normalize (3-component vector of float)

+0:464          vector swizzle (3-component vector of float)

+0:464            direct index (in 4-component vector of float)

+0:464              'n2oMatrix' (in 4X4 matrix of float)

+0:464              0 (const int)

+0:464            Sequence

+0:464              0 (const int)

+0:464              1 (const int)

+0:464              2 (const int)

+0:466  Function Definition: xGetPlanarTexCoords(vf4;mf44; (2-component vector of float)

+0:466    Function Parameters: 

+0:466      'nPos' (in 4-component vector of float)

+0:466      'n2xMatrix' (in 4X4 matrix of float)

+0:468    Sequence

+0:468      Branch: Return with expression

+0:468        Function Call: ApplyMat2D(vf2;mf44; (2-component vector of float)

+0:468          vector swizzle (2-component vector of float)

+0:468            'nPos' (in 4-component vector of float)

+0:468            Sequence

+0:468              0 (const int)

+0:468              1 (const int)

+0:468          'n2xMatrix' (in 4X4 matrix of float)

+0:471  Function Definition: xGetSurfaceTexCoords(vf4;mf44; (2-component vector of float)

+0:471    Function Parameters: 

+0:471      'nTexCoord' (in 4-component vector of float)

+0:471      'n2xMatrix' (in 4X4 matrix of float)

+0:473    Sequence

+0:473      Branch: Return with expression

+0:473        Function Call: ApplyMat2D(vf2;mf44; (2-component vector of float)

+0:473          vector swizzle (2-component vector of float)

+0:473            'nTexCoord' (in 4-component vector of float)

+0:473            Sequence

+0:473              0 (const int)

+0:473              1 (const int)

+0:473          'n2xMatrix' (in 4X4 matrix of float)

+0:477  Function Definition: GetCommonTexCoord(vf4;vf4;i1;mf44;mf44; (3-component vector of float)

+0:477    Function Parameters: 

+0:477      'texCoord' (in 4-component vector of float)

+0:477      'vertex' (in 4-component vector of float)

+0:477      'iTextureCoordinates' (in int)

+0:477      'textureMatrix' (in 4X4 matrix of float)

+0:477      'o2nMatrix' (in 4X4 matrix of float)

+0:?     Sequence

+0:481      Test condition and select (void)

+0:481        Condition

+0:481        Compare Equal (bool)

+0:481          'iTextureCoordinates' (in int)

+0:481          41 (const int)

+0:481        true case

+0:483        Sequence

+0:483          move second child to first child (2-component vector of float)

+0:483            vector swizzle (2-component vector of float)

+0:483              'texCoordOut' (3-component vector of float)

+0:483              Sequence

+0:483                0 (const int)

+0:483                1 (const int)

+0:483            vector swizzle (2-component vector of float)

+0:483              Function Call: xGetSurfaceTexCoords(vf4;mf44; (2-component vector of float)

+0:483                'texCoord' (in 4-component vector of float)

+0:483                'textureMatrix' (in 4X4 matrix of float)

+0:483              Sequence

+0:483                0 (const int)

+0:483                1 (const int)

+0:481        false case

+0:485        Test condition and select (void)

+0:485          Condition

+0:485          Compare Equal (bool)

+0:485            'iTextureCoordinates' (in int)

+0:485            73 (const int)

+0:485          true case

+0:487          Sequence

+0:487            move second child to first child (2-component vector of float)

+0:487              vector swizzle (2-component vector of float)

+0:487                'texCoordOut' (3-component vector of float)

+0:487                Sequence

+0:487                  0 (const int)

+0:487                  1 (const int)

+0:487              Function Call: xGetPlanarTexCoords(vf4;mf44; (2-component vector of float)

+0:487                matrix-times-vector (4-component vector of float)

+0:487                  'o2nMatrix' (in 4X4 matrix of float)

+0:487                  'vertex' (in 4-component vector of float)

+0:487                'textureMatrix' (in 4X4 matrix of float)

+0:485          false case

+0:490          Test condition and select (void)

+0:490            Condition

+0:490            Compare Equal (bool)

+0:490              'iTextureCoordinates' (in int)

+0:490              57 (const int)

+0:490            true case

+0:492            Sequence

+0:492              move second child to first child (3-component vector of float)

+0:492                'texCoordOut' (3-component vector of float)

+0:492                vector swizzle (3-component vector of float)

+0:492                  matrix-times-vector (4-component vector of float)

+0:492                    'o2nMatrix' (in 4X4 matrix of float)

+0:492                    'vertex' (in 4-component vector of float)

+0:492                  Sequence

+0:492                    0 (const int)

+0:492                    1 (const int)

+0:492                    2 (const int)

+0:490            false case

+0:494            Test condition and select (void)

+0:494              Condition

+0:494              Compare Equal (bool)

+0:494                'iTextureCoordinates' (in int)

+0:494                89 (const int)

+0:494              true case

+0:496              Sequence

+0:496                move second child to first child (3-component vector of float)

+0:496                  'texCoordOut' (3-component vector of float)

+0:496                  vector swizzle (3-component vector of float)

+0:496                    matrix-times-vector (4-component vector of float)

+0:496                      'o2nMatrix' (in 4X4 matrix of float)

+0:496                      'vertex' (in 4-component vector of float)

+0:496                    Sequence

+0:496                      0 (const int)

+0:496                      1 (const int)

+0:496                      2 (const int)

+0:494              false case

+0:498              Test condition and select (void)

+0:498                Condition

+0:498                Compare Equal (bool)

+0:498                  'iTextureCoordinates' (in int)

+0:498                  105 (const int)

+0:498                true case

+0:500                Sequence

+0:500                  move second child to first child (3-component vector of float)

+0:500                    'texCoordOut' (3-component vector of float)

+0:500                    vector swizzle (3-component vector of float)

+0:500                      matrix-times-vector (4-component vector of float)

+0:500                        'o2nMatrix' (in 4X4 matrix of float)

+0:500                        'vertex' (in 4-component vector of float)

+0:500                      Sequence

+0:500                        0 (const int)

+0:500                        1 (const int)

+0:500                        2 (const int)

+0:498                false case

+0:503                move second child to first child (3-component vector of float)

+0:503                  'texCoordOut' (3-component vector of float)

+0:503                  0.000000

+0:503                  0.000000

+0:503                  0.000000

+0:505      Branch: Return with expression

+0:505        'texCoordOut' (3-component vector of float)

+0:510  Function Definition: oGetTangent(vf3;vf3;i1;mf44; (3-component vector of float)

+0:510    Function Parameters: 

+0:510      'pos' (in 3-component vector of float)

+0:510      'normal' (in 3-component vector of float)

+0:510      'iTextureCoordinates' (in int)

+0:510      'n2oMatrix' (in 4X4 matrix of float)

+0:?     Sequence

+0:513      Test condition and select (void)

+0:513        Condition

+0:513        Compare Equal (bool)

+0:513          'iTextureCoordinates' (in int)

+0:513          57 (const int)

+0:513        true case

+0:515        Sequence

+0:515          move second child to first child (3-component vector of float)

+0:515            'tangentOut' (3-component vector of float)

+0:515            Function Call: oGetAutomaticTangent(vf3;mf44; (3-component vector of float)

+0:515              'normal' (in 3-component vector of float)

+0:515              'n2oMatrix' (in 4X4 matrix of float)

+0:513        false case

+0:517        Test condition and select (void)

+0:517          Condition

+0:517          Compare Equal (bool)

+0:517            'iTextureCoordinates' (in int)

+0:517            89 (const int)

+0:517          true case

+0:519          Sequence

+0:519            move second child to first child (3-component vector of float)

+0:519              'tangentOut' (3-component vector of float)

+0:519              Function Call: oGetCylindricalTangent(vf3;mf44; (3-component vector of float)

+0:519                'pos' (in 3-component vector of float)

+0:519                'n2oMatrix' (in 4X4 matrix of float)

+0:517          false case

+0:521          Test condition and select (void)

+0:521            Condition

+0:521            Compare Equal (bool)

+0:521              'iTextureCoordinates' (in int)

+0:521              105 (const int)

+0:521            true case

+0:523            Sequence

+0:523              move second child to first child (3-component vector of float)

+0:523                'tangentOut' (3-component vector of float)

+0:523                Function Call: oGetCylindricalTangent(vf3;mf44; (3-component vector of float)

+0:523                  'pos' (in 3-component vector of float)

+0:523                  'n2oMatrix' (in 4X4 matrix of float)

+0:521            false case

+0:525            Test condition and select (void)

+0:525              Condition

+0:525              Compare Equal (bool)

+0:525                'iTextureCoordinates' (in int)

+0:525                73 (const int)

+0:525              true case

+0:527              Sequence

+0:527                move second child to first child (3-component vector of float)

+0:527                  'tangentOut' (3-component vector of float)

+0:527                  Function Call: oGetProjectedTangent(mf44; (3-component vector of float)

+0:527                    'n2oMatrix' (in 4X4 matrix of float)

+0:525              false case

+0:530              move second child to first child (3-component vector of float)

+0:530                'tangentOut' (3-component vector of float)

+0:530                0.000000

+0:530                0.000000

+0:530                0.000000

+0:532      Branch: Return with expression

+0:532        'tangentOut' (3-component vector of float)

+0:537  Function Definition: tGetTexCoords(vf3;vf3;i1;mf44; (2-component vector of float)

+0:537    Function Parameters: 

+0:537      'texCoords' (in 3-component vector of float)

+0:537      'normal' (in 3-component vector of float)

+0:537      'iTextureCoordinates' (in int)

+0:537      'textureMatrix' (in 4X4 matrix of float)

+0:?     Sequence

+0:541      Test condition and select (void)

+0:541        Condition

+0:541        logical-or (bool)

+0:541          Compare Equal (bool)

+0:541            'iTextureCoordinates' (in int)

+0:541            41 (const int)

+0:541          Compare Equal (bool)

+0:541            'iTextureCoordinates' (in int)

+0:541            73 (const int)

+0:541        true case

+0:543        Sequence

+0:543          move second child to first child (2-component vector of float)

+0:543            vector swizzle (2-component vector of float)

+0:543              'texCoordsOut' (2-component vector of float)

+0:543              Sequence

+0:543                0 (const int)

+0:543                1 (const int)

+0:543            vector swizzle (2-component vector of float)

+0:543              'texCoords' (in 3-component vector of float)

+0:543              Sequence

+0:543                0 (const int)

+0:543                1 (const int)

+0:541        false case

+0:546        Test condition and select (void)

+0:546          Condition

+0:546          Compare Equal (bool)

+0:546            'iTextureCoordinates' (in int)

+0:546            57 (const int)

+0:546          true case

+0:548          Sequence

+0:548            move second child to first child (2-component vector of float)

+0:548              'texCoordsOut' (2-component vector of float)

+0:548              Function Call: xGetAutomaticTexCoords(vf3;vf3;mf44; (2-component vector of float)

+0:548                'texCoords' (in 3-component vector of float)

+0:548                'normal' (in 3-component vector of float)

+0:548                'textureMatrix' (in 4X4 matrix of float)

+0:546          false case

+0:550          Test condition and select (void)

+0:550            Condition

+0:550            Compare Equal (bool)

+0:550              'iTextureCoordinates' (in int)

+0:550              89 (const int)

+0:550            true case

+0:552            Sequence

+0:552              move second child to first child (2-component vector of float)

+0:552                'texCoordsOut' (2-component vector of float)

+0:552                Function Call: xGetCylindricalTexCoords(vf3;mf44; (2-component vector of float)

+0:552                  'texCoords' (in 3-component vector of float)

+0:552                  'textureMatrix' (in 4X4 matrix of float)

+0:550            false case

+0:554            Test condition and select (void)

+0:554              Condition

+0:554              Compare Equal (bool)

+0:554                'iTextureCoordinates' (in int)

+0:554                105 (const int)

+0:554              true case

+0:556              Sequence

+0:556                move second child to first child (2-component vector of float)

+0:556                  'texCoordsOut' (2-component vector of float)

+0:556                  Function Call: xGetSphericalTexCoords(vf3;mf44; (2-component vector of float)

+0:556                    'texCoords' (in 3-component vector of float)

+0:556                    'textureMatrix' (in 4X4 matrix of float)

+0:559      Branch: Return with expression

+0:559        'texCoordsOut' (2-component vector of float)

+0:562  Function Definition: tGetDispTexCoords(s21;vf2;vf3;f1; (2-component vector of float)

+0:562    Function Parameters: 

+0:562      'normalMap' (in sampler2D)

+0:562      'commonCoord' (in 2-component vector of float)

+0:562      'viewDir' (in 3-component vector of float)

+0:562      'parallaxOffset' (in float)

+0:565    Sequence

+0:565      Sequence

+0:565        move second child to first child (float)

+0:565          'height' (float)

+0:565          component-wise multiply (float)

+0:565            2.000000

+0:565            subtract (float)

+0:565              direct index (float)

+0:565                Function Call: texture2D(s21;vf2; (4-component vector of float)

+0:565                  'normalMap' (in sampler2D)

+0:565                  'commonCoord' (in 2-component vector of float)

+0:565                3 (const int)

+0:565              0.500000

+0:566      Sequence

+0:566        move second child to first child (2-component vector of float)

+0:566          'offset' (2-component vector of float)

+0:566          vector-scale (2-component vector of float)

+0:566            vector-scale (2-component vector of float)

+0:566              vector swizzle (2-component vector of float)

+0:566                normalize (3-component vector of float)

+0:566                  vector swizzle (3-component vector of float)

+0:566                    'viewDir' (in 3-component vector of float)

+0:566                    Sequence

+0:566                      0 (const int)

+0:566                      1 (const int)

+0:566                      2 (const int)

+0:566                Sequence

+0:566                  0 (const int)

+0:566                  1 (const int)

+0:566              'height' (float)

+0:566            'parallaxOffset' (in float)

+0:568      Branch: Return with expression

+0:568        add (2-component vector of float)

+0:568          'commonCoord' (in 2-component vector of float)

+0:568          'offset' (2-component vector of float)

+0:570  Function Definition: getCosmeticTexcoord(vf4;mf44; (2-component vector of float)

+0:570    Function Parameters: 

+0:570      'ePos' (in 4-component vector of float)

+0:570      'e2cTransform' (in 4X4 matrix of float)

+0:572    Sequence

+0:572      Sequence

+0:572        move second child to first child (4-component vector of float)

+0:572          'cPos' (4-component vector of float)

+0:572          matrix-times-vector (4-component vector of float)

+0:572            'e2cTransform' (in 4X4 matrix of float)

+0:572            'ePos' (in 4-component vector of float)

+0:573      Branch: Return with expression

+0:573        divide (2-component vector of float)

+0:573          vector swizzle (2-component vector of float)

+0:573            'cPos' (4-component vector of float)

+0:573            Sequence

+0:573              0 (const int)

+0:573              1 (const int)

+0:573          direct index (float)

+0:573            'cPos' (4-component vector of float)

+0:573            3 (const int)

+0:576  Function Definition: getCosmeticAlpha(vf2;s21; (float)

+0:576    Function Parameters: 

+0:576      'texcoord' (in 2-component vector of float)

+0:576      'alphaMap' (in sampler2D)

+0:578    Sequence

+0:578      Branch: Return with expression

+0:578        direct index (float)

+0:578          Function Call: texture2D(s21;vf2; (4-component vector of float)

+0:578            'alphaMap' (in sampler2D)

+0:578            vector swizzle (2-component vector of float)

+0:578              'texcoord' (in 2-component vector of float)

+0:578              Sequence

+0:578                0 (const int)

+0:578                1 (const int)

+0:578          3 (const int)

+0:581  Function Definition: GetLightDir_DP(vf3;vf3;f1; (3-component vector of float)

+0:581    Function Parameters: 

+0:581      'lightDirOrPos' (in 3-component vector of float)

+0:581      'position' (in 3-component vector of float)

+0:581      'lightType' (in float)

+0:583    Sequence

+0:583      Branch: Return with expression

+0:583        normalize (3-component vector of float)

+0:583          subtract (3-component vector of float)

+0:583            'lightDirOrPos' (in 3-component vector of float)

+0:583            vector-scale (3-component vector of float)

+0:583              'position' (in 3-component vector of float)

+0:583              'lightType' (in float)

+0:585  Function Definition: GetLightDir_D(vf3; (3-component vector of float)

+0:585    Function Parameters: 

+0:585      'lightDir' (in 3-component vector of float)

+0:588    Sequence

+0:588      Branch: Return with expression

+0:588        normalize (3-component vector of float)

+0:588          'lightDir' (in 3-component vector of float)

+0:590  Function Definition: GetLightDir_P(vf3;vf3; (3-component vector of float)

+0:590    Function Parameters: 

+0:590      'lightPos' (in 3-component vector of float)

+0:590      'position' (in 3-component vector of float)

+0:592    Sequence

+0:592      Branch: Return with expression

+0:592        normalize (3-component vector of float)

+0:592          subtract (3-component vector of float)

+0:592            'lightPos' (in 3-component vector of float)

+0:592            'position' (in 3-component vector of float)

+0:594  Function Definition: tGetLightDir_D(mf33;vf3; (3-component vector of float)

+0:594    Function Parameters: 

+0:594      't2eMatrixTBN' (in 3X3 matrix of float)

+0:594      'eLightDir' (in 3-component vector of float)

+0:596    Sequence

+0:596      Branch: Return with expression

+0:596        vector-times-matrix (3-component vector of float)

+0:596          Function Call: GetLightDir_D(vf3; (3-component vector of float)

+0:596            'eLightDir' (in 3-component vector of float)

+0:596          't2eMatrixTBN' (in 3X3 matrix of float)

+0:598  Function Definition: eGetLightDir_DP(vf3;vf3;f1; (3-component vector of float)

+0:598    Function Parameters: 

+0:598      'eLightDirOrPos' (in 3-component vector of float)

+0:598      'ePosition' (in 3-component vector of float)

+0:598      'lightType' (in float)

+0:600    Sequence

+0:600      Branch: Return with expression

+0:600        Function Call: GetLightDir_DP(vf3;vf3;f1; (3-component vector of float)

+0:600          'eLightDirOrPos' (in 3-component vector of float)

+0:600          'ePosition' (in 3-component vector of float)

+0:600          'lightType' (in float)

+0:602  Function Definition: tGetLightDir_DP(mf33;vf3;vf3;f1; (3-component vector of float)

+0:602    Function Parameters: 

+0:602      't2eMatrixTBN' (in 3X3 matrix of float)

+0:602      'eLightDirOrPos' (in 3-component vector of float)

+0:602      'ePosition' (in 3-component vector of float)

+0:602      'lightType' (in float)

+0:604    Sequence

+0:604      Branch: Return with expression

+0:604        vector-times-matrix (3-component vector of float)

+0:604          Function Call: eGetLightDir_DP(vf3;vf3;f1; (3-component vector of float)

+0:604            'eLightDirOrPos' (in 3-component vector of float)

+0:604            'ePosition' (in 3-component vector of float)

+0:604            'lightType' (in float)

+0:604          't2eMatrixTBN' (in 3X3 matrix of float)

+0:608  Function Definition: GetHalfVector(vf3;vf3; (3-component vector of float)

+0:608    Function Parameters: 

+0:608      'lightDir' (in 3-component vector of float)

+0:608      'eyeDirection' (in 3-component vector of float)

+0:610    Sequence

+0:610      Branch: Return with expression

+0:610        normalize (3-component vector of float)

+0:610          add (3-component vector of float)

+0:610            'lightDir' (in 3-component vector of float)

+0:610            'eyeDirection' (in 3-component vector of float)

+0:612  Function Definition: eGetHalfVector(vf3;vf3; (3-component vector of float)

+0:612    Function Parameters: 

+0:612      'eLightDir' (in 3-component vector of float)

+0:612      'eEyeDirection' (in 3-component vector of float)

+0:618    Sequence

+0:618      Branch: Return with expression

+0:618        Function Call: GetHalfVector(vf3;vf3; (3-component vector of float)

+0:618          'eLightDir' (in 3-component vector of float)

+0:618          0.000000

+0:618          0.000000

+0:618          1.000000

+0:620  Function Definition: tGetHalfVector(vf3;vf3;mf33; (3-component vector of float)

+0:620    Function Parameters: 

+0:620      'tLightDir' (in 3-component vector of float)

+0:620      'eEyeDirection' (in 3-component vector of float)

+0:620      't2eMatrixTBN' (in 3X3 matrix of float)

+0:626    Sequence

+0:626      Sequence

+0:626        move second child to first child (3-component vector of float)

+0:626          'tEyeDirection' (3-component vector of float)

+0:626          Construct vec3 (3-component vector of float)

+0:626            direct index (float)

+0:626              direct index (in 3-component vector of float)

+0:626                't2eMatrixTBN' (in 3X3 matrix of float)

+0:626                0 (const int)

+0:626              2 (const int)

+0:626            direct index (float)

+0:626              direct index (in 3-component vector of float)

+0:626                't2eMatrixTBN' (in 3X3 matrix of float)

+0:626                1 (const int)

+0:626              2 (const int)

+0:626            direct index (float)

+0:626              direct index (in 3-component vector of float)

+0:626                't2eMatrixTBN' (in 3X3 matrix of float)

+0:626                2 (const int)

+0:626              2 (const int)

+0:627      Branch: Return with expression

+0:627        Function Call: GetHalfVector(vf3;vf3; (3-component vector of float)

+0:627          'tLightDir' (in 3-component vector of float)

+0:627          'tEyeDirection' (3-component vector of float)

+0:631  Function Definition: GetFresnelPower(vf3; (float)

+0:631    Function Parameters: 

+0:631      'eNormal' (in 3-component vector of float)

+0:636    Sequence

+0:636      Sequence

+0:636        move second child to first child (float)

+0:636          'oneMCosAngle' (float)

+0:636          max (float)

+0:636            subtract (float)

+0:636              1.000000

+0:636              Absolute value (float)

+0:636                direct index (float)

+0:636                  'eNormal' (in 3-component vector of float)

+0:636                  2 (const int)

+0:636            0.010000

+0:637      Branch: Return with expression

+0:637        pow (float)

+0:637          'oneMCosAngle' (float)

+0:637          5.000000

+0:640  Function Definition: GetFresnelTerm_Transparency(vf3;f1;vf2; (float)

+0:640    Function Parameters: 

+0:640      'eNormal' (in 3-component vector of float)

+0:640      'transparency' (in float)

+0:640      'fresnelCoef' (in 2-component vector of float)

+0:642    Sequence

+0:642      Branch: Return with expression

+0:642        add (float)

+0:642          component-wise multiply (float)

+0:642            subtract (float)

+0:642              1.000000

+0:642              'transparency' (in float)

+0:642            direct index (float)

+0:642              'fresnelCoef' (in 2-component vector of float)

+0:642              0 (const int)

+0:642          component-wise multiply (float)

+0:642            direct index (float)

+0:642              'fresnelCoef' (in 2-component vector of float)

+0:642              1 (const int)

+0:642            Function Call: GetFresnelPower(vf3; (float)

+0:642              'eNormal' (in 3-component vector of float)

+0:645  Function Definition: GetFresnelTerm_Standard(vf3;vf2; (float)

+0:645    Function Parameters: 

+0:645      'eNormal' (in 3-component vector of float)

+0:645      'fresnelCoef' (in 2-component vector of float)

+0:647    Sequence

+0:647      Branch: Return with expression

+0:647        add (float)

+0:647          direct index (float)

+0:647            'fresnelCoef' (in 2-component vector of float)

+0:647            0 (const int)

+0:647          component-wise multiply (float)

+0:647            direct index (float)

+0:647              'fresnelCoef' (in 2-component vector of float)

+0:647              1 (const int)

+0:647            Function Call: GetFresnelPower(vf3; (float)

+0:647              'eNormal' (in 3-component vector of float)

+0:649  Function Definition: GetFresnel_New(vf3;f1; (float)

+0:649    Function Parameters: 

+0:649      'eNormal' (in 3-component vector of float)

+0:649      'fresnelCoef' (in float)

+0:651    Sequence

+0:651      Branch: Return with expression

+0:651        pow (float)

+0:651          max (float)

+0:651            subtract (float)

+0:651              1.000000

+0:651              Absolute value (float)

+0:651                direct index (float)

+0:651                  'eNormal' (in 3-component vector of float)

+0:651                  2 (const int)

+0:651            0.010000

+0:651          'fresnelCoef' (in float)

+0:654  Function Definition: GetFresnelTerm(vf3;f1;vf2;i1; (float)

+0:654    Function Parameters: 

+0:654      'eNormal' (in 3-component vector of float)

+0:654      'transparency' (in float)

+0:654      'fresnelCoef' (in 2-component vector of float)

+0:654      'iFresnelType' (in int)

+0:656    Sequence

+0:656      Test condition and select (void)

+0:656        Condition

+0:656        Compare Equal (bool)

+0:656          'iFresnelType' (in int)

+0:656          48 (const int)

+0:656        true case

+0:658        Sequence

+0:658          Branch: Return with expression

+0:658            Function Call: GetFresnelTerm_Transparency(vf3;f1;vf2; (float)

+0:658              'eNormal' (in 3-component vector of float)

+0:658              'transparency' (in float)

+0:658              'fresnelCoef' (in 2-component vector of float)

+0:656        false case

+0:660        Test condition and select (void)

+0:660          Condition

+0:660          Compare Equal (bool)

+0:660            'iFresnelType' (in int)

+0:660            32 (const int)

+0:660          true case

+0:662          Sequence

+0:662            Branch: Return with expression

+0:662              Function Call: GetFresnelTerm_Standard(vf3;vf2; (float)

+0:662                'eNormal' (in 3-component vector of float)

+0:662                'fresnelCoef' (in 2-component vector of float)

+0:660          false case

+0:666          Sequence

+0:666            Branch: Return with expression

+0:666              Function Call: GetFresnel_New(vf3;f1; (float)

+0:666                'eNormal' (in 3-component vector of float)

+0:666                direct index (float)

+0:666                  'fresnelCoef' (in 2-component vector of float)

+0:666                  0 (const int)

+0:672  Function Definition: GetRimLight(vf3;f1;f1;vf3; (3-component vector of float)

+0:672    Function Parameters: 

+0:672      'tNormal' (in 3-component vector of float)

+0:672      'rimlightCoef1' (in float)

+0:672      'rimlightCoef2' (in float)

+0:672      'rimlightColor' (in 3-component vector of float)

+0:674    Sequence

+0:674      Branch: Return with expression

+0:674        vector-scale (3-component vector of float)

+0:674          add (float)

+0:674            component-wise multiply (float)

+0:674              'rimlightCoef1' (in float)

+0:674              Function Call: GetFresnelPower(vf3; (float)

+0:674                'tNormal' (in 3-component vector of float)

+0:674            'rimlightCoef2' (in float)

+0:674          'rimlightColor' (in 3-component vector of float)

+0:678  Function Definition: GetMaxSpecTerm(vf4;b1; (float)

+0:678    Function Parameters: 

+0:678      'specular' (in 4-component vector of float)

+0:678      'iMaxSpecW' (in bool)

+0:680    Sequence

+0:680      Test condition and select (void)

+0:680        Condition

+0:680        'iMaxSpecW' (in bool)

+0:680        true case

+0:682        Sequence

+0:682          Branch: Return with expression

+0:682            direct index (float)

+0:682              'specular' (in 4-component vector of float)

+0:682              3 (const int)

+0:680        false case

+0:686        Sequence

+0:686          Branch: Return with expression

+0:686            direct index (float)

+0:686              'specular' (in 4-component vector of float)

+0:686              0 (const int)

+0:690  Function Definition: GetSpecFac(f1;vf2; (float)

+0:690    Function Parameters: 

+0:690      'fMaxSpec' (in float)

+0:690      'coef' (in 2-component vector of float)

+0:692    Sequence

+0:692      Branch: Return with expression

+0:692        Function Call: saturate(f1; (float)

+0:692          component-wise multiply (float)

+0:692            subtract (float)

+0:692              'fMaxSpec' (in float)

+0:692              direct index (float)

+0:692                'coef' (in 2-component vector of float)

+0:692                0 (const int)

+0:692            direct index (float)

+0:692              'coef' (in 2-component vector of float)

+0:692              1 (const int)

+0:696  Function Definition: GetDiffuseFromOneLight(vf3;vf3;vf3;i1;f1; (3-component vector of float)

+0:696    Function Parameters: 

+0:696      'normal' (in 3-component vector of float)

+0:696      'lightDir' (in 3-component vector of float)

+0:696      'lightColor' (in 3-component vector of float)

+0:696      'iAlphaType' (in int)

+0:696      'transparency' (in float)

+0:699    Sequence

+0:699      Sequence

+0:699        move second child to first child (float)

+0:699          'LdotB' (float)

+0:699          dot-product (float)

+0:699            'lightDir' (in 3-component vector of float)

+0:699            'normal' (in 3-component vector of float)

+0:700      Test condition and select (void)

+0:700        Condition

+0:700        Compare Equal (bool)

+0:700          'iAlphaType' (in int)

+0:700          26 (const int)

+0:700        true case

+0:702        Sequence

+0:702          move second child to first child (float)

+0:702            'LdotB' (float)

+0:702            Function Call: saturate(f1; (float)

+0:702              'LdotB' (float)

+0:700        false case

+0:706        Sequence

+0:706          Test condition and select (void)

+0:706            Condition

+0:706            Compare Less Than (bool)

+0:706              'LdotB' (float)

+0:706              0.000000

+0:706            true case

+0:708            Sequence

+0:708              move second child to first child (float)

+0:708                'LdotB' (float)

+0:708                component-wise multiply (float)

+0:708                  Absolute value (float)

+0:708                    'LdotB' (float)

+0:708                  subtract (float)

+0:708                    1.000000

+0:708                    'transparency' (in float)

+0:713      Branch: Return with expression

+0:713        vector-scale (3-component vector of float)

+0:713          'LdotB' (float)

+0:713          'lightColor' (in 3-component vector of float)

+0:717  Function Definition: GetSpecularFromOneLight(vf3;vf3;f1;vf3;b1; (4-component vector of float)

+0:717    Function Parameters: 

+0:717      'normal' (in 3-component vector of float)

+0:717      'halfVector' (in 3-component vector of float)

+0:717      'specularPower' (in float)

+0:717      'lightSpec' (in 3-component vector of float)

+0:717      'bSpecWTerm' (in bool)

+0:719    Sequence

+0:719      Sequence

+0:719        move second child to first child (float)

+0:719          'ndoth' (float)

+0:719          dot-product (float)

+0:719            'normal' (in 3-component vector of float)

+0:719            'halfVector' (in 3-component vector of float)

+0:720      move second child to first child (float)

+0:720        'ndoth' (float)

+0:720        pow (float)

+0:720          max (float)

+0:720            'ndoth' (float)

+0:720            0.010000

+0:720          'specularPower' (in float)

+0:722      Sequence

+0:722        move second child to first child (4-component vector of float)

+0:722          'res' (4-component vector of float)

+0:722          Construct vec4 (4-component vector of float)

+0:722            vector-scale (3-component vector of float)

+0:722              'ndoth' (float)

+0:722              'lightSpec' (in 3-component vector of float)

+0:722            0.000000

+0:723      Test condition and select (void)

+0:723        Condition

+0:723        'bSpecWTerm' (in bool)

+0:723        true case

+0:725        Sequence

+0:725          move second child to first child (float)

+0:725            direct index (float)

+0:725              'res' (4-component vector of float)

+0:725              3 (const int)

+0:725            component-wise multiply (float)

+0:725              'ndoth' (float)

+0:725              Function Call: Max3(vf3; (float)

+0:725                'lightSpec' (in 3-component vector of float)

+0:727      Branch: Return with expression

+0:727        'res' (4-component vector of float)

+0:734  Function Definition: AddSpecularAndDiffuse(vf3;vf3;vf3;i1;vf3;vf3;f1;b1;b1;vf3;vf4;f1; (void)

+0:734    Function Parameters: 

+0:734      'normal' (in 3-component vector of float)

+0:734      'lightDirAux' (in 3-component vector of float)

+0:734      'lightColor' (in 3-component vector of float)

+0:734      'iAlphaType' (in int)

+0:734      'halfVector' (in 3-component vector of float)

+0:734      'lightSpec' (in 3-component vector of float)

+0:734      'specularPower' (in float)

+0:734      'bMaxSpec' (in bool)

+0:734      'noSpec' (in bool)

+0:734      'diffuseLight' (inout 3-component vector of float)

+0:734      'specularLight' (inout 4-component vector of float)

+0:734      'transparency' (in float)

+0:736    Sequence

+0:736      add second child into first child (3-component vector of float)

+0:736        'diffuseLight' (inout 3-component vector of float)

+0:736        Function Call: GetDiffuseFromOneLight(vf3;vf3;vf3;i1;f1; (3-component vector of float)

+0:736          'normal' (in 3-component vector of float)

+0:736          'lightDirAux' (in 3-component vector of float)

+0:736          'lightColor' (in 3-component vector of float)

+0:736          'iAlphaType' (in int)

+0:736          'transparency' (in float)

+0:737      Test condition and select (void)

+0:737        Condition

+0:737        Negate conditional (bool)

+0:737          'noSpec' (in bool)

+0:737        true case

+0:739        Sequence

+0:739          add second child into first child (4-component vector of float)

+0:739            'specularLight' (inout 4-component vector of float)

+0:739            Function Call: GetSpecularFromOneLight(vf3;vf3;f1;vf3;b1; (4-component vector of float)

+0:739              'normal' (in 3-component vector of float)

+0:739              'halfVector' (in 3-component vector of float)

+0:739              'specularPower' (in float)

+0:739              'lightSpec' (in 3-component vector of float)

+0:739              'bMaxSpec' (in bool)

+0:745  Function Definition: GetDiffuseTerm(vf3;vf3; (3-component vector of float)

+0:745    Function Parameters: 

+0:745      'diffuseLight' (in 3-component vector of float)

+0:745      'materialColor' (in 3-component vector of float)

+0:747    Sequence

+0:747      Branch: Return with expression

+0:747        component-wise multiply (3-component vector of float)

+0:747          'diffuseLight' (in 3-component vector of float)

+0:747          'materialColor' (in 3-component vector of float)

+0:750  Function Definition: GetSpecularTerm(vf3;vf3; (3-component vector of float)

+0:750    Function Parameters: 

+0:750      'specularLight' (in 3-component vector of float)

+0:750      'materialColor' (in 3-component vector of float)

+0:752    Sequence

+0:752      Branch: Return with expression

+0:752        component-wise multiply (3-component vector of float)

+0:752          'specularLight' (in 3-component vector of float)

+0:752          'materialColor' (in 3-component vector of float)

+0:755  Function Definition: GetFresnelAmbient(f1; (3-component vector of float)

+0:755    Function Parameters: 

+0:755      'fresnel' (in float)

+0:757    Sequence

+0:757      Branch: Return with expression

+0:757        Construct vec3 (3-component vector of float)

+0:757          'fresnel' (in float)

+0:761  Function Definition: TransformEnvColor(vf3;b1;f1;f1;f1;vf3; (3-component vector of float)

+0:761    Function Parameters: 

+0:761      'envColorIn' (in 3-component vector of float)

+0:761      'useHdr' (in bool)

+0:761      'envColorWash' (in float)

+0:761      'envBrightness' (in float)

+0:761      'envContrast' (in float)

+0:761      'envColorModifier' (in 3-component vector of float)

+0:763    Sequence

+0:763      Test condition and select (void)

+0:763        Condition

+0:763        'useHdr' (in bool)

+0:763        true case

+0:769        Sequence

+0:769          move second child to first child (3-component vector of float)

+0:769            'envColorIn' (in 3-component vector of float)

+0:769            add (3-component vector of float)

+0:769              vector-scale (3-component vector of float)

+0:769                subtract (3-component vector of float)

+0:769                  'envColorIn' (in 3-component vector of float)

+0:769                  'envcolorAverage' (uniform 3-component vector of float)

+0:769                'envContrast' (in float)

+0:769              vector-scale (3-component vector of float)

+0:769                'envcolorAverage' (uniform 3-component vector of float)

+0:769                'envBrightness' (in float)

+0:770          move second child to first child (3-component vector of float)

+0:770            'envColorIn' (in 3-component vector of float)

+0:770            mix (3-component vector of float)

+0:770              'envColorIn' (in 3-component vector of float)

+0:770              Construct vec3 (3-component vector of float)

+0:770                Function Call: GetLuminance(vf3; (float)

+0:770                  'envColorIn' (in 3-component vector of float)

+0:770              'envColorWash' (in float)

+0:771          multiply second child into first child (3-component vector of float)

+0:771            'envColorIn' (in 3-component vector of float)

+0:771            'envColorModifier' (in 3-component vector of float)

+0:772          Branch: Return with expression

+0:772            max (3-component vector of float)

+0:772              'envColorIn' (in 3-component vector of float)

+0:772              0.000000

+0:772              0.000000

+0:772              0.000000

+0:763        false case

+0:776        Sequence

+0:776          Sequence

+0:776            move second child to first child (3-component vector of float)

+0:776              'color' (3-component vector of float)

+0:776              mix (3-component vector of float)

+0:776                vector swizzle (3-component vector of float)

+0:776                  'envColorIn' (in 3-component vector of float)

+0:776                  Sequence

+0:776                    0 (const int)

+0:776                    1 (const int)

+0:776                    2 (const int)

+0:776                Construct vec3 (3-component vector of float)

+0:776                  Function Call: GetLuminance(vf3; (float)

+0:776                    'envColorIn' (in 3-component vector of float)

+0:776                'envColorWash' (in float)

+0:777          Sequence

+0:777            move second child to first child (3-component vector of float)

+0:777              'res' (3-component vector of float)

+0:777              add (3-component vector of float)

+0:777                add (3-component vector of float)

+0:777                  vector-scale (3-component vector of float)

+0:777                    add (3-component vector of float)

+0:777                      subtract (3-component vector of float)

+0:777                        'color' (3-component vector of float)

+0:777                        0.635000

+0:777                      'envBrightness' (in float)

+0:777                    'envContrast' (in float)

+0:777                  0.635000

+0:777                'envColorModifier' (in 3-component vector of float)

+0:778          Branch: Return with expression

+0:778            'res' (3-component vector of float)

+0:783  Function Definition: GetEnv(vf3; (4-component vector of float)

+0:783    Function Parameters: 

+0:783      'envCoord' (in 3-component vector of float)

+0:787    Sequence

+0:787      Sequence

+0:787        Branch: Return with expression

+0:787          Function Call: textureCube(sC1;vf3; (4-component vector of float)

+0:787            'envCubicSpecular' (uniform samplerCube)

+0:787            'envCoord' (in 3-component vector of float)

+0:795  Function Definition: GetEnvDiffuse(vf3; (4-component vector of float)

+0:795    Function Parameters: 

+0:795      'envCoord' (in 3-component vector of float)

+0:799    Sequence

+0:799      Sequence

+0:799        Branch: Return with expression

+0:799          Function Call: textureCube(sC1;vf3; (4-component vector of float)

+0:799            'envCubicDiffuse' (uniform samplerCube)

+0:799            'envCoord' (in 3-component vector of float)

+0:806  Function Definition: GetAmbiantAndDiffuseModifierEnv(vf3;f1;f1;f1;vf3;b1; (3-component vector of float)

+0:806    Function Parameters: 

+0:806      'envCoord' (in 3-component vector of float)

+0:806      'envColorWash' (in float)

+0:806      'envBrightness' (in float)

+0:806      'envContrast' (in float)

+0:806      'envColor' (in 3-component vector of float)

+0:806      'useHdr' (in bool)

+0:808    Sequence

+0:808      Sequence

+0:808        move second child to first child (4-component vector of float)

+0:808          'env' (4-component vector of float)

+0:808          Function Call: GetEnv(vf3; (4-component vector of float)

+0:808            'envCoord' (in 3-component vector of float)

+0:809      Branch: Return with expression

+0:809        Function Call: TransformEnvColor(vf3;b1;f1;f1;f1;vf3; (3-component vector of float)

+0:809          vector swizzle (3-component vector of float)

+0:809            'env' (4-component vector of float)

+0:809            Sequence

+0:809              0 (const int)

+0:809              1 (const int)

+0:809              2 (const int)

+0:809          'useHdr' (in bool)

+0:809          'envColorWash' (in float)

+0:809          'envBrightness' (in float)

+0:809          'envContrast' (in float)

+0:809          'envColor' (in 3-component vector of float)

+0:811  Function Definition: GetDiffuseMap(s21;vf2;vf3;vf3; (4-component vector of float)

+0:811    Function Parameters: 

+0:811      'diffMap' (in sampler2D)

+0:811      'coord' (in 2-component vector of float)

+0:811      'average' (in 3-component vector of float)

+0:811      'diffuseMapModifierCWB' (in 3-component vector of float)

+0:822    Sequence

+0:822      Sequence

+0:822        Branch: Return with expression

+0:822          Function Call: texture2D(s21;vf2; (4-component vector of float)

+0:822            'diffMap' (in sampler2D)

+0:822            'coord' (in 2-component vector of float)

+0:826  Function Definition: GetAmbiantAndDiffuseModifierDiff(s21;vf2;vf3;vf3; (3-component vector of float)

+0:826    Function Parameters: 

+0:826      'diffMap' (in sampler2D)

+0:826      'commonCoord' (in 2-component vector of float)

+0:826      'average' (in 3-component vector of float)

+0:826      'diffuseMapModifier' (in 3-component vector of float)

+0:828    Sequence

+0:828      Branch: Return with expression

+0:828        vector swizzle (3-component vector of float)

+0:828          Function Call: GetDiffuseMap(s21;vf2;vf3;vf3; (4-component vector of float)

+0:828            'diffMap' (in sampler2D)

+0:828            'commonCoord' (in 2-component vector of float)

+0:828            'average' (in 3-component vector of float)

+0:828            'diffuseMapModifier' (in 3-component vector of float)

+0:828          Sequence

+0:828            0 (const int)

+0:828            1 (const int)

+0:828            2 (const int)

+0:831  Function Definition: GetAmbiantAndDiffuseModifierDiffAlpha(s21;vf2;vf3;vf3; (4-component vector of float)

+0:831    Function Parameters: 

+0:831      'diffMap' (in sampler2D)

+0:831      'commonCoord' (in 2-component vector of float)

+0:831      'average' (in 3-component vector of float)

+0:831      'diffuseMapModifier' (in 3-component vector of float)

+0:833    Sequence

+0:833      Branch: Return with expression

+0:833        vector swizzle (4-component vector of float)

+0:833          Function Call: GetDiffuseMap(s21;vf2;vf3;vf3; (4-component vector of float)

+0:833            'diffMap' (in sampler2D)

+0:833            'commonCoord' (in 2-component vector of float)

+0:833            'average' (in 3-component vector of float)

+0:833            'diffuseMapModifier' (in 3-component vector of float)

+0:833          Sequence

+0:833            0 (const int)

+0:833            1 (const int)

+0:833            2 (const int)

+0:833            3 (const int)

+0:838  Function Definition: GetAlphaFrom_Material(vf4; (float)

+0:838    Function Parameters: 

+0:838      'matColor' (in 4-component vector of float)

+0:840    Sequence

+0:840      Branch: Return with expression

+0:840        direct index (float)

+0:840          'matColor' (in 4-component vector of float)

+0:840          3 (const int)

+0:842  Function Definition: GetAlphaFrom_Fresnel(f1; (float)

+0:842    Function Parameters: 

+0:842      'fresnel' (in float)

+0:844    Sequence

+0:844      Branch: Return with expression

+0:844        subtract (float)

+0:844          1.000000

+0:844          'fresnel' (in float)

+0:846  Function Definition: GetAlphaFrom_FresnelPlusTransparency(f1;f1; (float)

+0:846    Function Parameters: 

+0:846      'fresnel' (in float)

+0:846      'transparency' (in float)

+0:848    Sequence

+0:848      Branch: Return with expression

+0:848        add (float)

+0:848          'fresnel' (in float)

+0:848          'transparency' (in float)

+0:850  Function Definition: GetAlphaFrom_PlasticPerspex(vf3; (float)

+0:850    Function Parameters: 

+0:850      'diffuseTerm' (in 3-component vector of float)

+0:852    Sequence

+0:852      Branch: Return with expression

+0:852        component-wise multiply (float)

+0:852          0.700000

+0:852          add (float)

+0:852            direct index (float)

+0:852              'diffuseTerm' (in 3-component vector of float)

+0:852              0 (const int)

+0:852            0.200000

+0:854  Function Definition: GetAlphaFrom_Glass(f1;f1;f1; (float)

+0:854    Function Parameters: 

+0:854      'fMaxSpec' (in float)

+0:854      'fresnel' (in float)

+0:854      'transparency' (in float)

+0:856    Sequence

+0:856      Sequence

+0:856        move second child to first child (float)

+0:856          'specfac' (float)

+0:856          Function Call: saturate(f1; (float)

+0:856            component-wise multiply (float)

+0:856              subtract (float)

+0:856                'fMaxSpec' (in float)

+0:856                0.480000

+0:856              5.000000

+0:857      Sequence

+0:857        move second child to first child (float)

+0:857          'fresnelGlass' (float)

+0:857          Function Call: saturate(f1; (float)

+0:857            component-wise multiply (float)

+0:857              component-wise multiply (float)

+0:857                'fresnel' (in float)

+0:857                'fresnel' (in float)

+0:857              0.010000

+0:858      Branch: Return with expression

+0:858        add (float)

+0:858          component-wise multiply (float)

+0:858            Function Call: saturate(f1; (float)

+0:858              add (float)

+0:858                'fresnelGlass' (float)

+0:858                'transparency' (in float)

+0:858            subtract (float)

+0:858              1.000000

+0:858              'specfac' (float)

+0:858          'specfac' (float)

+0:860  Function Definition: GetAlpha(vf4;f1;f1;vf3;vf4;b1;i1; (float)

+0:860    Function Parameters: 

+0:860      'matColor' (in 4-component vector of float)

+0:860      'fresnel' (in float)

+0:860      'transparency' (in float)

+0:860      'diffuseTerm' (in 3-component vector of float)

+0:860      'specularTerm' (in 4-component vector of float)

+0:860      'iMaxSpecW' (in bool)

+0:860      'iAlphaType' (in int)

+0:862    Sequence

+0:862      Test condition and select (void)

+0:862        Condition

+0:862        Compare Equal (bool)

+0:862          'iAlphaType' (in int)

+0:862          58 (const int)

+0:862        true case

+0:864        Sequence

+0:864          Branch: Return with expression

+0:864            Function Call: GetAlphaFrom_Fresnel(f1; (float)

+0:864              'fresnel' (in float)

+0:862        false case

+0:866        Test condition and select (void)

+0:866          Condition

+0:866          Compare Equal (bool)

+0:866            'iAlphaType' (in int)

+0:866            42 (const int)

+0:866          true case

+0:868          Sequence

+0:868            Branch: Return with expression

+0:868              Function Call: GetAlphaFrom_FresnelPlusTransparency(f1;f1; (float)

+0:868                'fresnel' (in float)

+0:868                'transparency' (in float)

+0:866          false case

+0:870          Test condition and select (void)

+0:870            Condition

+0:870            Compare Equal (bool)

+0:870              'iAlphaType' (in int)

+0:870              74 (const int)

+0:870            true case

+0:872            Sequence

+0:872              Branch: Return with expression

+0:872                Function Call: GetAlphaFrom_Material(vf4; (float)

+0:872                  'matColor' (in 4-component vector of float)

+0:870            false case

+0:874            Test condition and select (void)

+0:874              Condition

+0:874              Compare Equal (bool)

+0:874                'iAlphaType' (in int)

+0:874                90 (const int)

+0:874              true case

+0:876              Sequence

+0:876                Branch: Return with expression

+0:876                  Function Call: GetAlphaFrom_PlasticPerspex(vf3; (float)

+0:876                    'diffuseTerm' (in 3-component vector of float)

+0:874              false case

+0:878              Test condition and select (void)

+0:878                Condition

+0:878                Compare Equal (bool)

+0:878                  'iAlphaType' (in int)

+0:878                  122 (const int)

+0:878                true case

+0:880                Sequence

+0:880                  Sequence

+0:880                    move second child to first child (float)

+0:880                      't' (float)

+0:880                      Function Call: GetMaxSpecTerm(vf4;b1; (float)

+0:880                        'specularTerm' (in 4-component vector of float)

+0:880                        'iMaxSpecW' (in bool)

+0:881                  Branch: Return with expression

+0:881                    Function Call: GetAlphaFrom_Glass(f1;f1;f1; (float)

+0:881                      't' (float)

+0:881                      'fresnel' (in float)

+0:881                      'transparency' (in float)

+0:878                false case

+0:883                Test condition and select (void)

+0:883                  Condition

+0:883                  Compare Equal (bool)

+0:883                    'iAlphaType' (in int)

+0:883                    106 (const int)

+0:883                  true case

+0:885                  Sequence

+0:885                    Branch: Return with expression

+0:885                      'transparency' (in float)

+0:883                  false case

+0:889                  Sequence

+0:889                    Branch: Return with expression

+0:889                      1.000000

+0:895  Function Definition: GetFinalColor(vf3;vf3;vf3;f1; (4-component vector of float)

+0:895    Function Parameters: 

+0:895      'ambiant' (in 3-component vector of float)

+0:895      'diffuse' (in 3-component vector of float)

+0:895      'specular' (in 3-component vector of float)

+0:895      'alpha' (in float)

+0:897    Sequence

+0:897      Branch: Return with expression

+0:897        Construct vec4 (4-component vector of float)

+0:897          add (3-component vector of float)

+0:897            add (3-component vector of float)

+0:897              'ambiant' (in 3-component vector of float)

+0:897              'diffuse' (in 3-component vector of float)

+0:897            'specular' (in 3-component vector of float)

+0:897          'alpha' (in float)

+0:899  Function Definition: GetFinalColor_Fac(vf3;vf3;vf3;f1;f1; (4-component vector of float)

+0:899    Function Parameters: 

+0:899      'ambiant' (in 3-component vector of float)

+0:899      'diffuse' (in 3-component vector of float)

+0:899      'specular' (in 3-component vector of float)

+0:899      'facCoef' (in float)

+0:899      'alpha' (in float)

+0:901    Sequence

+0:901      Branch: Return with expression

+0:901        Construct vec4 (4-component vector of float)

+0:901          add (3-component vector of float)

+0:901            vector-scale (3-component vector of float)

+0:901              subtract (float)

+0:901                1.000000

+0:901                'facCoef' (in float)

+0:901              add (3-component vector of float)

+0:901                'ambiant' (in 3-component vector of float)

+0:901                'diffuse' (in 3-component vector of float)

+0:901            vector-scale (3-component vector of float)

+0:901              'facCoef' (in float)

+0:901              'specular' (in 3-component vector of float)

+0:901          'alpha' (in float)

+0:903  Function Definition: GetFinalColor_Fac_SaturateAD_ModifyAD(vf3;vf3;vf3;f1;vf3;f1; (4-component vector of float)

+0:903    Function Parameters: 

+0:903      'ambiant' (in 3-component vector of float)

+0:903      'diffuse' (in 3-component vector of float)

+0:903      'specular' (in 3-component vector of float)

+0:903      'facCoef' (in float)

+0:903      'modify' (in 3-component vector of float)

+0:903      'alpha' (in float)

+0:905    Sequence

+0:905      Branch: Return with expression

+0:905        Construct vec4 (4-component vector of float)

+0:905          add (3-component vector of float)

+0:905            component-wise multiply (3-component vector of float)

+0:905              vector-scale (3-component vector of float)

+0:905                subtract (float)

+0:905                  1.000000

+0:905                  'facCoef' (in float)

+0:905                'modify' (in 3-component vector of float)

+0:905              Function Call: saturateLight(vf3; (3-component vector of float)

+0:905                add (3-component vector of float)

+0:905                  'ambiant' (in 3-component vector of float)

+0:905                  'diffuse' (in 3-component vector of float)

+0:905            vector-scale (3-component vector of float)

+0:905              'facCoef' (in float)

+0:905              'specular' (in 3-component vector of float)

+0:905          'alpha' (in float)

+0:907  Function Definition: GetFinalColor_SaturateAD_ModifyAD(vf3;vf3;vf3;vf3;f1; (4-component vector of float)

+0:907    Function Parameters: 

+0:907      'ambiant' (in 3-component vector of float)

+0:907      'diffuse' (in 3-component vector of float)

+0:907      'specular' (in 3-component vector of float)

+0:907      'modify' (in 3-component vector of float)

+0:907      'alpha' (in float)

+0:909    Sequence

+0:909      Branch: Return with expression

+0:909        Construct vec4 (4-component vector of float)

+0:909          add (3-component vector of float)

+0:909            component-wise multiply (3-component vector of float)

+0:909              'modify' (in 3-component vector of float)

+0:909              Function Call: saturateLight(vf3; (3-component vector of float)

+0:909                add (3-component vector of float)

+0:909                  'ambiant' (in 3-component vector of float)

+0:909                  'diffuse' (in 3-component vector of float)

+0:909            'specular' (in 3-component vector of float)

+0:909          'alpha' (in float)

+0:911  Function Definition: GetFinalColor_ModifyADS(vf3;vf3;vf3;vf3;f1; (4-component vector of float)

+0:911    Function Parameters: 

+0:911      'ambiant' (in 3-component vector of float)

+0:911      'diffuse' (in 3-component vector of float)

+0:911      'specular' (in 3-component vector of float)

+0:911      'modify' (in 3-component vector of float)

+0:911      'alpha' (in float)

+0:913    Sequence

+0:913      Branch: Return with expression

+0:913        Construct vec4 (4-component vector of float)

+0:913          component-wise multiply (3-component vector of float)

+0:913            'modify' (in 3-component vector of float)

+0:913            add (3-component vector of float)

+0:913              Function Call: saturateLight(vf3; (3-component vector of float)

+0:913                add (3-component vector of float)

+0:913                  'ambiant' (in 3-component vector of float)

+0:913                  'diffuse' (in 3-component vector of float)

+0:913              'specular' (in 3-component vector of float)

+0:913          'alpha' (in float)

+0:915  Function Definition: GetFinalColor_Illum(vf3;vf3;f1; (4-component vector of float)

+0:915    Function Parameters: 

+0:915      'ambiant' (in 3-component vector of float)

+0:915      'diffuseAndSpecular' (in 3-component vector of float)

+0:915      'alpha' (in float)

+0:917    Sequence

+0:917      Branch: Return with expression

+0:917        Construct vec4 (4-component vector of float)

+0:917          add (3-component vector of float)

+0:917            'ambiant' (in 3-component vector of float)

+0:917            'diffuseAndSpecular' (in 3-component vector of float)

+0:917          'alpha' (in float)

+0:921  Function Definition: GetShadowColor(sS21;vf3;f1; (float)

+0:921    Function Parameters: 

+0:921      'shadowMap' (in sampler2DShadow)

+0:921      'shadowUV' (in 3-component vector of float)

+0:921      'mapScale' (in float)

+0:923    Sequence

+0:923      Sequence

+0:923        move second child to first child (float)

+0:923          'shadowColor' (float)

+0:923          direct index (float)

+0:923            Function Call: shadow2D(sS21;vf3; (4-component vector of float)

+0:923              'shadowMap' (in sampler2DShadow)

+0:923              add (3-component vector of float)

+0:923                'shadowUV' (in 3-component vector of float)

+0:923                vector-scale (3-component vector of float)

+0:923                  -1.500000

+0:923                  -1.500000

+0:923                  0.000000

+0:923                  'mapScale' (in float)

+0:923            0 (const int)

+0:924      add second child into first child (float)

+0:924        'shadowColor' (float)

+0:924        direct index (float)

+0:924          Function Call: shadow2D(sS21;vf3; (4-component vector of float)

+0:924            'shadowMap' (in sampler2DShadow)

+0:924            add (3-component vector of float)

+0:924              'shadowUV' (in 3-component vector of float)

+0:924              vector-scale (3-component vector of float)

+0:924                -1.500000

+0:924                -0.500000

+0:924                0.000000

+0:924                'mapScale' (in float)

+0:924          0 (const int)

+0:925      add second child into first child (float)

+0:925        'shadowColor' (float)

+0:925        direct index (float)

+0:925          Function Call: shadow2D(sS21;vf3; (4-component vector of float)

+0:925            'shadowMap' (in sampler2DShadow)

+0:925            add (3-component vector of float)

+0:925              'shadowUV' (in 3-component vector of float)

+0:925              vector-scale (3-component vector of float)

+0:925                -1.500000

+0:925                0.500000

+0:925                0.000000

+0:925                'mapScale' (in float)

+0:925          0 (const int)

+0:926      add second child into first child (float)

+0:926        'shadowColor' (float)

+0:926        direct index (float)

+0:926          Function Call: shadow2D(sS21;vf3; (4-component vector of float)

+0:926            'shadowMap' (in sampler2DShadow)

+0:926            add (3-component vector of float)

+0:926              'shadowUV' (in 3-component vector of float)

+0:926              vector-scale (3-component vector of float)

+0:926                -1.500000

+0:926                1.500000

+0:926                0.000000

+0:926                'mapScale' (in float)

+0:926          0 (const int)

+0:928      add second child into first child (float)

+0:928        'shadowColor' (float)

+0:928        direct index (float)

+0:928          Function Call: shadow2D(sS21;vf3; (4-component vector of float)

+0:928            'shadowMap' (in sampler2DShadow)

+0:928            add (3-component vector of float)

+0:928              'shadowUV' (in 3-component vector of float)

+0:928              vector-scale (3-component vector of float)

+0:928                -0.500000

+0:928                -1.500000

+0:928                0.000000

+0:928                'mapScale' (in float)

+0:928          0 (const int)

+0:929      add second child into first child (float)

+0:929        'shadowColor' (float)

+0:929        direct index (float)

+0:929          Function Call: shadow2D(sS21;vf3; (4-component vector of float)

+0:929            'shadowMap' (in sampler2DShadow)

+0:929            add (3-component vector of float)

+0:929              'shadowUV' (in 3-component vector of float)

+0:929              vector-scale (3-component vector of float)

+0:929                -0.500000

+0:929                -0.500000

+0:929                0.000000

+0:929                'mapScale' (in float)

+0:929          0 (const int)

+0:930      add second child into first child (float)

+0:930        'shadowColor' (float)

+0:930        direct index (float)

+0:930          Function Call: shadow2D(sS21;vf3; (4-component vector of float)

+0:930            'shadowMap' (in sampler2DShadow)

+0:930            add (3-component vector of float)

+0:930              'shadowUV' (in 3-component vector of float)

+0:930              vector-scale (3-component vector of float)

+0:930                -0.500000

+0:930                0.500000

+0:930                0.000000

+0:930                'mapScale' (in float)

+0:930          0 (const int)

+0:931      add second child into first child (float)

+0:931        'shadowColor' (float)

+0:931        direct index (float)

+0:931          Function Call: shadow2D(sS21;vf3; (4-component vector of float)

+0:931            'shadowMap' (in sampler2DShadow)

+0:931            add (3-component vector of float)

+0:931              'shadowUV' (in 3-component vector of float)

+0:931              vector-scale (3-component vector of float)

+0:931                -0.500000

+0:931                1.500000

+0:931                0.000000

+0:931                'mapScale' (in float)

+0:931          0 (const int)

+0:933      add second child into first child (float)

+0:933        'shadowColor' (float)

+0:933        direct index (float)

+0:933          Function Call: shadow2D(sS21;vf3; (4-component vector of float)

+0:933            'shadowMap' (in sampler2DShadow)

+0:933            add (3-component vector of float)

+0:933              'shadowUV' (in 3-component vector of float)

+0:933              vector-scale (3-component vector of float)

+0:933                0.500000

+0:933                -1.500000

+0:933                0.000000

+0:933                'mapScale' (in float)

+0:933          0 (const int)

+0:934      add second child into first child (float)

+0:934        'shadowColor' (float)

+0:934        direct index (float)

+0:934          Function Call: shadow2D(sS21;vf3; (4-component vector of float)

+0:934            'shadowMap' (in sampler2DShadow)

+0:934            add (3-component vector of float)

+0:934              'shadowUV' (in 3-component vector of float)

+0:934              vector-scale (3-component vector of float)

+0:934                0.500000

+0:934                -0.500000

+0:934                0.000000

+0:934                'mapScale' (in float)

+0:934          0 (const int)

+0:935      add second child into first child (float)

+0:935        'shadowColor' (float)

+0:935        direct index (float)

+0:935          Function Call: shadow2D(sS21;vf3; (4-component vector of float)

+0:935            'shadowMap' (in sampler2DShadow)

+0:935            add (3-component vector of float)

+0:935              'shadowUV' (in 3-component vector of float)

+0:935              vector-scale (3-component vector of float)

+0:935                0.500000

+0:935                0.500000

+0:935                0.000000

+0:935                'mapScale' (in float)

+0:935          0 (const int)

+0:936      add second child into first child (float)

+0:936        'shadowColor' (float)

+0:936        direct index (float)

+0:936          Function Call: shadow2D(sS21;vf3; (4-component vector of float)

+0:936            'shadowMap' (in sampler2DShadow)

+0:936            add (3-component vector of float)

+0:936              'shadowUV' (in 3-component vector of float)

+0:936              vector-scale (3-component vector of float)

+0:936                0.500000

+0:936                1.500000

+0:936                0.000000

+0:936                'mapScale' (in float)

+0:936          0 (const int)

+0:938      add second child into first child (float)

+0:938        'shadowColor' (float)

+0:938        direct index (float)

+0:938          Function Call: shadow2D(sS21;vf3; (4-component vector of float)

+0:938            'shadowMap' (in sampler2DShadow)

+0:938            add (3-component vector of float)

+0:938              'shadowUV' (in 3-component vector of float)

+0:938              vector-scale (3-component vector of float)

+0:938                1.500000

+0:938                -1.500000

+0:938                0.000000

+0:938                'mapScale' (in float)

+0:938          0 (const int)

+0:939      add second child into first child (float)

+0:939        'shadowColor' (float)

+0:939        direct index (float)

+0:939          Function Call: shadow2D(sS21;vf3; (4-component vector of float)

+0:939            'shadowMap' (in sampler2DShadow)

+0:939            add (3-component vector of float)

+0:939              'shadowUV' (in 3-component vector of float)

+0:939              vector-scale (3-component vector of float)

+0:939                1.500000

+0:939                -0.500000

+0:939                0.000000

+0:939                'mapScale' (in float)

+0:939          0 (const int)

+0:940      add second child into first child (float)

+0:940        'shadowColor' (float)

+0:940        direct index (float)

+0:940          Function Call: shadow2D(sS21;vf3; (4-component vector of float)

+0:940            'shadowMap' (in sampler2DShadow)

+0:940            add (3-component vector of float)

+0:940              'shadowUV' (in 3-component vector of float)

+0:940              vector-scale (3-component vector of float)

+0:940                1.500000

+0:940                0.500000

+0:940                0.000000

+0:940                'mapScale' (in float)

+0:940          0 (const int)

+0:941      add second child into first child (float)

+0:941        'shadowColor' (float)

+0:941        direct index (float)

+0:941          Function Call: shadow2D(sS21;vf3; (4-component vector of float)

+0:941            'shadowMap' (in sampler2DShadow)

+0:941            add (3-component vector of float)

+0:941              'shadowUV' (in 3-component vector of float)

+0:941              vector-scale (3-component vector of float)

+0:941                1.500000

+0:941                1.500000

+0:941                0.000000

+0:941                'mapScale' (in float)

+0:941          0 (const int)

+0:942      Branch: Return with expression

+0:942        divide (float)

+0:942          'shadowColor' (float)

+0:942          16.000000

+0:947  Function Definition: GetShadowColorLow(sS21;vf3;f1; (float)

+0:947    Function Parameters: 

+0:947      'shadowMap' (in sampler2DShadow)

+0:947      'shadowUV' (in 3-component vector of float)

+0:947      'mapScale' (in float)

+0:949    Sequence

+0:949      Sequence

+0:949        move second child to first child (float)

+0:949          'shadowColor' (float)

+0:949          direct index (float)

+0:949            Function Call: shadow2D(sS21;vf3; (4-component vector of float)

+0:949              'shadowMap' (in sampler2DShadow)

+0:949              add (3-component vector of float)

+0:949                'shadowUV' (in 3-component vector of float)

+0:949                vector-scale (3-component vector of float)

+0:949                  -0.500000

+0:949                  -0.500000

+0:949                  0.000000

+0:949                  'mapScale' (in float)

+0:949            0 (const int)

+0:950      add second child into first child (float)

+0:950        'shadowColor' (float)

+0:950        direct index (float)

+0:950          Function Call: shadow2D(sS21;vf3; (4-component vector of float)

+0:950            'shadowMap' (in sampler2DShadow)

+0:950            add (3-component vector of float)

+0:950              'shadowUV' (in 3-component vector of float)

+0:950              vector-scale (3-component vector of float)

+0:950                -0.500000

+0:950                0.500000

+0:950                0.000000

+0:950                'mapScale' (in float)

+0:950          0 (const int)

+0:951      add second child into first child (float)

+0:951        'shadowColor' (float)

+0:951        direct index (float)

+0:951          Function Call: shadow2D(sS21;vf3; (4-component vector of float)

+0:951            'shadowMap' (in sampler2DShadow)

+0:951            add (3-component vector of float)

+0:951              'shadowUV' (in 3-component vector of float)

+0:951              vector-scale (3-component vector of float)

+0:951                0.500000

+0:951                -0.500000

+0:951                0.000000

+0:951                'mapScale' (in float)

+0:951          0 (const int)

+0:952      add second child into first child (float)

+0:952        'shadowColor' (float)

+0:952        direct index (float)

+0:952          Function Call: shadow2D(sS21;vf3; (4-component vector of float)

+0:952            'shadowMap' (in sampler2DShadow)

+0:952            add (3-component vector of float)

+0:952              'shadowUV' (in 3-component vector of float)

+0:952              vector-scale (3-component vector of float)

+0:952                0.500000

+0:952                0.500000

+0:952                0.000000

+0:952                'mapScale' (in float)

+0:952          0 (const int)

+0:953      Branch: Return with expression

+0:953        divide (float)

+0:953          'shadowColor' (float)

+0:953          4.000000

+0:958  Function Definition: getMixColor(vf4;vf4;f1;vf3;vf3; (4-component vector of float)

+0:958    Function Parameters: 

+0:958      'matColor' (in 4-component vector of float)

+0:958      'matColor2' (in 4-component vector of float)

+0:958      'colorMixFactor' (in float)

+0:958      'eNormal' (in 3-component vector of float)

+0:958      'eyeVector' (in 3-component vector of float)

+0:960    Sequence

+0:960      Sequence

+0:960        move second child to first child (float)

+0:960          'cpdot' (float)

+0:960          max (float)

+0:960            Absolute value (float)

+0:960              dot-product (float)

+0:960                'eNormal' (in 3-component vector of float)

+0:960                'eyeVector' (in 3-component vector of float)

+0:960            0.010000

+0:961      move second child to first child (float)

+0:961        'cpdot' (float)

+0:961        clamp (float)

+0:961          subtract (float)

+0:961            component-wise multiply (float)

+0:961              1.200000

+0:961              pow (float)

+0:961                'cpdot' (float)

+0:961                'colorMixFactor' (in float)

+0:961            0.100000

+0:961          0.000000

+0:961          1.000000

+0:962      Branch: Return with expression

+0:962        mix (4-component vector of float)

+0:962          'matColor2' (in 4-component vector of float)

+0:962          'matColor' (in 4-component vector of float)

+0:962          'cpdot' (float)

+0:1002  Function Definition: main( (void)

+0:1002    Function Parameters: 

+0:1005    Sequence

+0:1005      Sequence

+0:1005        move second child to first child (2-component vector of float)

+0:1005          'texCoords' (2-component vector of float)

+0:1005          0.000000

+0:1005          0.000000

+0:1012      Sequence

+0:1012        move second child to first child (3-component vector of float)

+0:1012          'tangent' (3-component vector of float)

+0:1012          normalize (3-component vector of float)

+0:1012            'v_Tangent' (smooth in 3-component vector of float)

+0:1016      Sequence

+0:1016        move second child to first child (3X3 matrix of float)

+0:1016          't2eMatrixTBN' (3X3 matrix of float)

+0:1016          Function Call: t2eGetMatrixTBN(mf33;vf3;vf3;b1; (3X3 matrix of float)

+0:1016            'gl_NormalMatrix' (uniform 3X3 matrix of float)

+0:1016            'v_Normal' (smooth in 3-component vector of float)

+0:1016            'tangent' (3-component vector of float)

+0:1016            Compare Not Equal (bool)

+0:1016              'doubleSided' (uniform float)

+0:1016              0.000000

+0:1113      Sequence

+0:1113        move second child to first child (2-component vector of float)

+0:1113          'newTexCoord' (2-component vector of float)

+0:1113          'texCoords' (2-component vector of float)

+0:1134      Sequence

+0:1134        move second child to first child (3-component vector of float)

+0:1134          'tBumpNormal' (3-component vector of float)

+0:1134          direct index (3-component vector of float)

+0:1134            't2eMatrixTBN' (3X3 matrix of float)

+0:1134            2 (const int)

+0:1145      Sequence

+0:1145        move second child to first child (4-component vector of float)

+0:1145          'mixColor' (4-component vector of float)

+0:1145          'matColor' (uniform 4-component vector of float)

+0:1148      Sequence

+0:1148        move second child to first child (float)

+0:1148          'fresnelColor' (float)

+0:1148          0.000000

+0:1158      Sequence

+0:1158        move second child to first child (3-component vector of float)

+0:1158          'lightNormal' (3-component vector of float)

+0:1158          'tBumpNormal' (3-component vector of float)

+0:?       Sequence

+0:1202        move second child to first child (float)

+0:1202          'l_reflectModifier' (float)

+0:1202          'reflectModifier' (uniform float)

+0:1210      Sequence

+0:1210        move second child to first child (3-component vector of float)

+0:1210          'diffuseLight' (3-component vector of float)

+0:1210          0.000000

+0:1210          0.000000

+0:1210          0.000000

+0:1211      Sequence

+0:1211        move second child to first child (4-component vector of float)

+0:1211          'specularLight' (4-component vector of float)

+0:1211          0.000000

+0:1211          0.000000

+0:1211          0.000000

+0:1211          0.000000

+0:1212      Sequence

+0:1212        move second child to first child (4-component vector of float)

+0:1212          'microFlakeSpec' (4-component vector of float)

+0:1212          0.000000

+0:1212          0.000000

+0:1212          0.000000

+0:1212          0.000000

+0:1217      Sequence

+0:1217        move second child to first child (3-component vector of float)

+0:1217          'tLightDir' (3-component vector of float)

+0:1217          0.000000

+0:1217          0.000000

+0:1217          1.000000

+0:1218      Sequence

+0:1218        move second child to first child (3-component vector of float)

+0:1218          'tHalfVector' (3-component vector of float)

+0:1218          0.000000

+0:1218          0.000000

+0:1218          -1.000000

+0:1230      Sequence

+0:1230        Sequence

+0:1230          move second child to first child (3-component vector of float)

+0:1230            'tLightDir' (3-component vector of float)

+0:1230            Function Call: eGetLightDir_DP(vf3;vf3;f1; (3-component vector of float)

+0:1230              Construct vec3 (3-component vector of float)

+0:1230                'lightDir0' (uniform 4-component vector of float)

+0:1230              'v_PositionEyeSpace' (smooth in 3-component vector of float)

+0:1230              direct index (float)

+0:1230                'lightType' (uniform 4-component vector of float)

+0:1230                0 (const int)

+0:1231          move second child to first child (3-component vector of float)

+0:1231            'tHalfVector' (3-component vector of float)

+0:1231            Function Call: eGetHalfVector(vf3;vf3; (3-component vector of float)

+0:1231              'tLightDir' (3-component vector of float)

+0:1231              'v_EyeDirection' (smooth in 3-component vector of float)

+0:1236        Function Call: AddSpecularAndDiffuse(vf3;vf3;vf3;i1;vf3;vf3;f1;b1;b1;vf3;vf4;f1; (void)

+0:1233          'lightNormal' (3-component vector of float)

+0:1234          'tLightDir' (3-component vector of float)

+0:1234          Construct vec3 (3-component vector of float)

+0:1234            'lightColor0' (uniform 4-component vector of float)

+0:1234          26 (const int)

+0:1235          'tHalfVector' (3-component vector of float)

+0:1235          Construct vec3 (3-component vector of float)

+0:1235            'lightSpec0' (uniform 4-component vector of float)

+0:1235          direct index (float)

+0:1235            'specularMaterial' (uniform 4-component vector of float)

+0:1235            3 (const int)

+0:1235          false (const bool)

+0:1235          false (const bool)

+0:1236          'diffuseLight' (3-component vector of float)

+0:1236          'specularLight' (4-component vector of float)

+0:1236          'transparency' (uniform float)

+0:1250      Sequence

+0:1250        Test condition and select (void)

+0:1250          Condition

+0:1250          Compare Greater Than (bool)

+0:1250            'isDynamicShadowVisible' (uniform float)

+0:1250            0.000000

+0:1250          true case

+0:1252          Sequence

+0:1252            Sequence

+0:1252              move second child to first child (float)

+0:1252                'shadowColor' (float)

+0:1252                Function Call: GetShadowColor(sS21;vf3;f1; (float)

+0:1252                  'shadowMap2D' (uniform sampler2DShadow)

+0:1252                  vector swizzle (3-component vector of float)

+0:1252                    'v_projCoordSM' (smooth in 4-component vector of float)

+0:1252                    Sequence

+0:1252                      0 (const int)

+0:1252                      1 (const int)

+0:1252                      2 (const int)

+0:1252                  'shadowMapScale' (uniform float)

+0:1258            vector scale second child into first child (3-component vector of float)

+0:1258              vector swizzle (3-component vector of float)

+0:1258                'diffuseLight' (3-component vector of float)

+0:1258                Sequence

+0:1258                  0 (const int)

+0:1258                  1 (const int)

+0:1258                  2 (const int)

+0:1258              'shadowColor' (float)

+0:1259            vector scale second child into first child (3-component vector of float)

+0:1259              vector swizzle (3-component vector of float)

+0:1259                'specularLight' (4-component vector of float)

+0:1259                Sequence

+0:1259                  0 (const int)

+0:1259                  1 (const int)

+0:1259                  2 (const int)

+0:1259              'shadowColor' (float)

+0:1299      Sequence

+0:1299        Sequence

+0:1299          move second child to first child (3-component vector of float)

+0:1299            'tLightDir' (3-component vector of float)

+0:1299            Function Call: eGetLightDir_DP(vf3;vf3;f1; (3-component vector of float)

+0:1299              Construct vec3 (3-component vector of float)

+0:1299                'lightDir1' (uniform 4-component vector of float)

+0:1299              'v_PositionEyeSpace' (smooth in 3-component vector of float)

+0:1299              direct index (float)

+0:1299                'lightType' (uniform 4-component vector of float)

+0:1299                1 (const int)

+0:1300          move second child to first child (3-component vector of float)

+0:1300            'tHalfVector' (3-component vector of float)

+0:1300            Function Call: eGetHalfVector(vf3;vf3; (3-component vector of float)

+0:1300              'tLightDir' (3-component vector of float)

+0:1300              'v_EyeDirection' (smooth in 3-component vector of float)

+0:1305        Function Call: AddSpecularAndDiffuse(vf3;vf3;vf3;i1;vf3;vf3;f1;b1;b1;vf3;vf4;f1; (void)

+0:1302          'lightNormal' (3-component vector of float)

+0:1303          'tLightDir' (3-component vector of float)

+0:1303          Construct vec3 (3-component vector of float)

+0:1303            'lightColor1' (uniform 4-component vector of float)

+0:1303          26 (const int)

+0:1304          'tHalfVector' (3-component vector of float)

+0:1304          Construct vec3 (3-component vector of float)

+0:1304            'lightSpec1' (uniform 4-component vector of float)

+0:1304          direct index (float)

+0:1304            'specularMaterial' (uniform 4-component vector of float)

+0:1304            3 (const int)

+0:1304          false (const bool)

+0:1304          false (const bool)

+0:1305          'diffuseLight' (3-component vector of float)

+0:1305          'specularLight' (4-component vector of float)

+0:1305          'transparency' (uniform float)

+0:1323      Sequence

+0:1323        Sequence

+0:1323          move second child to first child (3-component vector of float)

+0:1323            'tLightDir' (3-component vector of float)

+0:1323            Function Call: eGetLightDir_DP(vf3;vf3;f1; (3-component vector of float)

+0:1323              Construct vec3 (3-component vector of float)

+0:1323                'lightDir2' (uniform 4-component vector of float)

+0:1323              'v_PositionEyeSpace' (smooth in 3-component vector of float)

+0:1323              direct index (float)

+0:1323                'lightType' (uniform 4-component vector of float)

+0:1323                2 (const int)

+0:1324          move second child to first child (3-component vector of float)

+0:1324            'tHalfVector' (3-component vector of float)

+0:1324            Function Call: eGetHalfVector(vf3;vf3; (3-component vector of float)

+0:1324              'tLightDir' (3-component vector of float)

+0:1324              'v_EyeDirection' (smooth in 3-component vector of float)

+0:1329        Function Call: AddSpecularAndDiffuse(vf3;vf3;vf3;i1;vf3;vf3;f1;b1;b1;vf3;vf4;f1; (void)

+0:1326          'lightNormal' (3-component vector of float)

+0:1327          'tLightDir' (3-component vector of float)

+0:1327          Construct vec3 (3-component vector of float)

+0:1327            'lightColor2' (uniform 4-component vector of float)

+0:1327          26 (const int)

+0:1328          'tHalfVector' (3-component vector of float)

+0:1328          Construct vec3 (3-component vector of float)

+0:1328            'lightSpec2' (uniform 4-component vector of float)

+0:1328          direct index (float)

+0:1328            'specularMaterial' (uniform 4-component vector of float)

+0:1328            3 (const int)

+0:1328          false (const bool)

+0:1328          false (const bool)

+0:1329          'diffuseLight' (3-component vector of float)

+0:1329          'specularLight' (4-component vector of float)

+0:1329          'transparency' (uniform float)

+0:1341      move second child to first child (3-component vector of float)

+0:1341        vector swizzle (3-component vector of float)

+0:1341          'specularTerm' (4-component vector of float)

+0:1341          Sequence

+0:1341            0 (const int)

+0:1341            1 (const int)

+0:1341            2 (const int)

+0:1341        Function Call: GetSpecularTerm(vf3;vf3; (3-component vector of float)

+0:1341          Construct vec3 (3-component vector of float)

+0:1341            'specularLight' (4-component vector of float)

+0:1341          vector-scale (3-component vector of float)

+0:1341            Construct vec3 (3-component vector of float)

+0:1341              'specularMaterial' (uniform 4-component vector of float)

+0:1341            'specularLightModifier' (uniform float)

+0:1369      Sequence

+0:1369        Sequence

+0:1369          move second child to first child (float)

+0:1369            'alpha' (float)

+0:1369            'transparency' (uniform float)

+0:1374      Sequence

+0:1374        move second child to first child (3-component vector of float)

+0:1374          'ambientAndDiffuseModifier' (3-component vector of float)

+0:1374          1.000000

+0:1374          1.000000

+0:1374          1.000000

+0:1377      Sequence

+0:1377        move second child to first child (3-component vector of float)

+0:1377          'ambientAndDiffuseModifier' (3-component vector of float)

+0:1377          0.000000

+0:1377          0.000000

+0:1377          0.000000

+0:1412        Sequence

+0:1412          add second child into first child (3-component vector of float)

+0:1412            'ambientAndDiffuseModifier' (3-component vector of float)

+0:1412            subtract (float)

+0:1412              1.000000

+0:1412              'l_reflectModifier' (float)

+0:1416        multiply second child into first child (3-component vector of float)

+0:1416          'ambientAndDiffuseModifier' (3-component vector of float)

+0:1416          vector swizzle (3-component vector of float)

+0:1416            'mixColor' (4-component vector of float)

+0:1416            Sequence

+0:1416              0 (const int)

+0:1416              1 (const int)

+0:1416              2 (const int)

+0:?         Sequence

+0:1429          Sequence

+0:1429            move second child to first child (3-component vector of float)

+0:1429              'eReflection' (3-component vector of float)

+0:1429              Function Call: eGetReflection(vf3;vf3;vf3; (3-component vector of float)

+0:1429                direct index (3-component vector of float)

+0:1429                  't2eMatrixTBN' (3X3 matrix of float)

+0:1429                  2 (const int)

+0:1429                'envEyePosition' (uniform 3-component vector of float)

+0:1429                'v_PositionEyeSpace' (smooth in 3-component vector of float)

+0:1431          move second child to first child (3-component vector of float)

+0:1431            'eReflection' (3-component vector of float)

+0:1431            matrix-times-vector (3-component vector of float)

+0:1431              'e2lDirectionMat' (uniform 3X3 matrix of float)

+0:1431              'eReflection' (3-component vector of float)

+0:1434          Sequence

+0:1434            Sequence

+0:1434              move second child to first child (3-component vector of float)

+0:1434                'env' (3-component vector of float)

+0:1434                vector swizzle (3-component vector of float)

+0:1434                  Function Call: GetEnv(vf3; (4-component vector of float)

+0:1434                    'eReflection' (3-component vector of float)

+0:1434                  Sequence

+0:1434                    0 (const int)

+0:1434                    1 (const int)

+0:1434                    2 (const int)

+0:1435            Sequence

+0:1435              move second child to first child (float)

+0:1435                'envgs' (float)

+0:1435                add (float)

+0:1435                  component-wise multiply (float)

+0:1435                    direct index (float)

+0:1435                      'env' (3-component vector of float)

+0:1435                      0 (const int)

+0:1435                    0.300000

+0:1435                  component-wise multiply (float)

+0:1435                    component-wise multiply (float)

+0:1435                      component-wise multiply (float)

+0:1435                        direct index (float)

+0:1435                          'env' (3-component vector of float)

+0:1435                          1 (const int)

+0:1435                        0.590000

+0:1435                      direct index (float)

+0:1435                        'env' (3-component vector of float)

+0:1435                        0 (const int)

+0:1435                    0.110000

+0:1436            move second child to first child (float)

+0:1436              'l_reflectModifier' (float)

+0:1436              clamp (float)

+0:1436                component-wise multiply (float)

+0:1436                  component-wise multiply (float)

+0:1436                    'l_reflectModifier' (float)

+0:1436                    'envgs' (float)

+0:1436                  10.000000

+0:1436                'l_reflectModifier' (float)

+0:1436                1.000000

+0:1437            add second child into first child (3-component vector of float)

+0:1437              'ambientAndDiffuseModifier' (3-component vector of float)

+0:1437              vector-scale (3-component vector of float)

+0:1437                'l_reflectModifier' (float)

+0:1437                'env' (3-component vector of float)

+0:1454      move second child to first child (3-component vector of float)

+0:1454        'diffuseTerm' (3-component vector of float)

+0:1454        vector-scale (3-component vector of float)

+0:1454          'diffuseLight' (3-component vector of float)

+0:1454          'matDiffuse' (uniform float)

+0:1466      move second child to first child (3-component vector of float)

+0:1466        'ambientTerm' (3-component vector of float)

+0:1466        add (3-component vector of float)

+0:1466          vector-scale (3-component vector of float)

+0:1466            Construct vec3 (3-component vector of float)

+0:1466              'ambientLight' (uniform 4-component vector of float)

+0:1466            'matAmbient' (uniform float)

+0:1466          Construct vec3 (3-component vector of float)

+0:1466            'matEmissivity' (uniform float)

+0:1494      vector scale second child into first child (3-component vector of float)

+0:1494        'ambientTerm' (3-component vector of float)

+0:1494        1.000000

+0:1555      Sequence

+0:1555        move second child to first child (4-component vector of float)

+0:1555          'finalColor' (4-component vector of float)

+0:1559          Function Call: GetFinalColor(vf3;vf3;vf3;f1; (4-component vector of float)

+0:1556            component-wise multiply (3-component vector of float)

+0:1556              'ambientTerm' (3-component vector of float)

+0:1556              'ambientAndDiffuseModifier' (3-component vector of float)

+0:1557            component-wise multiply (3-component vector of float)

+0:1557              'diffuseTerm' (3-component vector of float)

+0:1557              'ambientAndDiffuseModifier' (3-component vector of float)

+0:1558            vector swizzle (3-component vector of float)

+0:1558              'specularTerm' (4-component vector of float)

+0:1558              Sequence

+0:1558                0 (const int)

+0:1558                1 (const int)

+0:1558                2 (const int)

+0:1559            'alpha' (float)

+0:1592      Sequence

+0:1592        Test condition and select (void)

+0:1592          Condition

+0:1592          Compare Equal (bool)

+0:1592            direct index (float)

+0:1592              'finalColor' (4-component vector of float)

+0:1592              3 (const int)

+0:1592            1.000000

+0:1592          true case

+0:1594          Sequence

+0:1594            move second child to first child (float)

+0:1594              direct index (float)

+0:1594                'finalColor' (4-component vector of float)

+0:1594                3 (const int)

+0:1594              clamp (float)

+0:1594                subtract (float)

+0:1594                  1.000000

+0:1594                  direct index (float)

+0:1594                    'v_TexCoord' (smooth in 4-component vector of float)

+0:1594                    3 (const int)

+0:1594                0.000000

+0:1594                1.000000

+0:1592          false case

+0:1598          Sequence

+0:1598            multiply second child into first child (float)

+0:1598              direct index (float)

+0:1598                'finalColor' (4-component vector of float)

+0:1598                3 (const int)

+0:1598              clamp (float)

+0:1598                subtract (float)

+0:1598                  1.000000

+0:1598                  component-wise multiply (float)

+0:1598                    component-wise multiply (float)

+0:1598                      direct index (float)

+0:1598                        'v_TexCoord' (smooth in 4-component vector of float)

+0:1598                        3 (const int)

+0:1598                      direct index (float)

+0:1598                        'v_TexCoord' (smooth in 4-component vector of float)

+0:1598                        3 (const int)

+0:1598                    direct index (float)

+0:1598                      'v_TexCoord' (smooth in 4-component vector of float)

+0:1598                      3 (const int)

+0:1598                0.000000

+0:1598                1.000000

+0:1611      move second child to first child (4-component vector of float)

+0:1611        'gl_FragColor' (fragColor 4-component vector of float)

+0:1611        'finalColor' (4-component vector of float)

+0:?   Linker Objects

+0:?     'matColor' (uniform 4-component vector of float)

+0:?     'matColor2' (uniform 4-component vector of float)

+0:?     'colorMixFactor' (uniform float)

+0:?     'matDiffuse' (uniform float)

+0:?     'matEmissivity' (uniform float)

+0:?     'matAmbient' (uniform float)

+0:?     'specularMaterial' (uniform 4-component vector of float)

+0:?     'specularLightModifier' (uniform float)

+0:?     'ambientLight' (uniform 4-component vector of float)

+0:?     'lightDir0' (uniform 4-component vector of float)

+0:?     'lightColor0' (uniform 4-component vector of float)

+0:?     'lightSpec0' (uniform 4-component vector of float)

+0:?     'lightDir1' (uniform 4-component vector of float)

+0:?     'lightColor1' (uniform 4-component vector of float)

+0:?     'lightSpec1' (uniform 4-component vector of float)

+0:?     'lightDir2' (uniform 4-component vector of float)

+0:?     'lightColor2' (uniform 4-component vector of float)

+0:?     'lightSpec2' (uniform 4-component vector of float)

+0:?     'lightType' (uniform 4-component vector of float)

+0:?     'shadowMapScale' (uniform float)

+0:?     'isAOShadowVisible' (uniform float)

+0:?     'isDynamicShadowVisible' (uniform float)

+0:?     'floorPoint' (uniform 4-component vector of float)

+0:?     'floorNormal' (uniform 4-component vector of float)

+0:?     'center' (uniform 3-component vector of float)

+0:?     'faceWidth' (uniform float)

+0:?     'diffuseAverage' (uniform 3-component vector of float)

+0:?     'diffuseMapModifier' (uniform 3-component vector of float)

+0:?     'e2cCosmeticTextureTransform' (uniform 4X4 matrix of float)

+0:?     'envcolorAverage' (uniform 3-component vector of float)

+0:?     'envBrightness' (uniform float)

+0:?     'envColorWash' (uniform float)

+0:?     'envContrast' (uniform float)

+0:?     'envEyePosition' (uniform 3-component vector of float)

+0:?     'envColor' (uniform 3-component vector of float)

+0:?     'reflectModifier' (uniform float)

+0:?     'transparency' (uniform float)

+0:?     'doubleSided' (uniform float)

+0:?     'fresnelCoef1' (uniform float)

+0:?     'fresnelCoef2' (uniform float)

+0:?     'RimlightColor' (uniform 3-component vector of float)

+0:?     'specularColor' (uniform 4-component vector of float)

+0:?     'e2lDirectionMat' (uniform 3X3 matrix of float)

+0:?     'microFlakeShininess' (uniform float)

+0:?     'microFlakeCoef' (uniform float)

+0:?     'microFlakeColor' (uniform 4-component vector of float)

+0:?     'parallaxOffset' (uniform float)

+0:?     'parallaxPrecision' (uniform float)

+0:?     'shadowMap2D' (uniform sampler2DShadow)

+0:?     'AOTermMap2D' (uniform sampler2D)

+0:?     'reflectionMap2D' (uniform sampler2D)

+0:?     'envSphericalDiffuse' (uniform sampler2D)

+0:?     'envCubicDiffuse' (uniform samplerCube)

+0:?     'diffMap2D' (uniform sampler2D)

+0:?     'alphaMap' (uniform sampler2D)

+0:?     'envCubicSpecular' (uniform samplerCube)

+0:?     'envSphericalSpecular' (uniform sampler2D)

+0:?     'normalMap2D' (uniform sampler2D)

+0:?     'envSphericalBackground' (uniform sampler2D)

+0:?     'envCubicBackground' (uniform samplerCube)

+0:?     'v_TexCoord' (smooth in 4-component vector of float)

+0:?     'v_EyeDirection' (smooth in 3-component vector of float)

+0:?     'v_PositionEyeSpace' (smooth in 3-component vector of float)

+0:?     'v_Normal' (smooth in 3-component vector of float)

+0:?     'v_Tangent' (smooth in 3-component vector of float)

+0:?     'v_projCoordSM' (smooth in 4-component vector of float)

+0:?     'v_fragCoord' (smooth in 4-component vector of float)

+0:?     'v_projCoordRF' (smooth in 4-component vector of float)

+0:?     'v_FloorPoint' (smooth in 4-component vector of float)

+0:?     'v_patternCoord' (smooth in 2-component vector of float)

+

diff --git a/Test/baseResults/specExamples.frag.out b/Test/baseResults/specExamples.frag.out
new file mode 100644
index 0000000..6d49ed3
--- /dev/null
+++ b/Test/baseResults/specExamples.frag.out
@@ -0,0 +1,229 @@
+ERROR: 0:6: '=' :  cannot convert from 'const uint' to 'int'

+ERROR: 0:20: '' : numeric literal too big 

+ERROR: 0:21: '' : hexidecimal literal too big 

+ERROR: 0:37: 'view' : redefinition 

+ERROR: 0:68: 'lightPosition' : redefinition 

+ERROR: 0:69: 'uniform' :  cannot initialize this type of qualifier  

+ERROR: 0:71: 'Material' : only uniform interface blocks are supported 

+ERROR: 0:79: 'Light' : only uniform interface blocks are supported 

+ERROR: 0:83: 'ColoredTexture' : only uniform interface blocks are supported 

+ERROR: 0:87: 'Color' : redefinition 

+ERROR: 0:89: 'gl_' : reserved built-in name 

+ERROR: 0:92: 'origin_upper_left' : unrecognized layout identifier 

+ERROR: 0:92: 'gl_' : reserved built-in name 

+ERROR: 0:92: 'gl_FragCoord' : redefinition 

+ERROR: 0:93: 'pixel_center_integer' : unrecognized layout identifier 

+ERROR: 0:93: 'gl_' : reserved built-in name 

+ERROR: 0:93: 'gl_FragCoord' : redefinition 

+ERROR: 0:94: 'origin_upper_left' : unrecognized layout identifier 

+ERROR: 0:94: 'pixel_center_integer' : unrecognized layout identifier 

+ERROR: 0:94: 'gl_' : reserved built-in name 

+ERROR: 0:94: 'gl_FragCoord' : redefinition 

+ERROR: 0:96: 'early_fragment_tests' : unrecognized layout identifier 

+ERROR: 0:99: 'local_size_x' : there is no such layout identifier taking an assigned value 

+ERROR: 0:99: 'local_size_y' : there is no such layout identifier taking an assigned value 

+ERROR: 0:100: 'local_size_x' : there is no such layout identifier taking an assigned value 

+ERROR: 0:102: 'color' : redefinition 

+ERROR: 0:103: 'index' : there is no such layout identifier taking an assigned value 

+ERROR: 0:106: 'depth_greater' : unrecognized layout identifier 

+ERROR: 0:106: 'gl_' : reserved built-in name 

+ERROR: 0:109: 'gl_' : reserved built-in name 

+ERROR: 0:109: 'gl_FragDepth' : redefinition 

+ERROR: 0:112: 'depth_any' : unrecognized layout identifier 

+ERROR: 0:112: 'gl_' : reserved built-in name 

+ERROR: 0:112: 'gl_FragDepth' : redefinition 

+ERROR: 0:115: 'depth_greater' : unrecognized layout identifier 

+ERROR: 0:115: 'gl_' : reserved built-in name 

+ERROR: 0:115: 'gl_FragDepth' : redefinition 

+ERROR: 0:118: 'depth_less' : unrecognized layout identifier 

+ERROR: 0:118: 'gl_' : reserved built-in name 

+ERROR: 0:118: 'gl_FragDepth' : redefinition 

+ERROR: 0:121: 'depth_unchanged' : unrecognized layout identifier 

+ERROR: 0:121: 'gl_' : reserved built-in name 

+ERROR: 0:121: 'gl_FragDepth' : redefinition 

+ERROR: 0:123: 'gl_' : reserved built-in name 

+ERROR: 0:124: 'gl_' : reserved built-in name 

+ERROR: 0:124: 'gl_Color' : redefinition 

+ERROR: 0:150: 'constructor' : constructing from a non-dereferenced array 

+ERROR: 0:152: '=' :  cannot convert from 'const 2-element array of 4-component vector of float' to '3-element array of 4-component vector of float'

+ERROR: 0:172: 'x' : undeclared identifier 

+ERROR: 0:172: '[]' : scalar integer expression required 

+ERROR: 0:172: 'length' : illegal vector field selection 

+ERROR: 0:172: '' : function call, method, or subroutine call expected 

+ERROR: 0:172: '' : no matching overloaded function found 

+ERROR: 0:175: 'x' : undeclared identifier 

+ERROR: 0:175: '[]' : scalar integer expression required 

+ERROR: 0:175: 'b' :  left of '[' is not of type array, matrix, or vector  

+ERROR: 0:175: 'a' :  dot operator requires structure, array, vector, or matrix on left hand side 

+ERROR: 0:175: 'length' :  dot operator requires structure, array, vector, or matrix on left hand side 

+ERROR: 0:175: '' : function call, method, or subroutine call expected 

+ERROR: 0:175: '' : no matching overloaded function found 

+ERROR: 0:178: '[]' : scalar integer expression required 

+ERROR: 0:178: 's' : undeclared identifier 

+ERROR: 0:178: 's' :  left of '[' is not of type array, matrix, or vector  

+ERROR: 0:178: 'a' :  dot operator requires structure, array, vector, or matrix on left hand side 

+ERROR: 0:178: 'length' :  dot operator requires structure, array, vector, or matrix on left hand side 

+ERROR: 0:178: '' : function call, method, or subroutine call expected 

+ERROR: 0:178: '' : no matching overloaded function found 

+ERROR: 0:193: '=' :  cannot convert from 'const int' to 'structure'

+ERROR: 0:198: 'e' : redefinition 

+ERROR: 0:217: '=' :  cannot convert from 'const float' to 'unsized array of float'

+ERROR: 0:219: '=' :  cannot convert from 'unsized array of float' to '5-element array of float'

+ERROR: 0:223: '=' :  assigning non-constant to 'const float'

+ERROR: 0:226: 'in' : only allowed at global scope 

+ERROR: 0:227: 'in' : only allowed at global scope 

+ERROR: 0:228: 'in' : only allowed at global scope 

+ERROR: 0:232: 'out' : only allowed at global scope 

+ERROR: 76 compilation errors.  No code generated.

+

+ERROR: node is still EOpNull!

+0:5  Sequence

+0:5    move second child to first child (int)

+0:5      'a' (int)

+0:5      -1 (const int)

+0:7  Sequence

+0:7    move second child to first child (uint)

+0:7      'c' (uint)

+0:7      4294967295 (const uint)

+0:8  Sequence

+0:8    move second child to first child (uint)

+0:8      'd' (uint)

+0:8      4294967295 (const uint)

+0:9  Sequence

+0:9    move second child to first child (int)

+0:9      'e' (int)

+0:9      -1 (const int)

+0:13  Sequence

+0:13    move second child to first child (uint)

+0:13      'f' (uint)

+0:13      4294967295 (const uint)

+0:17  Sequence

+0:17    move second child to first child (int)

+0:17      'g' (int)

+0:17      -1294967296 (const int)

+0:19  Sequence

+0:19    move second child to first child (int)

+0:19      'h' (int)

+0:19      -1610612736 (const int)

+0:20  Sequence

+0:20    move second child to first child (int)

+0:20      'i' (int)

+0:20      -1 (const int)

+0:21  Sequence

+0:21    move second child to first child (int)

+0:21      'j' (int)

+0:21      -1 (const int)

+0:22  Sequence

+0:22    move second child to first child (int)

+0:22      'k' (int)

+0:22      -2147483648 (const int)

+0:23  Sequence

+0:23    move second child to first child (int)

+0:23      'l' (int)

+0:23      -2147483648 (const int)

+0:25  Sequence

+0:25    move second child to first child (float)

+0:25      'fb' (float)

+0:25      1.500000

+0:26  Sequence

+0:26    move second child to first child (double)

+0:26      'fd' (double)

+0:26      2.000000

+0:127  Function Definition: foo(f1[5]; (5-element array of float)

+0:127    Function Parameters: 

+0:127      '' (in 5-element array of float)

+0:129    Sequence

+0:129      Branch: Return with expression

+0:129        3.400000

+0:129        4.200000

+0:129        5.000000

+0:129        5.200000

+0:129        1.100000

+0:137  Function Definition: main( (void)

+0:137    Function Parameters: 

+0:140    Sequence

+0:140      Sequence

+0:140        Sequence

+0:140          move second child to first child (5-element array of float)

+0:140            'a' (5-element array of float)

+0:140            3.400000

+0:140            4.200000

+0:140            5.000000

+0:140            5.200000

+0:140            1.100000

+0:143      Sequence

+0:143        Sequence

+0:143          move second child to first child (5-element array of float)

+0:143            'a' (5-element array of float)

+0:143            3.400000

+0:143            4.200000

+0:143            5.000000

+0:143            5.200000

+0:143            1.100000

+0:?       Sequence

+0:149        Sequence

+0:149          move second child to first child (2-element array of 4-component vector of float)

+0:149            'b' (2-element array of 4-component vector of float)

+0:149            0.000000

+0:149            0.000000

+0:149            0.000000

+0:149            0.000000

+0:149            0.100000

+0:149            0.100000

+0:149            0.100000

+0:149            0.100000

+0:150        Sequence

+0:150          move second child to first child (3-element array of 4-component vector of float)

+0:150            'a3' (3-element array of 4-component vector of float)

+0:150            Construct vec4 (3-element array of 4-component vector of float)

+0:?       Sequence

+0:159        Sequence

+0:159          Sequence

+0:159            move second child to first child (5-element array of float)

+0:159              'b' (5-element array of float)

+0:159              'a' (5-element array of float)

+0:162        Sequence

+0:162          Sequence

+0:162            move second child to first child (5-element array of float)

+0:162              'b' (5-element array of float)

+0:162              'a' (5-element array of float)

+0:165        Sequence

+0:165          Sequence

+0:165            move second child to first child (5-element array of float)

+0:165              'b' (5-element array of float)

+0:165              1.000000

+0:165              2.000000

+0:165              3.000000

+0:165              4.000000

+0:165              5.000000

+0:167        5 (const int)

+0:?       Sequence

+0:171        3 (const int)

+0:172        0.000000

+0:175      0.000000

+0:178      0.000000

+0:216      Sequence

+0:216        Sequence

+0:216          move second child to first child (5-element array of float)

+0:216            'a' (5-element array of float)

+0:216            3.400000

+0:216            4.200000

+0:216            5.000000

+0:216            5.200000

+0:216            1.100000

+0:218        Sequence

+0:218          move second child to first child (5-element array of float)

+0:218            'c' (5-element array of float)

+0:218            'a' (5-element array of float)

+0:?   Linker Objects

+0:?     'normal' (smooth in 3-component vector of float)

+0:?     'TexCoord' (centroid smooth in 2-component vector of float)

+0:?     'Color' (invariant centroid smooth in 4-component vector of float)

+0:?     'temperature' (noperspective in float)

+0:?     'myColor' (flat in 3-component vector of float)

+0:?     'myTexCoord' (centroid noperspective in 2-component vector of float)

+0:?     'gl_FragCoord' (smooth in 4-component vector of float)

+0:?     'factor' (layout(location=3 ) out 4-component vector of float)

+0:?     'gl_FragDepth' (out float)

+0:?     'gl_Color' (smooth in 4-component vector of float)

+

diff --git a/Test/baseResults/specExamples.vert.out b/Test/baseResults/specExamples.vert.out
new file mode 100644
index 0000000..7902a8c
--- /dev/null
+++ b/Test/baseResults/specExamples.vert.out
@@ -0,0 +1,253 @@
+ERROR: 0:5: 'Vertex' : only uniform interface blocks are supported 

+ERROR: 0:10: 'Vertex2' : only uniform interface blocks are supported 

+ERROR: 0:23: 'transforms' : redeclaration of array with size 

+ERROR: 0:29: 's' : location qualifiers only appy to uniform, in, or out storage qualifiers 

+ERROR: 0:31: 'triangles' : unrecognized layout identifier 

+ERROR: 0:31: 'invocations' : there is no such layout identifier taking an assigned value 

+ERROR: 0:33: 'lines' : unrecognized layout identifier 

+ERROR: 0:35: 'triangle_strip' : unrecognized layout identifier 

+ERROR: 0:35: 'max_vertices' : there is no such layout identifier taking an assigned value 

+ERROR: 0:36: 'max_vertices' : there is no such layout identifier taking an assigned value 

+ERROR: 0:37: 'triangle_strip' : unrecognized layout identifier 

+ERROR: 0:41: 'stream' : there is no such layout identifier taking an assigned value 

+ERROR: 0:43: 'stream' : there is no such layout identifier taking an assigned value 

+ERROR: 0:45: 'stream' : there is no such layout identifier taking an assigned value 

+ERROR: 0:46: 'stream' : there is no such layout identifier taking an assigned value 

+ERROR: 0:47: 'stream' : there is no such layout identifier taking an assigned value 

+ERROR: 0:45: 'Block1' : only uniform interface blocks are supported 

+ERROR: 0:50: 'stream' : there is no such layout identifier taking an assigned value 

+ERROR: 0:52: 'Block2' : only uniform interface blocks are supported 

+ERROR: 0:55: 'stream' : there is no such layout identifier taking an assigned value 

+ERROR: 0:77: 'binding' : not supported 

+ERROR: 0:80: 's17' : redefinition 

+ERROR: 0:85: 'binding' : not supported 

+ERROR: 0:85: 'offset' : there is no such layout identifier taking an assigned value 

+ERROR: 0:87: 'binding' : not supported 

+ERROR: 0:89: 'binding' : not supported 

+ERROR: 0:89: 'offset' : there is no such layout identifier taking an assigned value 

+ERROR: 0:91: 'binding' : not supported 

+ERROR: 0:91: 'bar' : redefinition 

+ERROR: 0:92: 'offset' : there is no such layout identifier taking an assigned value 

+ERROR: 0:92: 'bar' : redefinition 

+ERROR: 0:94: 'binding' : not supported 

+ERROR: 0:94: 'offset' : there is no such layout identifier taking an assigned value 

+ERROR: 0:95: 'binding' : not supported 

+ERROR: 0:96: 'binding' : not supported 

+ERROR: 0:97: 'binding' : not supported 

+ERROR: 0:106: '' : vertex input cannot be further qualified 

+ERROR: 0:106: 'gl_' : reserved built-in name 

+ERROR: 0:107: 'gl_' : reserved built-in name 

+ERROR: 0:107: 'gl_FrontColor' : redefinition 

+ERROR: 0:119: 'a' : redefinition 

+ERROR: 0:127: 'Block2' : nameless block contains a member that already has a name at global scope 

+ERROR: 0:132: 'shared' : not supported in this stage: vertex

+ERROR: 0:134: '' : function does not return a value: funcA

+ERROR: 0:136: '' : function does not return a value: funcB

+ERROR: 0:137: 'rgba32f' : unrecognized layout identifier 

+ERROR: 0:138: 'rgba32f' : unrecognized layout identifier 

+ERROR: 0:153: '' : function does not return a value: func3

+ERROR: 0:163: 'w' :  dot operator requires structure, array, vector, or matrix on left hand side 

+ERROR: 0:164: 'x' :  dot operator requires structure, array, vector, or matrix on left hand side 

+ERROR: 0:164: 'func' : no matching overloaded function found 

+ERROR: 0:166: 'x' :  dot operator requires structure, array, vector, or matrix on left hand side 

+ERROR: 0:166: 'func2' : no matching overloaded function found 

+ERROR: 0:167: 'x' :  dot operator requires structure, array, vector, or matrix on left hand side 

+ERROR: 0:191: '=' :  cannot convert from 'const 4-component vector of float' to '2-element array of 4-component vector of float'

+ERROR: 0:192: 'constructor' : constructing from a non-dereferenced array 

+ERROR: 0:193: 'constructor' : constructing from a non-dereferenced array 

+ERROR: 0:194: 'constructor' : constructing from a non-dereferenced array 

+ERROR: 58 compilation errors.  No code generated.

+

+ERROR: node is still EOpNull!

+0:134  Function Definition: funcA(I21; (4-component vector of float)

+0:134    Function Parameters: 

+0:134      'a' (in image2D)

+0:136  Function Definition: funcB(I21; (4-component vector of float)

+0:136    Function Parameters: 

+0:136      'a' (in image2D)

+0:140  Function Definition: func(f1;f1;f1;f1; (float)

+0:140    Function Parameters: 

+0:140      'e' (in float)

+0:140      'f' (in float)

+0:140      'g' (in float)

+0:140      'h' (in float)

+0:142    Sequence

+0:142      Branch: Return with expression

+0:142        add (float)

+0:142          component-wise multiply (float)

+0:142            'e' (in float)

+0:142            'f' (in float)

+0:142          component-wise multiply (float)

+0:142            'g' (in float)

+0:142            'h' (in float)

+0:146  Function Definition: func2(f1;f1;f1;f1; (float)

+0:146    Function Parameters: 

+0:146      'e' (in float)

+0:146      'f' (in float)

+0:146      'g' (in float)

+0:146      'h' (in float)

+0:148    Sequence

+0:148      Sequence

+0:148        move second child to first child (float)

+0:148          'result' (float)

+0:148          add (float)

+0:148            component-wise multiply (float)

+0:148              'e' (in float)

+0:148              'f' (in float)

+0:148            component-wise multiply (float)

+0:148              'g' (in float)

+0:148              'h' (in float)

+0:150      Branch: Return with expression

+0:150        'result' (float)

+0:153  Function Definition: func3(f1;f1;f1; (float)

+0:153    Function Parameters: 

+0:153      'i' (in float)

+0:153      'j' (in float)

+0:153      'k' (out float)

+0:155    Sequence

+0:155      move second child to first child (float)

+0:155        'k' (out float)

+0:155        add (float)

+0:155          component-wise multiply (float)

+0:155            'i' (in float)

+0:155            'i' (in float)

+0:155          'j' (in float)

+0:158  Function Definition: main( (void)

+0:158    Function Parameters: 

+0:160    Sequence

+0:160      Sequence

+0:160        move second child to first child (3-component vector of float)

+0:160          'r' (3-component vector of float)

+0:160          Construct vec3 (3-component vector of float)

+0:160            vector-scale (4-component vector of float)

+0:160              Convert int to float (float)

+0:160                'a' (uniform int)

+0:160              'b' (in 4-component vector of float)

+0:161      Sequence

+0:161        move second child to first child (3-component vector of float)

+0:161          's' (3-component vector of float)

+0:161          Construct vec3 (3-component vector of float)

+0:161            component-wise multiply (4-component vector of float)

+0:161              'c' (in 4-component vector of float)

+0:161              'd' (in 4-component vector of float)

+0:162      move second child to first child (3-component vector of float)

+0:162        vector swizzle (3-component vector of float)

+0:162          'v' (smooth out 4-component vector of float)

+0:162          Sequence

+0:162            0 (const int)

+0:162            1 (const int)

+0:162            2 (const int)

+0:162        add (3-component vector of float)

+0:162          'r' (3-component vector of float)

+0:162          's' (3-component vector of float)

+0:163      move second child to first child (float)

+0:163        direct index (float)

+0:163          'v' (smooth out 4-component vector of float)

+0:163          3 (const int)

+0:163        add (float)

+0:163          component-wise multiply (float)

+0:163            Convert int to float (float)

+0:163              'a' (uniform int)

+0:163            direct index (float)

+0:163              'b' (in 4-component vector of float)

+0:163              3 (const int)

+0:163          component-wise multiply (float)

+0:163            direct index (float)

+0:163              'c' (in 4-component vector of float)

+0:163              3 (const int)

+0:163            direct index (float)

+0:163              'd' (in 4-component vector of float)

+0:163              3 (const int)

+0:164      move second child to first child (float)

+0:164        direct index (float)

+0:164          'v' (smooth out 4-component vector of float)

+0:164          0 (const int)

+0:164        0.000000

+0:166      move second child to first child (float)

+0:166        direct index (float)

+0:166          'v' (smooth out 4-component vector of float)

+0:166          0 (const int)

+0:166        0.000000

+0:167      Function Call: func3(f1;f1;f1; (float)

+0:167        component-wise multiply (float)

+0:167          Convert int to float (float)

+0:167            'a' (uniform int)

+0:167          direct index (float)

+0:167            'b' (in 4-component vector of float)

+0:167            0 (const int)

+0:167        component-wise multiply (float)

+0:167          direct index (float)

+0:167            'c' (in 4-component vector of float)

+0:167            0 (const int)

+0:167          direct index (float)

+0:167            'd' (in 4-component vector of float)

+0:167            0 (const int)

+0:167        direct index (float)

+0:167          'v' (smooth out 4-component vector of float)

+0:167          0 (const int)

+0:169      Function Call: funcA(I21; (4-component vector of float)

+0:169        'img1' (uniform image2D)

+0:170      Function Call: funcB(I21; (4-component vector of float)

+0:170        'img2' (coherent uniform image2D)

+0:?       Sequence

+0:178        Sequence

+0:178          move second child to first child (structure)

+0:178            'lightVar' (structure)

+0:178            3.000000

+0:178            1.000000

+0:178            2.000000

+0:178            3.000000

+0:?       Sequence

+0:185        Sequence

+0:185          move second child to first child (5-element array of float)

+0:185            'a' (5-element array of float)

+0:185            Construct float (5-element array of float)

+0:185              'g' (float)

+0:185              1.000000

+0:185              'g' (float)

+0:185              2.300000

+0:185              'g' (float)

+0:188        move second child to first child (3-element array of float)

+0:188          'b' (3-element array of float)

+0:188          Construct float (3-element array of float)

+0:188            'g' (float)

+0:188            add (float)

+0:188              'g' (float)

+0:188              1.000000

+0:188            add (float)

+0:188              'g' (float)

+0:188              2.000000

+0:?       Sequence

+0:192        Construct vec4 (3-element array of 4-component vector of float)

+0:193        Construct vec4 (3-element array of 4-component vector of float)

+0:194        Construct vec4 (3-element array of 4-component vector of float)

+0:?   Linker Objects

+0:?     'transforms' (layout(shared ) uniform 4-element array of block)

+0:?     'normal' (layout(location=3 ) in 4-component vector of float)

+0:?     'var1' (smooth out 4-component vector of float)

+0:?     'var5' (smooth out 4-component vector of float)

+0:?     'var7' (smooth out 4-component vector of float)

+0:?     '__anon__0' (layout(std140 ) uniform block)

+0:?     '__anon__1' (layout(shared ) uniform block)

+0:?     's17' (uniform sampler2D)

+0:?     'a' (uniform int)

+0:?     'bar' (uniform int)

+0:?     'a2' (uniform int)

+0:?     'b2' (uniform int)

+0:?     'c2' (uniform int)

+0:?     'd2' (uniform int)

+0:?     'gl_FrontColor' (flat in 4-component vector of float)

+0:?     'Color' (smooth out 3-component vector of float)

+0:?     'Color4' (invariant centroid smooth out 3-component vector of float)

+0:?     'position' (smooth out 4-component vector of float)

+0:?     'Color5' (smooth out 3-component vector of float)

+0:?     'b' (in 4-component vector of float)

+0:?     'c' (in 4-component vector of float)

+0:?     'd' (in 4-component vector of float)

+0:?     'v' (smooth out 4-component vector of float)

+0:?     '__anon__2' (layout(shared ) uniform block)

+0:?     'img1' (uniform image2D)

+0:?     'img2' (coherent uniform image2D)

+0:?     'gl_VertexID' (gl_VertexId int)

+0:?     'gl_InstanceID' (gl_InstanceId int)

+

diff --git a/Test/baseResults/structAssignment.frag.out b/Test/baseResults/structAssignment.frag.out
new file mode 100644
index 0000000..2eb679a
--- /dev/null
+++ b/Test/baseResults/structAssignment.frag.out
@@ -0,0 +1,42 @@
+WARNING: 0:4: varying deprecated in version 130; may be removed in future release

+0:? Sequence

+0:29  Function Definition: main( (void)

+0:29    Function Parameters: 

+0:?     Sequence

+0:33      Test condition and select (void)

+0:33        Condition

+0:33        Compare Greater Than (bool)

+0:33          i: direct index for structure (int)

+0:33            s2_1: direct index for structure (structure)

+0:33              'foo3' (uniform structure)

+0:33              0 (const int)

+0:33            0 (const int)

+0:33          0 (const int)

+0:33        true case

+0:34        move second child to first child (structure)

+0:34          'locals2' (structure)

+0:34          s2_1: direct index for structure (structure)

+0:34            'foo3' (uniform structure)

+0:34            0 (const int)

+0:33        false case

+0:36        move second child to first child (structure)

+0:36          'locals2' (structure)

+0:36          'foo2' (uniform structure)

+0:38      move second child to first child (4-component vector of float)

+0:38        'gl_FragColor' (fragColor 4-component vector of float)

+0:38        vector-scale (4-component vector of float)

+0:38          f: direct index for structure (float)

+0:38            s1_1: direct index for structure (structure)

+0:38              'locals2' (structure)

+0:38              2 (const int)

+0:38            1 (const int)

+0:38          Function Call: texture2D(s21;vf2; (4-component vector of float)

+0:38            'sampler' (uniform sampler2D)

+0:38            'coord' (smooth in 2-component vector of float)

+0:?   Linker Objects

+0:?     'sampler' (uniform sampler2D)

+0:?     'coord' (smooth in 2-component vector of float)

+0:?     'foo' (uniform structure)

+0:?     'foo2' (uniform structure)

+0:?     'foo3' (uniform structure)

+

diff --git a/Test/baseResults/structDeref.frag.out b/Test/baseResults/structDeref.frag.out
new file mode 100644
index 0000000..453ebcc
--- /dev/null
+++ b/Test/baseResults/structDeref.frag.out
@@ -0,0 +1,139 @@
+WARNING: 0:4: varying deprecated in version 130; may be removed in future release

+0:? Sequence

+0:41  Function Definition: main( (void)

+0:41    Function Parameters: 

+0:?     Sequence

+0:51      Test condition and select (void)

+0:51        Condition

+0:51        Compare Greater Than (bool)

+0:51          i: direct index for structure (int)

+0:51            direct index (structure)

+0:51              s2_1: direct index for structure (12-element array of structure)

+0:51                'foo3' (uniform structure)

+0:51                0 (const int)

+0:51              9 (const int)

+0:51            0 (const int)

+0:51          0 (const int)

+0:51        true case

+0:52        Sequence

+0:52          move second child to first child (float)

+0:52            f: direct index for structure (float)

+0:52              'locals2' (structure)

+0:52              1 (const int)

+0:52            1.000000

+0:53          move second child to first child (structure)

+0:53            s1_1: direct index for structure (structure)

+0:53              'locals2' (structure)

+0:53              2 (const int)

+0:53            0 (const int)

+0:53            1.000000

+0:53            0 (const int)

+0:54          move second child to first child (6-element array of float)

+0:54            'fArray' (6-element array of float)

+0:54            0.000000

+0:54            0.000000

+0:54            0.000000

+0:54            0.000000

+0:54            0.000000

+0:54            0.000000

+0:55          move second child to first child (structure)

+0:55            direct index (structure)

+0:55              'locals1Array' (10-element array of structure)

+0:55              6 (const int)

+0:55            'foo1' (uniform structure)

+0:56          move second child to first child (structure)

+0:56            'locals0' (structure)

+0:56            0 (const int)

+0:57          move second child to first child (structure)

+0:57            'locals00' (structure)

+0:57            0 (const int)

+0:51        false case

+0:59        Sequence

+0:59          move second child to first child (float)

+0:59            f: direct index for structure (float)

+0:59              'locals2' (structure)

+0:59              1 (const int)

+0:59            direct index (float)

+0:59              'coord' (smooth in 2-component vector of float)

+0:59              0 (const int)

+0:60          move second child to first child (structure)

+0:60            s1_1: direct index for structure (structure)

+0:60              'locals2' (structure)

+0:60              2 (const int)

+0:60            Construct structure (structure)

+0:60              1 (const int)

+0:60              direct index (float)

+0:60                'coord' (smooth in 2-component vector of float)

+0:60                1 (const int)

+0:60              'foo0' (uniform structure)

+0:61          move second child to first child (6-element array of float)

+0:61            'fArray' (6-element array of float)

+0:61            0.000000

+0:61            1.000000

+0:61            2.000000

+0:61            3.000000

+0:61            4.000000

+0:61            5.000000

+0:62          move second child to first child (structure)

+0:62            direct index (structure)

+0:62              'locals1Array' (10-element array of structure)

+0:62              6 (const int)

+0:62            s1_1: direct index for structure (structure)

+0:62              'locals2' (structure)

+0:62              2 (const int)

+0:63          move second child to first child (structure)

+0:63            'locals0' (structure)

+0:63            s0_1: direct index for structure (structure)

+0:63              'foo1' (uniform structure)

+0:63              2 (const int)

+0:64          move second child to first child (structure)

+0:64            'locals00' (structure)

+0:64            'foo00' (uniform structure)

+0:67      Test condition and select (void)

+0:67        Condition

+0:67        Compare Greater Than (bool)

+0:67          i: direct index for structure (int)

+0:67            'locals0' (structure)

+0:67            0 (const int)

+0:67          5 (const int)

+0:67        true case

+0:68        move second child to first child (structure)

+0:68          'locals0' (structure)

+0:68          s0_0: direct index for structure (structure)

+0:68            'locals00' (structure)

+0:68            0 (const int)

+0:70      move second child to first child (4-component vector of float)

+0:70        'gl_FragColor' (fragColor 4-component vector of float)

+0:70        vector-scale (4-component vector of float)

+0:70          add (float)

+0:70            add (float)

+0:70              add (float)

+0:70                Convert int to float (float)

+0:70                  i: direct index for structure (int)

+0:70                    'locals0' (structure)

+0:70                    0 (const int)

+0:70                f: direct index for structure (float)

+0:70                  direct index (structure)

+0:70                    'locals1Array' (10-element array of structure)

+0:70                    6 (const int)

+0:70                  1 (const int)

+0:70              direct index (float)

+0:70                'fArray' (6-element array of float)

+0:70                3 (const int)

+0:70            f: direct index for structure (float)

+0:70              s1_1: direct index for structure (structure)

+0:70                'locals2' (structure)

+0:70                2 (const int)

+0:70              1 (const int)

+0:70          Function Call: texture2D(s21;vf2; (4-component vector of float)

+0:70            'sampler' (uniform sampler2D)

+0:70            'coord' (smooth in 2-component vector of float)

+0:?   Linker Objects

+0:?     'sampler' (uniform sampler2D)

+0:?     'coord' (smooth in 2-component vector of float)

+0:?     'foo0' (uniform structure)

+0:?     'foo1' (uniform structure)

+0:?     'foo2' (uniform structure)

+0:?     'foo3' (uniform structure)

+0:?     'foo00' (uniform structure)

+

diff --git a/Test/baseResults/structure.frag.out b/Test/baseResults/structure.frag.out
new file mode 100644
index 0000000..a974662
--- /dev/null
+++ b/Test/baseResults/structure.frag.out
@@ -0,0 +1,62 @@
+WARNING: 0:3: varying deprecated in version 130; may be removed in future release

+0:? Sequence

+0:20  Function Definition: main( (void)

+0:20    Function Parameters: 

+0:22    Sequence

+0:22      Sequence

+0:22        move second child to first child (float)

+0:22          'scale' (float)

+0:22          0.000000

+0:24      Test condition and select (void)

+0:24        Condition

+0:24        Compare Greater Than (bool)

+0:24          direct index (int)

+0:24            i: direct index for structure (5-element array of int)

+0:24              direct index (uniform structure)

+0:24                'foo2' (uniform 5-element array of structure)

+0:24                3 (const int)

+0:24              0 (const int)

+0:24            4 (const int)

+0:24          0 (const int)

+0:24        true case

+0:25        move second child to first child (float)

+0:25          'scale' (float)

+0:25          direct index (float)

+0:25            direct index (4-component vector of float)

+0:25              color: direct index for structure (5-element array of 4-component vector of float)

+0:25                direct index (structure)

+0:25                  s1_1: direct index for structure (7-element array of structure)

+0:25                    direct index (uniform structure)

+0:25                      'foo2' (uniform 5-element array of structure)

+0:25                      3 (const int)

+0:25                    2 (const int)

+0:25                  2 (const int)

+0:25                2 (const int)

+0:25              3 (const int)

+0:25            0 (const int)

+0:24        false case

+0:27        move second child to first child (float)

+0:27          'scale' (float)

+0:27          direct index (float)

+0:27            f: direct index for structure (4-element array of float)

+0:27              direct index (structure)

+0:27                s1_1: direct index for structure (7-element array of structure)

+0:27                  direct index (uniform structure)

+0:27                    'foo2' (uniform 5-element array of structure)

+0:27                    3 (const int)

+0:27                  2 (const int)

+0:27                2 (const int)

+0:27              1 (const int)

+0:27            3 (const int)

+0:29      move second child to first child (4-component vector of float)

+0:29        'gl_FragColor' (fragColor 4-component vector of float)

+0:29        vector-scale (4-component vector of float)

+0:29          'scale' (float)

+0:29          Function Call: texture2D(s21;vf2; (4-component vector of float)

+0:29            'sampler' (uniform sampler2D)

+0:29            'coord' (smooth in 2-component vector of float)

+0:?   Linker Objects

+0:?     'sampler' (uniform sampler2D)

+0:?     'coord' (smooth in 2-component vector of float)

+0:?     'foo' (uniform structure)

+

diff --git a/Test/baseResults/switch.frag.out b/Test/baseResults/switch.frag.out
new file mode 100644
index 0000000..01b2ce2
--- /dev/null
+++ b/Test/baseResults/switch.frag.out
@@ -0,0 +1,181 @@
+ERROR: 0:11: 'switch' : condition must be a scalar integer expression 

+ERROR: 0:14: 'switch' : condition must be a scalar integer expression 

+ERROR: 0:21: 'switch' : last case/default label must be followed by statements 

+ERROR: 0:28: 'switch' : cannot have statements before first case/default label 

+ERROR: 0:43: 'default' : duplicate label 

+ERROR: 0:63: 'case' : duplicated value 

+ERROR: 0:65: 'case' : scalar integer expression required 

+ERROR: 0:67: 'case' : constant expression required 

+ERROR: 0:89: '' : break statement only allowed in switch and loops 

+ERROR: 9 compilation errors.  No code generated.

+

+ERROR: node is still EOpNull!

+0:6  Function Definition: main( (void)

+0:6    Function Parameters: 

+0:?     Sequence

+0:11      'f' (highp float)

+0:14      'a' (2-element array of mediump int)

+0:17      'c' (uniform mediump int)

+0:21      'c' (uniform mediump int)

+0:26      switch

+0:26      condition

+0:26        'c' (uniform mediump int)

+0:26      body

+0:26        Sequence

+0:28          Sequence

+0:28            move second child to first child (highp float)

+0:28              'f' (highp float)

+0:28              sine (highp float)

+0:28                'x' (smooth in highp float)

+0:29          case:  with expression

+0:29            2 (const int)

+0:?           Sequence

+0:30            move second child to first child (highp float)

+0:30              'f' (highp float)

+0:30              cosine (highp float)

+0:30                'x' (smooth in highp float)

+0:31            Branch: Break

+0:34      switch

+0:34      condition

+0:34        'c' (uniform mediump int)

+0:34      body

+0:34        Sequence

+0:35          default: 

+0:?           Sequence

+0:36            Branch: Break

+0:37          case:  with expression

+0:37            1 (const int)

+0:?           Sequence

+0:38            move second child to first child (highp float)

+0:38              'f' (highp float)

+0:38              sine (highp float)

+0:38                'x' (smooth in highp float)

+0:39            Branch: Break

+0:40          case:  with expression

+0:40            2 (const int)

+0:?           Sequence

+0:41            move second child to first child (highp float)

+0:41              'f' (highp float)

+0:41              cosine (highp float)

+0:41                'x' (smooth in highp float)

+0:42            Branch: Break

+0:43          default: 

+0:?           Sequence

+0:44            move second child to first child (highp float)

+0:44              'f' (highp float)

+0:44              tangent (highp float)

+0:44                'x' (smooth in highp float)

+0:47      switch

+0:47      condition

+0:47        'c' (uniform mediump int)

+0:47      body

+0:47        Sequence

+0:48          case:  with expression

+0:48            1 (const int)

+0:?           Sequence

+0:49            move second child to first child (highp float)

+0:49              'f' (highp float)

+0:49              sine (highp float)

+0:49                'x' (smooth in highp float)

+0:50            Branch: Break

+0:51          case:  with expression

+0:51            2 (const int)

+0:?           Sequence

+0:52            switch

+0:52            condition

+0:52              'd' (uniform mediump int)

+0:52            body

+0:52              Sequence

+0:53                case:  with expression

+0:53                  1 (const int)

+0:?                 Sequence

+0:54                  move second child to first child (highp float)

+0:54                    'f' (highp float)

+0:54                    component-wise multiply (highp float)

+0:54                      component-wise multiply (highp float)

+0:54                        'x' (smooth in highp float)

+0:54                        'x' (smooth in highp float)

+0:54                      'x' (smooth in highp float)

+0:55                  Branch: Break

+0:56                case:  with expression

+0:56                  2 (const int)

+0:?                 Sequence

+0:57                  move second child to first child (highp float)

+0:57                    'f' (highp float)

+0:57                    component-wise multiply (highp float)

+0:57                      'x' (smooth in highp float)

+0:57                      'x' (smooth in highp float)

+0:58                  Branch: Break

+0:60            Branch: Break

+0:61          default: 

+0:?           Sequence

+0:62            move second child to first child (highp float)

+0:62              'f' (highp float)

+0:62              tangent (highp float)

+0:62                'x' (smooth in highp float)

+0:63          case:  with expression

+0:63            1 (const int)

+0:?           Sequence

+0:64            Branch: Break

+0:65          case:  with expression

+0:65            3.800000

+0:?           Sequence

+0:66            Branch: Break

+0:67          case:  with expression

+0:67            'c' (uniform mediump int)

+0:?           Sequence

+0:68            Branch: Break

+0:71      switch

+0:71      condition

+0:71        'c' (uniform mediump int)

+0:71      body

+0:71        Sequence

+0:72          case:  with expression

+0:72            1 (const int)

+0:?           Sequence

+0:73            move second child to first child (highp float)

+0:73              'f' (highp float)

+0:73              sine (highp float)

+0:73                'x' (smooth in highp float)

+0:74            Branch: Break

+0:75          case:  with expression

+0:75            2 (const int)

+0:?           Sequence

+0:76            switch

+0:76            condition

+0:76              'd' (uniform mediump int)

+0:76            body

+0:76              Sequence

+0:77                case:  with expression

+0:77                  1 (const int)

+0:?                 Sequence

+0:78                  move second child to first child (highp float)

+0:78                    'f' (highp float)

+0:78                    component-wise multiply (highp float)

+0:78                      component-wise multiply (highp float)

+0:78                        'x' (smooth in highp float)

+0:78                        'x' (smooth in highp float)

+0:78                      'x' (smooth in highp float)

+0:79                  Branch: Break

+0:80                case:  with expression

+0:80                  2 (const int)

+0:?                 Sequence

+0:81                  move second child to first child (highp float)

+0:81                    'f' (highp float)

+0:81                    component-wise multiply (highp float)

+0:81                      'x' (smooth in highp float)

+0:81                      'x' (smooth in highp float)

+0:82                  Branch: Break

+0:84            Branch: Break

+0:85          default: 

+0:?           Sequence

+0:86            move second child to first child (highp float)

+0:86              'f' (highp float)

+0:86              tangent (highp float)

+0:86                'x' (smooth in highp float)

+0:89      Branch: Break

+0:?   Linker Objects

+0:?     'c' (uniform mediump int)

+0:?     'd' (uniform mediump int)

+0:?     'x' (smooth in highp float)

+

diff --git a/Test/baseResults/swizzle.frag.out b/Test/baseResults/swizzle.frag.out
new file mode 100644
index 0000000..103c6b0
--- /dev/null
+++ b/Test/baseResults/swizzle.frag.out
@@ -0,0 +1,171 @@
+0:? Sequence

+0:9  Function Definition: main( (void)

+0:9    Function Parameters: 

+0:11    Sequence

+0:11      Sequence

+0:11        move second child to first child (float)

+0:11          'blendscale' (float)

+0:11          1.789000

+0:13      Sequence

+0:13        move second child to first child (4-component vector of float)

+0:13          'w' (4-component vector of float)

+0:13          'u' (uniform 4-component vector of float)

+0:15      Sequence

+0:15        move second child to first child (4-component vector of float)

+0:15          'w_dep' (4-component vector of float)

+0:15          'u' (uniform 4-component vector of float)

+0:16      Sequence

+0:16        move second child to first child (4-component vector of float)

+0:16          'w_reorder' (4-component vector of float)

+0:16          'u' (uniform 4-component vector of float)

+0:17      Sequence

+0:17        move second child to first child (4-component vector of float)

+0:17          'w2' (4-component vector of float)

+0:17          'u' (uniform 4-component vector of float)

+0:18      Sequence

+0:18        move second child to first child (4-component vector of float)

+0:18          'w_flow' (4-component vector of float)

+0:18          'u' (uniform 4-component vector of float)

+0:20      move second child to first child (float)

+0:20        direct index (float)

+0:20          'w_reorder' (4-component vector of float)

+0:20          2 (const int)

+0:20        'blendscale' (float)

+0:22      move second child to first child (2-component vector of float)

+0:22        vector swizzle (2-component vector of float)

+0:22          'w' (4-component vector of float)

+0:22          Sequence

+0:22            3 (const int)

+0:22            1 (const int)

+0:22        't' (smooth in 2-component vector of float)

+0:24      move second child to first child (float)

+0:24        direct index (float)

+0:24          'w_reorder' (4-component vector of float)

+0:24          0 (const int)

+0:24        'blendscale' (float)

+0:26      move second child to first child (4-component vector of float)

+0:26        vector swizzle (4-component vector of float)

+0:26          'w2' (4-component vector of float)

+0:26          Sequence

+0:26            0 (const int)

+0:26            1 (const int)

+0:26            2 (const int)

+0:26            3 (const int)

+0:26        vector swizzle (4-component vector of float)

+0:26          'u' (uniform 4-component vector of float)

+0:26          Sequence

+0:26            2 (const int)

+0:26            3 (const int)

+0:26            0 (const int)

+0:26            1 (const int)

+0:28      move second child to first child (float)

+0:28        direct index (float)

+0:28          'w_reorder' (4-component vector of float)

+0:28          1 (const int)

+0:28        'blendscale' (float)

+0:30      move second child to first child (2-component vector of float)

+0:30        vector swizzle (2-component vector of float)

+0:30          'w_dep' (4-component vector of float)

+0:30          Sequence

+0:30            0 (const int)

+0:30            1 (const int)

+0:30        vector swizzle (2-component vector of float)

+0:30          'w2' (4-component vector of float)

+0:30          Sequence

+0:30            0 (const int)

+0:30            2 (const int)

+0:31      move second child to first child (2-component vector of float)

+0:31        vector swizzle (2-component vector of float)

+0:31          'w_dep' (4-component vector of float)

+0:31          Sequence

+0:31            2 (const int)

+0:31            3 (const int)

+0:31        't' (smooth in 2-component vector of float)

+0:33      move second child to first child (2-component vector of float)

+0:33        vector swizzle (2-component vector of float)

+0:33          'w_undef' (4-component vector of float)

+0:33          Sequence

+0:33            0 (const int)

+0:33            1 (const int)

+0:33        vector swizzle (2-component vector of float)

+0:33          'u' (uniform 4-component vector of float)

+0:33          Sequence

+0:33            2 (const int)

+0:33            3 (const int)

+0:35      Test condition and select (void)

+0:35        Condition

+0:35        'p' (uniform bool)

+0:35        true case

+0:36        move second child to first child (float)

+0:36          direct index (float)

+0:36            'w_flow' (4-component vector of float)

+0:36            0 (const int)

+0:36          direct index (float)

+0:36            't' (smooth in 2-component vector of float)

+0:36            0 (const int)

+0:35        false case

+0:38        move second child to first child (float)

+0:38          direct index (float)

+0:38            'w_flow' (4-component vector of float)

+0:38            0 (const int)

+0:38          direct index (float)

+0:38            't' (smooth in 2-component vector of float)

+0:38            1 (const int)

+0:40      move second child to first child (4-component vector of float)

+0:40        'gl_FragColor' (fragColor 4-component vector of float)

+0:40        mix (4-component vector of float)

+0:40          'w_reorder' (4-component vector of float)

+0:40          'w_undef' (4-component vector of float)

+0:40          component-wise multiply (4-component vector of float)

+0:40            component-wise multiply (4-component vector of float)

+0:40              component-wise multiply (4-component vector of float)

+0:40                'w' (4-component vector of float)

+0:40                'w2' (4-component vector of float)

+0:40              'w_dep' (4-component vector of float)

+0:40            'w_flow' (4-component vector of float)

+0:42      Sequence

+0:42        move second child to first child (2-component vector of float)

+0:42          'c' (2-component vector of float)

+0:42          't' (smooth in 2-component vector of float)

+0:43      Sequence

+0:43        move second child to first child (4-component vector of float)

+0:43          'rep' (4-component vector of float)

+0:43          0.000000

+0:43          0.000000

+0:43          0.000000

+0:43          1.000000

+0:45      Test condition and select (void)

+0:45        Condition

+0:45        Compare Less Than (bool)

+0:45          direct index (float)

+0:45            'c' (2-component vector of float)

+0:45            0 (const int)

+0:45          0.000000

+0:45        true case

+0:46        multiply second child into first child (float)

+0:46          direct index (float)

+0:46            'c' (2-component vector of float)

+0:46            0 (const int)

+0:46          -1.000000

+0:48      Test condition and select (void)

+0:48        Condition

+0:48        Compare Less Than or Equal (bool)

+0:48          direct index (float)

+0:48            'c' (2-component vector of float)

+0:48            0 (const int)

+0:48          1.000000

+0:48        true case

+0:49        move second child to first child (float)

+0:49          direct index (float)

+0:49            'rep' (4-component vector of float)

+0:49            0 (const int)

+0:49          3.400000

+0:51      add second child into first child (4-component vector of float)

+0:51        'gl_FragColor' (fragColor 4-component vector of float)

+0:51        'rep' (4-component vector of float)

+0:?   Linker Objects

+0:?     'blend' (uniform float)

+0:?     'u' (uniform 4-component vector of float)

+0:?     'p' (uniform bool)

+0:?     't' (smooth in 2-component vector of float)

+

diff --git a/Test/baseResults/syntaxError.frag.out b/Test/baseResults/syntaxError.frag.out
new file mode 100644
index 0000000..44892c2
--- /dev/null
+++ b/Test/baseResults/syntaxError.frag.out
@@ -0,0 +1,5 @@
+ERROR: 0:9: 'vec5' : undeclared identifier 

+ERROR: 0:9: '' :  syntax error

+ERROR: 2 compilation errors.  No code generated.

+

+

diff --git a/Test/baseResults/test.frag.out b/Test/baseResults/test.frag.out
new file mode 100644
index 0000000..582d2d3
--- /dev/null
+++ b/Test/baseResults/test.frag.out
@@ -0,0 +1,49 @@
+0:? Sequence

+0:13  Function Definition: main( (void)

+0:13    Function Parameters: 

+0:15    Sequence

+0:15      Sequence

+0:15        move second child to first child (float)

+0:15          'blendscale' (float)

+0:15          1.789000

+0:17      Sequence

+0:17        move second child to first child (4-component vector of float)

+0:17          'v' (4-component vector of float)

+0:17          vector swizzle (4-component vector of float)

+0:17            Function Call: texture2D(s21;vf2; (4-component vector of float)

+0:17              'texSampler2D' (uniform sampler2D)

+0:17              divide (2-component vector of float)

+0:17                add (2-component vector of float)

+0:17                  't' (smooth in 2-component vector of float)

+0:17                  'scale' (uniform 2-component vector of float)

+0:17                'scale' (uniform 2-component vector of float)

+0:17            Sequence

+0:17              3 (const int)

+0:17              2 (const int)

+0:17              1 (const int)

+0:17              0 (const int)

+0:19      Sequence

+0:19        move second child to first child (4-component vector of float)

+0:19          'w' (4-component vector of float)

+0:19          add (4-component vector of float)

+0:19            Function Call: texture3D(s31;vf3; (4-component vector of float)

+0:19              'texSampler3D' (uniform sampler3D)

+0:19              'coords' (smooth in 3-component vector of float)

+0:19            'v' (4-component vector of float)

+0:21      move second child to first child (4-component vector of float)

+0:21        'gl_FragColor' (fragColor 4-component vector of float)

+0:21        mix (4-component vector of float)

+0:21          'w' (4-component vector of float)

+0:21          'u' (uniform 4-component vector of float)

+0:21          component-wise multiply (float)

+0:21            'blend' (uniform float)

+0:21            'blendscale' (float)

+0:?   Linker Objects

+0:?     'texSampler2D' (uniform sampler2D)

+0:?     'texSampler3D' (uniform sampler3D)

+0:?     'blend' (uniform float)

+0:?     'scale' (uniform 2-component vector of float)

+0:?     'u' (uniform 4-component vector of float)

+0:?     't' (smooth in 2-component vector of float)

+0:?     'coords' (smooth in 3-component vector of float)

+

diff --git a/Test/baseResults/texture.frag.out b/Test/baseResults/texture.frag.out
new file mode 100644
index 0000000..806c38f
--- /dev/null
+++ b/Test/baseResults/texture.frag.out
@@ -0,0 +1,270 @@
+WARNING: 0:14: varying deprecated in version 130; may be removed in future release

+WARNING: 0:15: varying deprecated in version 130; may be removed in future release

+0:? Sequence

+0:17  Function Definition: main( (void)

+0:17    Function Parameters: 

+0:19    Sequence

+0:19      Sequence

+0:19        move second child to first child (float)

+0:19          'blendscale' (float)

+0:19          1.789000

+0:20      Sequence

+0:20        move second child to first child (float)

+0:20          'bias' (float)

+0:20          2.000000

+0:21      Sequence

+0:21        move second child to first child (float)

+0:21          'lod' (float)

+0:21          3.000000

+0:22      Sequence

+0:22        move second child to first child (float)

+0:22          'proj' (float)

+0:22          2.000000

+0:23      Sequence

+0:23        move second child to first child (float)

+0:23          'coords1D' (float)

+0:23          1.789000

+0:24      Sequence

+0:24        move second child to first child (3-component vector of float)

+0:24          'coords3D' (3-component vector of float)

+0:24          1.789000

+0:24          2.718000

+0:24          3.453000

+0:25      Sequence

+0:25        move second child to first child (4-component vector of float)

+0:25          'coords4D' (4-component vector of float)

+0:25          1.789000

+0:25          2.718000

+0:25          3.453000

+0:25          2.000000

+0:26      Sequence

+0:26        move second child to first child (4-component vector of float)

+0:26          'color' (4-component vector of float)

+0:26          0.000000

+0:26          0.000000

+0:26          0.000000

+0:26          0.000000

+0:28      add second child into first child (4-component vector of float)

+0:28        'color' (4-component vector of float)

+0:28        Function Call: texture1D(s11;f1; (4-component vector of float)

+0:28          'texSampler1D' (uniform sampler1D)

+0:28          'coords1D' (float)

+0:29      add second child into first child (4-component vector of float)

+0:29        'color' (4-component vector of float)

+0:29        Function Call: texture1D(s11;f1;f1; (4-component vector of float)

+0:29          'texSampler1D' (uniform sampler1D)

+0:29          'coords1D' (float)

+0:29          'bias' (float)

+0:30      add second child into first child (4-component vector of float)

+0:30        'color' (4-component vector of float)

+0:30        Function Call: texture1DProj(s11;vf2; (4-component vector of float)

+0:30          'texSampler1D' (uniform sampler1D)

+0:30          'coords2D' (smooth in 2-component vector of float)

+0:31      add second child into first child (4-component vector of float)

+0:31        'color' (4-component vector of float)

+0:31        Function Call: texture1DProj(s11;vf4; (4-component vector of float)

+0:31          'texSampler1D' (uniform sampler1D)

+0:31          'coords4D' (4-component vector of float)

+0:32      add second child into first child (4-component vector of float)

+0:32        'color' (4-component vector of float)

+0:32        Function Call: texture1DProj(s11;vf2;f1; (4-component vector of float)

+0:32          'texSampler1D' (uniform sampler1D)

+0:32          'coords2D' (smooth in 2-component vector of float)

+0:32          'bias' (float)

+0:33      add second child into first child (4-component vector of float)

+0:33        'color' (4-component vector of float)

+0:33        Function Call: texture1DProj(s11;vf4;f1; (4-component vector of float)

+0:33          'texSampler1D' (uniform sampler1D)

+0:33          'coords4D' (4-component vector of float)

+0:33          'bias' (float)

+0:35      add second child into first child (4-component vector of float)

+0:35        'color' (4-component vector of float)

+0:35        Function Call: texture2D(s21;vf2; (4-component vector of float)

+0:35          'texSampler2D' (uniform sampler2D)

+0:35          'coords2D' (smooth in 2-component vector of float)

+0:36      add second child into first child (4-component vector of float)

+0:36        'color' (4-component vector of float)

+0:36        Function Call: texture2D(s21;vf2;f1; (4-component vector of float)

+0:36          'texSampler2D' (uniform sampler2D)

+0:36          'coords2D' (smooth in 2-component vector of float)

+0:36          'bias' (float)

+0:37      add second child into first child (4-component vector of float)

+0:37        'color' (4-component vector of float)

+0:37        Function Call: texture2DProj(s21;vf3; (4-component vector of float)

+0:37          'texSampler2D' (uniform sampler2D)

+0:37          'coords3D' (3-component vector of float)

+0:38      add second child into first child (4-component vector of float)

+0:38        'color' (4-component vector of float)

+0:38        Function Call: texture2DProj(s21;vf4;f1; (4-component vector of float)

+0:38          'texSampler2D' (uniform sampler2D)

+0:38          'coords4D' (4-component vector of float)

+0:38          'bias' (float)

+0:40      add second child into first child (4-component vector of float)

+0:40        'color' (4-component vector of float)

+0:40        Function Call: texture3D(s31;vf3; (4-component vector of float)

+0:40          'texSampler3D' (uniform sampler3D)

+0:40          'coords3D' (3-component vector of float)

+0:41      add second child into first child (4-component vector of float)

+0:41        'color' (4-component vector of float)

+0:41        Function Call: texture3D(s31;vf3;f1; (4-component vector of float)

+0:41          'texSampler3D' (uniform sampler3D)

+0:41          'coords3D' (3-component vector of float)

+0:41          'bias' (float)

+0:42      add second child into first child (4-component vector of float)

+0:42        'color' (4-component vector of float)

+0:42        Function Call: texture3DProj(s31;vf4; (4-component vector of float)

+0:42          'texSampler3D' (uniform sampler3D)

+0:42          'coords4D' (4-component vector of float)

+0:43      add second child into first child (4-component vector of float)

+0:43        'color' (4-component vector of float)

+0:43        Function Call: texture3DProj(s31;vf4;f1; (4-component vector of float)

+0:43          'texSampler3D' (uniform sampler3D)

+0:43          'coords4D' (4-component vector of float)

+0:43          'bias' (float)

+0:45      add second child into first child (4-component vector of float)

+0:45        'color' (4-component vector of float)

+0:45        Function Call: textureCube(sC1;vf3; (4-component vector of float)

+0:45          'texSamplerCube' (uniform samplerCube)

+0:45          'coords3D' (3-component vector of float)

+0:46      add second child into first child (4-component vector of float)

+0:46        'color' (4-component vector of float)

+0:46        Function Call: textureCube(sC1;vf3;f1; (4-component vector of float)

+0:46          'texSamplerCube' (uniform samplerCube)

+0:46          'coords3D' (3-component vector of float)

+0:46          'bias' (float)

+0:48      add second child into first child (4-component vector of float)

+0:48        'color' (4-component vector of float)

+0:48        Function Call: shadow1D(sS11;vf3; (4-component vector of float)

+0:48          'shadowSampler1D' (uniform sampler1DShadow)

+0:48          'coords3D' (3-component vector of float)

+0:49      add second child into first child (4-component vector of float)

+0:49        'color' (4-component vector of float)

+0:49        Function Call: shadow1D(sS11;vf3;f1; (4-component vector of float)

+0:49          'shadowSampler1D' (uniform sampler1DShadow)

+0:49          'coords3D' (3-component vector of float)

+0:49          'bias' (float)

+0:50      add second child into first child (4-component vector of float)

+0:50        'color' (4-component vector of float)

+0:50        Function Call: shadow2D(sS21;vf3; (4-component vector of float)

+0:50          'shadowSampler2D' (uniform sampler2DShadow)

+0:50          'coords3D' (3-component vector of float)

+0:51      add second child into first child (4-component vector of float)

+0:51        'color' (4-component vector of float)

+0:51        Function Call: shadow2D(sS21;vf3;f1; (4-component vector of float)

+0:51          'shadowSampler2D' (uniform sampler2DShadow)

+0:51          'coords3D' (3-component vector of float)

+0:51          'bias' (float)

+0:52      add second child into first child (4-component vector of float)

+0:52        'color' (4-component vector of float)

+0:52        Function Call: shadow1DProj(sS11;vf4; (4-component vector of float)

+0:52          'shadowSampler1D' (uniform sampler1DShadow)

+0:52          'coords4D' (4-component vector of float)

+0:53      add second child into first child (4-component vector of float)

+0:53        'color' (4-component vector of float)

+0:53        Function Call: shadow1DProj(sS11;vf4;f1; (4-component vector of float)

+0:53          'shadowSampler1D' (uniform sampler1DShadow)

+0:53          'coords4D' (4-component vector of float)

+0:53          'bias' (float)

+0:54      add second child into first child (4-component vector of float)

+0:54        'color' (4-component vector of float)

+0:54        Function Call: shadow2DProj(sS21;vf4; (4-component vector of float)

+0:54          'shadowSampler2D' (uniform sampler2DShadow)

+0:54          'coords4D' (4-component vector of float)

+0:55      add second child into first child (4-component vector of float)

+0:55        'color' (4-component vector of float)

+0:55        Function Call: shadow2DProj(sS21;vf4;f1; (4-component vector of float)

+0:55          'shadowSampler2D' (uniform sampler2DShadow)

+0:55          'coords4D' (4-component vector of float)

+0:55          'bias' (float)

+0:57      Sequence

+0:57        move second child to first child (2-component vector of int)

+0:57          'iCoords2D' (2-component vector of int)

+0:57          0 (const int)

+0:57          5 (const int)

+0:58      Sequence

+0:58        move second child to first child (int)

+0:58          'iLod' (int)

+0:58          1 (const int)

+0:60      add second child into first child (4-component vector of float)

+0:60        'color' (4-component vector of float)

+0:60        Function Call: texelFetch(s21;vi2;i1; (4-component vector of float)

+0:60          'texSampler2D' (uniform sampler2D)

+0:60          'iCoords2D' (2-component vector of int)

+0:60          'iLod' (int)

+0:62      Sequence

+0:62        move second child to first child (2-component vector of float)

+0:62          'gradX' (2-component vector of float)

+0:62          dPdx (2-component vector of float)

+0:62            'coords2D' (smooth in 2-component vector of float)

+0:63      Sequence

+0:63        move second child to first child (2-component vector of float)

+0:63          'gradY' (2-component vector of float)

+0:63          dPdy (2-component vector of float)

+0:63            'coords2D' (smooth in 2-component vector of float)

+0:64      Sequence

+0:64        move second child to first child (2-component vector of int)

+0:64          'offset' (2-component vector of int)

+0:64          3 (const int)

+0:64          -7 (const int)

+0:66      add second child into first child (4-component vector of float)

+0:66        'color' (4-component vector of float)

+0:66        Function Call: textureGrad(s21;vf2;vf2;vf2; (4-component vector of float)

+0:66          'texSampler2D' (uniform sampler2D)

+0:66          'coords2D' (smooth in 2-component vector of float)

+0:66          'gradX' (2-component vector of float)

+0:66          'gradY' (2-component vector of float)

+0:67      add second child into first child (4-component vector of float)

+0:67        'color' (4-component vector of float)

+0:67        Function Call: textureProjGrad(s21;vf3;vf2;vf2; (4-component vector of float)

+0:67          'texSampler2D' (uniform sampler2D)

+0:67          Construct vec3 (3-component vector of float)

+0:67            'coords2D' (smooth in 2-component vector of float)

+0:67            'proj' (float)

+0:67          'gradX' (2-component vector of float)

+0:67          'gradY' (2-component vector of float)

+0:68      add second child into first child (4-component vector of float)

+0:68        'color' (4-component vector of float)

+0:68        Function Call: textureGradOffset(s21;vf2;vf2;vf2;vi2; (4-component vector of float)

+0:68          'texSampler2D' (uniform sampler2D)

+0:68          'coords2D' (smooth in 2-component vector of float)

+0:68          'gradX' (2-component vector of float)

+0:68          'gradY' (2-component vector of float)

+0:68          'offset' (2-component vector of int)

+0:69      add second child into first child (4-component vector of float)

+0:69        'color' (4-component vector of float)

+0:69        Function Call: textureProjGradOffset(s21;vf3;vf2;vf2;vi2; (4-component vector of float)

+0:69          'texSampler2D' (uniform sampler2D)

+0:69          'coords3D' (3-component vector of float)

+0:69          'gradX' (2-component vector of float)

+0:69          'gradY' (2-component vector of float)

+0:69          'offset' (2-component vector of int)

+0:70      add second child into first child (4-component vector of float)

+0:70        'color' (4-component vector of float)

+0:70        Function Call: textureGrad(sS21;vf3;vf2;vf2; (float)

+0:70          'shadowSampler2D' (uniform sampler2DShadow)

+0:70          Construct vec3 (3-component vector of float)

+0:70            'coords2D' (smooth in 2-component vector of float)

+0:70            'lod' (float)

+0:70          'gradX' (2-component vector of float)

+0:70          'gradY' (2-component vector of float)

+0:72      move second child to first child (4-component vector of float)

+0:72        'gl_FragColor' (fragColor 4-component vector of float)

+0:72        mix (4-component vector of float)

+0:72          'color' (4-component vector of float)

+0:72          'u' (uniform 4-component vector of float)

+0:72          component-wise multiply (float)

+0:72            'blend' (uniform float)

+0:72            'blendscale' (float)

+0:?   Linker Objects

+0:?     'texSampler1D' (uniform sampler1D)

+0:?     'texSampler2D' (uniform sampler2D)

+0:?     'texSampler3D' (uniform sampler3D)

+0:?     'texSamplerCube' (uniform samplerCube)

+0:?     'shadowSampler1D' (uniform sampler1DShadow)

+0:?     'shadowSampler2D' (uniform sampler2DShadow)

+0:?     'blend' (uniform float)

+0:?     'scale' (uniform 2-component vector of float)

+0:?     'u' (uniform 4-component vector of float)

+0:?     't' (smooth in 2-component vector of float)

+0:?     'coords2D' (smooth in 2-component vector of float)

+

diff --git a/Test/baseResults/tokenLength.vert.out b/Test/baseResults/tokenLength.vert.out
new file mode 100644
index 0000000..7c42c8f
--- /dev/null
+++ b/Test/baseResults/tokenLength.vert.out
@@ -0,0 +1,82 @@
+ERROR: 0:9: '' : numeric literal too big 

+ERROR: 0:10: '' : numeric literal too big 

+ERROR: 0:13: '' : octal literal too big 

+ERROR: 0:14: '' : hexidecimal literal too big 

+ERROR: 0:23: '' : float literal too long 

+ERROR: 0:32: '' : name too long 

+ERROR: 0:33: '' : hexidecimal literal too big 

+ERROR: 0:34: '' : numeric literal too long 

+ERROR: 0:34: '' : octal literal too big 

+ERROR: 0:35: '' : numeric literal too long 

+ERROR: 0:35: '' : numeric literal too big 

+ERROR: 0:36: '' : float literal too long 

+ERROR: 0:36: '' : float literal too long 

+ERROR: 0:36: '' : float literal too long 

+ERROR: 14 compilation errors.  No code generated.

+

+ERROR: node is still EOpNull!

+0:9  Sequence

+0:9    move second child to first child (highp int)

+0:9      'E1' (highp int)

+0:9      -1 (const int)

+0:10  Sequence

+0:10    move second child to first child (highp int)

+0:10      'E2' (highp int)

+0:10      -1 (const int)

+0:11  Sequence

+0:11    move second child to first child (highp int)

+0:11      'B' (highp int)

+0:11      -1 (const int)

+0:13  Sequence

+0:13    move second child to first child (highp int)

+0:13      'OE' (highp int)

+0:13      1073741823 (const int)

+0:14  Sequence

+0:14    move second child to first child (highp int)

+0:14      'HE' (highp int)

+0:14      -1 (const int)

+0:17  Sequence

+0:17    move second child to first child (highp float)

+0:17      'F' (highp float)

+0:17      1.012346

+0:20  Sequence

+0:20    move second child to first child (highp float)

+0:20      'G' (highp float)

+0:20      1.012346

+0:23  Sequence

+0:23    move second child to first child (highp float)

+0:23      'E3' (highp float)

+0:23      12.000000

+0:25  Function Definition: main( (void)

+0:25    Function Parameters: 

+0:27    Sequence

+0:27      move second child to first child (highp 4-component vector of float)

+0:27        'gl_Position' (gl_Position highp 4-component vector of float)

+0:28        Construct vec4 (highp 4-component vector of float)

+0:27          'ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789' (in highp float)

+0:28          Convert int to float (highp float)

+0:28            'B' (highp int)

+0:28          'F' (highp float)

+0:28          'G' (highp float)

+0:33  Sequence

+0:33    move second child to first child (highp int)

+0:33      'superH' (highp int)

+0:33      -1 (const int)

+0:34  Sequence

+0:34    move second child to first child (highp int)

+0:34      'superO' (highp int)

+0:34      1073741823 (const int)

+0:35  Sequence

+0:35    move second child to first child (highp int)

+0:35      'superI' (highp int)

+0:35      -1 (const int)

+0:36  Sequence

+0:36    move second child to first child (highp float)

+0:36      'superF' (highp float)

+0:36      1.#INF00

+0:?   Linker Objects

+0:?     'BCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789' (in highp float)

+0:?     'ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789' (in highp float)

+0:?     'gl_VertexID' (gl_VertexId highp int)

+0:?     'gl_InstanceID' (gl_InstanceId highp int)

+

diff --git a/Test/baseResults/types.frag.out b/Test/baseResults/types.frag.out
new file mode 100644
index 0000000..af4db5b
--- /dev/null
+++ b/Test/baseResults/types.frag.out
@@ -0,0 +1,289 @@
+0:? Sequence

+0:33  Function Definition: main( (void)

+0:33    Function Parameters: 

+0:35    Sequence

+0:35      Sequence

+0:35        move second child to first child (bool)

+0:35          'b' (bool)

+0:35          logical-and (bool)

+0:35            'u_b' (uniform bool)

+0:35            'i_b' (uniform bool)

+0:36      Sequence

+0:36        move second child to first child (2-component vector of bool)

+0:36          'b2' (2-component vector of bool)

+0:36          Construct bvec2 (2-component vector of bool)

+0:36            logical-and (bool)

+0:36              logical-and (bool)

+0:36                logical-and (bool)

+0:36                  direct index (bool)

+0:36                    'u_b2' (uniform 2-component vector of bool)

+0:36                    0 (const int)

+0:36                  direct index (bool)

+0:36                    'i_b2' (uniform 2-component vector of bool)

+0:36                    0 (const int)

+0:36                direct index (bool)

+0:36                  'u_b2' (uniform 2-component vector of bool)

+0:36                  1 (const int)

+0:36              direct index (bool)

+0:36                'i_b2' (uniform 2-component vector of bool)

+0:36                1 (const int)

+0:37      Sequence

+0:37        move second child to first child (3-component vector of bool)

+0:37          'b3' (3-component vector of bool)

+0:37          Construct bvec3 (3-component vector of bool)

+0:37            logical-and (bool)

+0:37              logical-and (bool)

+0:37                logical-and (bool)

+0:37                  logical-and (bool)

+0:37                    logical-and (bool)

+0:37                      direct index (bool)

+0:37                        'u_b3' (uniform 3-component vector of bool)

+0:37                        0 (const int)

+0:37                      direct index (bool)

+0:37                        'i_b3' (uniform 3-component vector of bool)

+0:37                        0 (const int)

+0:37                    direct index (bool)

+0:37                      'u_b3' (uniform 3-component vector of bool)

+0:37                      1 (const int)

+0:37                  direct index (bool)

+0:37                    'i_b3' (uniform 3-component vector of bool)

+0:37                    1 (const int)

+0:37                direct index (bool)

+0:37                  'u_b3' (uniform 3-component vector of bool)

+0:37                  2 (const int)

+0:37              direct index (bool)

+0:37                'i_b3' (uniform 3-component vector of bool)

+0:37                2 (const int)

+0:38      Sequence

+0:38        move second child to first child (4-component vector of bool)

+0:38          'b4' (4-component vector of bool)

+0:38          Construct bvec4 (4-component vector of bool)

+0:38            logical-and (bool)

+0:38              logical-and (bool)

+0:38                logical-and (bool)

+0:38                  logical-and (bool)

+0:38                    logical-and (bool)

+0:38                      logical-and (bool)

+0:38                        logical-and (bool)

+0:38                          direct index (bool)

+0:38                            'u_b4' (uniform 4-component vector of bool)

+0:38                            0 (const int)

+0:38                          direct index (bool)

+0:38                            'i_b4' (uniform 4-component vector of bool)

+0:38                            0 (const int)

+0:38                        direct index (bool)

+0:38                          'u_b4' (uniform 4-component vector of bool)

+0:38                          1 (const int)

+0:38                      direct index (bool)

+0:38                        'i_b4' (uniform 4-component vector of bool)

+0:38                        1 (const int)

+0:38                    direct index (bool)

+0:38                      'u_b4' (uniform 4-component vector of bool)

+0:38                      2 (const int)

+0:38                  direct index (bool)

+0:38                    'i_b4' (uniform 4-component vector of bool)

+0:38                    2 (const int)

+0:38                direct index (bool)

+0:38                  'u_b4' (uniform 4-component vector of bool)

+0:38                  3 (const int)

+0:38              direct index (bool)

+0:38                'i_b4' (uniform 4-component vector of bool)

+0:38                3 (const int)

+0:40      Sequence

+0:40        move second child to first child (int)

+0:40          'i' (int)

+0:40          add (int)

+0:40            'u_i' (uniform int)

+0:40            'i_i' (flat in int)

+0:41      Sequence

+0:41        move second child to first child (2-component vector of int)

+0:41          'i2' (2-component vector of int)

+0:41          add (2-component vector of int)

+0:41            'u_i2' (uniform 2-component vector of int)

+0:41            'i_i2' (flat in 2-component vector of int)

+0:42      Sequence

+0:42        move second child to first child (3-component vector of int)

+0:42          'i3' (3-component vector of int)

+0:42          add (3-component vector of int)

+0:42            'u_i3' (uniform 3-component vector of int)

+0:42            'i_i3' (flat in 3-component vector of int)

+0:43      Sequence

+0:43        move second child to first child (4-component vector of int)

+0:43          'i4' (4-component vector of int)

+0:43          add (4-component vector of int)

+0:43            'u_i4' (uniform 4-component vector of int)

+0:43            'i_i4' (flat in 4-component vector of int)

+0:45      Sequence

+0:45        move second child to first child (float)

+0:45          'f' (float)

+0:45          add (float)

+0:45            'u_f' (uniform float)

+0:45            'i_f' (smooth in float)

+0:46      Sequence

+0:46        move second child to first child (2-component vector of float)

+0:46          'f2' (2-component vector of float)

+0:46          add (2-component vector of float)

+0:46            'u_f2' (uniform 2-component vector of float)

+0:46            'i_f2' (smooth in 2-component vector of float)

+0:47      Sequence

+0:47        move second child to first child (3-component vector of float)

+0:47          'f3' (3-component vector of float)

+0:47          add (3-component vector of float)

+0:47            'u_f3' (uniform 3-component vector of float)

+0:47            'i_f3' (smooth in 3-component vector of float)

+0:48      Sequence

+0:48        move second child to first child (4-component vector of float)

+0:48          'f4' (4-component vector of float)

+0:48          add (4-component vector of float)

+0:48            'u_f4' (uniform 4-component vector of float)

+0:48            'i_f4' (smooth in 4-component vector of float)

+0:50      move second child to first child (4-component vector of float)

+0:50        'gl_FragColor' (fragColor 4-component vector of float)

+0:60        Test condition and select (4-component vector of float)

+0:60          Condition

+0:59          logical-or (bool)

+0:58            logical-or (bool)

+0:57              logical-or (bool)

+0:56                logical-or (bool)

+0:55                  logical-or (bool)

+0:54                    logical-or (bool)

+0:53                      logical-or (bool)

+0:52                        logical-or (bool)

+0:51                          logical-or (bool)

+0:51                            'b' (bool)

+0:52                            direct index (bool)

+0:52                              'b2' (2-component vector of bool)

+0:52                              0 (const int)

+0:53                          direct index (bool)

+0:53                            'b2' (2-component vector of bool)

+0:53                            1 (const int)

+0:54                        direct index (bool)

+0:54                          'b3' (3-component vector of bool)

+0:54                          0 (const int)

+0:55                      direct index (bool)

+0:55                        'b3' (3-component vector of bool)

+0:55                        1 (const int)

+0:56                    direct index (bool)

+0:56                      'b3' (3-component vector of bool)

+0:56                      2 (const int)

+0:57                  direct index (bool)

+0:57                    'b4' (4-component vector of bool)

+0:57                    0 (const int)

+0:58                direct index (bool)

+0:58                  'b4' (4-component vector of bool)

+0:58                  1 (const int)

+0:59              direct index (bool)

+0:59                'b4' (4-component vector of bool)

+0:59                2 (const int)

+0:60            direct index (bool)

+0:60              'b4' (4-component vector of bool)

+0:60              3 (const int)

+0:60          true case

+0:79          Construct vec4 (4-component vector of float)

+0:79            add (float)

+0:78              add (float)

+0:77                add (float)

+0:76                  add (float)

+0:75                    add (float)

+0:74                      add (float)

+0:73                        add (float)

+0:72                          add (float)

+0:71                            add (float)

+0:70                              add (float)

+0:69                                Convert int to float (float)

+0:69                                  add (int)

+0:68                                    add (int)

+0:67                                      add (int)

+0:66                                        add (int)

+0:65                                          add (int)

+0:64                                            add (int)

+0:63                                              add (int)

+0:62                                                add (int)

+0:61                                                  add (int)

+0:61                                                    'i' (int)

+0:62                                                    direct index (int)

+0:62                                                      'i2' (2-component vector of int)

+0:62                                                      0 (const int)

+0:63                                                  direct index (int)

+0:63                                                    'i2' (2-component vector of int)

+0:63                                                    1 (const int)

+0:64                                                direct index (int)

+0:64                                                  'i3' (3-component vector of int)

+0:64                                                  0 (const int)

+0:65                                              direct index (int)

+0:65                                                'i3' (3-component vector of int)

+0:65                                                1 (const int)

+0:66                                            direct index (int)

+0:66                                              'i3' (3-component vector of int)

+0:66                                              2 (const int)

+0:67                                          direct index (int)

+0:67                                            'i4' (4-component vector of int)

+0:67                                            0 (const int)

+0:68                                        direct index (int)

+0:68                                          'i4' (4-component vector of int)

+0:68                                          1 (const int)

+0:69                                      direct index (int)

+0:69                                        'i4' (4-component vector of int)

+0:69                                        2 (const int)

+0:70                                    direct index (int)

+0:70                                      'i4' (4-component vector of int)

+0:70                                      3 (const int)

+0:71                                'f' (float)

+0:72                              direct index (float)

+0:72                                'f2' (2-component vector of float)

+0:72                                0 (const int)

+0:73                            direct index (float)

+0:73                              'f2' (2-component vector of float)

+0:73                              1 (const int)

+0:74                          direct index (float)

+0:74                            'f3' (3-component vector of float)

+0:74                            0 (const int)

+0:75                        direct index (float)

+0:75                          'f3' (3-component vector of float)

+0:75                          1 (const int)

+0:76                      direct index (float)

+0:76                        'f3' (3-component vector of float)

+0:76                        2 (const int)

+0:77                    direct index (float)

+0:77                      'f4' (4-component vector of float)

+0:77                      0 (const int)

+0:78                  direct index (float)

+0:78                    'f4' (4-component vector of float)

+0:78                    1 (const int)

+0:79                direct index (float)

+0:79                  'f4' (4-component vector of float)

+0:79                  2 (const int)

+0:80              direct index (float)

+0:80                'f4' (4-component vector of float)

+0:80                3 (const int)

+0:60          false case

+0:80          1.000000

+0:80          1.000000

+0:80          1.000000

+0:80          1.000000

+0:?   Linker Objects

+0:?     'u_b' (uniform bool)

+0:?     'u_b2' (uniform 2-component vector of bool)

+0:?     'u_b3' (uniform 3-component vector of bool)

+0:?     'u_b4' (uniform 4-component vector of bool)

+0:?     'u_i' (uniform int)

+0:?     'u_i2' (uniform 2-component vector of int)

+0:?     'u_i3' (uniform 3-component vector of int)

+0:?     'u_i4' (uniform 4-component vector of int)

+0:?     'u_f' (uniform float)

+0:?     'u_f2' (uniform 2-component vector of float)

+0:?     'u_f3' (uniform 3-component vector of float)

+0:?     'u_f4' (uniform 4-component vector of float)

+0:?     'i_b' (uniform bool)

+0:?     'i_b2' (uniform 2-component vector of bool)

+0:?     'i_b3' (uniform 3-component vector of bool)

+0:?     'i_b4' (uniform 4-component vector of bool)

+0:?     'i_i' (flat in int)

+0:?     'i_i2' (flat in 2-component vector of int)

+0:?     'i_i3' (flat in 3-component vector of int)

+0:?     'i_i4' (flat in 4-component vector of int)

+0:?     'i_f' (smooth in float)

+0:?     'i_f2' (smooth in 2-component vector of float)

+0:?     'i_f3' (smooth in 3-component vector of float)

+0:?     'i_f4' (smooth in 4-component vector of float)

+

diff --git a/Test/baseResults/uint.frag.out b/Test/baseResults/uint.frag.out
new file mode 100644
index 0000000..2f04349
--- /dev/null
+++ b/Test/baseResults/uint.frag.out
@@ -0,0 +1,215 @@
+ERROR: 0:2: 'in' : must be qualified as 'flat' uint

+ERROR: 0:6: 'in' : cannot be bool 

+ERROR: 0:20: 'const' :  non-matching types for const initializer  

+ERROR: 0:24: 'const' :  non-matching types for const initializer  

+ERROR: 0:34: 'const' :  non-matching types for const initializer  

+ERROR: 0:37: 'const' :  non-matching types for const initializer  

+ERROR: 0:48: '=' :  cannot convert from 'const int' to 'mediump uint'

+ERROR: 0:51: '=' :  cannot convert from 'const int' to 'mediump uint'

+ERROR: 0:63: 'float' : type requires declaration of default precision qualifier 

+ERROR: 9 compilation errors.  No code generated.

+

+ERROR: node is still EOpNull!

+0:15  Function Definition: main( (void)

+0:15    Function Parameters: 

+0:17    Sequence

+0:17      Sequence

+0:17        move second child to first child (mediump int)

+0:17          'count' (mediump int)

+0:17          1 (const int)

+0:19      Sequence

+0:19        move second child to first child (mediump uint)

+0:19          'u' (mediump uint)

+0:19          add (mediump uint)

+0:19            direct index (mediump uint)

+0:19              't' (flat in mediump 2-component vector of uint)

+0:19              1 (const int)

+0:19            3 (const uint)

+0:28      multiply second child into first child (mediump int)

+0:28        'count' (mediump int)

+0:28        2 (const int)

+0:30      multiply second child into first child (mediump int)

+0:30        'count' (mediump int)

+0:30        3 (const int)

+0:42      multiply second child into first child (mediump int)

+0:42        'count' (mediump int)

+0:42        7 (const int)

+0:44      multiply second child into first child (mediump int)

+0:44        'count' (mediump int)

+0:44        11 (const int)

+0:49      Sequence

+0:49        move second child to first child (mediump int)

+0:49          'shiftedii' (mediump int)

+0:49          -1 (const int)

+0:50      Sequence

+0:50        move second child to first child (mediump uint)

+0:50          'shiftedui' (mediump uint)

+0:50          4194303 (const uint)

+0:52      Sequence

+0:52        move second child to first child (mediump int)

+0:52          'shiftediu' (mediump int)

+0:52          -1 (const int)

+0:53      Sequence

+0:53        move second child to first child (mediump uint)

+0:53          'shifteduu' (mediump uint)

+0:53          4194303 (const uint)

+0:55      Test condition and select (void)

+0:55        Condition

+0:55        Compare Equal (bool)

+0:55          'shiftedii' (mediump int)

+0:55          'shiftediu' (mediump int)

+0:55        true case

+0:56        move second child to first child (mediump 4-component vector of uint)

+0:56          'c' (out mediump 4-component vector of uint)

+0:56          Function Call: texture(us21;vf2; (mediump 4-component vector of uint)

+0:56            'usampler' (uniform lowp usampler2D)

+0:56            'tc' (smooth in highp 2-component vector of float)

+0:57      Test condition and select (void)

+0:57        Condition

+0:57        Compare Equal (bool)

+0:57          'shiftedui' (mediump uint)

+0:57          'shifteduu' (mediump uint)

+0:57        true case

+0:58        move second child to first child (mediump 4-component vector of uint)

+0:58          'c' (out mediump 4-component vector of uint)

+0:58          Function Call: texture(us21;vf2; (mediump 4-component vector of uint)

+0:58            'usampler' (uniform lowp usampler2D)

+0:58            add (highp 2-component vector of float)

+0:58              'tc' (smooth in highp 2-component vector of float)

+0:58              1.000000

+0:59      Test condition and select (void)

+0:59        Condition

+0:59        Compare Equal (bool)

+0:59          'shiftedii' (mediump int)

+0:59          Convert uint to int (int)

+0:59            'shiftedui' (mediump uint)

+0:59        true case

+0:60        move second child to first child (mediump 4-component vector of uint)

+0:60          'c' (out mediump 4-component vector of uint)

+0:60          Function Call: texture(us21;vf2; (mediump 4-component vector of uint)

+0:60            'usampler' (uniform lowp usampler2D)

+0:60            subtract (highp 2-component vector of float)

+0:60              'tc' (smooth in highp 2-component vector of float)

+0:60              2.000000

+0:60              2.000000

+0:62      Test condition and select (void)

+0:62        Condition

+0:62        Compare Greater Than (bool)

+0:62          direct index (mediump uint)

+0:62            't' (flat in mediump 2-component vector of uint)

+0:62            0 (const int)

+0:62          4 (const uint)

+0:62        true case

+0:63        Sequence

+0:63          Sequence

+0:63            move second child to first child (mediump float)

+0:63              'af' (mediump float)

+0:63              Convert uint to float (mediump float)

+0:63                'u' (mediump uint)

+0:64          Sequence

+0:64            move second child to first child (bool)

+0:64              'ab' (bool)

+0:64              Convert uint to bool (bool)

+0:64                'u' (mediump uint)

+0:65          Sequence

+0:65            move second child to first child (mediump int)

+0:65              'ai' (mediump int)

+0:65              Convert uint to int (mediump int)

+0:65                'u' (mediump uint)

+0:67          add second child into first child (mediump 4-component vector of uint)

+0:67            'c' (out mediump 4-component vector of uint)

+0:67            Construct uvec4 (mediump 4-component vector of uint)

+0:67              Convert float to uint (mediump uint)

+0:67                'af' (mediump float)

+0:67              Convert bool to uint (mediump uint)

+0:67                'ab' (bool)

+0:67              Convert int to uint (mediump uint)

+0:67                'ai' (mediump int)

+0:67              Convert int to uint (mediump uint)

+0:67                'count' (mediump int)

+0:76      multiply second child into first child (mediump int)

+0:76        'count' (mediump int)

+0:76        17 (const int)

+0:82      multiply second child into first child (mediump int)

+0:82        'count' (mediump int)

+0:82        23 (const int)

+0:85      multiply second child into first child (mediump int)

+0:85        'count' (mediump int)

+0:85        27 (const int)

+0:87      Sequence

+0:87        move second child to first child (mediump uint)

+0:87          'mask1' (mediump uint)

+0:87          161 (const uint)

+0:88      Sequence

+0:88        move second child to first child (mediump uint)

+0:88          'mask2' (mediump uint)

+0:88          2576 (const uint)

+0:89      Sequence

+0:89        move second child to first child (mediump uint)

+0:89          'mask3' (mediump uint)

+0:89          left-shift (mediump uint)

+0:89            'mask1' (mediump uint)

+0:89            4 (const int)

+0:90      Sequence

+0:90        move second child to first child (mediump uint)

+0:90          'mask4' (mediump uint)

+0:90          2737 (const uint)

+0:92      Test condition and select (void)

+0:92        Condition

+0:92        Compare Equal (bool)

+0:92          'mask3' (mediump uint)

+0:92          'mask2' (mediump uint)

+0:92        true case

+0:93        multiply second child into first child (mediump int)

+0:93          'count' (mediump int)

+0:93          100 (const int)

+0:95      Test condition and select (void)

+0:95        Condition

+0:95        Compare Not Equal (bool)

+0:95          bitwise and (mediump uint)

+0:95            'mask3' (mediump uint)

+0:95            'mask1' (mediump uint)

+0:95          0 (const uint)

+0:95        true case

+0:96        multiply second child into first child (mediump int)

+0:96          'count' (mediump int)

+0:96          101 (const int)

+0:98      Test condition and select (void)

+0:98        Condition

+0:98        Compare Equal (bool)

+0:98          inclusive-or (mediump uint)

+0:98            'mask1' (mediump uint)

+0:98            'mask3' (mediump uint)

+0:98          'mask4' (mediump uint)

+0:98        true case

+0:99        multiply second child into first child (mediump int)

+0:99          'count' (mediump int)

+0:99          102 (const int)

+0:101      Test condition and select (void)

+0:101        Condition

+0:101        Compare Equal (bool)

+0:101          exclusive-or (mediump uint)

+0:101            'mask1' (mediump uint)

+0:101            'mask4' (mediump uint)

+0:101          2576 (const uint)

+0:101        true case

+0:102        multiply second child into first child (mediump int)

+0:102          'count' (mediump int)

+0:102          103 (const int)

+0:104      add second child into first child (mediump 4-component vector of uint)

+0:104        'c' (out mediump 4-component vector of uint)

+0:104        Construct uvec4 (mediump 4-component vector of uint)

+0:104          Convert int to uint (mediump uint)

+0:104            'count' (mediump int)

+0:?   Linker Objects

+0:?     'badu' (smooth in mediump 2-component vector of uint)

+0:?     't' (flat in mediump 2-component vector of uint)

+0:?     'f' (smooth in highp float)

+0:?     'tc' (smooth in highp 2-component vector of float)

+0:?     'bad' (smooth in bool)

+0:?     'v' (uniform mediump 4-component vector of uint)

+0:?     'i' (uniform mediump int)

+0:?     'b' (uniform bool)

+0:?     'c' (out mediump 4-component vector of uint)

+0:?     'usampler' (uniform lowp usampler2D)

+

diff --git a/Test/baseResults/uniformArray.frag.out b/Test/baseResults/uniformArray.frag.out
new file mode 100644
index 0000000..f734c29
--- /dev/null
+++ b/Test/baseResults/uniformArray.frag.out
@@ -0,0 +1,36 @@
+0:? Sequence

+0:7  Function Definition: main( (void)

+0:7    Function Parameters: 

+0:9    Sequence

+0:9      Sequence

+0:9        move second child to first child (4-component vector of float)

+0:9          'texColor' (4-component vector of float)

+0:9          add (4-component vector of float)

+0:9            direct index (uniform 4-component vector of float)

+0:9              'color' (uniform 6-element array of 4-component vector of float)

+0:9              1 (const int)

+0:9            direct index (uniform 4-component vector of float)

+0:9              'color' (uniform 6-element array of 4-component vector of float)

+0:9              1 (const int)

+0:11      add second child into first child (3-component vector of float)

+0:11        vector swizzle (3-component vector of float)

+0:11          'texColor' (4-component vector of float)

+0:11          Sequence

+0:11            0 (const int)

+0:11            1 (const int)

+0:11            2 (const int)

+0:11        'inColor' (uniform 3-component vector of float)

+0:13      add second child into first child (float)

+0:13        direct index (float)

+0:13          'texColor' (4-component vector of float)

+0:13          3 (const int)

+0:13        direct index (uniform float)

+0:13          'alpha' (uniform 16-element array of float)

+0:13          12 (const int)

+0:15      move second child to first child (4-component vector of float)

+0:15        'gl_FragColor' (fragColor 4-component vector of float)

+0:15        'texColor' (4-component vector of float)

+0:?   Linker Objects

+0:?     'texSampler2D' (uniform sampler2D)

+0:?     'inColor' (uniform 3-component vector of float)

+

diff --git a/Test/baseResults/variableArrayIndex.frag.out b/Test/baseResults/variableArrayIndex.frag.out
new file mode 100644
index 0000000..aa20e6a
--- /dev/null
+++ b/Test/baseResults/variableArrayIndex.frag.out
@@ -0,0 +1,91 @@
+WARNING: 0:3: varying deprecated in version 130; may be removed in future release

+0:? Sequence

+0:29  Function Definition: main( (void)

+0:29    Function Parameters: 

+0:?     Sequence

+0:32      Sequence

+0:32        move second child to first child (int)

+0:32          'iLocal' (int)

+0:32          'Count' (uniform int)

+0:34      Test condition and select (void)

+0:34        Condition

+0:34        Compare Greater Than (bool)

+0:34          i: direct index for structure (int)

+0:34            direct index (structure)

+0:34              s2_1: direct index for structure (3-element array of structure)

+0:34                'foo3' (uniform structure)

+0:34                0 (const int)

+0:34              1 (const int)

+0:34            0 (const int)

+0:34          0 (const int)

+0:34        true case

+0:35        move second child to first child (float)

+0:35          'scale' (float)

+0:35          f: direct index for structure (float)

+0:35            s1_1: direct index for structure (structure)

+0:35              indirect index (uniform structure)

+0:35                'foo2' (uniform 5-element array of structure)

+0:35                add (int)

+0:35                  add (int)

+0:35                    i: direct index for structure (int)

+0:35                      indirect index (structure)

+0:35                        s2_1: direct index for structure (3-element array of structure)

+0:35                          'foo3' (uniform structure)

+0:35                          0 (const int)

+0:35                        i: direct index for structure (int)

+0:35                          'foo' (uniform structure)

+0:35                          0 (const int)

+0:35                      0 (const int)

+0:35                    2 (const int)

+0:35                  Pre-Increment (int)

+0:35                    'iLocal' (int)

+0:35              2 (const int)

+0:35            1 (const int)

+0:34        false case

+0:37        move second child to first child (float)

+0:37          'scale' (float)

+0:37          f: direct index for structure (float)

+0:37            s1_1: direct index for structure (structure)

+0:37              direct index (structure)

+0:37                s2_1: direct index for structure (3-element array of structure)

+0:37                  'foo3' (uniform structure)

+0:37                  0 (const int)

+0:37                0 (const int)

+0:37              2 (const int)

+0:37            1 (const int)

+0:43      move second child to first child (4-component vector of float)

+0:43        'gl_FragColor' (fragColor 4-component vector of float)

+0:43        vector-scale (4-component vector of float)

+0:43          'scale' (float)

+0:43          Function Call: texture2D(s21;vf2; (4-component vector of float)

+0:43            'sampler' (uniform sampler2D)

+0:43            'coord' (smooth in 2-component vector of float)

+0:45      Sequence

+0:45        move second child to first child (3-element array of 2-component vector of float)

+0:45          'constructed' (3-element array of 2-component vector of float)

+0:45          Construct vec2 (3-element array of 2-component vector of float)

+0:45            'coord' (smooth in 2-component vector of float)

+0:45            Construct vec2 (2-component vector of float)

+0:45              'scale' (float)

+0:45            1.000000

+0:45            2.000000

+0:46      add second child into first child (4-component vector of float)

+0:46        'gl_FragColor' (fragColor 4-component vector of float)

+0:46        Construct vec4 (4-component vector of float)

+0:46          indirect index (2-component vector of float)

+0:46            'constructed' (3-element array of 2-component vector of float)

+0:46            i: direct index for structure (int)

+0:46              'foo' (uniform structure)

+0:46              0 (const int)

+0:46          indirect index (2-component vector of float)

+0:46            'constructed' (3-element array of 2-component vector of float)

+0:46            i: direct index for structure (int)

+0:46              'foo' (uniform structure)

+0:46              0 (const int)

+0:?   Linker Objects

+0:?     'sampler' (uniform sampler2D)

+0:?     'coord' (smooth in 2-component vector of float)

+0:?     'foo' (uniform structure)

+0:?     'foo3' (uniform structure)

+0:?     'Count' (uniform int)

+

diff --git a/Test/baseResults/varyingArray.frag.out b/Test/baseResults/varyingArray.frag.out
new file mode 100644
index 0000000..2e0245b
--- /dev/null
+++ b/Test/baseResults/varyingArray.frag.out
@@ -0,0 +1,49 @@
+WARNING: 0:3: varying deprecated in version 130; may be removed in future release

+WARNING: 0:4: varying deprecated in version 130; may be removed in future release

+WARNING: 0:6: varying deprecated in version 130; may be removed in future release

+WARNING: 0:8: varying deprecated in version 130; may be removed in future release

+0:? Sequence

+0:10  Function Definition: main( (void)

+0:10    Function Parameters: 

+0:12    Sequence

+0:12      Sequence

+0:12        move second child to first child (4-component vector of float)

+0:12          'texColor' (4-component vector of float)

+0:12          Function Call: texture2D(s21;vf2; (4-component vector of float)

+0:12            'texSampler2D' (uniform sampler2D)

+0:12            Construct vec2 (2-component vector of float)

+0:12              add (4-component vector of float)

+0:12                direct index (smooth in 4-component vector of float)

+0:12                  'gl_TexCoord' (smooth in 6-element array of 4-component vector of float)

+0:12                  4 (const int)

+0:12                direct index (smooth in 4-component vector of float)

+0:12                  'gl_TexCoord' (smooth in 6-element array of 4-component vector of float)

+0:12                  5 (const int)

+0:14      add second child into first child (4-component vector of float)

+0:14        'texColor' (4-component vector of float)

+0:14        'color' (smooth in 4-component vector of float)

+0:16      move second child to first child (float)

+0:16        direct index (float)

+0:16          'texColor' (4-component vector of float)

+0:16          3 (const int)

+0:16        'alpha' (smooth in float)

+0:18      move second child to first child (4-component vector of float)

+0:18        'gl_FragColor' (fragColor 4-component vector of float)

+0:18        add (4-component vector of float)

+0:18          add (4-component vector of float)

+0:18            add (4-component vector of float)

+0:18              direct index (smooth in 4-component vector of float)

+0:18                'foo' (smooth in 3-element array of 4-component vector of float)

+0:18                1 (const int)

+0:18              direct index (smooth in 4-component vector of float)

+0:18                'gl_TexCoord' (smooth in 6-element array of 4-component vector of float)

+0:18                0 (const int)

+0:18            direct index (smooth in 4-component vector of float)

+0:18              'gl_TexCoord' (smooth in 6-element array of 4-component vector of float)

+0:18              4 (const int)

+0:18          'texColor' (4-component vector of float)

+0:?   Linker Objects

+0:?     'texSampler2D' (uniform sampler2D)

+0:?     'color' (smooth in 4-component vector of float)

+0:?     'alpha' (smooth in float)

+

diff --git a/Test/baseResults/varyingArrayIndirect.frag.out b/Test/baseResults/varyingArrayIndirect.frag.out
new file mode 100644
index 0000000..5db8488
--- /dev/null
+++ b/Test/baseResults/varyingArrayIndirect.frag.out
@@ -0,0 +1,55 @@
+WARNING: 0:3: varying deprecated in version 130; may be removed in future release

+WARNING: 0:4: varying deprecated in version 130; may be removed in future release

+WARNING: 0:6: varying deprecated in version 130; may be removed in future release

+WARNING: 0:8: varying deprecated in version 130; may be removed in future release

+0:? Sequence

+0:12  Function Definition: main( (void)

+0:12    Function Parameters: 

+0:14    Sequence

+0:14      Sequence

+0:14        move second child to first child (4-component vector of float)

+0:14          'texColor' (4-component vector of float)

+0:14          Function Call: texture2D(s21;vf2; (4-component vector of float)

+0:14            'texSampler2D' (uniform sampler2D)

+0:14            Construct vec2 (2-component vector of float)

+0:14              add (4-component vector of float)

+0:14                add (4-component vector of float)

+0:14                  indirect index (smooth in 4-component vector of float)

+0:14                    'userIn' (smooth in 2-element array of 4-component vector of float)

+0:14                    'b' (uniform int)

+0:14                  indirect index (smooth in 4-component vector of float)

+0:14                    'gl_TexCoord' (smooth in 6-element array of 4-component vector of float)

+0:14                    'a' (uniform int)

+0:14                direct index (smooth in 4-component vector of float)

+0:14                  'gl_TexCoord' (smooth in 6-element array of 4-component vector of float)

+0:14                  5 (const int)

+0:16      add second child into first child (4-component vector of float)

+0:16        'texColor' (4-component vector of float)

+0:16        'color' (smooth in 4-component vector of float)

+0:18      move second child to first child (float)

+0:18        direct index (float)

+0:18          'texColor' (4-component vector of float)

+0:18          3 (const int)

+0:18        'alpha' (smooth in float)

+0:20      move second child to first child (4-component vector of float)

+0:20        'gl_FragColor' (fragColor 4-component vector of float)

+0:20        add (4-component vector of float)

+0:20          add (4-component vector of float)

+0:20            add (4-component vector of float)

+0:20              direct index (smooth in 4-component vector of float)

+0:20                'gl_TexCoord' (smooth in 6-element array of 4-component vector of float)

+0:20                0 (const int)

+0:20              indirect index (smooth in 4-component vector of float)

+0:20                'gl_TexCoord' (smooth in 6-element array of 4-component vector of float)

+0:20                'b' (uniform int)

+0:20            'texColor' (4-component vector of float)

+0:20          indirect index (smooth in 4-component vector of float)

+0:20            'userIn' (smooth in 2-element array of 4-component vector of float)

+0:20            'a' (uniform int)

+0:?   Linker Objects

+0:?     'texSampler2D' (uniform sampler2D)

+0:?     'color' (smooth in 4-component vector of float)

+0:?     'alpha' (smooth in float)

+0:?     'a' (uniform int)

+0:?     'b' (uniform int)

+

diff --git a/Test/baseResults/versionsClean.frag.out b/Test/baseResults/versionsClean.frag.out
new file mode 100644
index 0000000..821da67
--- /dev/null
+++ b/Test/baseResults/versionsClean.frag.out
@@ -0,0 +1,18 @@
+ERROR: 0:1: '#version' : statement must appear first in ESSL shader; before comments or newlines 

+ERROR: 1 compilation errors.  No code generated.

+

+ERROR: node is still EOpNull!

+0:41  Function Definition: main( (void)

+0:41    Function Parameters: 

+0:43    Sequence

+0:43      move second child to first child (highp 4-component vector of float)

+0:43        'foo' (out highp 4-component vector of float)

+0:43        Construct vec4 (highp 4-component vector of float)

+0:43          'color' (smooth in highp 3-component vector of float)

+0:43          142.000000

+0:44      Branch: Kill

+0:?   Linker Objects

+0:?     'color' (smooth in highp 3-component vector of float)

+0:?     'foo' (out highp 4-component vector of float)

+0:?     'bar' (uniform highp sampler2DArrayShadow)

+

diff --git a/Test/baseResults/versionsClean.vert.out b/Test/baseResults/versionsClean.vert.out
new file mode 100644
index 0000000..807ee88
--- /dev/null
+++ b/Test/baseResults/versionsClean.vert.out
@@ -0,0 +1,15 @@
+0:? Sequence

+0:40  Function Definition: main( (void)

+0:40    Function Parameters: 

+0:42    Sequence

+0:42      move second child to first child (4-component vector of float)

+0:42        'gl_Position' (gl_Position 4-component vector of float)

+0:42        Construct vec4 (4-component vector of float)

+0:42          'color' (in 3-component vector of float)

+0:42          142.000000

+0:?   Linker Objects

+0:?     'color' (in 3-component vector of float)

+0:?     'foo' (uniform sampler2DRect)

+0:?     'gl_VertexID' (gl_VertexId int)

+0:?     'gl_InstanceID' (gl_InstanceId int)

+

diff --git a/Test/baseResults/versionsErrors.frag.out b/Test/baseResults/versionsErrors.frag.out
new file mode 100644
index 0000000..b13c08e
--- /dev/null
+++ b/Test/baseResults/versionsErrors.frag.out
@@ -0,0 +1,21 @@
+ERROR: #version: versions before 150 do not allow a profile token

+ERROR: 0:1: '#version' : incorrect 

+ERROR: 0:38: 'attribute' : not supported in this stage: fragment

+ERROR: 0:40: 'sampler2DRect' : Reserved word. 

+ERROR: 0:40: 'rectangle texture' : not supported for this version or the enabled extensions 

+ERROR: 4 compilation errors.  No code generated.

+

+ERROR: node is still EOpNull!

+0:42  Function Definition: main( (void)

+0:42    Function Parameters: 

+0:44    Sequence

+0:44      move second child to first child (4-component vector of float)

+0:44        'gl_FragColor' (fragColor 4-component vector of float)

+0:44        Construct vec4 (4-component vector of float)

+0:44          'color' (smooth in 3-component vector of float)

+0:44          142.000000

+0:45      Branch: Kill

+0:?   Linker Objects

+0:?     'color' (smooth in 3-component vector of float)

+0:?     'foo' (uniform sampler2DRect)

+

diff --git a/Test/baseResults/versionsErrors.vert.out b/Test/baseResults/versionsErrors.vert.out
new file mode 100644
index 0000000..0622ec2
--- /dev/null
+++ b/Test/baseResults/versionsErrors.vert.out
@@ -0,0 +1,21 @@
+WARNING: 0:38: attribute deprecated in version 130; may be removed in future release

+ERROR: 0:38: 'attribute' : no longer supported in core profile; removed in version 420

+ERROR: 0:45: 'discard' : not supported in this stage: vertex

+ERROR: 2 compilation errors.  No code generated.

+

+ERROR: node is still EOpNull!

+0:42  Function Definition: main( (void)

+0:42    Function Parameters: 

+0:44    Sequence

+0:44      move second child to first child (4-component vector of float)

+0:44        'gl_Position' (gl_Position 4-component vector of float)

+0:44        Construct vec4 (4-component vector of float)

+0:44          'color' (in 3-component vector of float)

+0:44          142.000000

+0:45      Branch: Kill

+0:?   Linker Objects

+0:?     'color' (in 3-component vector of float)

+0:?     'foo' (uniform sampler2DRect)

+0:?     'gl_VertexID' (gl_VertexId int)

+0:?     'gl_InstanceID' (gl_InstanceId int)

+

diff --git a/Test/baseResults/voidFunction.frag.out b/Test/baseResults/voidFunction.frag.out
new file mode 100644
index 0000000..4070c71
--- /dev/null
+++ b/Test/baseResults/voidFunction.frag.out
@@ -0,0 +1,39 @@
+0:? Sequence

+0:7  Sequence

+0:7    move second child to first child (float)

+0:7      'bar' (float)

+0:7      2.000000

+0:9  Function Definition: foo( (void)

+0:9    Function Parameters: 

+0:11    Sequence

+0:11      Post-Increment (float)

+0:11        'bar' (float)

+0:13      Branch: Return

+0:16  Function Definition: foo2( (void)

+0:16    Function Parameters: 

+0:18    Sequence

+0:18      Post-Increment (float)

+0:18        'bar' (float)

+0:21  Function Definition: main( (void)

+0:21    Function Parameters: 

+0:23    Sequence

+0:23      Sequence

+0:23        move second child to first child (4-component vector of float)

+0:23          'outColor' (4-component vector of float)

+0:23          'bigColor' (uniform 4-component vector of float)

+0:25      Function Call: foo( (void)

+0:27      Function Call: foo2( (void)

+0:29      add second child into first child (float)

+0:29        direct index (float)

+0:29          'outColor' (4-component vector of float)

+0:29          0 (const int)

+0:29        'bar' (float)

+0:31      move second child to first child (4-component vector of float)

+0:31        'gl_FragColor' (fragColor 4-component vector of float)

+0:31        'outColor' (4-component vector of float)

+0:33      Branch: Return

+0:?   Linker Objects

+0:?     'bigColor' (uniform 4-component vector of float)

+0:?     'BaseColor' (smooth in 4-component vector of float)

+0:?     'd' (uniform float)

+

diff --git a/Test/baseResults/whileLoop.frag.out b/Test/baseResults/whileLoop.frag.out
new file mode 100644
index 0000000..b8575b3
--- /dev/null
+++ b/Test/baseResults/whileLoop.frag.out
@@ -0,0 +1,28 @@
+0:? Sequence

+0:7  Function Definition: main( (void)

+0:7    Function Parameters: 

+0:9    Sequence

+0:9      Sequence

+0:9        move second child to first child (4-component vector of float)

+0:9          'color' (4-component vector of float)

+0:9          'BaseColor' (smooth in 4-component vector of float)

+0:11      Loop with condition tested first

+0:11        Loop Condition

+0:11        Compare Less Than (bool)

+0:11          direct index (float)

+0:11            'color' (4-component vector of float)

+0:11            0 (const int)

+0:11          'd' (uniform float)

+0:11        Loop Body

+0:12        Sequence

+0:12          add second child into first child (4-component vector of float)

+0:12            'color' (4-component vector of float)

+0:12            'bigColor' (uniform 4-component vector of float)

+0:15      move second child to first child (4-component vector of float)

+0:15        'gl_FragColor' (fragColor 4-component vector of float)

+0:15        'color' (4-component vector of float)

+0:?   Linker Objects

+0:?     'bigColor' (uniform 4-component vector of float)

+0:?     'BaseColor' (smooth in 4-component vector of float)

+0:?     'd' (uniform float)

+

diff --git a/Test/runtests b/Test/runtests
index 02104db..7ec9885 100644
--- a/Test/runtests
+++ b/Test/runtests
@@ -1,7 +1,7 @@
 #!/usr/bin/env bash
 
-TARGETDIR=localout
-BASEDIR=localbase
+TARGETDIR=localResults
+BASEDIR=baseResults
 
 while read t; do
     echo Running $t...
diff --git a/Test/testlist b/Test/testlist
index 3dcc609..f3d2d4b 100644
--- a/Test/testlist
+++ b/Test/testlist
@@ -44,3 +44,44 @@
 430scope.vert
 lineContinuation.vert
 numeral.frag
+../../LunarGLASS/test/aggOps.frag
+../../LunarGLASS/test/always-discard.frag
+../../LunarGLASS/test/always-discard2.frag
+../../LunarGLASS/test/conditionalDiscard.frag
+../../LunarGLASS/test/conversion.frag
+../../LunarGLASS/test/dataOut.frag
+../../LunarGLASS/test/dataOutIndirect.frag
+../../LunarGLASS/test/deepRvalue.frag
+../../LunarGLASS/test/depthOut.frag
+../../LunarGLASS/test/discard-dce.frag
+../../LunarGLASS/test/doWhileLoop.frag
+../../LunarGLASS/test/earlyReturnDiscard.frag
+../../LunarGLASS/test/flowControl.frag
+../../LunarGLASS/test/forLoop.frag
+../../LunarGLASS/test/functionCall.frag
+../../LunarGLASS/test/functionSemantics.frag
+../../LunarGLASS/test/length.frag
+../../LunarGLASS/test/localAggregates.frag
+../../LunarGLASS/test/loops.frag
+../../LunarGLASS/test/loopsArtificial.frag
+../../LunarGLASS/test/matrix.frag
+../../LunarGLASS/test/matrix2.frag
+../../LunarGLASS/test/newTexture.frag
+../../LunarGLASS/test/Operations.frag
+../../LunarGLASS/test/prepost.frag
+../../LunarGLASS/test/simpleFunctionCall.frag
+../../LunarGLASS/test/solidworks.frag
+../../LunarGLASS/test/structAssignment.frag
+../../LunarGLASS/test/structDeref.frag
+../../LunarGLASS/test/structure.frag
+../../LunarGLASS/test/swizzle.frag
+../../LunarGLASS/test/syntaxError.frag
+../../LunarGLASS/test/test.frag
+../../LunarGLASS/test/texture.frag
+../../LunarGLASS/test/types.frag
+../../LunarGLASS/test/uniformArray.frag
+../../LunarGLASS/test/variableArrayIndex.frag
+../../LunarGLASS/test/varyingArray.frag
+../../LunarGLASS/test/varyingArrayIndirect.frag
+../../LunarGLASS/test/voidFunction.frag
+../../LunarGLASS/test/whileLoop.frag