Use a specialized hash function for mangled names

The hash values used for looking up built-ins now encode the string
length and the location of parentheses as six-bit values, so that we
don't need to check for these if the hash matches.

This decreases shader_translator binary size on Windows by around 10
KB.

BUG=angleproject:2267
BUG=chromium:823856
TEST=angle_unittests

Change-Id: If8c28e1c8851750633509ec6273f556e06e91cd1
Reviewed-on: https://chromium-review.googlesource.com/973243
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
diff --git a/src/compiler/translator/ImmutableString.cpp b/src/compiler/translator/ImmutableString.cpp
index 8f26dc8..1deff2f 100644
--- a/src/compiler/translator/ImmutableString.cpp
+++ b/src/compiler/translator/ImmutableString.cpp
@@ -35,17 +35,29 @@
 const size_t ImmutableString::FowlerNollVoHash<8>::kFnvOffsetBasis =
     static_cast<size_t>(0xcbf29ce484222325ull);
 
-uint32_t ImmutableString::hash32() const
+uint32_t ImmutableString::mangledNameHash() const
 {
-    const char *data_ptr = data();
-    uint32_t hash        = static_cast<uint32_t>(FowlerNollVoHash<4>::kFnvOffsetBasis);
-    while ((*data_ptr) != '\0')
+    const char *dataPtr            = data();
+    uint32_t hash                  = static_cast<uint32_t>(FowlerNollVoHash<4>::kFnvOffsetBasis);
+    const uint32_t kMaxSixBitValue = (1u << 6) - 1u;
+    uint32_t parenLocation         = kMaxSixBitValue;
+    uint32_t index                 = 0;
+    while (dataPtr[index] != '\0')
     {
-        hash = hash ^ (*data_ptr);
+        hash = hash ^ dataPtr[index];
         hash = hash * static_cast<uint32_t>(FowlerNollVoHash<4>::kFnvPrime);
-        ++data_ptr;
+        if (dataPtr[index] == '(')
+        {
+            // We should only reach here once, since this function should not be called with invalid
+            // mangled names.
+            ASSERT(parenLocation == kMaxSixBitValue);
+            parenLocation = index;
+        }
+        ++index;
     }
-    return hash;
+    // Should not be called with strings longer than 63 characters.
+    ASSERT(index <= kMaxSixBitValue);
+    return ((hash >> 12) ^ (hash & 0xfff)) | (parenLocation << 26) | (index << 20);
 }
 
 }  // namespace sh
diff --git a/src/compiler/translator/ImmutableString.h b/src/compiler/translator/ImmutableString.h
index 301e91c..a9e1673 100644
--- a/src/compiler/translator/ImmutableString.h
+++ b/src/compiler/translator/ImmutableString.h
@@ -128,7 +128,10 @@
         }
     };
 
-    uint32_t hash32() const;
+    // This hash encodes the opening parentheses location (if any) and name length in addition to a
+    // 20-bit hash. This way the hash is more useful for lookups. The string passed in should be at
+    // most 63 characters.
+    uint32_t mangledNameHash() const;
 
   private:
     const char *mData;
diff --git a/src/compiler/translator/SymbolTable_autogen.cpp b/src/compiler/translator/SymbolTable_autogen.cpp
index 586cb9f..332cc1a 100644
--- a/src/compiler/translator/SymbolTable_autogen.cpp
+++ b/src/compiler/translator/SymbolTable_autogen.cpp
@@ -1132,54 +1132,31 @@
 
 constexpr const ImmutableString _empty("");
 constexpr const ImmutableString EmitVertex("EmitVertex");
-constexpr const ImmutableString EmitVertex_("EmitVertex(");
 constexpr const ImmutableString EndPrimitive("EndPrimitive");
-constexpr const ImmutableString EndPrimitive_("EndPrimitive(");
 constexpr const ImmutableString abs("abs");
-constexpr const ImmutableString abs_("abs(");
 constexpr const ImmutableString acos("acos");
-constexpr const ImmutableString acos_("acos(");
 constexpr const ImmutableString acosh("acosh");
-constexpr const ImmutableString acosh_("acosh(");
 constexpr const ImmutableString all("all");
-constexpr const ImmutableString all_("all(");
 constexpr const ImmutableString any("any");
-constexpr const ImmutableString any_("any(");
 constexpr const ImmutableString asin("asin");
-constexpr const ImmutableString asin_("asin(");
 constexpr const ImmutableString asinh("asinh");
-constexpr const ImmutableString asinh_("asinh(");
 constexpr const ImmutableString atan("atan");
-constexpr const ImmutableString atan_("atan(");
 constexpr const ImmutableString atanh("atanh");
-constexpr const ImmutableString atanh_("atanh(");
 constexpr const ImmutableString atomicAdd("atomicAdd");
-constexpr const ImmutableString atomicAdd_("atomicAdd(");
 constexpr const ImmutableString atomicAnd("atomicAnd");
-constexpr const ImmutableString atomicAnd_("atomicAnd(");
 constexpr const ImmutableString atomicCompSwap("atomicCompSwap");
 constexpr const ImmutableString atomicCompSwap_0C0C0C("atomicCompSwap(0C0C0C");
 constexpr const ImmutableString atomicCompSwap_0D0D0D("atomicCompSwap(0D0D0D");
 constexpr const ImmutableString atomicCounter("atomicCounter");
 constexpr const ImmutableString atomicCounterDecrement("atomicCounterDecrement");
-constexpr const ImmutableString atomicCounterDecrement_("atomicCounterDecrement(");
 constexpr const ImmutableString atomicCounterIncrement("atomicCounterIncrement");
-constexpr const ImmutableString atomicCounterIncrement_("atomicCounterIncrement(");
-constexpr const ImmutableString atomicCounter_("atomicCounter(");
 constexpr const ImmutableString atomicExchange("atomicExchange");
-constexpr const ImmutableString atomicExchange_("atomicExchange(");
 constexpr const ImmutableString atomicMax("atomicMax");
-constexpr const ImmutableString atomicMax_("atomicMax(");
 constexpr const ImmutableString atomicMin("atomicMin");
-constexpr const ImmutableString atomicMin_("atomicMin(");
 constexpr const ImmutableString atomicOr("atomicOr");
-constexpr const ImmutableString atomicOr_("atomicOr(");
 constexpr const ImmutableString atomicXor("atomicXor");
-constexpr const ImmutableString atomicXor_("atomicXor(");
 constexpr const ImmutableString barrier("barrier");
-constexpr const ImmutableString barrier_("barrier(");
 constexpr const ImmutableString bitCount("bitCount");
-constexpr const ImmutableString bitCount_("bitCount(");
 constexpr const ImmutableString bitfieldExtract("bitfieldExtract");
 constexpr const ImmutableString bitfieldExtract_0C0C0C("bitfieldExtract(0C0C0C");
 constexpr const ImmutableString bitfieldExtract_0D0C0C("bitfieldExtract(0D0C0C");
@@ -1199,9 +1176,7 @@
 constexpr const ImmutableString bitfieldInsert_3C3C0C0C("bitfieldInsert(3C3C0C0C");
 constexpr const ImmutableString bitfieldInsert_3D3D0C0C("bitfieldInsert(3D3D0C0C");
 constexpr const ImmutableString bitfieldReverse("bitfieldReverse");
-constexpr const ImmutableString bitfieldReverse_("bitfieldReverse(");
 constexpr const ImmutableString ceil("ceil");
-constexpr const ImmutableString ceil_("ceil(");
 constexpr const ImmutableString clamp("clamp");
 constexpr const ImmutableString clamp_0B0B0B("clamp(0B0B0B");
 constexpr const ImmutableString clamp_0C0C0C("clamp(0C0C0C");
@@ -1225,34 +1200,20 @@
 constexpr const ImmutableString clamp_3D0D0D("clamp(3D0D0D");
 constexpr const ImmutableString clamp_3D3D3D("clamp(3D3D3D");
 constexpr const ImmutableString cos("cos");
-constexpr const ImmutableString cos_("cos(");
 constexpr const ImmutableString cosh("cosh");
-constexpr const ImmutableString cosh_("cosh(");
 constexpr const ImmutableString cross("cross");
-constexpr const ImmutableString cross_("cross(");
 constexpr const ImmutableString dFdx("dFdx");
 constexpr const ImmutableString dFdxExt("dFdx");
-constexpr const ImmutableString dFdxExt_("dFdx(");
-constexpr const ImmutableString dFdx_("dFdx(");
 constexpr const ImmutableString dFdy("dFdy");
 constexpr const ImmutableString dFdyExt("dFdy");
-constexpr const ImmutableString dFdyExt_("dFdy(");
-constexpr const ImmutableString dFdy_("dFdy(");
 constexpr const ImmutableString degrees("degrees");
-constexpr const ImmutableString degrees_("degrees(");
 constexpr const ImmutableString determinant("determinant");
-constexpr const ImmutableString determinant_("determinant(");
 constexpr const ImmutableString diff("diff");
 constexpr const ImmutableString distance("distance");
-constexpr const ImmutableString distance_("distance(");
 constexpr const ImmutableString dot("dot");
-constexpr const ImmutableString dot_("dot(");
 constexpr const ImmutableString equal("equal");
-constexpr const ImmutableString equal_("equal(");
 constexpr const ImmutableString exp("exp");
 constexpr const ImmutableString exp2("exp2");
-constexpr const ImmutableString exp2_("exp2(");
-constexpr const ImmutableString exp_("exp(");
 constexpr const ImmutableString faceforward("faceforward");
 constexpr const ImmutableString faceforward_0B0B0B("faceforward(0B0B0B");
 constexpr const ImmutableString faceforward_1B1B1B("faceforward(1B1B1B");
@@ -1260,23 +1221,14 @@
 constexpr const ImmutableString faceforward_3B3B3B("faceforward(3B3B3B");
 constexpr const ImmutableString far("far");
 constexpr const ImmutableString findLSB("findLSB");
-constexpr const ImmutableString findLSB_("findLSB(");
 constexpr const ImmutableString findMSB("findMSB");
-constexpr const ImmutableString findMSB_("findMSB(");
 constexpr const ImmutableString floatBitsToInt("floatBitsToInt");
-constexpr const ImmutableString floatBitsToInt_("floatBitsToInt(");
 constexpr const ImmutableString floatBitsToUint("floatBitsToUint");
-constexpr const ImmutableString floatBitsToUint_("floatBitsToUint(");
 constexpr const ImmutableString floor("floor");
-constexpr const ImmutableString floor_("floor(");
 constexpr const ImmutableString fract("fract");
-constexpr const ImmutableString fract_("fract(");
 constexpr const ImmutableString frexp("frexp");
-constexpr const ImmutableString frexp_("frexp(");
 constexpr const ImmutableString fwidth("fwidth");
 constexpr const ImmutableString fwidthExt("fwidth");
-constexpr const ImmutableString fwidthExt_("fwidth(");
-constexpr const ImmutableString fwidth_("fwidth(");
 constexpr const ImmutableString gl_DepthRange("gl_DepthRange");
 constexpr const ImmutableString gl_DepthRangeParameters("gl_DepthRangeParameters");
 constexpr const ImmutableString gl_FragColor("gl_FragColor");
@@ -1360,14 +1312,10 @@
 constexpr const ImmutableString gl_in("gl_in");
 constexpr const ImmutableString greaterThan("greaterThan");
 constexpr const ImmutableString greaterThanEqual("greaterThanEqual");
-constexpr const ImmutableString greaterThanEqual_("greaterThanEqual(");
-constexpr const ImmutableString greaterThan_("greaterThan(");
 constexpr const ImmutableString groupMemoryBarrier("groupMemoryBarrier");
-constexpr const ImmutableString groupMemoryBarrier_("groupMemoryBarrier(");
 constexpr const ImmutableString imageLoad("imageLoad");
-constexpr const ImmutableString imageLoad_("imageLoad(");
+constexpr const ImmutableString imageLoad_0d1C("imageLoad(0d1C");
 constexpr const ImmutableString imageSize("imageSize");
-constexpr const ImmutableString imageSize_("imageSize(");
 constexpr const ImmutableString imageStore("imageStore");
 constexpr const ImmutableString imageStore_0c1C3B("imageStore(0c1C3B");
 constexpr const ImmutableString imageStore_0d1C3C("imageStore(0d1C3C");
@@ -1387,43 +1335,24 @@
 constexpr const ImmutableString imulExtended_2C2C2C2C("imulExtended(2C2C2C2C");
 constexpr const ImmutableString imulExtended_3C3C3C3C("imulExtended(3C3C3C3C");
 constexpr const ImmutableString intBitsToFloat("intBitsToFloat");
-constexpr const ImmutableString intBitsToFloat_("intBitsToFloat(");
 constexpr const ImmutableString inverse("inverse");
-constexpr const ImmutableString inverse_("inverse(");
 constexpr const ImmutableString inversesqrt("inversesqrt");
-constexpr const ImmutableString inversesqrt_("inversesqrt(");
 constexpr const ImmutableString isinf("isinf");
-constexpr const ImmutableString isinf_("isinf(");
 constexpr const ImmutableString isnan("isnan");
-constexpr const ImmutableString isnan_("isnan(");
 constexpr const ImmutableString ldexp("ldexp");
-constexpr const ImmutableString ldexp_("ldexp(");
 constexpr const ImmutableString length("length");
-constexpr const ImmutableString length_("length(");
 constexpr const ImmutableString lessThan("lessThan");
 constexpr const ImmutableString lessThanEqual("lessThanEqual");
-constexpr const ImmutableString lessThanEqual_("lessThanEqual(");
-constexpr const ImmutableString lessThan_("lessThan(");
 constexpr const ImmutableString log("log");
 constexpr const ImmutableString log2("log2");
-constexpr const ImmutableString log2_("log2(");
-constexpr const ImmutableString log_("log(");
 constexpr const ImmutableString matrixCompMult("matrixCompMult");
-constexpr const ImmutableString matrixCompMult_("matrixCompMult(");
 constexpr const ImmutableString max("max");
-constexpr const ImmutableString max_("max(");
 constexpr const ImmutableString memoryBarrier("memoryBarrier");
 constexpr const ImmutableString memoryBarrierAtomicCounter("memoryBarrierAtomicCounter");
-constexpr const ImmutableString memoryBarrierAtomicCounter_("memoryBarrierAtomicCounter(");
 constexpr const ImmutableString memoryBarrierBuffer("memoryBarrierBuffer");
-constexpr const ImmutableString memoryBarrierBuffer_("memoryBarrierBuffer(");
 constexpr const ImmutableString memoryBarrierImage("memoryBarrierImage");
-constexpr const ImmutableString memoryBarrierImage_("memoryBarrierImage(");
 constexpr const ImmutableString memoryBarrierShared("memoryBarrierShared");
-constexpr const ImmutableString memoryBarrierShared_("memoryBarrierShared(");
-constexpr const ImmutableString memoryBarrier_("memoryBarrier(");
 constexpr const ImmutableString min("min");
-constexpr const ImmutableString min_("min(");
 constexpr const ImmutableString mix("mix");
 constexpr const ImmutableString mix_0B0B0B("mix(0B0B0B");
 constexpr const ImmutableString mix_0B0B0E("mix(0B0B0E");
@@ -1437,51 +1366,31 @@
 constexpr const ImmutableString mix_3B3B3B("mix(3B3B3B");
 constexpr const ImmutableString mix_3B3B3E("mix(3B3B3E");
 constexpr const ImmutableString mod("mod");
-constexpr const ImmutableString mod_("mod(");
 constexpr const ImmutableString modf("modf");
-constexpr const ImmutableString modf_("modf(");
 constexpr const ImmutableString near("near");
 constexpr const ImmutableString normalize("normalize");
-constexpr const ImmutableString normalize_("normalize(");
 constexpr const ImmutableString notEqual("notEqual");
-constexpr const ImmutableString notEqual_("notEqual(");
 constexpr const ImmutableString notFunc("not");
-constexpr const ImmutableString notFunc_("not(");
 constexpr const ImmutableString outerProduct("outerProduct");
-constexpr const ImmutableString outerProduct_("outerProduct(");
 constexpr const ImmutableString packHalf2x16("packHalf2x16");
-constexpr const ImmutableString packHalf2x16_("packHalf2x16(");
 constexpr const ImmutableString packSnorm2x16("packSnorm2x16");
-constexpr const ImmutableString packSnorm2x16_("packSnorm2x16(");
 constexpr const ImmutableString packSnorm4x8("packSnorm4x8");
-constexpr const ImmutableString packSnorm4x8_("packSnorm4x8(");
 constexpr const ImmutableString packUnorm2x16("packUnorm2x16");
-constexpr const ImmutableString packUnorm2x16_("packUnorm2x16(");
 constexpr const ImmutableString packUnorm4x8("packUnorm4x8");
-constexpr const ImmutableString packUnorm4x8_("packUnorm4x8(");
 constexpr const ImmutableString pow("pow");
-constexpr const ImmutableString pow_("pow(");
 constexpr const ImmutableString radians("radians");
-constexpr const ImmutableString radians_("radians(");
 constexpr const ImmutableString reflect("reflect");
-constexpr const ImmutableString reflect_("reflect(");
 constexpr const ImmutableString refract("refract");
 constexpr const ImmutableString refract_0B0B0B("refract(0B0B0B");
 constexpr const ImmutableString refract_1B1B0B("refract(1B1B0B");
 constexpr const ImmutableString refract_2B2B0B("refract(2B2B0B");
 constexpr const ImmutableString refract_3B3B0B("refract(3B3B0B");
 constexpr const ImmutableString rgb_2_yuv("rgb_2_yuv");
-constexpr const ImmutableString rgb_2_yuv_("rgb_2_yuv(");
 constexpr const ImmutableString round("round");
 constexpr const ImmutableString roundEven("roundEven");
-constexpr const ImmutableString roundEven_("roundEven(");
-constexpr const ImmutableString round_("round(");
 constexpr const ImmutableString sign("sign");
-constexpr const ImmutableString sign_("sign(");
 constexpr const ImmutableString sin("sin");
-constexpr const ImmutableString sin_("sin(");
 constexpr const ImmutableString sinh("sinh");
-constexpr const ImmutableString sinh_("sinh(");
 constexpr const ImmutableString smoothstep("smoothstep");
 constexpr const ImmutableString smoothstep_0B0B0B("smoothstep(0B0B0B");
 constexpr const ImmutableString smoothstep_0B0B1B("smoothstep(0B0B1B");
@@ -1491,13 +1400,9 @@
 constexpr const ImmutableString smoothstep_2B2B2B("smoothstep(2B2B2B");
 constexpr const ImmutableString smoothstep_3B3B3B("smoothstep(3B3B3B");
 constexpr const ImmutableString sqrt("sqrt");
-constexpr const ImmutableString sqrt_("sqrt(");
 constexpr const ImmutableString step("step");
-constexpr const ImmutableString step_("step(");
 constexpr const ImmutableString tan("tan");
-constexpr const ImmutableString tan_("tan(");
 constexpr const ImmutableString tanh("tanh");
-constexpr const ImmutableString tanh_("tanh(");
 constexpr const ImmutableString texelFetch("texelFetch");
 constexpr const ImmutableString texelFetchOffset("texelFetchOffset");
 constexpr const ImmutableString texelFetchOffset_0H1C0C1C("texelFetchOffset(0H1C0C1C");
@@ -1541,14 +1446,10 @@
 constexpr const ImmutableString texture2DProjLodEXT_0H3B0B("texture2DProjLodEXT(0H3B0B");
 constexpr const ImmutableString texture2DProjLod_0H2B0B("texture2DProjLod(0H2B0B");
 constexpr const ImmutableString texture2DProjLod_0H3B0B("texture2DProjLod(0H3B0B");
-constexpr const ImmutableString texture2DProj_("texture2DProj(");
 constexpr const ImmutableString texture2DProj_0H2B0B("texture2DProj(0H2B0B");
 constexpr const ImmutableString texture2DProj_0H3B0B("texture2DProj(0H3B0B");
 constexpr const ImmutableString texture2DRect("texture2DRect");
 constexpr const ImmutableString texture2DRectProj("texture2DRectProj");
-constexpr const ImmutableString texture2DRectProj_("texture2DRectProj(");
-constexpr const ImmutableString texture2DRect_("texture2DRect(");
-constexpr const ImmutableString texture2D_("texture2D(");
 constexpr const ImmutableString texture2D_0H1B0B("texture2D(0H1B0B");
 constexpr const ImmutableString textureCube("textureCube");
 constexpr const ImmutableString textureCubeGradEXT("textureCubeGradEXT");
@@ -1557,7 +1458,6 @@
 constexpr const ImmutableString textureCubeLodEXT("textureCubeLodEXT");
 constexpr const ImmutableString textureCubeLodEXT_0J2B0B("textureCubeLodEXT(0J2B0B");
 constexpr const ImmutableString textureCubeLod_0J2B0B("textureCubeLod(0J2B0B");
-constexpr const ImmutableString textureCube_("textureCube(");
 constexpr const ImmutableString textureCube_0J2B0B("textureCube(0J2B0B");
 constexpr const ImmutableString textureGather("textureGather");
 constexpr const ImmutableString textureGatherOffset("textureGatherOffset");
@@ -1575,7 +1475,6 @@
 constexpr const ImmutableString textureGatherOffset_0X2B1C0C("textureGatherOffset(0X2B1C0C");
 constexpr const ImmutableString textureGatherOffset_0Z1B0B1C("textureGatherOffset(0Z1B0B1C");
 constexpr const ImmutableString textureGatherOffset_0b2B0B1C("textureGatherOffset(0b2B0B1C");
-constexpr const ImmutableString textureGather_("textureGather(");
 constexpr const ImmutableString textureGather_0H1B0C("textureGather(0H1B0C");
 constexpr const ImmutableString textureGather_0J2B0C("textureGather(0J2B0C");
 constexpr const ImmutableString textureGather_0K2B0C("textureGather(0K2B0C");
@@ -1738,7 +1637,6 @@
 constexpr const ImmutableString textureProjOffset_0V3B2C0B("textureProjOffset(0V3B2C0B");
 constexpr const ImmutableString textureProjOffset_0Z3B1C("textureProjOffset(0Z3B1C");
 constexpr const ImmutableString textureProjOffset_0Z3B1C0B("textureProjOffset(0Z3B1C0B");
-constexpr const ImmutableString textureProj_("textureProj(");
 constexpr const ImmutableString textureProj_0H2B0B("textureProj(0H2B0B");
 constexpr const ImmutableString textureProj_0H3B0B("textureProj(0H3B0B");
 constexpr const ImmutableString textureProj_0I3B0B("textureProj(0I3B0B");
@@ -1754,14 +1652,13 @@
 constexpr const ImmutableString textureProj_0V3B0B("textureProj(0V3B0B");
 constexpr const ImmutableString textureProj_0Z3B0B("textureProj(0Z3B0B");
 constexpr const ImmutableString textureSize("textureSize");
-constexpr const ImmutableString textureSize_("textureSize(");
-constexpr const ImmutableString texture_("texture(");
 constexpr const ImmutableString texture_0H1B0B("texture(0H1B0B");
 constexpr const ImmutableString texture_0I2B0B("texture(0I2B0B");
 constexpr const ImmutableString texture_0J2B0B("texture(0J2B0B");
 constexpr const ImmutableString texture_0K2B0B("texture(0K2B0B");
 constexpr const ImmutableString texture_0L1B0B("texture(0L1B0B");
 constexpr const ImmutableString texture_0M1B0B("texture(0M1B0B");
+constexpr const ImmutableString texture_0N1B("texture(0N1B");
 constexpr const ImmutableString texture_0P1B0B("texture(0P1B0B");
 constexpr const ImmutableString texture_0Q2B0B("texture(0Q2B0B");
 constexpr const ImmutableString texture_0R2B0B("texture(0R2B0B");
@@ -1773,38 +1670,29 @@
 constexpr const ImmutableString texture_0Z2B0B("texture(0Z2B0B");
 constexpr const ImmutableString texture_0a3B0B("texture(0a3B0B");
 constexpr const ImmutableString transpose("transpose");
-constexpr const ImmutableString transpose_("transpose(");
 constexpr const ImmutableString trunc("trunc");
-constexpr const ImmutableString trunc_("trunc(");
 constexpr const ImmutableString uaddCarry("uaddCarry");
 constexpr const ImmutableString uaddCarry_0D0D0D("uaddCarry(0D0D0D");
 constexpr const ImmutableString uaddCarry_1D1D1D("uaddCarry(1D1D1D");
 constexpr const ImmutableString uaddCarry_2D2D2D("uaddCarry(2D2D2D");
 constexpr const ImmutableString uaddCarry_3D3D3D("uaddCarry(3D3D3D");
 constexpr const ImmutableString uintBitsToFloat("uintBitsToFloat");
-constexpr const ImmutableString uintBitsToFloat_("uintBitsToFloat(");
 constexpr const ImmutableString umulExtended("umulExtended");
 constexpr const ImmutableString umulExtended_0D0D0D0D("umulExtended(0D0D0D0D");
 constexpr const ImmutableString umulExtended_1D1D1D1D("umulExtended(1D1D1D1D");
 constexpr const ImmutableString umulExtended_2D2D2D2D("umulExtended(2D2D2D2D");
 constexpr const ImmutableString umulExtended_3D3D3D3D("umulExtended(3D3D3D3D");
 constexpr const ImmutableString unpackHalf2x16("unpackHalf2x16");
-constexpr const ImmutableString unpackHalf2x16_("unpackHalf2x16(");
 constexpr const ImmutableString unpackSnorm2x16("unpackSnorm2x16");
-constexpr const ImmutableString unpackSnorm2x16_("unpackSnorm2x16(");
 constexpr const ImmutableString unpackSnorm4x8("unpackSnorm4x8");
-constexpr const ImmutableString unpackSnorm4x8_("unpackSnorm4x8(");
 constexpr const ImmutableString unpackUnorm2x16("unpackUnorm2x16");
-constexpr const ImmutableString unpackUnorm2x16_("unpackUnorm2x16(");
 constexpr const ImmutableString unpackUnorm4x8("unpackUnorm4x8");
-constexpr const ImmutableString unpackUnorm4x8_("unpackUnorm4x8(");
 constexpr const ImmutableString usubBorrow("usubBorrow");
 constexpr const ImmutableString usubBorrow_0D0D0D("usubBorrow(0D0D0D");
 constexpr const ImmutableString usubBorrow_1D1D1D("usubBorrow(1D1D1D");
 constexpr const ImmutableString usubBorrow_2D2D2D("usubBorrow(2D2D2D");
 constexpr const ImmutableString usubBorrow_3D3D3D("usubBorrow(3D3D3D");
 constexpr const ImmutableString yuv_2_rgb("yuv_2_rgb");
-constexpr const ImmutableString yuv_2_rgb_("yuv_2_rgb(");
 
 }  // namespace BuiltInName
 
@@ -11209,740 +11097,627 @@
 
 const TSymbol *TSymbolTable::findBuiltIn(const ImmutableString &name, int shaderVersion) const
 {
-    uint32_t nameHash = name.hash32();
+    if (name.length() > 35)
+    {
+        return nullptr;
+    }
+    uint32_t nameHash = name.mangledNameHash();
     if (shaderVersion >= 310)
     {
         switch (nameHash)
         {
-            case 0x008583a0u:
+            case 0x14a125a4u:
             {
-                if (name == BuiltInName::imageStore_0k2C3D)
+                if (name.beginsWith(BuiltInName::ldexp))
                 {
-                    return &BuiltInFunction::kFunction_imageStore_0k2C3D;
-                }
-                break;
-            }
-            case 0x00a05f04u:
-            {
-                if (name.length() == 14 && name.beginsWith(BuiltInName::imageLoad_))
-                {
-                    return &BuiltInFunction::kFunction_imageLoad_0g2C;
-                }
-                break;
-            }
-            case 0x01a83888u:
-            {
-                if (name == BuiltInName::textureGatherOffset_0S2B1C0C)
-                {
-                    return &BuiltInFunction::kFunction_textureGatherOffset_0S2B1C0C;
-                }
-                break;
-            }
-            case 0x0296d786u:
-            {
-                if (name.length() == 10 && name.beginsWith(BuiltInName::findMSB_))
-                {
-                    return &BuiltInFunction::kFunction_findMSB_3C;
-                }
-                break;
-            }
-            case 0x029d3b2bu:
-            {
-                if (name == BuiltInName::gl_MaxComputeTextureImageUnits)
-                {
-                    return mVar_gl_MaxComputeTextureImageUnits;
-                }
-                break;
-            }
-            case 0x032be593u:
-            {
-                if (name.length() == 11 && name.beginsWith(BuiltInName::bitCount_))
-                {
-                    return &BuiltInFunction::kFunction_bitCount_2D;
-                }
-                break;
-            }
-            case 0x047e2010u:
-            {
-                if (name == BuiltInName::textureGather_0U1B0C)
-                {
-                    return &BuiltInFunction::kFunction_textureGather_0U1B0C;
-                }
-                break;
-            }
-            case 0x0596dc3fu:
-            {
-                if (name.length() == 10 && name.beginsWith(BuiltInName::findMSB_))
-                {
-                    return &BuiltInFunction::kFunction_findMSB_3D;
-                }
-                break;
-            }
-            case 0x082bed72u:
-            {
-                if (name.length() == 11 && name.beginsWith(BuiltInName::bitCount_))
-                {
-                    return &BuiltInFunction::kFunction_bitCount_2C;
-                }
-                break;
-            }
-            case 0x0a15fba3u:
-            {
-                if (name == BuiltInName::bitfieldInsert_3D3D0C0C)
-                {
-                    return &BuiltInFunction::kFunction_bitfieldInsert_3D3D0C0C;
-                }
-                break;
-            }
-            case 0x0a58432du:
-            {
-                if (name == BuiltInName::imulExtended_2C2C2C2C)
-                {
-                    return &BuiltInFunction::kFunction_imulExtended_2C2C2C2C;
-                }
-                break;
-            }
-            case 0x0b8d8d0eu:
-            {
-                if (name.length() == 16 && name.beginsWith(BuiltInName::atomicCounter_))
-                {
-                    return &BuiltInFunction::kFunction_atomicCounter_0F;
-                }
-                break;
-            }
-            case 0x0f0c6701u:
-            {
-                if (name.length() == 18 && name.beginsWith(BuiltInName::bitfieldReverse_))
-                {
-                    return &BuiltInFunction::kFunction_bitfieldReverse_3D;
-                }
-                break;
-            }
-            case 0x0f61635eu:
-            {
-                if (name.length() == 18 && name.beginsWith(BuiltInName::textureGather_))
-                {
-                    return &BuiltInFunction::kFunction_textureGather_0P1B;
-                }
-                break;
-            }
-            case 0x0fab9dd9u:
-            {
-                if (name == BuiltInName::atomicCompSwap_0C0C0C)
-                {
-                    return &BuiltInFunction::kFunction_atomicCompSwap_0C0C0C;
-                }
-                break;
-            }
-            case 0x100c00dfu:
-            {
-                if (name == BuiltInName::bitfieldInsert_3C3C0C0C)
-                {
-                    return &BuiltInFunction::kFunction_bitfieldInsert_3C3C0C0C;
-                }
-                break;
-            }
-            case 0x100c6894u:
-            {
-                if (name.length() == 18 && name.beginsWith(BuiltInName::bitfieldReverse_))
-                {
-                    return &BuiltInFunction::kFunction_bitfieldReverse_3C;
-                }
-                break;
-            }
-            case 0x107540dfu:
-            {
-                if (name == BuiltInName::gl_MaxVertexAtomicCounterBuffers)
-                {
-                    return mVar_gl_MaxVertexAtomicCounterBuffers;
-                }
-                break;
-            }
-            case 0x11253fd8u:
-            {
-                if (name.length() == 11 && name.beginsWith(BuiltInName::bitCount_))
-                {
-                    return &BuiltInFunction::kFunction_bitCount_1D;
-                }
-                break;
-            }
-            case 0x11c8ccddu:
-            {
-                if (name.length() == 14 && name.beginsWith(BuiltInName::imageLoad_))
-                {
-                    return &BuiltInFunction::kFunction_imageLoad_0h2C;
-                }
-                break;
-            }
-            case 0x1230974bu:
-            {
-                if (name == BuiltInName::textureGather_0P1B0C)
-                {
-                    return &BuiltInFunction::kFunction_textureGather_0P1B0C;
-                }
-                break;
-            }
-            case 0x124f3157u:
-            {
-                if (name.length() == 10 && name.beginsWith(BuiltInName::ldexp_))
-                {
+                    ASSERT(name.length() == 10);
                     return &BuiltInFunction::kFunction_ldexp_1B1C;
                 }
                 break;
             }
-            case 0x129034f1u:
+            case 0x14a1711cu:
             {
-                if (name.length() == 10 && name.beginsWith(BuiltInName::findMSB_))
+                if (name.beginsWith(BuiltInName::frexp))
                 {
-                    return &BuiltInFunction::kFunction_findMSB_0C;
-                }
-                break;
-            }
-            case 0x13903684u:
-            {
-                if (name.length() == 10 && name.beginsWith(BuiltInName::findMSB_))
-                {
-                    return &BuiltInFunction::kFunction_findMSB_0D;
-                }
-                break;
-            }
-            case 0x16f120efu:
-            {
-                if (name.length() == 14 && name.beginsWith(BuiltInName::atomicXor_))
-                {
-                    return &BuiltInFunction::kFunction_atomicXor_0C0C;
-                }
-                break;
-            }
-            case 0x174429d9u:
-            {
-                if (name.length() == 14 && name.beginsWith(BuiltInName::atomicAdd_))
-                {
-                    return &BuiltInFunction::kFunction_atomicAdd_0C0C;
-                }
-                break;
-            }
-            case 0x17aa3bbfu:
-            {
-                if (name.length() == 10 && name.beginsWith(BuiltInName::frexp_))
-                {
+                    ASSERT(name.length() == 10);
                     return &BuiltInFunction::kFunction_frexp_2B2C;
                 }
                 break;
             }
-            case 0x181a7211u:
+            case 0x14a5788fu:
             {
-                if (name.length() == 18 && name.beginsWith(BuiltInName::textureGather_))
+                if (name.beginsWith(BuiltInName::ldexp))
                 {
-                    return &BuiltInFunction::kFunction_textureGather_0U1B;
-                }
-                break;
-            }
-            case 0x18254addu:
-            {
-                if (name.length() == 11 && name.beginsWith(BuiltInName::bitCount_))
-                {
-                    return &BuiltInFunction::kFunction_bitCount_1C;
-                }
-                break;
-            }
-            case 0x1bc77874u:
-            {
-                if (name == BuiltInName::bitfieldExtract_2C0C0C)
-                {
-                    return &BuiltInFunction::kFunction_bitfieldExtract_2C0C0C;
-                }
-                break;
-            }
-            case 0x1e102f26u:
-            {
-                if (name == BuiltInName::usubBorrow_3D3D3D)
-                {
-                    return &BuiltInFunction::kFunction_usubBorrow_3D3D3D;
-                }
-                break;
-            }
-            case 0x1ef52e53u:
-            {
-                if (name == BuiltInName::bitfieldExtract_0D0C0C)
-                {
-                    return &BuiltInFunction::kFunction_bitfieldExtract_0D0C0C;
-                }
-                break;
-            }
-            case 0x221a7f03u:
-            {
-                if (name == BuiltInName::bitfieldInsert_1C1C0C0C)
-                {
-                    return &BuiltInFunction::kFunction_bitfieldInsert_1C1C0C0C;
-                }
-                break;
-            }
-            case 0x243de78bu:
-            {
-                if (name.length() == 14 && name.beginsWith(BuiltInName::imageLoad_))
-                {
-                    return &BuiltInFunction::kFunction_imageLoad_0n2C;
-                }
-                break;
-            }
-            case 0x2691af51u:
-            {
-                if (name == BuiltInName::umulExtended_0D0D0D0D)
-                {
-                    return &BuiltInFunction::kFunction_umulExtended_0D0D0D0D;
-                }
-                break;
-            }
-            case 0x26e63818u:
-            {
-                if (name == BuiltInName::bitfieldExtract_3D0C0C)
-                {
-                    return &BuiltInFunction::kFunction_bitfieldExtract_3D0C0C;
-                }
-                break;
-            }
-            case 0x282a4a31u:
-            {
-                if (name == BuiltInName::umulExtended_3D3D3D3D)
-                {
-                    return &BuiltInFunction::kFunction_umulExtended_3D3D3D3D;
-                }
-                break;
-            }
-            case 0x28a31a5fu:
-            {
-                if (name.length() == 14 && name.beginsWith(BuiltInName::imageLoad_))
-                {
-                    return &BuiltInFunction::kFunction_imageLoad_0j2C;
-                }
-                break;
-            }
-            case 0x2bceb1c6u:
-            {
-                if (name.length() == 17 && name.beginsWith(BuiltInName::unpackSnorm4x8_))
-                {
-                    return &BuiltInFunction::kFunction_unpackSnorm4x8_0D;
-                }
-                break;
-            }
-            case 0x2c4d0487u:
-            {
-                if (name == BuiltInName::gl_MaxImageUnits)
-                {
-                    return mVar_gl_MaxImageUnits;
-                }
-                break;
-            }
-            case 0x2c65fc52u:
-            {
-                if (name == BuiltInName::bitfieldExtract_0C0C0C)
-                {
-                    return &BuiltInFunction::kFunction_bitfieldExtract_0C0C0C;
-                }
-                break;
-            }
-            case 0x2d76ad27u:
-            {
-                if (name == BuiltInName::usubBorrow_2D2D2D)
-                {
-                    return &BuiltInFunction::kFunction_usubBorrow_2D2D2D;
-                }
-                break;
-            }
-            case 0x2e198dddu:
-            {
-                if (name == BuiltInName::bitfieldExtract_3C0C0C)
-                {
-                    return &BuiltInFunction::kFunction_bitfieldExtract_3C0C0C;
-                }
-                break;
-            }
-            case 0x2e205f43u:
-            {
-                if (name == BuiltInName::texelFetch_0O1C0C)
-                {
-                    return &BuiltInFunction::kFunction_texelFetch_0O1C0C;
-                }
-                break;
-            }
-            case 0x2f35a524u:
-            {
-                if (name.length() == 14 && name.beginsWith(BuiltInName::atomicMin_))
-                {
-                    return &BuiltInFunction::kFunction_atomicMin_0C0C;
-                }
-                break;
-            }
-            case 0x301e7aa3u:
-            {
-                if (name == BuiltInName::bitfieldExtract_1C0C0C)
-                {
-                    return &BuiltInFunction::kFunction_bitfieldExtract_1C0C0C;
-                }
-                break;
-            }
-            case 0x3292a5e8u:
-            {
-                if (name.length() == 10 && name.beginsWith(BuiltInName::findMSB_))
-                {
-                    return &BuiltInFunction::kFunction_findMSB_1C;
-                }
-                break;
-            }
-            case 0x32d4301fu:
-            {
-                if (name.length() == 19 && name.beginsWith(BuiltInName::atomicExchange_))
-                {
-                    return &BuiltInFunction::kFunction_atomicExchange_0D0D;
-                }
-                break;
-            }
-            case 0x361fe182u:
-            {
-                if (name == BuiltInName::gl_MaxGeometryTextureImageUnits)
-                {
-                    return mVar_gl_MaxGeometryTextureImageUnits;
-                }
-                break;
-            }
-            case 0x3620853du:
-            {
-                if (name == BuiltInName::gl_MaxGeometryOutputVertices)
-                {
-                    return mVar_gl_MaxGeometryOutputVertices;
-                }
-                break;
-            }
-            case 0x36e65c71u:
-            {
-                if (name == BuiltInName::textureGather_0b2B0B)
-                {
-                    return &BuiltInFunction::kFunction_textureGather_0b2B0B;
-                }
-                break;
-            }
-            case 0x36e78b70u:
-            {
-                if (name == BuiltInName::textureGather_0X2B0C)
-                {
-                    return &BuiltInFunction::kFunction_textureGather_0X2B0C;
-                }
-                break;
-            }
-            case 0x3727ba41u:
-            {
-                if (name.length() == 11 && name.beginsWith(BuiltInName::bitCount_))
-                {
-                    return &BuiltInFunction::kFunction_bitCount_0D;
-                }
-                break;
-            }
-            case 0x37f0f1d0u:
-            {
-                if (name == BuiltInName::gl_MaxCombinedImageUniforms)
-                {
-                    return mVar_gl_MaxCombinedImageUniforms;
-                }
-                break;
-            }
-            case 0x380ee623u:
-            {
-                if (name.length() == 18 && name.beginsWith(BuiltInName::bitfieldReverse_))
-                {
-                    return &BuiltInFunction::kFunction_bitfieldReverse_0C;
-                }
-                break;
-            }
-            case 0x3827bbd4u:
-            {
-                if (name.length() == 11 && name.beginsWith(BuiltInName::bitCount_))
-                {
-                    return &BuiltInFunction::kFunction_bitCount_0C;
-                }
-                break;
-            }
-            case 0x38ed38e5u:
-            {
-                if (name == BuiltInName::textureGatherOffset_0X2B1C0C)
-                {
-                    return &BuiltInFunction::kFunction_textureGatherOffset_0X2B1C0C;
-                }
-                break;
-            }
-            case 0x38ee90d7u:
-            {
-                if (name == BuiltInName::textureGatherOffset_0P1B1C)
-                {
-                    return &BuiltInFunction::kFunction_textureGatherOffset_0P1B1C;
-                }
-                break;
-            }
-            case 0x3992b0edu:
-            {
-                if (name.length() == 10 && name.beginsWith(BuiltInName::findMSB_))
-                {
-                    return &BuiltInFunction::kFunction_findMSB_1D;
-                }
-                break;
-            }
-            case 0x3d0eee02u:
-            {
-                if (name.length() == 18 && name.beginsWith(BuiltInName::bitfieldReverse_))
-                {
-                    return &BuiltInFunction::kFunction_bitfieldReverse_0D;
-                }
-                break;
-            }
-            case 0x3d7510bbu:
-            {
-                if (name == BuiltInName::bitfieldInsert_1D1D0C0C)
-                {
-                    return &BuiltInFunction::kFunction_bitfieldInsert_1D1D0C0C;
-                }
-                break;
-            }
-            case 0x3d856f72u:
-            {
-                if (name == BuiltInName::gl_MaxCombinedAtomicCounterBuffers)
-                {
-                    return mVar_gl_MaxCombinedAtomicCounterBuffers;
-                }
-                break;
-            }
-            case 0x3dc1da39u:
-            {
-                if (name == BuiltInName::gl_MaxGeometryImageUniforms)
-                {
-                    return mVar_gl_MaxGeometryImageUniforms;
-                }
-                break;
-            }
-            case 0x3f682f01u:
-            {
-                if (name == BuiltInName::textureGatherOffset_0K2B1C)
-                {
-                    return &BuiltInFunction::kFunction_textureGatherOffset_0K2B1C;
-                }
-                break;
-            }
-            case 0x449a297fu:
-            {
-                if (name.length() == 13 && name.beginsWith(BuiltInName::atomicOr_))
-                {
-                    return &BuiltInFunction::kFunction_atomicOr_0D0D;
-                }
-                break;
-            }
-            case 0x4591b147u:
-            {
-                if (name == BuiltInName::gl_MaxFragmentAtomicCounters)
-                {
-                    return mVar_gl_MaxFragmentAtomicCounters;
-                }
-                break;
-            }
-            case 0x48923c61u:
-            {
-                if (name.length() == 14 && name.beginsWith(BuiltInName::atomicAdd_))
-                {
-                    return &BuiltInFunction::kFunction_atomicAdd_0D0D;
-                }
-                break;
-            }
-            case 0x4cbd309du:
-            {
-                if (name == BuiltInName::gl_MaxVertexAtomicCounters)
-                {
-                    return mVar_gl_MaxVertexAtomicCounters;
-                }
-                break;
-            }
-            case 0x4d3ff831u:
-            {
-                if (name == BuiltInName::umulExtended_2D2D2D2D)
-                {
-                    return &BuiltInFunction::kFunction_umulExtended_2D2D2D2D;
-                }
-                break;
-            }
-            case 0x50828f41u:
-            {
-                if (name == BuiltInName::bitfieldExtract_2D0C0C)
-                {
-                    return &BuiltInFunction::kFunction_bitfieldExtract_2D0C0C;
-                }
-                break;
-            }
-            case 0x50a3ba69u:
-            {
-                if (name == BuiltInName::textureGatherOffset_0S2B1C)
-                {
-                    return &BuiltInFunction::kFunction_textureGatherOffset_0S2B1C;
-                }
-                break;
-            }
-            case 0x529504a4u:
-            {
-                if (name == BuiltInName::atomicCompSwap_0D0D0D)
-                {
-                    return &BuiltInFunction::kFunction_atomicCompSwap_0D0D0D;
-                }
-                break;
-            }
-            case 0x551515f4u:
-            {
-                if (name == BuiltInName::gl_MaxComputeImageUniforms)
-                {
-                    return mVar_gl_MaxComputeImageUniforms;
-                }
-                break;
-            }
-            case 0x56a8a0b4u:
-            {
-                if (name == BuiltInName::usubBorrow_1D1D1D)
-                {
-                    return &BuiltInFunction::kFunction_usubBorrow_1D1D1D;
-                }
-                break;
-            }
-            case 0x573d1826u:
-            {
-                if (name.length() == 18 && name.beginsWith(BuiltInName::textureGather_))
-                {
-                    return &BuiltInFunction::kFunction_textureGather_0H1B;
-                }
-                break;
-            }
-            case 0x57b9431bu:
-            {
-                if (name.length() == 10 && name.beginsWith(BuiltInName::ldexp_))
-                {
+                    ASSERT(name.length() == 10);
                     return &BuiltInFunction::kFunction_ldexp_0B0C;
                 }
                 break;
             }
-            case 0x59490119u:
+            case 0x14a7dfddu:
             {
-                if (name == BuiltInName::textureGatherOffset_0U1B1C0C)
+                if (name.beginsWith(BuiltInName::frexp))
                 {
-                    return &BuiltInFunction::kFunction_textureGatherOffset_0U1B1C0C;
+                    ASSERT(name.length() == 10);
+                    return &BuiltInFunction::kFunction_frexp_3B3C;
                 }
                 break;
             }
-            case 0x5aeafb40u:
+            case 0x14a941e1u:
             {
-                if (name == BuiltInName::gl_MaxAtomicCounterBindings)
+                if (name.beginsWith(BuiltInName::ldexp))
                 {
-                    return mVar_gl_MaxAtomicCounterBindings;
+                    ASSERT(name.length() == 10);
+                    return &BuiltInFunction::kFunction_ldexp_2B2C;
                 }
                 break;
             }
-            case 0x5ba8f703u:
+            case 0x14aa386au:
             {
-                if (name == BuiltInName::imageStore_0d1C3C)
+                if (name.beginsWith(BuiltInName::frexp))
                 {
-                    return &BuiltInFunction::kFunction_imageStore_0d1C3C;
+                    ASSERT(name.length() == 10);
+                    return &BuiltInFunction::kFunction_frexp_1B1C;
                 }
                 break;
             }
-            case 0x5e97fd5au:
+            case 0x14af3af7u:
             {
-                if (name.length() == 18 && name.beginsWith(BuiltInName::textureGather_))
+                if (name.beginsWith(BuiltInName::frexp))
                 {
-                    return &BuiltInFunction::kFunction_textureGather_0a2B;
+                    ASSERT(name.length() == 10);
+                    return &BuiltInFunction::kFunction_frexp_0B0C;
                 }
                 break;
             }
-            case 0x602a3963u:
+            case 0x14afab5au:
             {
-                if (name.length() == 11 && name.beginsWith(BuiltInName::bitCount_))
+                if (name.beginsWith(BuiltInName::ldexp))
                 {
+                    ASSERT(name.length() == 10);
+                    return &BuiltInFunction::kFunction_ldexp_3B3C;
+                }
+                break;
+            }
+            case 0x1ca02eebu:
+            {
+                if (name.beginsWith(BuiltInName::findMSB))
+                {
+                    ASSERT(name.length() == 10);
+                    return &BuiltInFunction::kFunction_findMSB_3C;
+                }
+                break;
+            }
+            case 0x1ca05552u:
+            {
+                if (name.beginsWith(BuiltInName::findMSB))
+                {
+                    ASSERT(name.length() == 10);
+                    return &BuiltInFunction::kFunction_findMSB_3D;
+                }
+                break;
+            }
+            case 0x1ca12df2u:
+            {
+                if (name.beginsWith(BuiltInName::findMSB))
+                {
+                    ASSERT(name.length() == 10);
+                    return &BuiltInFunction::kFunction_findMSB_0C;
+                }
+                break;
+            }
+            case 0x1ca13f87u:
+            {
+                if (name.beginsWith(BuiltInName::findMSB))
+                {
+                    ASSERT(name.length() == 10);
+                    return &BuiltInFunction::kFunction_findMSB_0D;
+                }
+                break;
+            }
+            case 0x1ca32cc2u:
+            {
+                if (name.beginsWith(BuiltInName::findMSB))
+                {
+                    ASSERT(name.length() == 10);
+                    return &BuiltInFunction::kFunction_findMSB_1C;
+                }
+                break;
+            }
+            case 0x1ca399c6u:
+            {
+                if (name.beginsWith(BuiltInName::findMSB))
+                {
+                    ASSERT(name.length() == 10);
+                    return &BuiltInFunction::kFunction_findMSB_1D;
+                }
+                break;
+            }
+            case 0x1ca9155eu:
+            {
+                if (name.beginsWith(BuiltInName::findLSB))
+                {
+                    ASSERT(name.length() == 10);
+                    return &BuiltInFunction::kFunction_findLSB_2C;
+                }
+                break;
+            }
+            case 0x1ca94816u:
+            {
+                if (name.beginsWith(BuiltInName::findLSB))
+                {
+                    ASSERT(name.length() == 10);
+                    return &BuiltInFunction::kFunction_findLSB_2D;
+                }
+                break;
+            }
+            case 0x1caa1274u:
+            {
+                if (name.beginsWith(BuiltInName::findLSB))
+                {
+                    ASSERT(name.length() == 10);
+                    return &BuiltInFunction::kFunction_findLSB_1C;
+                }
+                break;
+            }
+            case 0x1caa21e1u:
+            {
+                if (name.beginsWith(BuiltInName::findLSB))
+                {
+                    ASSERT(name.length() == 10);
+                    return &BuiltInFunction::kFunction_findLSB_1D;
+                }
+                break;
+            }
+            case 0x1cac1124u:
+            {
+                if (name.beginsWith(BuiltInName::findLSB))
+                {
+                    ASSERT(name.length() == 10);
+                    return &BuiltInFunction::kFunction_findLSB_0C;
+                }
+                break;
+            }
+            case 0x1cac8e20u:
+            {
+                if (name.beginsWith(BuiltInName::findLSB))
+                {
+                    ASSERT(name.length() == 10);
+                    return &BuiltInFunction::kFunction_findLSB_0D;
+                }
+                break;
+            }
+            case 0x1cad7c7bu:
+            {
+                if (name.beginsWith(BuiltInName::findMSB))
+                {
+                    ASSERT(name.length() == 10);
+                    return &BuiltInFunction::kFunction_findMSB_2D;
+                }
+                break;
+            }
+            case 0x1cada0b2u:
+            {
+                if (name.beginsWith(BuiltInName::findMSB))
+                {
+                    ASSERT(name.length() == 10);
+                    return &BuiltInFunction::kFunction_findMSB_2C;
+                }
+                break;
+            }
+            case 0x1cae685au:
+            {
+                if (name.beginsWith(BuiltInName::findLSB))
+                {
+                    ASSERT(name.length() == 10);
+                    return &BuiltInFunction::kFunction_findLSB_3D;
+                }
+                break;
+            }
+            case 0x1cae9c83u:
+            {
+                if (name.beginsWith(BuiltInName::findLSB))
+                {
+                    ASSERT(name.length() == 10);
+                    return &BuiltInFunction::kFunction_findLSB_3C;
+                }
+                break;
+            }
+            case 0x20b0372du:
+            {
+                if (name.beginsWith(BuiltInName::bitCount))
+                {
+                    ASSERT(name.length() == 11);
+                    return &BuiltInFunction::kFunction_bitCount_2D;
+                }
+                break;
+            }
+            case 0x20b08fccu:
+            {
+                if (name.beginsWith(BuiltInName::bitCount))
+                {
+                    ASSERT(name.length() == 11);
+                    return &BuiltInFunction::kFunction_bitCount_2C;
+                }
+                break;
+            }
+            case 0x20b11d8bu:
+            {
+                if (name.beginsWith(BuiltInName::bitCount))
+                {
+                    ASSERT(name.length() == 11);
+                    return &BuiltInFunction::kFunction_bitCount_1D;
+                }
+                break;
+            }
+            case 0x20b18889u:
+            {
+                if (name.beginsWith(BuiltInName::bitCount))
+                {
+                    ASSERT(name.length() == 11);
+                    return &BuiltInFunction::kFunction_bitCount_1C;
+                }
+                break;
+            }
+            case 0x20b3783au:
+            {
+                if (name.beginsWith(BuiltInName::bitCount))
+                {
+                    ASSERT(name.length() == 11);
+                    return &BuiltInFunction::kFunction_bitCount_0D;
+                }
+                break;
+            }
+            case 0x20b389afu:
+            {
+                if (name.beginsWith(BuiltInName::bitCount))
+                {
+                    ASSERT(name.length() == 11);
+                    return &BuiltInFunction::kFunction_bitCount_0C;
+                }
+                break;
+            }
+            case 0x20b60bc0u:
+            {
+                if (name.beginsWith(BuiltInName::bitCount))
+                {
+                    ASSERT(name.length() == 11);
                     return &BuiltInFunction::kFunction_bitCount_3C;
                 }
                 break;
             }
-            case 0x62f2ce12u:
+            case 0x20b653e6u:
             {
-                if (name.length() == 14 && name.beginsWith(BuiltInName::imageLoad_))
+                if (name.beginsWith(BuiltInName::bitCount))
                 {
-                    return &BuiltInFunction::kFunction_imageLoad_0m2C;
-                }
-                break;
-            }
-            case 0x652a4142u:
-            {
-                if (name.length() == 11 && name.beginsWith(BuiltInName::bitCount_))
-                {
+                    ASSERT(name.length() == 11);
                     return &BuiltInFunction::kFunction_bitCount_3D;
                 }
                 break;
             }
-            case 0x68f37977u:
+            case 0x20d440ddu:
             {
-                if (name.length() == 19 && name.beginsWith(BuiltInName::atomicExchange_))
+                if (name.beginsWith(BuiltInName::atomicOr))
                 {
-                    return &BuiltInFunction::kFunction_atomicExchange_0C0C;
+                    ASSERT(name.length() == 13);
+                    return &BuiltInFunction::kFunction_atomicOr_0D0D;
                 }
                 break;
             }
-            case 0x6b51f121u:
+            case 0x20d79994u:
             {
-                if (name == BuiltInName::umulExtended_1D1D1D1D)
+                if (name.beginsWith(BuiltInName::atomicOr))
                 {
-                    return &BuiltInFunction::kFunction_umulExtended_1D1D1D1D;
+                    ASSERT(name.length() == 13);
+                    return &BuiltInFunction::kFunction_atomicOr_0C0C;
                 }
                 break;
             }
-            case 0x6bd9dd3bu:
+            case 0x24cb34d4u:
             {
-                if (name == BuiltInName::bitfieldInsert_0D0D0C0C)
+                if (name.beginsWith(BuiltInName::imageSize))
                 {
-                    return &BuiltInFunction::kFunction_bitfieldInsert_0D0D0C0C;
+                    ASSERT(name.length() == 12);
+                    return &BuiltInFunction::kFunction_imageSize_0c;
                 }
                 break;
             }
-            case 0x6c195e87u:
+            case 0x24cb7e98u:
             {
-                if (name.length() == 14 && name.beginsWith(BuiltInName::imageLoad_))
+                if (name.beginsWith(BuiltInName::imageSize))
                 {
+                    ASSERT(name.length() == 12);
+                    return &BuiltInFunction::kFunction_imageSize_0g;
+                }
+                break;
+            }
+            case 0x24cb8f2bu:
+            {
+                if (name.beginsWith(BuiltInName::imageSize))
+                {
+                    ASSERT(name.length() == 12);
+                    return &BuiltInFunction::kFunction_imageSize_0f;
+                }
+                break;
+            }
+            case 0x24cb9d46u:
+            {
+                if (name.beginsWith(BuiltInName::imageSize))
+                {
+                    ASSERT(name.length() == 12);
+                    return &BuiltInFunction::kFunction_imageSize_0e;
+                }
+                break;
+            }
+            case 0x24cba3d0u:
+            {
+                if (name.beginsWith(BuiltInName::imageSize))
+                {
+                    ASSERT(name.length() == 12);
+                    return &BuiltInFunction::kFunction_imageSize_0d;
+                }
+                break;
+            }
+            case 0x24cbb06du:
+            {
+                if (name.beginsWith(BuiltInName::imageSize))
+                {
+                    ASSERT(name.length() == 12);
+                    return &BuiltInFunction::kFunction_imageSize_0k;
+                }
+                break;
+            }
+            case 0x24cbc6feu:
+            {
+                if (name.beginsWith(BuiltInName::imageSize))
+                {
+                    ASSERT(name.length() == 12);
+                    return &BuiltInFunction::kFunction_imageSize_0j;
+                }
+                break;
+            }
+            case 0x24cbd70bu:
+            {
+                if (name.beginsWith(BuiltInName::imageSize))
+                {
+                    ASSERT(name.length() == 12);
+                    return &BuiltInFunction::kFunction_imageSize_0i;
+                }
+                break;
+            }
+            case 0x24cbe5a4u:
+            {
+                if (name.beginsWith(BuiltInName::imageSize))
+                {
+                    ASSERT(name.length() == 12);
+                    return &BuiltInFunction::kFunction_imageSize_0h;
+                }
+                break;
+            }
+            case 0x24cc0842u:
+            {
+                if (name.beginsWith(BuiltInName::imageSize))
+                {
+                    ASSERT(name.length() == 12);
+                    return &BuiltInFunction::kFunction_imageSize_0n;
+                }
+                break;
+            }
+            case 0x24cc1edfu:
+            {
+                if (name.beginsWith(BuiltInName::imageSize))
+                {
+                    ASSERT(name.length() == 12);
+                    return &BuiltInFunction::kFunction_imageSize_0m;
+                }
+                break;
+            }
+            case 0x24cc2f68u:
+            {
+                if (name.beginsWith(BuiltInName::imageSize))
+                {
+                    ASSERT(name.length() == 12);
+                    return &BuiltInFunction::kFunction_imageSize_0l;
+                }
+                break;
+            }
+            case 0x24e00501u:
+            {
+                if (name.beginsWith(BuiltInName::imageLoad))
+                {
+                    ASSERT(name.length() == 14);
+                    return &BuiltInFunction::kFunction_imageLoad_0g2C;
+                }
+                break;
+            }
+            case 0x24e11051u:
+            {
+                if (name.beginsWith(BuiltInName::imageLoad))
+                {
+                    ASSERT(name.length() == 14);
+                    return &BuiltInFunction::kFunction_imageLoad_0h2C;
+                }
+                break;
+            }
+            case 0x24e16ffdu:
+            {
+                if (name.beginsWith(BuiltInName::atomicXor))
+                {
+                    ASSERT(name.length() == 14);
+                    return &BuiltInFunction::kFunction_atomicXor_0C0C;
+                }
+                break;
+            }
+            case 0x24e17d9bu:
+            {
+                if (name.beginsWith(BuiltInName::atomicAdd))
+                {
+                    ASSERT(name.length() == 14);
+                    return &BuiltInFunction::kFunction_atomicAdd_0C0C;
+                }
+                break;
+            }
+            case 0x24e24455u:
+            {
+                if (name.beginsWith(BuiltInName::imageLoad))
+                {
+                    ASSERT(name.length() == 14);
+                    return &BuiltInFunction::kFunction_imageLoad_0n2C;
+                }
+                break;
+            }
+            case 0x24e2806eu:
+            {
+                if (name.beginsWith(BuiltInName::imageLoad))
+                {
+                    ASSERT(name.length() == 14);
+                    return &BuiltInFunction::kFunction_imageLoad_0j2C;
+                }
+                break;
+            }
+            case 0x24e2f67eu:
+            {
+                if (name.beginsWith(BuiltInName::atomicMin))
+                {
+                    ASSERT(name.length() == 14);
+                    return &BuiltInFunction::kFunction_atomicMin_0C0C;
+                }
+                break;
+            }
+            case 0x24e48542u:
+            {
+                if (name.beginsWith(BuiltInName::atomicAdd))
+                {
+                    ASSERT(name.length() == 14);
+                    return &BuiltInFunction::kFunction_atomicAdd_0D0D;
+                }
+                break;
+            }
+            case 0x24e6213eu:
+            {
+                if (name.beginsWith(BuiltInName::imageLoad))
+                {
+                    ASSERT(name.length() == 14);
+                    return &BuiltInFunction::kFunction_imageLoad_0m2C;
+                }
+                break;
+            }
+            case 0x24e6cf12u:
+            {
+                if (name.beginsWith(BuiltInName::imageLoad))
+                {
+                    ASSERT(name.length() == 14);
                     return &BuiltInFunction::kFunction_imageLoad_0c1C;
                 }
                 break;
             }
-            case 0x6c3a75d8u:
+            case 0x24e752d1u:
             {
-                if (name == BuiltInName::gl_MaxComputeUniformComponents)
-                {
-                    return mVar_gl_MaxComputeUniformComponents;
-                }
-                break;
-            }
-            case 0x6d7cd09au:
-            {
-                if (name.length() == 15 && name.beginsWith(BuiltInName::packSnorm4x8_))
-                {
-                    return &BuiltInFunction::kFunction_packSnorm4x8_3B;
-                }
-                break;
-            }
-            case 0x70f71a0bu:
-            {
-                if (name == BuiltInName::bitfieldInsert_2D2D0C0C)
-                {
-                    return &BuiltInFunction::kFunction_bitfieldInsert_2D2D0C0C;
-                }
-                break;
-            }
-            case 0x753e7136u:
-            {
-                if (name.length() == 14 && name.beginsWith(BuiltInName::imageLoad_))
+                if (name == BuiltInName::imageLoad_0d1C)
                 {
                     return &BuiltInFunction::kFunction_imageLoad_0d1C;
                 }
                 break;
             }
-            case 0x76d26c06u:
+            case 0x24e7ac0cu:
+            {
+                if (name.beginsWith(BuiltInName::atomicMax))
+                {
+                    ASSERT(name.length() == 14);
+                    return &BuiltInFunction::kFunction_atomicMax_0D0D;
+                }
+                break;
+            }
+            case 0x24e7d770u:
+            {
+                if (name.beginsWith(BuiltInName::atomicMin))
+                {
+                    ASSERT(name.length() == 14);
+                    return &BuiltInFunction::kFunction_atomicMin_0D0D;
+                }
+                break;
+            }
+            case 0x24e8de55u:
+            {
+                if (name.beginsWith(BuiltInName::imageLoad))
+                {
+                    ASSERT(name.length() == 14);
+                    return &BuiltInFunction::kFunction_imageLoad_0k2C;
+                }
+                break;
+            }
+            case 0x24e8f7afu:
+            {
+                if (name.beginsWith(BuiltInName::atomicAnd))
+                {
+                    ASSERT(name.length() == 14);
+                    return &BuiltInFunction::kFunction_atomicAnd_0C0C;
+                }
+                break;
+            }
+            case 0x24e9aaedu:
+            {
+                if (name.beginsWith(BuiltInName::imageLoad))
+                {
+                    ASSERT(name.length() == 14);
+                    return &BuiltInFunction::kFunction_imageLoad_0f2C;
+                }
+                break;
+            }
+            case 0x24ea7eeeu:
+            {
+                if (name.beginsWith(BuiltInName::imageLoad))
+                {
+                    ASSERT(name.length() == 14);
+                    return &BuiltInFunction::kFunction_imageLoad_0i2C;
+                }
+                break;
+            }
+            case 0x24ea98bbu:
+            {
+                if (name.beginsWith(BuiltInName::imageLoad))
+                {
+                    ASSERT(name.length() == 14);
+                    return &BuiltInFunction::kFunction_imageLoad_0e1C;
+                }
+                break;
+            }
+            case 0x24ec9041u:
+            {
+                if (name.beginsWith(BuiltInName::atomicAnd))
+                {
+                    ASSERT(name.length() == 14);
+                    return &BuiltInFunction::kFunction_atomicAnd_0D0D;
+                }
+                break;
+            }
+            case 0x24ece2e2u:
+            {
+                if (name.beginsWith(BuiltInName::imageLoad))
+                {
+                    ASSERT(name.length() == 14);
+                    return &BuiltInFunction::kFunction_imageLoad_0l2C;
+                }
+                break;
+            }
+            case 0x24ee0a8au:
+            {
+                if (name.beginsWith(BuiltInName::atomicXor))
+                {
+                    ASSERT(name.length() == 14);
+                    return &BuiltInFunction::kFunction_atomicXor_0D0D;
+                }
+                break;
+            }
+            case 0x24ef375bu:
+            {
+                if (name.beginsWith(BuiltInName::atomicMax))
+                {
+                    ASSERT(name.length() == 14);
+                    return &BuiltInFunction::kFunction_atomicMax_0C0C;
+                }
+                break;
+            }
+            case 0x25076120u:
             {
                 if (name == BuiltInName::uaddCarry_0D0D0D)
                 {
@@ -11950,39 +11725,896 @@
                 }
                 break;
             }
-            case 0x77ff0931u:
+            case 0x2508354bu:
             {
-                if (name.length() == 18 && name.beginsWith(BuiltInName::textureGather_))
+                if (name == BuiltInName::uaddCarry_2D2D2D)
                 {
+                    return &BuiltInFunction::kFunction_uaddCarry_2D2D2D;
+                }
+                break;
+            }
+            case 0x250850e3u:
+            {
+                if (name == BuiltInName::uaddCarry_3D3D3D)
+                {
+                    return &BuiltInFunction::kFunction_uaddCarry_3D3D3D;
+                }
+                break;
+            }
+            case 0x25086989u:
+            {
+                if (name == BuiltInName::uaddCarry_1D1D1D)
+                {
+                    return &BuiltInFunction::kFunction_uaddCarry_1D1D1D;
+                }
+                break;
+            }
+            case 0x29100bf8u:
+            {
+                if (name == BuiltInName::imageStore_0k2C3D)
+                {
+                    return &BuiltInFunction::kFunction_imageStore_0k2C3D;
+                }
+                break;
+            }
+            case 0x2911ee24u:
+            {
+                if (name == BuiltInName::usubBorrow_3D3D3D)
+                {
+                    return &BuiltInFunction::kFunction_usubBorrow_3D3D3D;
+                }
+                break;
+            }
+            case 0x2912da4du:
+            {
+                if (name == BuiltInName::usubBorrow_2D2D2D)
+                {
+                    return &BuiltInFunction::kFunction_usubBorrow_2D2D2D;
+                }
+                break;
+            }
+            case 0x2912ed46u:
+            {
+                if (name == BuiltInName::texelFetch_0O1C0C)
+                {
+                    return &BuiltInFunction::kFunction_texelFetch_0O1C0C;
+                }
+                break;
+            }
+            case 0x29156a3eu:
+            {
+                if (name == BuiltInName::usubBorrow_1D1D1D)
+                {
+                    return &BuiltInFunction::kFunction_usubBorrow_1D1D1D;
+                }
+                break;
+            }
+            case 0x2915bd8cu:
+            {
+                if (name == BuiltInName::imageStore_0d1C3C)
+                {
+                    return &BuiltInFunction::kFunction_imageStore_0d1C3C;
+                }
+                break;
+            }
+            case 0x29183d18u:
+            {
+                if (name == BuiltInName::texelFetch_0T1C0C)
+                {
+                    return &BuiltInFunction::kFunction_texelFetch_0T1C0C;
+                }
+                break;
+            }
+            case 0x29188a68u:
+            {
+                if (name == BuiltInName::imageStore_0f2C3B)
+                {
+                    return &BuiltInFunction::kFunction_imageStore_0f2C3B;
+                }
+                break;
+            }
+            case 0x291af7dcu:
+            {
+                if (name == BuiltInName::imageStore_0c1C3B)
+                {
+                    return &BuiltInFunction::kFunction_imageStore_0c1C3B;
+                }
+                break;
+            }
+            case 0x291b086bu:
+            {
+                if (name == BuiltInName::imageStore_0g2C3C)
+                {
+                    return &BuiltInFunction::kFunction_imageStore_0g2C3C;
+                }
+                break;
+            }
+            case 0x291ba62eu:
+            {
+                if (name == BuiltInName::imageStore_0l2C3B)
+                {
+                    return &BuiltInFunction::kFunction_imageStore_0l2C3B;
+                }
+                break;
+            }
+            case 0x291bb1d9u:
+            {
+                if (name == BuiltInName::texelFetch_0Y1C0C)
+                {
+                    return &BuiltInFunction::kFunction_texelFetch_0Y1C0C;
+                }
+                break;
+            }
+            case 0x291c4ce8u:
+            {
+                if (name == BuiltInName::imageStore_0m2C3C)
+                {
+                    return &BuiltInFunction::kFunction_imageStore_0m2C3C;
+                }
+                break;
+            }
+            case 0x291cf877u:
+            {
+                if (name == BuiltInName::imageStore_0j2C3C)
+                {
+                    return &BuiltInFunction::kFunction_imageStore_0j2C3C;
+                }
+                break;
+            }
+            case 0x291d8e34u:
+            {
+                if (name == BuiltInName::imageStore_0n2C3D)
+                {
+                    return &BuiltInFunction::kFunction_imageStore_0n2C3D;
+                }
+                break;
+            }
+            case 0x291e4ebau:
+            {
+                if (name == BuiltInName::imageStore_0e1C3D)
+                {
+                    return &BuiltInFunction::kFunction_imageStore_0e1C3D;
+                }
+                break;
+            }
+            case 0x291eef4cu:
+            {
+                if (name == BuiltInName::usubBorrow_0D0D0D)
+                {
+                    return &BuiltInFunction::kFunction_usubBorrow_0D0D0D;
+                }
+                break;
+            }
+            case 0x291f0ca5u:
+            {
+                if (name == BuiltInName::imageStore_0h2C3D)
+                {
+                    return &BuiltInFunction::kFunction_imageStore_0h2C3D;
+                }
+                break;
+            }
+            case 0x291fa1cau:
+            {
+                if (name == BuiltInName::imageStore_0i2C3B)
+                {
+                    return &BuiltInFunction::kFunction_imageStore_0i2C3B;
+                }
+                break;
+            }
+            case 0x30f6d757u:
+            {
+                if (name.beginsWith(BuiltInName::packSnorm4x8))
+                {
+                    ASSERT(name.length() == 15);
+                    return &BuiltInFunction::kFunction_packSnorm4x8_3B;
+                }
+                break;
+            }
+            case 0x30f8217au:
+            {
+                if (name.beginsWith(BuiltInName::packUnorm4x8))
+                {
+                    ASSERT(name.length() == 15);
+                    return &BuiltInFunction::kFunction_packUnorm4x8_3B;
+                }
+                break;
+            }
+            case 0x3150a6a9u:
+            {
+                if (name == BuiltInName::imulExtended_2C2C2C2C)
+                {
+                    return &BuiltInFunction::kFunction_imulExtended_2C2C2C2C;
+                }
+                break;
+            }
+            case 0x3152664bu:
+            {
+                if (name == BuiltInName::umulExtended_0D0D0D0D)
+                {
+                    return &BuiltInFunction::kFunction_umulExtended_0D0D0D0D;
+                }
+                break;
+            }
+            case 0x31528895u:
+            {
+                if (name == BuiltInName::umulExtended_3D3D3D3D)
+                {
+                    return &BuiltInFunction::kFunction_umulExtended_3D3D3D3D;
+                }
+                break;
+            }
+            case 0x3154dbceu:
+            {
+                if (name == BuiltInName::umulExtended_2D2D2D2D)
+                {
+                    return &BuiltInFunction::kFunction_umulExtended_2D2D2D2D;
+                }
+                break;
+            }
+            case 0x3156b43eu:
+            {
+                if (name == BuiltInName::umulExtended_1D1D1D1D)
+                {
+                    return &BuiltInFunction::kFunction_umulExtended_1D1D1D1D;
+                }
+                break;
+            }
+            case 0x31582937u:
+            {
+                if (name == BuiltInName::imulExtended_3C3C3C3C)
+                {
+                    return &BuiltInFunction::kFunction_imulExtended_3C3C3C3C;
+                }
+                break;
+            }
+            case 0x31584c20u:
+            {
+                if (name == BuiltInName::imulExtended_0C0C0C0C)
+                {
+                    return &BuiltInFunction::kFunction_imulExtended_0C0C0C0C;
+                }
+                break;
+            }
+            case 0x315ccad6u:
+            {
+                if (name == BuiltInName::imulExtended_1C1C1C1C)
+                {
+                    return &BuiltInFunction::kFunction_imulExtended_1C1C1C1C;
+                }
+                break;
+            }
+            case 0x34ea7717u:
+            {
+                if (name.beginsWith(BuiltInName::memoryBarrier))
+                {
+                    ASSERT(name.length() == 14);
+                    return &BuiltInFunction::kFunction_memoryBarrier_;
+                }
+                break;
+            }
+            case 0x3500b5d6u:
+            {
+                if (name.beginsWith(BuiltInName::atomicCounter))
+                {
+                    ASSERT(name.length() == 16);
+                    return &BuiltInFunction::kFunction_atomicCounter_0F;
+                }
+                break;
+            }
+            case 0x3520f548u:
+            {
+                if (name.beginsWith(BuiltInName::textureGather))
+                {
+                    ASSERT(name.length() == 18);
+                    return &BuiltInFunction::kFunction_textureGather_0P1B;
+                }
+                break;
+            }
+            case 0x352183b6u:
+            {
+                if (name.beginsWith(BuiltInName::textureGather))
+                {
+                    ASSERT(name.length() == 18);
+                    return &BuiltInFunction::kFunction_textureGather_0U1B;
+                }
+                break;
+            }
+            case 0x35257bf7u:
+            {
+                if (name.beginsWith(BuiltInName::textureGather))
+                {
+                    ASSERT(name.length() == 18);
+                    return &BuiltInFunction::kFunction_textureGather_0H1B;
+                }
+                break;
+            }
+            case 0x3525e425u:
+            {
+                if (name.beginsWith(BuiltInName::textureGather))
+                {
+                    ASSERT(name.length() == 18);
+                    return &BuiltInFunction::kFunction_textureGather_0a2B;
+                }
+                break;
+            }
+            case 0x352776c1u:
+            {
+                if (name.beginsWith(BuiltInName::textureGather))
+                {
+                    ASSERT(name.length() == 18);
                     return &BuiltInFunction::kFunction_textureGather_0X2B;
                 }
                 break;
             }
-            case 0x797c3e57u:
+            case 0x3527b70eu:
             {
-                if (name.length() == 13 && name.beginsWith(BuiltInName::atomicOr_))
+                if (name.beginsWith(BuiltInName::textureGather))
                 {
-                    return &BuiltInFunction::kFunction_atomicOr_0C0C;
-                }
-                break;
-            }
-            case 0x7a93e532u:
-            {
-                if (name.length() == 14 && name.beginsWith(BuiltInName::atomicMax_))
-                {
-                    return &BuiltInFunction::kFunction_atomicMax_0D0D;
-                }
-                break;
-            }
-            case 0x7bff68f8u:
-            {
-                if (name.length() == 18 && name.beginsWith(BuiltInName::textureGather_))
-                {
+                    ASSERT(name.length() == 18);
                     return &BuiltInFunction::kFunction_textureGather_0W2B;
                 }
                 break;
             }
-            case 0x7dab4220u:
+            case 0x35280d85u:
+            {
+                if (name.beginsWith(BuiltInName::textureGather))
+                {
+                    ASSERT(name.length() == 18);
+                    return &BuiltInFunction::kFunction_textureGather_0S2B;
+                }
+                break;
+            }
+            case 0x352889a7u:
+            {
+                if (name.beginsWith(BuiltInName::textureGather))
+                {
+                    ASSERT(name.length() == 18);
+                    return &BuiltInFunction::kFunction_textureGather_0K2B;
+                }
+                break;
+            }
+            case 0x352c3259u:
+            {
+                if (name.beginsWith(BuiltInName::textureGather))
+                {
+                    ASSERT(name.length() == 18);
+                    return &BuiltInFunction::kFunction_textureGather_0Z1B;
+                }
+                break;
+            }
+            case 0x352dc0eau:
+            {
+                if (name.beginsWith(BuiltInName::textureGather))
+                {
+                    ASSERT(name.length() == 18);
+                    return &BuiltInFunction::kFunction_textureGather_0b2B;
+                }
+                break;
+            }
+            case 0x352e6efdu:
+            {
+                if (name.beginsWith(BuiltInName::textureGather))
+                {
+                    ASSERT(name.length() == 18);
+                    return &BuiltInFunction::kFunction_textureGather_0R2B;
+                }
+                break;
+            }
+            case 0x352f0d8au:
+            {
+                if (name.beginsWith(BuiltInName::textureGather))
+                {
+                    ASSERT(name.length() == 18);
+                    return &BuiltInFunction::kFunction_textureGather_0J2B;
+                }
+                break;
+            }
+            case 0x354047f2u:
+            {
+                if (name == BuiltInName::textureGather_0U1B0C)
+                {
+                    return &BuiltInFunction::kFunction_textureGather_0U1B0C;
+                }
+                break;
+            }
+            case 0x35412442u:
+            {
+                if (name == BuiltInName::textureGather_0P1B0C)
+                {
+                    return &BuiltInFunction::kFunction_textureGather_0P1B0C;
+                }
+                break;
+            }
+            case 0x35436214u:
+            {
+                if (name == BuiltInName::textureGather_0b2B0B)
+                {
+                    return &BuiltInFunction::kFunction_textureGather_0b2B0B;
+                }
+                break;
+            }
+            case 0x35436508u:
+            {
+                if (name == BuiltInName::textureGather_0X2B0C)
+                {
+                    return &BuiltInFunction::kFunction_textureGather_0X2B0C;
+                }
+                break;
+            }
+            case 0x3547e2f2u:
+            {
+                if (name == BuiltInName::textureGather_0S2B0C)
+                {
+                    return &BuiltInFunction::kFunction_textureGather_0S2B0C;
+                }
+                break;
+            }
+            case 0x3549192du:
+            {
+                if (name == BuiltInName::textureGather_0J2B0C)
+                {
+                    return &BuiltInFunction::kFunction_textureGather_0J2B0C;
+                }
+                break;
+            }
+            case 0x35498b6fu:
+            {
+                if (name == BuiltInName::textureGather_0H1B0C)
+                {
+                    return &BuiltInFunction::kFunction_textureGather_0H1B0C;
+                }
+                break;
+            }
+            case 0x354af264u:
+            {
+                if (name == BuiltInName::textureGather_0a2B0B)
+                {
+                    return &BuiltInFunction::kFunction_textureGather_0a2B0B;
+                }
+                break;
+            }
+            case 0x354b0049u:
+            {
+                if (name == BuiltInName::textureGather_0R2B0C)
+                {
+                    return &BuiltInFunction::kFunction_textureGather_0R2B0C;
+                }
+                break;
+            }
+            case 0x354bc853u:
+            {
+                if (name == BuiltInName::textureGather_0Z1B0B)
+                {
+                    return &BuiltInFunction::kFunction_textureGather_0Z1B0B;
+                }
+                break;
+            }
+            case 0x354d8e0fu:
+            {
+                if (name == BuiltInName::textureGather_0W2B0C)
+                {
+                    return &BuiltInFunction::kFunction_textureGather_0W2B0C;
+                }
+                break;
+            }
+            case 0x354f052bu:
+            {
+                if (name == BuiltInName::textureGather_0K2B0C)
+                {
+                    return &BuiltInFunction::kFunction_textureGather_0K2B0C;
+                }
+                break;
+            }
+            case 0x3912bd2du:
+            {
+                if (name.beginsWith(BuiltInName::unpackSnorm4x8))
+                {
+                    ASSERT(name.length() == 17);
+                    return &BuiltInFunction::kFunction_unpackSnorm4x8_0D;
+                }
+                break;
+            }
+            case 0x3917e321u:
+            {
+                if (name.beginsWith(BuiltInName::unpackUnorm4x8))
+                {
+                    ASSERT(name.length() == 17);
+                    return &BuiltInFunction::kFunction_unpackUnorm4x8_0D;
+                }
+                break;
+            }
+            case 0x39332d5cu:
+            {
+                if (name.beginsWith(BuiltInName::atomicExchange))
+                {
+                    ASSERT(name.length() == 19);
+                    return &BuiltInFunction::kFunction_atomicExchange_0D0D;
+                }
+                break;
+            }
+            case 0x39368640u:
+            {
+                if (name.beginsWith(BuiltInName::atomicExchange))
+                {
+                    ASSERT(name.length() == 19);
+                    return &BuiltInFunction::kFunction_atomicExchange_0C0C;
+                }
+                break;
+            }
+            case 0x3950f760u:
+            {
+                if (name == BuiltInName::atomicCompSwap_0C0C0C)
+                {
+                    return &BuiltInFunction::kFunction_atomicCompSwap_0C0C0C;
+                }
+                break;
+            }
+            case 0x39552df4u:
+            {
+                if (name == BuiltInName::atomicCompSwap_0D0D0D)
+                {
+                    return &BuiltInFunction::kFunction_atomicCompSwap_0D0D0D;
+                }
+                break;
+            }
+            case 0x3970aafcu:
+            {
+                if (name == BuiltInName::bitfieldInsert_3D3D0C0C)
+                {
+                    return &BuiltInFunction::kFunction_bitfieldInsert_3D3D0C0C;
+                }
+                break;
+            }
+            case 0x3971001fu:
+            {
+                if (name == BuiltInName::bitfieldInsert_3C3C0C0C)
+                {
+                    return &BuiltInFunction::kFunction_bitfieldInsert_3C3C0C0C;
+                }
+                break;
+            }
+            case 0x39722ea4u:
+            {
+                if (name == BuiltInName::bitfieldInsert_1C1C0C0C)
+                {
+                    return &BuiltInFunction::kFunction_bitfieldInsert_1C1C0C0C;
+                }
+                break;
+            }
+            case 0x3973d7eau:
+            {
+                if (name == BuiltInName::bitfieldInsert_1D1D0C0C)
+                {
+                    return &BuiltInFunction::kFunction_bitfieldInsert_1D1D0C0C;
+                }
+                break;
+            }
+            case 0x3976b0a6u:
+            {
+                if (name == BuiltInName::bitfieldInsert_0D0D0C0C)
+                {
+                    return &BuiltInFunction::kFunction_bitfieldInsert_0D0D0C0C;
+                }
+                break;
+            }
+            case 0x3977057au:
+            {
+                if (name == BuiltInName::bitfieldInsert_2D2D0C0C)
+                {
+                    return &BuiltInFunction::kFunction_bitfieldInsert_2D2D0C0C;
+                }
+                break;
+            }
+            case 0x397bc0a4u:
+            {
+                if (name == BuiltInName::bitfieldInsert_0C0C0C0C)
+                {
+                    return &BuiltInFunction::kFunction_bitfieldInsert_0C0C0C0C;
+                }
+                break;
+            }
+            case 0x397f475fu:
+            {
+                if (name == BuiltInName::bitfieldInsert_2C2C0C0C)
+                {
+                    return &BuiltInFunction::kFunction_bitfieldInsert_2C2C0C0C;
+                }
+                break;
+            }
+            case 0x3d20f7c7u:
+            {
+                if (name.beginsWith(BuiltInName::bitfieldReverse))
+                {
+                    ASSERT(name.length() == 18);
+                    return &BuiltInFunction::kFunction_bitfieldReverse_3D;
+                }
+                break;
+            }
+            case 0x3d210852u:
+            {
+                if (name.beginsWith(BuiltInName::bitfieldReverse))
+                {
+                    ASSERT(name.length() == 18);
+                    return &BuiltInFunction::kFunction_bitfieldReverse_3C;
+                }
+                break;
+            }
+            case 0x3d2386cdu:
+            {
+                if (name.beginsWith(BuiltInName::bitfieldReverse))
+                {
+                    ASSERT(name.length() == 18);
+                    return &BuiltInFunction::kFunction_bitfieldReverse_0C;
+                }
+                break;
+            }
+            case 0x3d23deecu:
+            {
+                if (name.beginsWith(BuiltInName::bitfieldReverse))
+                {
+                    ASSERT(name.length() == 18);
+                    return &BuiltInFunction::kFunction_bitfieldReverse_0D;
+                }
+                break;
+            }
+            case 0x3d2db471u:
+            {
+                if (name.beginsWith(BuiltInName::bitfieldReverse))
+                {
+                    ASSERT(name.length() == 18);
+                    return &BuiltInFunction::kFunction_bitfieldReverse_1D;
+                }
+                break;
+            }
+            case 0x3d2e0c10u:
+            {
+                if (name.beginsWith(BuiltInName::bitfieldReverse))
+                {
+                    ASSERT(name.length() == 18);
+                    return &BuiltInFunction::kFunction_bitfieldReverse_1C;
+                }
+                break;
+            }
+            case 0x3d2e9c06u:
+            {
+                if (name.beginsWith(BuiltInName::bitfieldReverse))
+                {
+                    ASSERT(name.length() == 18);
+                    return &BuiltInFunction::kFunction_bitfieldReverse_2D;
+                }
+                break;
+            }
+            case 0x3d2f0702u:
+            {
+                if (name.beginsWith(BuiltInName::bitfieldReverse))
+                {
+                    ASSERT(name.length() == 18);
+                    return &BuiltInFunction::kFunction_bitfieldReverse_2C;
+                }
+                break;
+            }
+            case 0x3d61b403u:
+            {
+                if (name == BuiltInName::bitfieldExtract_2C0C0C)
+                {
+                    return &BuiltInFunction::kFunction_bitfieldExtract_2C0C0C;
+                }
+                break;
+            }
+            case 0x3d61e101u:
+            {
+                if (name == BuiltInName::bitfieldExtract_0D0C0C)
+                {
+                    return &BuiltInFunction::kFunction_bitfieldExtract_0D0C0C;
+                }
+                break;
+            }
+            case 0x3d62667bu:
+            {
+                if (name == BuiltInName::bitfieldExtract_3D0C0C)
+                {
+                    return &BuiltInFunction::kFunction_bitfieldExtract_3D0C0C;
+                }
+                break;
+            }
+            case 0x3d62ca0du:
+            {
+                if (name == BuiltInName::bitfieldExtract_0C0C0C)
+                {
+                    return &BuiltInFunction::kFunction_bitfieldExtract_0C0C0C;
+                }
+                break;
+            }
+            case 0x3d62ec45u:
+            {
+                if (name == BuiltInName::bitfieldExtract_3C0C0C)
+                {
+                    return &BuiltInFunction::kFunction_bitfieldExtract_3C0C0C;
+                }
+                break;
+            }
+            case 0x3d630b44u:
+            {
+                if (name == BuiltInName::bitfieldExtract_1C0C0C)
+                {
+                    return &BuiltInFunction::kFunction_bitfieldExtract_1C0C0C;
+                }
+                break;
+            }
+            case 0x3d650769u:
+            {
+                if (name == BuiltInName::bitfieldExtract_2D0C0C)
+                {
+                    return &BuiltInFunction::kFunction_bitfieldExtract_2D0C0C;
+                }
+                break;
+            }
+            case 0x3d6bea76u:
+            {
+                if (name == BuiltInName::bitfieldExtract_1D0C0C)
+                {
+                    return &BuiltInFunction::kFunction_bitfieldExtract_1D0C0C;
+                }
+                break;
+            }
+            case 0x493cdf59u:
+            {
+                if (name.beginsWith(BuiltInName::memoryBarrierImage))
+                {
+                    ASSERT(name.length() == 19);
+                    return &BuiltInFunction::kFunction_memoryBarrierImage_;
+                }
+                break;
+            }
+            case 0x4d4ffc7cu:
+            {
+                if (name.beginsWith(BuiltInName::memoryBarrierBuffer))
+                {
+                    ASSERT(name.length() == 20);
+                    return &BuiltInFunction::kFunction_memoryBarrierBuffer_;
+                }
+                break;
+            }
+            case 0x4da38e3eu:
+            {
+                if (name == BuiltInName::textureGatherOffset_0P1B1C)
+                {
+                    return &BuiltInFunction::kFunction_textureGatherOffset_0P1B1C;
+                }
+                break;
+            }
+            case 0x4da3f983u:
+            {
+                if (name == BuiltInName::textureGatherOffset_0K2B1C)
+                {
+                    return &BuiltInFunction::kFunction_textureGatherOffset_0K2B1C;
+                }
+                break;
+            }
+            case 0x4da50052u:
+            {
+                if (name == BuiltInName::textureGatherOffset_0S2B1C)
+                {
+                    return &BuiltInFunction::kFunction_textureGatherOffset_0S2B1C;
+                }
+                break;
+            }
+            case 0x4dae37ebu:
+            {
+                if (name == BuiltInName::textureGatherOffset_0X2B1C)
+                {
+                    return &BuiltInFunction::kFunction_textureGatherOffset_0X2B1C;
+                }
+                break;
+            }
+            case 0x4dae3f95u:
+            {
+                if (name == BuiltInName::textureGatherOffset_0H1B1C)
+                {
+                    return &BuiltInFunction::kFunction_textureGatherOffset_0H1B1C;
+                }
+                break;
+            }
+            case 0x4daf95ffu:
+            {
+                if (name == BuiltInName::textureGatherOffset_0U1B1C)
+                {
+                    return &BuiltInFunction::kFunction_textureGatherOffset_0U1B1C;
+                }
+                break;
+            }
+            case 0x4dc0120bu:
+            {
+                if (name == BuiltInName::textureGatherOffset_0S2B1C0C)
+                {
+                    return &BuiltInFunction::kFunction_textureGatherOffset_0S2B1C0C;
+                }
+                break;
+            }
+            case 0x4dc38636u:
+            {
+                if (name == BuiltInName::textureGatherOffset_0X2B1C0C)
+                {
+                    return &BuiltInFunction::kFunction_textureGatherOffset_0X2B1C0C;
+                }
+                break;
+            }
+            case 0x4dc59589u:
+            {
+                if (name == BuiltInName::textureGatherOffset_0U1B1C0C)
+                {
+                    return &BuiltInFunction::kFunction_textureGatherOffset_0U1B1C0C;
+                }
+                break;
+            }
+            case 0x4dc89c91u:
+            {
+                if (name == BuiltInName::textureGatherOffset_0K2B1C0C)
+                {
+                    return &BuiltInFunction::kFunction_textureGatherOffset_0K2B1C0C;
+                }
+                break;
+            }
+            case 0x4dc8f1feu:
+            {
+                if (name == BuiltInName::textureGatherOffset_0H1B1C0C)
+                {
+                    return &BuiltInFunction::kFunction_textureGatherOffset_0H1B1C0C;
+                }
+                break;
+            }
+            case 0x4dcb06fcu:
+            {
+                if (name == BuiltInName::textureGatherOffset_0Z1B0B1C)
+                {
+                    return &BuiltInFunction::kFunction_textureGatherOffset_0Z1B0B1C;
+                }
+                break;
+            }
+            case 0x4dcb704cu:
+            {
+                if (name == BuiltInName::textureGatherOffset_0P1B1C0C)
+                {
+                    return &BuiltInFunction::kFunction_textureGatherOffset_0P1B1C0C;
+                }
+                break;
+            }
+            case 0x4dcd2cb2u:
+            {
+                if (name == BuiltInName::textureGatherOffset_0b2B0B1C)
+                {
+                    return &BuiltInFunction::kFunction_textureGatherOffset_0b2B0B1C;
+                }
+                break;
+            }
+            case 0x599f07cfu:
+            {
+                if (name.beginsWith(BuiltInName::atomicCounterIncrement))
+                {
+                    ASSERT(name.length() == 25);
+                    return &BuiltInFunction::kFunction_atomicCounterIncrement_0F;
+                }
+                break;
+            }
+            case 0x599f5c0eu:
+            {
+                if (name.beginsWith(BuiltInName::atomicCounterDecrement))
+                {
+                    ASSERT(name.length() == 25);
+                    return &BuiltInFunction::kFunction_atomicCounterDecrement_0F;
+                }
+                break;
+            }
+            case 0x69bd8347u:
+            {
+                if (name.beginsWith(BuiltInName::memoryBarrierAtomicCounter))
+                {
+                    ASSERT(name.length() == 27);
+                    return &BuiltInFunction::kFunction_memoryBarrierAtomicCounter_;
+                }
+                break;
+            }
+            case 0xfc57d894u:
             {
                 if (name == BuiltInName::gl_in)
                 {
@@ -11991,744 +12623,15 @@
                 }
                 break;
             }
-            case 0x7dbee433u:
+            case 0xfd02c057u:
             {
-                if (name.length() == 10 && name.beginsWith(BuiltInName::frexp_))
+                if (name == BuiltInName::gl_MaxImageUnits)
                 {
-                    return &BuiltInFunction::kFunction_frexp_3B3C;
+                    return mVar_gl_MaxImageUnits;
                 }
                 break;
             }
-            case 0x7de6c91cu:
-            {
-                if (name.length() == 14 && name.beginsWith(BuiltInName::atomicMin_))
-                {
-                    return &BuiltInFunction::kFunction_atomicMin_0D0D;
-                }
-                break;
-            }
-            case 0x7e0ed3ccu:
-            {
-                if (name.length() == 17 && name.beginsWith(BuiltInName::unpackUnorm4x8_))
-                {
-                    return &BuiltInFunction::kFunction_unpackUnorm4x8_0D;
-                }
-                break;
-            }
-            case 0x7e927bd5u:
-            {
-                if (name == BuiltInName::textureGather_0S2B0C)
-                {
-                    return &BuiltInFunction::kFunction_textureGather_0S2B0C;
-                }
-                break;
-            }
-            case 0x80649bccu:
-            {
-                if (name.length() == 18 && name.beginsWith(BuiltInName::textureGather_))
-                {
-                    return &BuiltInFunction::kFunction_textureGather_0S2B;
-                }
-                break;
-            }
-            case 0x8277ae4du:
-            {
-                if (name == BuiltInName::imulExtended_3C3C3C3C)
-                {
-                    return &BuiltInFunction::kFunction_imulExtended_3C3C3C3C;
-                }
-                break;
-            }
-            case 0x82903444u:
-            {
-                if (name == BuiltInName::gl_MaxCombinedAtomicCounters)
-                {
-                    return mVar_gl_MaxCombinedAtomicCounters;
-                }
-                break;
-            }
-            case 0x82b86afcu:
-            {
-                if (name.length() == 15 && name.beginsWith(BuiltInName::packUnorm4x8_))
-                {
-                    return &BuiltInFunction::kFunction_packUnorm4x8_3B;
-                }
-                break;
-            }
-            case 0x830df594u:
-            {
-                if (name == BuiltInName::uaddCarry_2D2D2D)
-                {
-                    return &BuiltInFunction::kFunction_uaddCarry_2D2D2D;
-                }
-                break;
-            }
-            case 0x83a9e786u:
-            {
-                if (name == BuiltInName::texelFetch_0T1C0C)
-                {
-                    return &BuiltInFunction::kFunction_texelFetch_0T1C0C;
-                }
-                break;
-            }
-            case 0x84d951b5u:
-            {
-                if (name == BuiltInName::imulExtended_0C0C0C0C)
-                {
-                    return &BuiltInFunction::kFunction_imulExtended_0C0C0C0C;
-                }
-                break;
-            }
-            case 0x8539932du:
-            {
-                if (name == BuiltInName::gl_MaxGeometryInputComponents)
-                {
-                    return mVar_gl_MaxGeometryInputComponents;
-                }
-                break;
-            }
-            case 0x859069e5u:
-            {
-                if (name == BuiltInName::uaddCarry_3D3D3D)
-                {
-                    return &BuiltInFunction::kFunction_uaddCarry_3D3D3D;
-                }
-                break;
-            }
-            case 0x8638ea07u:
-            {
-                if (name == BuiltInName::uaddCarry_1D1D1D)
-                {
-                    return &BuiltInFunction::kFunction_uaddCarry_1D1D1D;
-                }
-                break;
-            }
-            case 0x886bdcd5u:
-            {
-                if (name == BuiltInName::imageStore_0f2C3B)
-                {
-                    return &BuiltInFunction::kFunction_imageStore_0f2C3B;
-                }
-                break;
-            }
-            case 0x889130b4u:
-            {
-                if (name.length() == 18 && name.beginsWith(BuiltInName::textureGather_))
-                {
-                    return &BuiltInFunction::kFunction_textureGather_0K2B;
-                }
-                break;
-            }
-            case 0x899b1520u:
-            {
-                if (name == BuiltInName::textureGatherOffset_0K2B1C0C)
-                {
-                    return &BuiltInFunction::kFunction_textureGatherOffset_0K2B1C0C;
-                }
-                break;
-            }
-            case 0x8d315d40u:
-            {
-                if (name.length() == 14 && name.beginsWith(BuiltInName::imageLoad_))
-                {
-                    return &BuiltInFunction::kFunction_imageLoad_0k2C;
-                }
-                break;
-            }
-            case 0x8dd1ae75u:
-            {
-                if (name == BuiltInName::gl_MaxCombinedShaderOutputResources)
-                {
-                    return mVar_gl_MaxCombinedShaderOutputResources;
-                }
-                break;
-            }
-            case 0x8f5a420bu:
-            {
-                if (name.length() == 14 && name.beginsWith(BuiltInName::atomicAnd_))
-                {
-                    return &BuiltInFunction::kFunction_atomicAnd_0C0C;
-                }
-                break;
-            }
-            case 0x8fa34bcau:
-            {
-                if (name == BuiltInName::textureGatherOffset_0H1B1C0C)
-                {
-                    return &BuiltInFunction::kFunction_textureGatherOffset_0H1B1C0C;
-                }
-                break;
-            }
-            case 0x91ba0efeu:
-            {
-                if (name.length() == 10 && name.beginsWith(BuiltInName::findLSB_))
-                {
-                    return &BuiltInFunction::kFunction_findLSB_2C;
-                }
-                break;
-            }
-            case 0x91e7b756u:
-            {
-                if (name == BuiltInName::textureGather_0J2B0C)
-                {
-                    return &BuiltInFunction::kFunction_textureGather_0J2B0C;
-                }
-                break;
-            }
-            case 0x94ba13b7u:
-            {
-                if (name.length() == 10 && name.beginsWith(BuiltInName::findLSB_))
-                {
-                    return &BuiltInFunction::kFunction_findLSB_2D;
-                }
-                break;
-            }
-            case 0x94d22cc3u:
-            {
-                if (name.length() == 10 && name.beginsWith(BuiltInName::ldexp_))
-                {
-                    return &BuiltInFunction::kFunction_ldexp_2B2C;
-                }
-                break;
-            }
-            case 0x98a09aa9u:
-            {
-                if (name == BuiltInName::gl_MaxAtomicCounterBufferSize)
-                {
-                    return mVar_gl_MaxAtomicCounterBufferSize;
-                }
-                break;
-            }
-            case 0x98b5c033u:
-            {
-                if (name == BuiltInName::textureGather_0H1B0C)
-                {
-                    return &BuiltInFunction::kFunction_textureGather_0H1B0C;
-                }
-                break;
-            }
-            case 0x9923396au:
-            {
-                if (name == BuiltInName::gl_MaxGeometryTotalOutputComponents)
-                {
-                    return mVar_gl_MaxGeometryTotalOutputComponents;
-                }
-                break;
-            }
-            case 0x9ad4e7a3u:
-            {
-                if (name.length() == 14 && name.beginsWith(BuiltInName::imageLoad_))
-                {
-                    return &BuiltInFunction::kFunction_imageLoad_0f2C;
-                }
-                break;
-            }
-            case 0xa1b1d969u:
-            {
-                if (name.length() == 10 && name.beginsWith(BuiltInName::findLSB_))
-                {
-                    return &BuiltInFunction::kFunction_findLSB_1C;
-                }
-                break;
-            }
-            case 0xa2b1dafcu:
-            {
-                if (name.length() == 10 && name.beginsWith(BuiltInName::findLSB_))
-                {
-                    return &BuiltInFunction::kFunction_findLSB_1D;
-                }
-                break;
-            }
-            case 0xa30b98d3u:
-            {
-                if (name.length() == 10 && name.beginsWith(BuiltInName::frexp_))
-                {
-                    return &BuiltInFunction::kFunction_frexp_1B1C;
-                }
-                break;
-            }
-            case 0xa7570267u:
-            {
-                if (name.length() == 14 && name.beginsWith(BuiltInName::memoryBarrier_))
-                {
-                    return &BuiltInFunction::kFunction_memoryBarrier_;
-                }
-                break;
-            }
-            case 0xa7a68486u:
-            {
-                if (name.length() == 14 && name.beginsWith(BuiltInName::imageLoad_))
-                {
-                    return &BuiltInFunction::kFunction_imageLoad_0i2C;
-                }
-                break;
-            }
-            case 0xa9d0e5b5u:
-            {
-                if (name.length() == 14 && name.beginsWith(BuiltInName::imageLoad_))
-                {
-                    return &BuiltInFunction::kFunction_imageLoad_0e1C;
-                }
-                break;
-            }
-            case 0xacde249eu:
-            {
-                if (name == BuiltInName::gl_MaxComputeAtomicCounterBuffers)
-                {
-                    return mVar_gl_MaxComputeAtomicCounterBuffers;
-                }
-                break;
-            }
-            case 0xaf6251f9u:
-            {
-                if (name == BuiltInName::imageStore_0c1C3B)
-                {
-                    return &BuiltInFunction::kFunction_imageStore_0c1C3B;
-                }
-                break;
-            }
-            case 0xafef0c94u:
-            {
-                if (name == BuiltInName::textureGather_0a2B0B)
-                {
-                    return &BuiltInFunction::kFunction_textureGather_0a2B0B;
-                }
-                break;
-            }
-            case 0xb0002869u:
-            {
-                if (name == BuiltInName::imageStore_0g2C3C)
-                {
-                    return &BuiltInFunction::kFunction_imageStore_0g2C3C;
-                }
-                break;
-            }
-            case 0xb006f693u:
-            {
-                if (name == BuiltInName::textureGatherOffset_0Z1B0B1C)
-                {
-                    return &BuiltInFunction::kFunction_textureGatherOffset_0Z1B0B1C;
-                }
-                break;
-            }
-            case 0xb00a70eeu:
-            {
-                if (name == BuiltInName::textureGather_0R2B0C)
-                {
-                    return &BuiltInFunction::kFunction_textureGather_0R2B0C;
-                }
-                break;
-            }
-            case 0xb32c4610u:
-            {
-                if (name.length() == 12 && name.beginsWith(BuiltInName::imageSize_))
-                {
-                    return &BuiltInFunction::kFunction_imageSize_0c;
-                }
-                break;
-            }
-            case 0xb72c4c5cu:
-            {
-                if (name.length() == 12 && name.beginsWith(BuiltInName::imageSize_))
-                {
-                    return &BuiltInFunction::kFunction_imageSize_0g;
-                }
-                break;
-            }
-            case 0xb7b5eb12u:
-            {
-                if (name == BuiltInName::textureGatherOffset_0P1B1C0C)
-                {
-                    return &BuiltInFunction::kFunction_textureGatherOffset_0P1B1C0C;
-                }
-                break;
-            }
-            case 0xb82c4defu:
-            {
-                if (name.length() == 12 && name.beginsWith(BuiltInName::imageSize_))
-                {
-                    return &BuiltInFunction::kFunction_imageSize_0f;
-                }
-                break;
-            }
-            case 0xb92c4f82u:
-            {
-                if (name.length() == 12 && name.beginsWith(BuiltInName::imageSize_))
-                {
-                    return &BuiltInFunction::kFunction_imageSize_0e;
-                }
-                break;
-            }
-            case 0xba2c5115u:
-            {
-                if (name.length() == 12 && name.beginsWith(BuiltInName::imageSize_))
-                {
-                    return &BuiltInFunction::kFunction_imageSize_0d;
-                }
-                break;
-            }
-            case 0xbaead883u:
-            {
-                if (name == BuiltInName::imageStore_0l2C3B)
-                {
-                    return &BuiltInFunction::kFunction_imageStore_0l2C3B;
-                }
-                break;
-            }
-            case 0xbb2c52a8u:
-            {
-                if (name.length() == 12 && name.beginsWith(BuiltInName::imageSize_))
-                {
-                    return &BuiltInFunction::kFunction_imageSize_0k;
-                }
-                break;
-            }
-            case 0xbbdb8c61u:
-            {
-                if (name == BuiltInName::texelFetch_0Y1C0C)
-                {
-                    return &BuiltInFunction::kFunction_texelFetch_0Y1C0C;
-                }
-                break;
-            }
-            case 0xbc2c543bu:
-            {
-                if (name.length() == 12 && name.beginsWith(BuiltInName::imageSize_))
-                {
-                    return &BuiltInFunction::kFunction_imageSize_0j;
-                }
-                break;
-            }
-            case 0xbcf1974au:
-            {
-                if (name == BuiltInName::textureGather_0Z1B0B)
-                {
-                    return &BuiltInFunction::kFunction_textureGather_0Z1B0B;
-                }
-                break;
-            }
-            case 0xbcfd7f73u:
-            {
-                if (name == BuiltInName::bitfieldInsert_0C0C0C0C)
-                {
-                    return &BuiltInFunction::kFunction_bitfieldInsert_0C0C0C0C;
-                }
-                break;
-            }
-            case 0xbd2c55ceu:
-            {
-                if (name.length() == 12 && name.beginsWith(BuiltInName::imageSize_))
-                {
-                    return &BuiltInFunction::kFunction_imageSize_0i;
-                }
-                break;
-            }
-            case 0xbe2c5761u:
-            {
-                if (name.length() == 12 && name.beginsWith(BuiltInName::imageSize_))
-                {
-                    return &BuiltInFunction::kFunction_imageSize_0h;
-                }
-                break;
-            }
-            case 0xbecd46a2u:
-            {
-                if (name == BuiltInName::bitfieldExtract_1D0C0C)
-                {
-                    return &BuiltInFunction::kFunction_bitfieldExtract_1D0C0C;
-                }
-                break;
-            }
-            case 0xc02c5a87u:
-            {
-                if (name.length() == 12 && name.beginsWith(BuiltInName::imageSize_))
-                {
-                    return &BuiltInFunction::kFunction_imageSize_0n;
-                }
-                break;
-            }
-            case 0xc0ec9f01u:
-            {
-                if (name == BuiltInName::gl_MaxGeometryUniformComponents)
-                {
-                    return mVar_gl_MaxGeometryUniformComponents;
-                }
-                break;
-            }
-            case 0xc12c5c1au:
-            {
-                if (name.length() == 12 && name.beginsWith(BuiltInName::imageSize_))
-                {
-                    return &BuiltInFunction::kFunction_imageSize_0m;
-                }
-                break;
-            }
-            case 0xc1b44a60u:
-            {
-                if (name.length() == 10 && name.beginsWith(BuiltInName::findLSB_))
-                {
-                    return &BuiltInFunction::kFunction_findLSB_0C;
-                }
-                break;
-            }
-            case 0xc22c5dadu:
-            {
-                if (name.length() == 12 && name.beginsWith(BuiltInName::imageSize_))
-                {
-                    return &BuiltInFunction::kFunction_imageSize_0l;
-                }
-                break;
-            }
-            case 0xc3a870f0u:
-            {
-                if (name == BuiltInName::gl_MaxComputeAtomicCounters)
-                {
-                    return mVar_gl_MaxComputeAtomicCounters;
-                }
-                break;
-            }
-            case 0xc3dadff4u:
-            {
-                if (name.length() == 18 && name.beginsWith(BuiltInName::textureGather_))
-                {
-                    return &BuiltInFunction::kFunction_textureGather_0Z1B;
-                }
-                break;
-            }
-            case 0xc4d9f177u:
-            {
-                if (name == BuiltInName::imageStore_0m2C3C)
-                {
-                    return &BuiltInFunction::kFunction_imageStore_0m2C3C;
-                }
-                break;
-            }
-            case 0xc8b45565u:
-            {
-                if (name.length() == 10 && name.beginsWith(BuiltInName::findLSB_))
-                {
-                    return &BuiltInFunction::kFunction_findLSB_0D;
-                }
-                break;
-            }
-            case 0xc90f20b3u:
-            {
-                if (name.length() == 14 && name.beginsWith(BuiltInName::atomicAnd_))
-                {
-                    return &BuiltInFunction::kFunction_atomicAnd_0D0D;
-                }
-                break;
-            }
-            case 0xcc193b45u:
-            {
-                if (name == BuiltInName::imulExtended_1C1C1C1C)
-                {
-                    return &BuiltInFunction::kFunction_imulExtended_1C1C1C1C;
-                }
-                break;
-            }
-            case 0xcd7ff8a6u:
-            {
-                if (name.length() == 19 && name.beginsWith(BuiltInName::memoryBarrierImage_))
-                {
-                    return &BuiltInFunction::kFunction_memoryBarrierImage_;
-                }
-                break;
-            }
-            case 0xce50b7e9u:
-            {
-                if (name.length() == 14 && name.beginsWith(BuiltInName::imageLoad_))
-                {
-                    return &BuiltInFunction::kFunction_imageLoad_0l2C;
-                }
-                break;
-            }
-            case 0xcf4a9cdeu:
-            {
-                if (name == BuiltInName::imageStore_0j2C3C)
-                {
-                    return &BuiltInFunction::kFunction_imageStore_0j2C3C;
-                }
-                break;
-            }
-            case 0xd26bc9eau:
-            {
-                if (name == BuiltInName::gl_MaxGeometryOutputComponents)
-                {
-                    return mVar_gl_MaxGeometryOutputComponents;
-                }
-                break;
-            }
-            case 0xd26cea7cu:
-            {
-                if (name == BuiltInName::textureGatherOffset_0b2B0B1C)
-                {
-                    return &BuiltInFunction::kFunction_textureGatherOffset_0b2B0B1C;
-                }
-                break;
-            }
-            case 0xd54f2797u:
-            {
-                if (name == BuiltInName::gl_MaxComputeWorkGroupCount)
-                {
-                    return mVar_gl_MaxComputeWorkGroupCount;
-                }
-                break;
-            }
-            case 0xd794553eu:
-            {
-                if (name.length() == 10 && name.beginsWith(BuiltInName::findMSB_))
-                {
-                    return &BuiltInFunction::kFunction_findMSB_2D;
-                }
-                break;
-            }
-            case 0xd8373034u:
-            {
-                if (name.length() == 27 &&
-                    name.beginsWith(BuiltInName::memoryBarrierAtomicCounter_))
-                {
-                    return &BuiltInFunction::kFunction_memoryBarrierAtomicCounter_;
-                }
-                break;
-            }
-            case 0xd840ea01u:
-            {
-                if (name == BuiltInName::textureGather_0W2B0C)
-                {
-                    return &BuiltInFunction::kFunction_textureGather_0W2B0C;
-                }
-                break;
-            }
-            case 0xd8dff3cbu:
-            {
-                if (name == BuiltInName::imageStore_0n2C3D)
-                {
-                    return &BuiltInFunction::kFunction_imageStore_0n2C3D;
-                }
-                break;
-            }
-            case 0xd96c18afu:
-            {
-                if (name == BuiltInName::gl_MaxGeometryAtomicCounters)
-                {
-                    return mVar_gl_MaxGeometryAtomicCounters;
-                }
-                break;
-            }
-            case 0xda9459f7u:
-            {
-                if (name.length() == 10 && name.beginsWith(BuiltInName::findMSB_))
-                {
-                    return &BuiltInFunction::kFunction_findMSB_2C;
-                }
-                break;
-            }
-            case 0xdb122553u:
-            {
-                if (name.length() == 18 && name.beginsWith(BuiltInName::bitfieldReverse_))
-                {
-                    return &BuiltInFunction::kFunction_bitfieldReverse_1D;
-                }
-                break;
-            }
-            case 0xdc0090e3u:
-            {
-                if (name.length() == 18 && name.beginsWith(BuiltInName::textureGather_))
-                {
-                    return &BuiltInFunction::kFunction_textureGather_0b2B;
-                }
-                break;
-            }
-            case 0xe0122d32u:
-            {
-                if (name.length() == 18 && name.beginsWith(BuiltInName::bitfieldReverse_))
-                {
-                    return &BuiltInFunction::kFunction_bitfieldReverse_1C;
-                }
-                break;
-            }
-            case 0xe0d1d797u:
-            {
-                if (name.length() == 14 && name.beginsWith(BuiltInName::atomicXor_))
-                {
-                    return &BuiltInFunction::kFunction_atomicXor_0D0D;
-                }
-                break;
-            }
-            case 0xe353b519u:
-            {
-                if (name == BuiltInName::gl_MaxGeometryAtomicCounterBuffers)
-                {
-                    return mVar_gl_MaxGeometryAtomicCounterBuffers;
-                }
-                break;
-            }
-            case 0xe3b7a4efu:
-            {
-                if (name == BuiltInName::textureGatherOffset_0H1B1C)
-                {
-                    return &BuiltInFunction::kFunction_textureGatherOffset_0H1B1C;
-                }
-                break;
-            }
-            case 0xe3bd7c3cu:
-            {
-                if (name == BuiltInName::textureGatherOffset_0X2B1C)
-                {
-                    return &BuiltInFunction::kFunction_textureGatherOffset_0X2B1C;
-                }
-                break;
-            }
-            case 0xe495b7e1u:
-            {
-                if (name == BuiltInName::imageStore_0e1C3D)
-                {
-                    return &BuiltInFunction::kFunction_imageStore_0e1C3D;
-                }
-                break;
-            }
-            case 0xe6b6c336u:
-            {
-                if (name.length() == 10 && name.beginsWith(BuiltInName::findLSB_))
-                {
-                    return &BuiltInFunction::kFunction_findLSB_3D;
-                }
-                break;
-            }
-            case 0xe6f2e1d3u:
-            {
-                if (name.length() == 18 && name.beginsWith(BuiltInName::textureGather_))
-                {
-                    return &BuiltInFunction::kFunction_textureGather_0R2B;
-                }
-                break;
-            }
-            case 0xe909ec98u:
-            {
-                if (name.length() == 18 && name.beginsWith(BuiltInName::bitfieldReverse_))
-                {
-                    return &BuiltInFunction::kFunction_bitfieldReverse_2D;
-                }
-                break;
-            }
-            case 0xe9637851u:
-            {
-                if (name == BuiltInName::gl_MaxFragmentImageUniforms)
-                {
-                    return mVar_gl_MaxFragmentImageUniforms;
-                }
-                break;
-            }
-            case 0xe9b6c7efu:
-            {
-                if (name.length() == 10 && name.beginsWith(BuiltInName::findLSB_))
-                {
-                    return &BuiltInFunction::kFunction_findLSB_3C;
-                }
-                break;
-            }
-            case 0xeacd9c77u:
+            case 0xfd9ea0aeu:
             {
                 if (name == BuiltInName::gl_MaxVertexImageUniforms)
                 {
@@ -12736,7 +12639,23 @@
                 }
                 break;
             }
-            case 0xec875d49u:
+            case 0xfda4cb4eu:
+            {
+                if (name == BuiltInName::gl_MaxVertexAtomicCounters)
+                {
+                    return mVar_gl_MaxVertexAtomicCounters;
+                }
+                break;
+            }
+            case 0xfda554a5u:
+            {
+                if (name == BuiltInName::gl_MaxComputeImageUniforms)
+                {
+                    return mVar_gl_MaxComputeImageUniforms;
+                }
+                break;
+            }
+            case 0xfdaec53cu:
             {
                 if (name == BuiltInName::gl_MaxComputeWorkGroupSize)
                 {
@@ -12744,87 +12663,175 @@
                 }
                 break;
             }
-            case 0xee0c9f85u:
+            case 0xfdb37edfu:
             {
-                if (name == BuiltInName::usubBorrow_0D0D0D)
+                if (name == BuiltInName::gl_MaxCombinedImageUniforms)
                 {
-                    return &BuiltInFunction::kFunction_usubBorrow_0D0D0D;
+                    return mVar_gl_MaxCombinedImageUniforms;
                 }
                 break;
             }
-            case 0xf009f79du:
+            case 0xfdb3d624u:
             {
-                if (name.length() == 18 && name.beginsWith(BuiltInName::bitfieldReverse_))
+                if (name == BuiltInName::gl_MaxGeometryImageUniforms)
                 {
-                    return &BuiltInFunction::kFunction_bitfieldReverse_2C;
+                    return mVar_gl_MaxGeometryImageUniforms;
                 }
                 break;
             }
-            case 0xf05b183bu:
+            case 0xfdb5a5efu:
             {
-                if (name.length() == 18 && name.beginsWith(BuiltInName::textureGather_))
+                if (name == BuiltInName::gl_MaxAtomicCounterBindings)
                 {
-                    return &BuiltInFunction::kFunction_textureGather_0J2B;
+                    return mVar_gl_MaxAtomicCounterBindings;
                 }
                 break;
             }
-            case 0xf0b36e1du:
+            case 0xfdbc3a77u:
             {
-                if (name == BuiltInName::textureGather_0K2B0C)
+                if (name == BuiltInName::gl_MaxComputeAtomicCounters)
                 {
-                    return &BuiltInFunction::kFunction_textureGather_0K2B0C;
+                    return mVar_gl_MaxComputeAtomicCounters;
                 }
                 break;
             }
-            case 0xf0cb4011u:
+            case 0xfdbd5365u:
             {
-                if (name == BuiltInName::imageStore_0h2C3D)
+                if (name == BuiltInName::gl_MaxComputeWorkGroupCount)
                 {
-                    return &BuiltInFunction::kFunction_imageStore_0h2C3D;
+                    return mVar_gl_MaxComputeWorkGroupCount;
                 }
                 break;
             }
-            case 0xf0f5289du:
+            case 0xfdbe9e66u:
             {
-                if (name.length() == 25 && name.beginsWith(BuiltInName::atomicCounterIncrement_))
+                if (name == BuiltInName::gl_MaxFragmentImageUniforms)
                 {
-                    return &BuiltInFunction::kFunction_atomicCounterIncrement_0F;
+                    return mVar_gl_MaxFragmentImageUniforms;
                 }
                 break;
             }
-            case 0xf35a12fau:
+            case 0xfdc36735u:
             {
-                if (name.length() == 14 && name.beginsWith(BuiltInName::atomicMax_))
+                if (name == BuiltInName::gl_MaxGeometryOutputVertices)
                 {
-                    return &BuiltInFunction::kFunction_atomicMax_0C0C;
+                    return mVar_gl_MaxGeometryOutputVertices;
                 }
                 break;
             }
-            case 0xf3de0717u:
+            case 0xfdc4585cu:
             {
-                if (name.length() == 10 && name.beginsWith(BuiltInName::frexp_))
+                if (name == BuiltInName::gl_MaxFragmentAtomicCounters)
                 {
-                    return &BuiltInFunction::kFunction_frexp_0B0C;
+                    return mVar_gl_MaxFragmentAtomicCounters;
                 }
                 break;
             }
-            case 0xf4fc8897u:
+            case 0xfdc82d47u:
             {
-                if (name == BuiltInName::bitfieldInsert_2C2C0C0C)
+                if (name == BuiltInName::gl_MaxCombinedAtomicCounters)
                 {
-                    return &BuiltInFunction::kFunction_bitfieldInsert_2C2C0C0C;
+                    return mVar_gl_MaxCombinedAtomicCounters;
                 }
                 break;
             }
-            case 0xf5adf6d1u:
+            case 0xfdcd9e6eu:
             {
-                if (name.length() == 25 && name.beginsWith(BuiltInName::atomicCounterDecrement_))
+                if (name == BuiltInName::gl_MaxGeometryAtomicCounters)
                 {
-                    return &BuiltInFunction::kFunction_atomicCounterDecrement_0F;
+                    return mVar_gl_MaxGeometryAtomicCounters;
                 }
                 break;
             }
-            case 0xf6212c11u:
+            case 0xfdd850b4u:
+            {
+                if (name == BuiltInName::gl_MaxGeometryInputComponents)
+                {
+                    return mVar_gl_MaxGeometryInputComponents;
+                }
+                break;
+            }
+            case 0xfdd980a0u:
+            {
+                if (name == BuiltInName::gl_MaxAtomicCounterBufferSize)
+                {
+                    return mVar_gl_MaxAtomicCounterBufferSize;
+                }
+                break;
+            }
+            case 0xfde022f8u:
+            {
+                if (name == BuiltInName::gl_MaxComputeTextureImageUnits)
+                {
+                    return mVar_gl_MaxComputeTextureImageUnits;
+                }
+                break;
+            }
+            case 0xfde6c67fu:
+            {
+                if (name == BuiltInName::gl_MaxComputeUniformComponents)
+                {
+                    return mVar_gl_MaxComputeUniformComponents;
+                }
+                break;
+            }
+            case 0xfded2f56u:
+            {
+                if (name == BuiltInName::gl_MaxGeometryOutputComponents)
+                {
+                    return mVar_gl_MaxGeometryOutputComponents;
+                }
+                break;
+            }
+            case 0xfdf3607cu:
+            {
+                if (name == BuiltInName::gl_MaxGeometryTextureImageUnits)
+                {
+                    return mVar_gl_MaxGeometryTextureImageUnits;
+                }
+                break;
+            }
+            case 0xfdfc01c8u:
+            {
+                if (name == BuiltInName::gl_MaxGeometryUniformComponents)
+                {
+                    return mVar_gl_MaxGeometryUniformComponents;
+                }
+                break;
+            }
+            case 0xfe01078bu:
+            {
+                if (name == BuiltInName::gl_MaxVertexAtomicCounterBuffers)
+                {
+                    return mVar_gl_MaxVertexAtomicCounterBuffers;
+                }
+                break;
+            }
+            case 0xfe1ac97cu:
+            {
+                if (name == BuiltInName::gl_MaxComputeAtomicCounterBuffers)
+                {
+                    return mVar_gl_MaxComputeAtomicCounterBuffers;
+                }
+                break;
+            }
+            case 0xfe23d724u:
+            {
+                if (name == BuiltInName::gl_MaxCombinedAtomicCounterBuffers)
+                {
+                    return mVar_gl_MaxCombinedAtomicCounterBuffers;
+                }
+                break;
+            }
+            case 0xfe2e3022u:
+            {
+                if (name == BuiltInName::gl_MaxGeometryAtomicCounterBuffers)
+                {
+                    return mVar_gl_MaxGeometryAtomicCounterBuffers;
+                }
+                break;
+            }
+            case 0xfe2f6e03u:
             {
                 if (name == BuiltInName::gl_MaxFragmentAtomicCounterBuffers)
                 {
@@ -12832,35 +12839,19 @@
                 }
                 break;
             }
-            case 0xf91ef410u:
+            case 0xfe38d36fu:
             {
-                if (name == BuiltInName::textureGatherOffset_0U1B1C)
+                if (name == BuiltInName::gl_MaxCombinedShaderOutputResources)
                 {
-                    return &BuiltInFunction::kFunction_textureGatherOffset_0U1B1C;
+                    return mVar_gl_MaxCombinedShaderOutputResources;
                 }
                 break;
             }
-            case 0xfa7d2618u:
+            case 0xfe399b59u:
             {
-                if (name == BuiltInName::imageStore_0i2C3B)
+                if (name == BuiltInName::gl_MaxGeometryTotalOutputComponents)
                 {
-                    return &BuiltInFunction::kFunction_imageStore_0i2C3B;
-                }
-                break;
-            }
-            case 0xfae6d537u:
-            {
-                if (name.length() == 10 && name.beginsWith(BuiltInName::ldexp_))
-                {
-                    return &BuiltInFunction::kFunction_ldexp_3B3C;
-                }
-                break;
-            }
-            case 0xff425859u:
-            {
-                if (name.length() == 20 && name.beginsWith(BuiltInName::memoryBarrierBuffer_))
-                {
-                    return &BuiltInFunction::kFunction_memoryBarrierBuffer_;
+                    return mVar_gl_MaxGeometryTotalOutputComponents;
                 }
                 break;
             }
@@ -12869,39 +12860,34 @@
         {
             switch (nameHash)
             {
-                case 0x121ffe70u:
+                case 0x1c8349e8u:
                 {
-                    if (name == BuiltInName::gl_WorkGroupSize)
+                    if (name.beginsWith(BuiltInName::barrier))
                     {
-                        return &BuiltInVariable::kVar_gl_WorkGroupSize;
-                    }
-                    break;
-                }
-                case 0x34af0318u:
-                {
-                    if (name.length() == 8 && name.beginsWith(BuiltInName::barrier_))
-                    {
+                        ASSERT(name.length() == 8);
                         return &BuiltInFunction::kFunction_barrier_;
                     }
                     break;
                 }
-                case 0x4bbe0c1du:
+                case 0x493df1afu:
                 {
-                    if (name == BuiltInName::gl_LocalInvocationID)
+                    if (name.beginsWith(BuiltInName::groupMemoryBarrier))
                     {
-                        return &BuiltInVariable::kVar_gl_LocalInvocationID;
+                        ASSERT(name.length() == 19);
+                        return &BuiltInFunction::kFunction_groupMemoryBarrier_;
                     }
                     break;
                 }
-                case 0x56624254u:
+                case 0x4d49a5a0u:
                 {
-                    if (name == BuiltInName::gl_NumWorkGroups)
+                    if (name.beginsWith(BuiltInName::memoryBarrierShared))
                     {
-                        return &BuiltInVariable::kVar_gl_NumWorkGroups;
+                        ASSERT(name.length() == 20);
+                        return &BuiltInFunction::kFunction_memoryBarrierShared_;
                     }
                     break;
                 }
-                case 0x6fced514u:
+                case 0xfce6f9f9u:
                 {
                     if (name == BuiltInName::gl_WorkGroupID)
                     {
@@ -12909,23 +12895,31 @@
                     }
                     break;
                 }
-                case 0x99f53c3cu:
+                case 0xfd012f8fu:
                 {
-                    if (name == BuiltInName::gl_LocalInvocationIndex)
+                    if (name == BuiltInName::gl_WorkGroupSize)
                     {
-                        return &BuiltInVariable::kVar_gl_LocalInvocationIndex;
+                        return &BuiltInVariable::kVar_gl_WorkGroupSize;
                     }
                     break;
                 }
-                case 0x9a984c24u:
+                case 0xfd056470u:
                 {
-                    if (name.length() == 20 && name.beginsWith(BuiltInName::memoryBarrierShared_))
+                    if (name == BuiltInName::gl_NumWorkGroups)
                     {
-                        return &BuiltInFunction::kFunction_memoryBarrierShared_;
+                        return &BuiltInVariable::kVar_gl_NumWorkGroups;
                     }
                     break;
                 }
-                case 0xa34369b3u:
+                case 0xfd44b7fdu:
+                {
+                    if (name == BuiltInName::gl_LocalInvocationID)
+                    {
+                        return &BuiltInVariable::kVar_gl_LocalInvocationID;
+                    }
+                    break;
+                }
+                case 0xfd5a3d85u:
                 {
                     if (name == BuiltInName::gl_GlobalInvocationID)
                     {
@@ -12933,11 +12927,11 @@
                     }
                     break;
                 }
-                case 0xdf09d132u:
+                case 0xfd79936fu:
                 {
-                    if (name.length() == 19 && name.beginsWith(BuiltInName::groupMemoryBarrier_))
+                    if (name == BuiltInName::gl_LocalInvocationIndex)
                     {
-                        return &BuiltInFunction::kFunction_groupMemoryBarrier_;
+                        return &BuiltInVariable::kVar_gl_LocalInvocationIndex;
                     }
                     break;
                 }
@@ -12947,7 +12941,25 @@
         {
             switch (nameHash)
             {
-                case 0x02731c1cu:
+                case 0x28bab062u:
+                {
+                    if (name.beginsWith(BuiltInName::EmitVertex))
+                    {
+                        ASSERT(name.length() == 11);
+                        return &BuiltInFunction::kFunction_EmitVertex_;
+                    }
+                    break;
+                }
+                case 0x30dfadf2u:
+                {
+                    if (name.beginsWith(BuiltInName::EndPrimitive))
+                    {
+                        ASSERT(name.length() == 13);
+                        return &BuiltInFunction::kFunction_EndPrimitive_;
+                    }
+                    break;
+                }
+                case 0xfc802b2du:
                 {
                     if (name == BuiltInName::gl_Layer)
                     {
@@ -12955,7 +12967,7 @@
                     }
                     break;
                 }
-                case 0x02c4bde0u:
+                case 0xfcb021abu:
                 {
                     if (name == BuiltInName::gl_Position)
                     {
@@ -12963,31 +12975,7 @@
                     }
                     break;
                 }
-                case 0x863d719du:
-                {
-                    if (name == BuiltInName::gl_PrimitiveID)
-                    {
-                        return &BuiltInVariable::kVar_gl_PrimitiveIDGS;
-                    }
-                    break;
-                }
-                case 0xab932950u:
-                {
-                    if (name.length() == 11 && name.beginsWith(BuiltInName::EmitVertex_))
-                    {
-                        return &BuiltInFunction::kFunction_EmitVertex_;
-                    }
-                    break;
-                }
-                case 0xc91ada96u:
-                {
-                    if (name == BuiltInName::gl_PrimitiveIDIn)
-                    {
-                        return &BuiltInVariable::kVar_gl_PrimitiveIDIn;
-                    }
-                    break;
-                }
-                case 0xe29142f0u:
+                case 0xfcce2be4u:
                 {
                     if (name == BuiltInName::gl_PerVertex)
                     {
@@ -12995,15 +12983,15 @@
                     }
                     break;
                 }
-                case 0xfa01fdedu:
+                case 0xfce8624au:
                 {
-                    if (name.length() == 13 && name.beginsWith(BuiltInName::EndPrimitive_))
+                    if (name == BuiltInName::gl_PrimitiveID)
                     {
-                        return &BuiltInFunction::kFunction_EndPrimitive_;
+                        return &BuiltInVariable::kVar_gl_PrimitiveIDGS;
                     }
                     break;
                 }
-                case 0xfc2907ccu:
+                case 0xfcffc55cu:
                 {
                     if (name == BuiltInName::gl_InvocationID)
                     {
@@ -13011,13 +12999,21 @@
                     }
                     break;
                 }
+                case 0xfd0c9b3bu:
+                {
+                    if (name == BuiltInName::gl_PrimitiveIDIn)
+                    {
+                        return &BuiltInVariable::kVar_gl_PrimitiveIDIn;
+                    }
+                    break;
+                }
             }
         }
         if ((mShaderType == GL_FRAGMENT_SHADER) && (mResources.EXT_geometry_shader))
         {
             switch (nameHash)
             {
-                case 0x02731c1cu:
+                case 0xfc802b2du:
                 {
                     if (name == BuiltInName::gl_Layer)
                     {
@@ -13025,7 +13021,7 @@
                     }
                     break;
                 }
-                case 0x863d719du:
+                case 0xfce8624au:
                 {
                     if (name == BuiltInName::gl_PrimitiveID)
                     {
@@ -13040,1671 +13036,295 @@
     {
         switch (nameHash)
         {
-            case 0x000dfdb7u:
+            case 0x0c610961u:
             {
-                if (name == BuiltInName::clamp_2C2C2C)
+                if (name.beginsWith(BuiltInName::abs))
                 {
-                    return &BuiltInFunction::kFunction_clamp_2C2C2C;
-                }
-                break;
-            }
-            case 0x013cb578u:
-            {
-                if (name.length() == 12 && name.beginsWith(BuiltInName::roundEven_))
-                {
-                    return &BuiltInFunction::kFunction_roundEven_3B;
-                }
-                break;
-            }
-            case 0x017a65d7u:
-            {
-                if (name == BuiltInName::textureGrad_0I2B2B2B)
-                {
-                    return &BuiltInFunction::kFunction_textureGrad_0I2B2B2B;
-                }
-                break;
-            }
-            case 0x01882d1au:
-            {
-                if (name == BuiltInName::textureProjOffset_0U3B1C)
-                {
-                    return &BuiltInFunction::kFunction_textureProjOffset_0U3B1C;
-                }
-                break;
-            }
-            case 0x01cd0981u:
-            {
-                if (name.length() == 9 && name.beginsWith(BuiltInName::modf_))
-                {
-                    return &BuiltInFunction::kFunction_modf_3B3B;
-                }
-                break;
-            }
-            case 0x0233df8fu:
-            {
-                if (name == BuiltInName::texelFetch_0V2C0C)
-                {
-                    return &BuiltInFunction::kFunction_texelFetch_0V2C0C;
-                }
-                break;
-            }
-            case 0x0246537au:
-            {
-                if (name.length() == 8 && name.beginsWith(BuiltInName::asinh_))
-                {
-                    return &BuiltInFunction::kFunction_asinh_2B;
-                }
-                break;
-            }
-            case 0x039cfeb9u:
-            {
-                if (name.length() == 7 && name.beginsWith(BuiltInName::tanh_))
-                {
-                    return &BuiltInFunction::kFunction_tanh_3B;
-                }
-                break;
-            }
-            case 0x04a657b6u:
-            {
-                if (name.length() == 18 && name.beginsWith(BuiltInName::floatBitsToUint_))
-                {
-                    return &BuiltInFunction::kFunction_floatBitsToUint_0B;
-                }
-                break;
-            }
-            case 0x04cd89bbu:
-            {
-                if (name.length() == 12 && name.beginsWith(BuiltInName::transpose_))
-                {
-                    return &BuiltInFunction::kFunction_transpose_AB;
-                }
-                break;
-            }
-            case 0x05fa8e2fu:
-            {
-                if (name.length() == 16 && name.beginsWith(BuiltInName::textureProj_))
-                {
-                    return &BuiltInFunction::kFunction_textureProj_0U3B;
-                }
-                break;
-            }
-            case 0x0671c30au:
-            {
-                if (name.length() == 10 && name.beginsWith(BuiltInName::inverse_))
-                {
-                    return &BuiltInFunction::kFunction_inverse_5B;
-                }
-                break;
-            }
-            case 0x072c92c3u:
-            {
-                if (name == BuiltInName::textureLod_0X2B0B)
-                {
-                    return &BuiltInFunction::kFunction_textureLod_0X2B0B;
-                }
-                break;
-            }
-            case 0x0776d647u:
-            {
-                if (name == BuiltInName::textureProjOffset_0U2B1C)
-                {
-                    return &BuiltInFunction::kFunction_textureProjOffset_0U2B1C;
-                }
-                break;
-            }
-            case 0x077c06e5u:
-            {
-                if (name.length() == 16 && name.beginsWith(BuiltInName::textureSize_))
-                {
-                    return &BuiltInFunction::kFunction_textureSize_0I0C;
-                }
-                break;
-            }
-            case 0x098595d1u:
-            {
-                if (name == BuiltInName::textureGradOffset_0U1B1B1B1C)
-                {
-                    return &BuiltInFunction::kFunction_textureGradOffset_0U1B1B1B1C;
-                }
-                break;
-            }
-            case 0x09e0f252u:
-            {
-                if (name == BuiltInName::textureProjLod_0Q3B0B)
-                {
-                    return &BuiltInFunction::kFunction_textureProjLod_0Q3B0B;
-                }
-                break;
-            }
-            case 0x0ad28199u:
-            {
-                if (name == BuiltInName::clamp_1D0D0D)
-                {
-                    return &BuiltInFunction::kFunction_clamp_1D0D0D;
-                }
-                break;
-            }
-            case 0x0b283d1du:
-            {
-                if (name.length() == 12 && name.beginsWith(BuiltInName::texture_))
-                {
-                    return &BuiltInFunction::kFunction_texture_0S2B;
-                }
-                break;
-            }
-            case 0x0b5bd931u:
-            {
-                if (name.length() == 13 && name.beginsWith(BuiltInName::lessThan_))
-                {
-                    return &BuiltInFunction::kFunction_lessThan_3D3D;
-                }
-                break;
-            }
-            case 0x0be139b9u:
-            {
-                if (name.length() == 16 && name.beginsWith(BuiltInName::textureSize_))
-                {
-                    return &BuiltInFunction::kFunction_textureSize_0M0C;
-                }
-                break;
-            }
-            case 0x0c15d48au:
-            {
-                if (name.length() == 17 && name.beginsWith(BuiltInName::intBitsToFloat_))
-                {
-                    return &BuiltInFunction::kFunction_intBitsToFloat_2C;
-                }
-                break;
-            }
-            case 0x0c26b204u:
-            {
-                if (name.length() == 17 && name.beginsWith(BuiltInName::outerProduct_))
-                {
-                    return &BuiltInFunction::kFunction_outerProduct_2B3B;
-                }
-                break;
-            }
-            case 0x0c3745dau:
-            {
-                if (name.length() == 8 && name.beginsWith(BuiltInName::isnan_))
-                {
-                    return &BuiltInFunction::kFunction_isnan_2B;
-                }
-                break;
-            }
-            case 0x0c793f9bu:
-            {
-                if (name.length() == 8 && name.beginsWith(BuiltInName::round_))
-                {
-                    return &BuiltInFunction::kFunction_round_0B;
-                }
-                break;
-            }
-            case 0x0d1f9db8u:
-            {
-                if (name.length() == 16 && name.beginsWith(BuiltInName::textureProj_))
-                {
-                    return &BuiltInFunction::kFunction_textureProj_0P3B;
-                }
-                break;
-            }
-            case 0x0da46ec0u:
-            {
-                if (name == BuiltInName::texelFetchOffset_0X2C0C1C)
-                {
-                    return &BuiltInFunction::kFunction_texelFetchOffset_0X2C0C1C;
-                }
-                break;
-            }
-            case 0x0f7d6756u:
-            {
-                if (name.length() == 10 && name.beginsWith(BuiltInName::inverse_))
-                {
-                    return &BuiltInFunction::kFunction_inverse_AB;
-                }
-                break;
-            }
-            case 0x0f88eaa3u:
-            {
-                if (name.length() == 19 && name.beginsWith(BuiltInName::matrixCompMult_))
-                {
-                    return &BuiltInFunction::kFunction_matrixCompMult_9B9B;
-                }
-                break;
-            }
-            case 0x0faba203u:
-            {
-                if (name.length() == 17 && name.beginsWith(BuiltInName::floatBitsToInt_))
-                {
-                    return &BuiltInFunction::kFunction_floatBitsToInt_2B;
-                }
-                break;
-            }
-            case 0x101493beu:
-            {
-                if (name == BuiltInName::textureOffset_0P1B1C)
-                {
-                    return &BuiltInFunction::kFunction_textureOffset_0P1B1C;
-                }
-                break;
-            }
-            case 0x10769e08u:
-            {
-                if (name.length() == 6 && name.beginsWith(BuiltInName::abs_))
-                {
+                    ASSERT(name.length() == 6);
                     return &BuiltInFunction::kFunction_abs_0C;
                 }
                 break;
             }
-            case 0x119658feu:
+            case 0x0c638c06u:
             {
-                if (name.length() == 7 && name.beginsWith(BuiltInName::tanh_))
+                if (name.beginsWith(BuiltInName::abs))
                 {
-                    return &BuiltInFunction::kFunction_tanh_0B;
-                }
-                break;
-            }
-            case 0x12a67064u:
-            {
-                if (name == BuiltInName::textureLod_0Q2B0B)
-                {
-                    return &BuiltInFunction::kFunction_textureLod_0Q2B0B;
-                }
-                break;
-            }
-            case 0x12fad71du:
-            {
-                if (name.length() == 17 && name.beginsWith(BuiltInName::outerProduct_))
-                {
-                    return &BuiltInFunction::kFunction_outerProduct_1B1B;
-                }
-                break;
-            }
-            case 0x138e5608u:
-            {
-                if (name == BuiltInName::textureOffset_0V2B2C)
-                {
-                    return &BuiltInFunction::kFunction_textureOffset_0V2B2C;
-                }
-                break;
-            }
-            case 0x13bfb65fu:
-            {
-                if (name.length() == 8 && name.beginsWith(BuiltInName::min_))
-                {
-                    return &BuiltInFunction::kFunction_min_2D0D;
-                }
-                break;
-            }
-            case 0x147c8362u:
-            {
-                if (name == BuiltInName::textureProjGradOffset_0U3B1B1B1C)
-                {
-                    return &BuiltInFunction::kFunction_textureProjGradOffset_0U3B1B1B1C;
-                }
-                break;
-            }
-            case 0x154b0321u:
-            {
-                if (name.length() == 16 && name.beginsWith(BuiltInName::textureSize_))
-                {
-                    return &BuiltInFunction::kFunction_textureSize_0U0C;
-                }
-                break;
-            }
-            case 0x15d42df8u:
-            {
-                if (name == BuiltInName::textureProjOffset_0H2B1C)
-                {
-                    return &BuiltInFunction::kFunction_textureProjOffset_0H2B1C;
-                }
-                break;
-            }
-            case 0x164d5fdcu:
-            {
-                if (name == BuiltInName::textureProjLod_0P2B0B)
-                {
-                    return &BuiltInFunction::kFunction_textureProjLod_0P2B0B;
-                }
-                break;
-            }
-            case 0x17d44f4au:
-            {
-                if (name == BuiltInName::texelFetch_0Q2C0C)
-                {
-                    return &BuiltInFunction::kFunction_texelFetch_0Q2C0C;
-                }
-                break;
-            }
-            case 0x1830b4d0u:
-            {
-                if (name == BuiltInName::textureProjGradOffset_0V3B2B2B2C)
-                {
-                    return &BuiltInFunction::kFunction_textureProjGradOffset_0V3B2B2B2C;
-                }
-                break;
-            }
-            case 0x196baf10u:
-            {
-                if (name.length() == 17 && name.beginsWith(BuiltInName::outerProduct_))
-                {
-                    return &BuiltInFunction::kFunction_outerProduct_3B2B;
-                }
-                break;
-            }
-            case 0x198ec035u:
-            {
-                if (name.length() == 10 && name.beginsWith(BuiltInName::inverse_))
-                {
-                    return &BuiltInFunction::kFunction_inverse_FB;
-                }
-                break;
-            }
-            case 0x19b1fbf8u:
-            {
-                if (name == BuiltInName::gl_MaxVertexOutputVectors)
-                {
-                    return mVar_gl_MaxVertexOutputVectors;
-                }
-                break;
-            }
-            case 0x1a4b729au:
-            {
-                if (name == BuiltInName::textureProjLodOffset_0Z3B0B1C)
-                {
-                    return &BuiltInFunction::kFunction_textureProjLodOffset_0Z3B0B1C;
-                }
-                break;
-            }
-            case 0x1b502a44u:
-            {
-                if (name == BuiltInName::clamp_1C0C0C)
-                {
-                    return &BuiltInFunction::kFunction_clamp_1C0C0C;
-                }
-                break;
-            }
-            case 0x1b87f4a5u:
-            {
-                if (name == BuiltInName::textureProjLod_0H3B0B)
-                {
-                    return &BuiltInFunction::kFunction_textureProjLod_0H3B0B;
-                }
-                break;
-            }
-            case 0x1c0f31f5u:
-            {
-                if (name.length() == 17 && name.beginsWith(BuiltInName::intBitsToFloat_))
-                {
-                    return &BuiltInFunction::kFunction_intBitsToFloat_1C;
-                }
-                break;
-            }
-            case 0x1c1e5a64u:
-            {
-                if (name == BuiltInName::texelFetchOffset_0I2C0C2C)
-                {
-                    return &BuiltInFunction::kFunction_texelFetchOffset_0I2C0C2C;
-                }
-                break;
-            }
-            case 0x1f00492au:
-            {
-                if (name.length() == 8 && name.beginsWith(BuiltInName::max_))
-                {
-                    return &BuiltInFunction::kFunction_max_1C0C;
-                }
-                break;
-            }
-            case 0x206d8524u:
-            {
-                if (name == BuiltInName::gl_MaxProgramTexelOffset)
-                {
-                    return mVar_gl_MaxProgramTexelOffset;
-                }
-                break;
-            }
-            case 0x20f43162u:
-            {
-                if (name.length() == 17 && name.beginsWith(BuiltInName::outerProduct_))
-                {
-                    return &BuiltInFunction::kFunction_outerProduct_1B2B;
-                }
-                break;
-            }
-            case 0x22a80e3du:
-            {
-                if (name == BuiltInName::texelFetchOffset_0S2C0C1C)
-                {
-                    return &BuiltInFunction::kFunction_texelFetchOffset_0S2C0C1C;
-                }
-                break;
-            }
-            case 0x22d26116u:
-            {
-                if (name == BuiltInName::textureOffset_0H1B1C)
-                {
-                    return &BuiltInFunction::kFunction_textureOffset_0H1B1C;
-                }
-                break;
-            }
-            case 0x2337ed89u:
-            {
-                if (name == BuiltInName::textureGrad_0W2B2B2B)
-                {
-                    return &BuiltInFunction::kFunction_textureGrad_0W2B2B2B;
-                }
-                break;
-            }
-            case 0x2448c797u:
-            {
-                if (name.length() == 8 && name.beginsWith(BuiltInName::asinh_))
-                {
-                    return &BuiltInFunction::kFunction_asinh_3B;
-                }
-                break;
-            }
-            case 0x25704cc5u:
-            {
-                if (name.length() == 7 && name.beginsWith(BuiltInName::sinh_))
-                {
-                    return &BuiltInFunction::kFunction_sinh_2B;
-                }
-                break;
-            }
-            case 0x25876e15u:
-            {
-                if (name.length() == 12 && name.beginsWith(BuiltInName::texture_))
-                {
-                    return &BuiltInFunction::kFunction_texture_0K2B;
-                }
-                break;
-            }
-            case 0x2620dd52u:
-            {
-                if (name.length() == 16 && name.beginsWith(BuiltInName::greaterThan_))
-                {
-                    return &BuiltInFunction::kFunction_greaterThan_3D3D;
-                }
-                break;
-            }
-            case 0x267a1e16u:
-            {
-                if (name.length() == 21 && name.beginsWith(BuiltInName::greaterThanEqual_))
-                {
-                    return &BuiltInFunction::kFunction_greaterThanEqual_2D2D;
-                }
-                break;
-            }
-            case 0x26c07245u:
-            {
-                if (name.length() == 8 && name.beginsWith(BuiltInName::trunc_))
-                {
-                    return &BuiltInFunction::kFunction_trunc_0B;
-                }
-                break;
-            }
-            case 0x28be44dau:
-            {
-                if (name == BuiltInName::texelFetch_0P1C0C)
-                {
-                    return &BuiltInFunction::kFunction_texelFetch_0P1C0C;
-                }
-                break;
-            }
-            case 0x2a98dd2au:
-            {
-                if (name == BuiltInName::textureGrad_0a3B2B2B)
-                {
-                    return &BuiltInFunction::kFunction_textureGrad_0a3B2B2B;
-                }
-                break;
-            }
-            case 0x2b3f362du:
-            {
-                if (name.length() == 12 && name.beginsWith(BuiltInName::roundEven_))
-                {
-                    return &BuiltInFunction::kFunction_roundEven_2B;
-                }
-                break;
-            }
-            case 0x2cbb3831u:
-            {
-                if (name.length() == 13 && name.beginsWith(BuiltInName::lessThan_))
-                {
-                    return &BuiltInFunction::kFunction_lessThan_2D2D;
-                }
-                break;
-            }
-            case 0x2d30964eu:
-            {
-                if (name == BuiltInName::textureLodOffset_0X2B0B1C)
-                {
-                    return &BuiltInFunction::kFunction_textureLodOffset_0X2B0B1C;
-                }
-                break;
-            }
-            case 0x2d7ebf02u:
-            {
-                if (name.length() == 16 && name.beginsWith(BuiltInName::greaterThan_))
-                {
-                    return &BuiltInFunction::kFunction_greaterThan_1D1D;
-                }
-                break;
-            }
-            case 0x2db85505u:
-            {
-                if (name.length() == 16 && name.beginsWith(BuiltInName::textureProj_))
-                {
-                    return &BuiltInFunction::kFunction_textureProj_0H2B;
-                }
-                break;
-            }
-            case 0x2fd29b2cu:
-            {
-                if (name == BuiltInName::textureGradOffset_0K2B1B1B1C)
-                {
-                    return &BuiltInFunction::kFunction_textureGradOffset_0K2B1B1B1C;
-                }
-                break;
-            }
-            case 0x319bd053u:
-            {
-                if (name == BuiltInName::textureGrad_0H1B1B1B)
-                {
-                    return &BuiltInFunction::kFunction_textureGrad_0H1B1B1B;
-                }
-                break;
-            }
-            case 0x327bba04u:
-            {
-                if (name.length() == 8 && name.beginsWith(BuiltInName::round_))
-                {
-                    return &BuiltInFunction::kFunction_round_3B;
-                }
-                break;
-            }
-            case 0x32a42332u:
-            {
-                if (name == BuiltInName::textureProjGrad_0V3B2B2B)
-                {
-                    return &BuiltInFunction::kFunction_textureProjGrad_0V3B2B2B;
-                }
-                break;
-            }
-            case 0x32c6e76fu:
-            {
-                if (name == BuiltInName::textureGrad_0Q2B2B2B)
-                {
-                    return &BuiltInFunction::kFunction_textureGrad_0Q2B2B2B;
-                }
-                break;
-            }
-            case 0x3368140au:
-            {
-                if (name.length() == 7 && name.beginsWith(BuiltInName::sinh_))
-                {
-                    return &BuiltInFunction::kFunction_sinh_1B;
-                }
-                break;
-            }
-            case 0x3398cd1bu:
-            {
-                if (name.length() == 7 && name.beginsWith(BuiltInName::tanh_))
-                {
-                    return &BuiltInFunction::kFunction_tanh_1B;
-                }
-                break;
-            }
-            case 0x339c450du:
-            {
-                if (name == BuiltInName::textureLod_0V2B0B)
-                {
-                    return &BuiltInFunction::kFunction_textureLod_0V2B0B;
-                }
-                break;
-            }
-            case 0x346dec93u:
-            {
-                if (name.length() == 19 && name.beginsWith(BuiltInName::matrixCompMult_))
-                {
-                    return &BuiltInFunction::kFunction_matrixCompMult_7B7B;
-                }
-                break;
-            }
-            case 0x348a8ebfu:
-            {
-                if (name == BuiltInName::gl_MaxFragmentInputVectors)
-                {
-                    return mVar_gl_MaxFragmentInputVectors;
-                }
-                break;
-            }
-            case 0x34b8398au:
-            {
-                if (name.length() == 8 && name.beginsWith(BuiltInName::trunc_))
-                {
-                    return &BuiltInFunction::kFunction_trunc_3B;
-                }
-                break;
-            }
-            case 0x35ae1c6cu:
-            {
-                if (name.length() == 17 && name.beginsWith(BuiltInName::floatBitsToInt_))
-                {
-                    return &BuiltInFunction::kFunction_floatBitsToInt_1B;
-                }
-                break;
-            }
-            case 0x37221e6du:
-            {
-                if (name.length() == 16 && name.beginsWith(BuiltInName::textureProj_))
-                {
-                    return &BuiltInFunction::kFunction_textureProj_0P2B;
-                }
-                break;
-            }
-            case 0x38791b97u:
-            {
-                if (name.length() == 6 && name.beginsWith(BuiltInName::abs_))
-                {
+                    ASSERT(name.length() == 6);
                     return &BuiltInFunction::kFunction_abs_3C;
                 }
                 break;
             }
-            case 0x38a66077u:
+            case 0x0c6e080au:
             {
-                if (name == BuiltInName::texelFetchOffset_0P1C0C1C)
+                if (name.beginsWith(BuiltInName::abs))
                 {
-                    return &BuiltInFunction::kFunction_texelFetchOffset_0P1C0C1C;
+                    ASSERT(name.length() == 6);
+                    return &BuiltInFunction::kFunction_abs_2C;
                 }
                 break;
             }
-            case 0x393c36c2u:
+            case 0x0c6f0a53u:
             {
-                if (name.length() == 12 && name.beginsWith(BuiltInName::texture_))
+                if (name.beginsWith(BuiltInName::abs))
                 {
-                    return &BuiltInFunction::kFunction_texture_0V2B;
+                    ASSERT(name.length() == 6);
+                    return &BuiltInFunction::kFunction_abs_1C;
                 }
                 break;
             }
-            case 0x39c4a805u:
+            case 0x0c813da4u:
             {
-                if (name == BuiltInName::textureOffset_0U1B1C)
+                if (name.beginsWith(BuiltInName::min))
                 {
-                    return &BuiltInFunction::kFunction_textureOffset_0U1B1C;
+                    ASSERT(name.length() == 8);
+                    return &BuiltInFunction::kFunction_min_2D0D;
                 }
                 break;
             }
-            case 0x3ba7cb8au:
+            case 0x0c81f92eu:
             {
-                if (name.length() == 16 && name.beginsWith(BuiltInName::greaterThan_))
+                if (name.beginsWith(BuiltInName::max))
                 {
-                    return &BuiltInFunction::kFunction_greaterThan_2D2D;
+                    ASSERT(name.length() == 8);
+                    return &BuiltInFunction::kFunction_max_1C0C;
                 }
                 break;
             }
-            case 0x3c0d8cafu:
+            case 0x0c840c87u:
             {
-                if (name == BuiltInName::textureProjGrad_0Q3B2B2B)
+                if (name.beginsWith(BuiltInName::min))
                 {
-                    return &BuiltInFunction::kFunction_textureProjGrad_0Q3B2B2B;
-                }
-                break;
-            }
-            case 0x3c11a2ecu:
-            {
-                if (name.length() == 17 && name.beginsWith(BuiltInName::intBitsToFloat_))
-                {
-                    return &BuiltInFunction::kFunction_intBitsToFloat_0C;
-                }
-                break;
-            }
-            case 0x3da16996u:
-            {
-                if (name.length() == 12 && name.beginsWith(BuiltInName::texture_))
-                {
-                    return &BuiltInFunction::kFunction_texture_0Z2B;
-                }
-                break;
-            }
-            case 0x3e2a3dd6u:
-            {
-                if (name == BuiltInName::textureGrad_0J2B2B2B)
-                {
-                    return &BuiltInFunction::kFunction_textureGrad_0J2B2B2B;
-                }
-                break;
-            }
-            case 0x3e30e0d4u:
-            {
-                if (name.length() == 16 && name.beginsWith(BuiltInName::textureSize_))
-                {
-                    return &BuiltInFunction::kFunction_textureSize_0J0C;
-                }
-                break;
-            }
-            case 0x3f5e397eu:
-            {
-                if (name.length() == 16 && name.beginsWith(BuiltInName::textureProj_))
-                {
-                    return &BuiltInFunction::kFunction_textureProj_0V3B;
-                }
-                break;
-            }
-            case 0x404f56ddu:
-            {
-                if (name == BuiltInName::texelFetch_0M1C0C)
-                {
-                    return &BuiltInFunction::kFunction_texelFetch_0M1C0C;
-                }
-                break;
-            }
-            case 0x405da95du:
-            {
-                if (name.length() == 8 && name.beginsWith(BuiltInName::min_))
-                {
+                    ASSERT(name.length() == 8);
                     return &BuiltInFunction::kFunction_min_0D0D;
                 }
                 break;
             }
-            case 0x40b0dfadu:
+            case 0x0c8470b5u:
             {
-                if (name == BuiltInName::clamp_0C0C0C)
+                if (name.beginsWith(BuiltInName::min))
                 {
-                    return &BuiltInFunction::kFunction_clamp_0C0C0C;
-                }
-                break;
-            }
-            case 0x4257e234u:
-            {
-                if (name == BuiltInName::textureProjLod_0H2B0B)
-                {
-                    return &BuiltInFunction::kFunction_textureProjLod_0H2B0B;
-                }
-                break;
-            }
-            case 0x42f6a57fu:
-            {
-                if (name.length() == 17 && name.beginsWith(BuiltInName::outerProduct_))
-                {
-                    return &BuiltInFunction::kFunction_outerProduct_1B3B;
-                }
-                break;
-            }
-            case 0x4455c12cu:
-            {
-                if (name == BuiltInName::texelFetch_0S2C0C)
-                {
-                    return &BuiltInFunction::kFunction_texelFetch_0S2C0C;
-                }
-                break;
-            }
-            case 0x455afa58u:
-            {
-                if (name == BuiltInName::textureProjGradOffset_0P2B1B1B1C)
-                {
-                    return &BuiltInFunction::kFunction_textureProjGradOffset_0P2B1B1B1C;
-                }
-                break;
-            }
-            case 0x45e11f4au:
-            {
-                if (name == BuiltInName::clamp_2D0D0D)
-                {
-                    return &BuiltInFunction::kFunction_clamp_2D0D0D;
-                }
-                break;
-            }
-            case 0x469db0f5u:
-            {
-                if (name == BuiltInName::textureProjGradOffset_0H3B1B1B1C)
-                {
-                    return &BuiltInFunction::kFunction_textureProjGradOffset_0H3B1B1B1C;
-                }
-                break;
-            }
-            case 0x4759a1c9u:
-            {
-                if (name == BuiltInName::textureGradOffset_0X2B1B1B1C)
-                {
-                    return &BuiltInFunction::kFunction_textureGradOffset_0X2B1B1B1C;
-                }
-                break;
-            }
-            case 0x47a2ba6cu:
-            {
-                if (name == BuiltInName::textureGrad_0X2B1B1B)
-                {
-                    return &BuiltInFunction::kFunction_textureGrad_0X2B1B1B;
-                }
-                break;
-            }
-            case 0x47bb8b0du:
-            {
-                if (name.length() == 8 && name.beginsWith(BuiltInName::min_))
-                {
+                    ASSERT(name.length() == 8);
                     return &BuiltInFunction::kFunction_min_2D2D;
                 }
                 break;
             }
-            case 0x4869dbd3u:
+            case 0x0c84903fu:
             {
-                if (name.length() == 18 && name.beginsWith(BuiltInName::lessThanEqual_))
+                if (name.beginsWith(BuiltInName::min))
                 {
-                    return &BuiltInFunction::kFunction_lessThanEqual_2D2D;
-                }
-                break;
-            }
-            case 0x499e99d6u:
-            {
-                if (name.length() == 8 && name.beginsWith(BuiltInName::min_))
-                {
+                    ASSERT(name.length() == 8);
                     return &BuiltInFunction::kFunction_min_3C0C;
                 }
                 break;
             }
-            case 0x49e092b7u:
+            case 0x0c849cbeu:
             {
-                if (name.length() == 8 && name.beginsWith(BuiltInName::min_))
+                if (name.beginsWith(BuiltInName::min))
                 {
+                    ASSERT(name.length() == 8);
                     return &BuiltInFunction::kFunction_min_2C0C;
                 }
                 break;
             }
-            case 0x4a5c1bf4u:
+            case 0x0c850224u:
             {
-                if (name == BuiltInName::textureLodOffset_0Z2B0B1C)
+                if (name.beginsWith(BuiltInName::max))
                 {
-                    return &BuiltInFunction::kFunction_textureLodOffset_0Z2B0B1C;
-                }
-                break;
-            }
-            case 0x4b027db7u:
-            {
-                if (name.length() == 16 && name.beginsWith(BuiltInName::textureSize_))
-                {
-                    return &BuiltInFunction::kFunction_textureSize_0S0C;
-                }
-                break;
-            }
-            case 0x4b343265u:
-            {
-                if (name.length() == 10 && name.beginsWith(BuiltInName::equal_))
-                {
-                    return &BuiltInFunction::kFunction_equal_2D2D;
-                }
-                break;
-            }
-            case 0x4b60ca6fu:
-            {
-                if (name.length() == 12 && name.beginsWith(BuiltInName::texture_))
-                {
-                    return &BuiltInFunction::kFunction_texture_0I2B;
-                }
-                break;
-            }
-            case 0x4ba47222u:
-            {
-                if (name == BuiltInName::clamp_3C0C0C)
-                {
-                    return &BuiltInFunction::kFunction_clamp_3C0C0C;
-                }
-                break;
-            }
-            case 0x4bfe4a10u:
-            {
-                if (name.length() == 16 && name.beginsWith(BuiltInName::textureSize_))
-                {
-                    return &BuiltInFunction::kFunction_textureSize_0V0C;
-                }
-                break;
-            }
-            case 0x4cc044ccu:
-            {
-                if (name.length() == 8 && name.beginsWith(BuiltInName::isinf_))
-                {
-                    return &BuiltInFunction::kFunction_isinf_2B;
-                }
-                break;
-            }
-            case 0x4cd78002u:
-            {
-                if (name == BuiltInName::textureLod_0S2B0B)
-                {
-                    return &BuiltInFunction::kFunction_textureLod_0S2B0B;
-                }
-                break;
-            }
-            case 0x4ee30447u:
-            {
-                if (name == BuiltInName::textureLodOffset_0V2B0B2C)
-                {
-                    return &BuiltInFunction::kFunction_textureLodOffset_0V2B0B2C;
-                }
-                break;
-            }
-            case 0x505a7783u:
-            {
-                if (name.length() == 8 && name.beginsWith(BuiltInName::max_))
-                {
+                    ASSERT(name.length() == 8);
                     return &BuiltInFunction::kFunction_max_2D2D;
                 }
                 break;
             }
-            case 0x515a7a59u:
+            case 0x0c8536c3u:
             {
-                if (name.length() == 9 && name.beginsWith(BuiltInName::modf_))
+                if (name.beginsWith(BuiltInName::max))
                 {
-                    return &BuiltInFunction::kFunction_modf_1B1B;
-                }
-                break;
-            }
-            case 0x528b682cu:
-            {
-                if (name.length() == 16 && name.beginsWith(BuiltInName::textureSize_))
-                {
-                    return &BuiltInFunction::kFunction_textureSize_0b0C;
-                }
-                break;
-            }
-            case 0x5306a6a9u:
-            {
-                if (name.length() == 8 && name.beginsWith(BuiltInName::max_))
-                {
+                    ASSERT(name.length() == 8);
                     return &BuiltInFunction::kFunction_max_2C0C;
                 }
                 break;
             }
-            case 0x556a8827u:
+            case 0x0c85921fu:
             {
-                if (name.length() == 7 && name.beginsWith(BuiltInName::sinh_))
+                if (name.beginsWith(BuiltInName::max))
                 {
-                    return &BuiltInFunction::kFunction_sinh_0B;
-                }
-                break;
-            }
-            case 0x559bf8bdu:
-            {
-                if (name == BuiltInName::textureProjLodOffset_0H2B0B1C)
-                {
-                    return &BuiltInFunction::kFunction_textureProjLodOffset_0H2B0B1C;
-                }
-                break;
-            }
-            case 0x56baada7u:
-            {
-                if (name.length() == 8 && name.beginsWith(BuiltInName::trunc_))
-                {
-                    return &BuiltInFunction::kFunction_trunc_2B;
-                }
-                break;
-            }
-            case 0x5729921cu:
-            {
-                if (name == BuiltInName::clamp_1C1C1C)
-                {
-                    return &BuiltInFunction::kFunction_clamp_1C1C1C;
-                }
-                break;
-            }
-            case 0x574855cdu:
-            {
-                if (name == BuiltInName::textureProjGradOffset_0I3B2B2B2C)
-                {
-                    return &BuiltInFunction::kFunction_textureProjGradOffset_0I3B2B2B2C;
-                }
-                break;
-            }
-            case 0x58585f7fu:
-            {
-                if (name == BuiltInName::textureLodOffset_0S2B0B1C)
-                {
-                    return &BuiltInFunction::kFunction_textureLodOffset_0S2B0B1C;
-                }
-                break;
-            }
-            case 0x593a41bbu:
-            {
-                if (name.length() == 8 && name.beginsWith(BuiltInName::max_))
-                {
+                    ASSERT(name.length() == 8);
                     return &BuiltInFunction::kFunction_max_3D3D;
                 }
                 break;
             }
-            case 0x593a5ce2u:
+            case 0x0c859e3eu:
             {
-                if (name.length() == 13 && name.beginsWith(BuiltInName::notEqual_))
+                if (name.beginsWith(BuiltInName::min))
                 {
-                    return &BuiltInFunction::kFunction_notEqual_1D1D;
-                }
-                break;
-            }
-            case 0x5997f741u:
-            {
-                if (name.length() == 8 && name.beginsWith(BuiltInName::min_))
-                {
+                    ASSERT(name.length() == 8);
                     return &BuiltInFunction::kFunction_min_3C3C;
                 }
                 break;
             }
-            case 0x5999aca5u:
+            case 0x0c86138du:
             {
-                if (name == BuiltInName::texelFetchOffset_0K2C0C1C)
+                if (name.beginsWith(BuiltInName::min))
                 {
-                    return &BuiltInFunction::kFunction_texelFetchOffset_0K2C0C1C;
-                }
-                break;
-            }
-            case 0x599b4784u:
-            {
-                if (name.length() == 7 && name.beginsWith(BuiltInName::tanh_))
-                {
-                    return &BuiltInFunction::kFunction_tanh_2B;
-                }
-                break;
-            }
-            case 0x59a05651u:
-            {
-                if (name == BuiltInName::textureProjOffset_0Q3B2C)
-                {
-                    return &BuiltInFunction::kFunction_textureProjOffset_0Q3B2C;
-                }
-                break;
-            }
-            case 0x59e1f1f2u:
-            {
-                if (name == BuiltInName::textureGradOffset_0b3B1B1B1C)
-                {
-                    return &BuiltInFunction::kFunction_textureGradOffset_0b3B1B1B1C;
-                }
-                break;
-            }
-            case 0x59ec8230u:
-            {
-                if (name == BuiltInName::textureOffset_0S2B1C)
-                {
-                    return &BuiltInFunction::kFunction_textureOffset_0S2B1C;
-                }
-                break;
-            }
-            case 0x5b723064u:
-            {
-                if (name.length() == 7 && name.beginsWith(BuiltInName::sign_))
-                {
-                    return &BuiltInFunction::kFunction_sign_1C;
-                }
-                break;
-            }
-            case 0x5bcc4eaau:
-            {
-                if (name.length() == 16 && name.beginsWith(BuiltInName::textureProj_))
-                {
-                    return &BuiltInFunction::kFunction_textureProj_0M2B;
-                }
-                break;
-            }
-            case 0x5be66575u:
-            {
-                if (name == BuiltInName::textureProjOffset_0H3B1C)
-                {
-                    return &BuiltInFunction::kFunction_textureProjOffset_0H3B1C;
-                }
-                break;
-            }
-            case 0x5c02c345u:
-            {
-                if (name.length() == 18 && name.beginsWith(BuiltInName::uintBitsToFloat_))
-                {
-                    return &BuiltInFunction::kFunction_uintBitsToFloat_3D;
-                }
-                break;
-            }
-            case 0x5c0b0c3cu:
-            {
-                if (name == BuiltInName::textureProjLodOffset_0Q3B0B2C)
-                {
-                    return &BuiltInFunction::kFunction_textureProjLodOffset_0Q3B0B2C;
-                }
-                break;
-            }
-            case 0x5fb09d21u:
-            {
-                if (name.length() == 17 && name.beginsWith(BuiltInName::floatBitsToInt_))
-                {
-                    return &BuiltInFunction::kFunction_floatBitsToInt_0B;
-                }
-                break;
-            }
-            case 0x61168ef7u:
-            {
-                if (name.length() == 8 && name.beginsWith(BuiltInName::atanh_))
-                {
-                    return &BuiltInFunction::kFunction_atanh_2B;
-                }
-                break;
-            }
-            case 0x61475731u:
-            {
-                if (name == BuiltInName::clamp_1D1D1D)
-                {
-                    return &BuiltInFunction::kFunction_clamp_1D1D1D;
-                }
-                break;
-            }
-            case 0x61bd085du:
-            {
-                if (name.length() == 8 && name.beginsWith(BuiltInName::min_))
-                {
+                    ASSERT(name.length() == 8);
                     return &BuiltInFunction::kFunction_min_3D3D;
                 }
                 break;
             }
-            case 0x622e51a9u:
+            case 0x0c86f921u:
             {
-                if (name == BuiltInName::textureLod_0J2B0B)
+                if (name.beginsWith(BuiltInName::min))
                 {
-                    return &BuiltInFunction::kFunction_textureLod_0J2B0B;
-                }
-                break;
-            }
-            case 0x640bb15fu:
-            {
-                if (name == BuiltInName::texelFetchOffset_0H1C0C1C)
-                {
-                    return &BuiltInFunction::kFunction_texelFetchOffset_0H1C0C1C;
-                }
-                break;
-            }
-            case 0x6414207bu:
-            {
-                if (name.length() == 17 && name.beginsWith(BuiltInName::intBitsToFloat_))
-                {
-                    return &BuiltInFunction::kFunction_intBitsToFloat_3C;
-                }
-                break;
-            }
-            case 0x64ce27feu:
-            {
-                if (name == BuiltInName::textureProjLod_0U3B0B)
-                {
-                    return &BuiltInFunction::kFunction_textureProjLod_0U3B0B;
-                }
-                break;
-            }
-            case 0x6509abb0u:
-            {
-                if (name == BuiltInName::textureProjGrad_0H3B1B1B)
-                {
-                    return &BuiltInFunction::kFunction_textureProjGrad_0H3B1B1B;
-                }
-                break;
-            }
-            case 0x66fac460u:
-            {
-                if (name == BuiltInName::textureLod_0H1B0B)
-                {
-                    return &BuiltInFunction::kFunction_textureLod_0H1B0B;
-                }
-                break;
-            }
-            case 0x68df806eu:
-            {
-                if (name == BuiltInName::textureGrad_0R2B2B2B)
-                {
-                    return &BuiltInFunction::kFunction_textureGrad_0R2B2B2B;
-                }
-                break;
-            }
-            case 0x68fefbb2u:
-            {
-                if (name.length() == 7 && name.beginsWith(BuiltInName::cosh_))
-                {
-                    return &BuiltInFunction::kFunction_cosh_0B;
-                }
-                break;
-            }
-            case 0x6e70010cu:
-            {
-                if (name.length() == 14 && name.beginsWith(BuiltInName::textureSize_))
-                {
-                    return &BuiltInFunction::kFunction_textureSize_0Y;
-                }
-                break;
-            }
-            case 0x6f92d00cu:
-            {
-                if (name.length() == 8 && name.beginsWith(BuiltInName::min_))
-                {
+                    ASSERT(name.length() == 8);
                     return &BuiltInFunction::kFunction_min_1D0D;
                 }
                 break;
             }
-            case 0x6fa329a5u:
+            case 0x0c87fdd9u:
             {
-                if (name == BuiltInName::textureProjGrad_0P2B1B1B)
+                if (name.beginsWith(BuiltInName::min))
                 {
-                    return &BuiltInFunction::kFunction_textureProjGrad_0P2B1B1B;
-                }
-                break;
-            }
-            case 0x70c27acdu:
-            {
-                if (name == BuiltInName::textureOffset_0X2B1C)
-                {
-                    return &BuiltInFunction::kFunction_textureOffset_0X2B1C;
-                }
-                break;
-            }
-            case 0x71ef80d7u:
-            {
-                if (name.length() == 12 && name.beginsWith(BuiltInName::texture_))
-                {
-                    return &BuiltInFunction::kFunction_texture_0Q2B;
-                }
-                break;
-            }
-            case 0x72403404u:
-            {
-                if (name == BuiltInName::textureProjLodOffset_0I3B0B2C)
-                {
-                    return &BuiltInFunction::kFunction_textureProjLodOffset_0I3B0B2C;
-                }
-                break;
-            }
-            case 0x726d9e79u:
-            {
-                if (name.length() == 16 && name.beginsWith(BuiltInName::textureProj_))
-                {
-                    return &BuiltInFunction::kFunction_textureProj_0L2B;
-                }
-                break;
-            }
-            case 0x737008ebu:
-            {
-                if (name.length() == 14 && name.beginsWith(BuiltInName::textureSize_))
-                {
-                    return &BuiltInFunction::kFunction_textureSize_0T;
-                }
-                break;
-            }
-            case 0x73713e4bu:
-            {
-                if (name == BuiltInName::textureOffset_0Z2B1C)
-                {
-                    return &BuiltInFunction::kFunction_textureOffset_0Z2B1C;
-                }
-                break;
-            }
-            case 0x73cbbd41u:
-            {
-                if (name == BuiltInName::textureProjLodOffset_0V3B0B2C)
-                {
-                    return &BuiltInFunction::kFunction_textureProjLodOffset_0V3B0B2C;
-                }
-                break;
-            }
-            case 0x75c877acu:
-            {
-                if (name.length() == 12 && name.beginsWith(BuiltInName::texture_))
-                {
-                    return &BuiltInFunction::kFunction_texture_0M1B;
-                }
-                break;
-            }
-            case 0x76c2c581u:
-            {
-                if (name.length() == 8 && name.beginsWith(BuiltInName::isinf_))
-                {
-                    return &BuiltInFunction::kFunction_isinf_3B;
-                }
-                break;
-            }
-            case 0x7732f2f2u:
-            {
-                if (name == BuiltInName::texelFetch_0I2C0C)
-                {
-                    return &BuiltInFunction::kFunction_texelFetch_0I2C0C;
-                }
-                break;
-            }
-            case 0x78036035u:
-            {
-                if (name == BuiltInName::textureOffset_0Q2B2C)
-                {
-                    return &BuiltInFunction::kFunction_textureOffset_0Q2B2C;
-                }
-                break;
-            }
-            case 0x793a7cc1u:
-            {
-                if (name == BuiltInName::textureLodOffset_0P1B0B1C)
-                {
-                    return &BuiltInFunction::kFunction_textureLodOffset_0P1B0B1C;
-                }
-                break;
-            }
-            case 0x798a0c0fu:
-            {
-                if (name == BuiltInName::textureProjLod_0U2B0B)
-                {
-                    return &BuiltInFunction::kFunction_textureProjLod_0U2B0B;
-                }
-                break;
-            }
-            case 0x7a053116u:
-            {
-                if (name.length() == 18 && name.beginsWith(BuiltInName::uintBitsToFloat_))
-                {
-                    return &BuiltInFunction::kFunction_uintBitsToFloat_0D;
-                }
-                break;
-            }
-            case 0x7b08fc96u:
-            {
-                if (name == BuiltInName::gl_MinProgramTexelOffset)
-                {
-                    return mVar_gl_MinProgramTexelOffset;
-                }
-                break;
-            }
-            case 0x7b6d0290u:
-            {
-                if (name.length() == 7 && name.beginsWith(BuiltInName::sinh_))
-                {
-                    return &BuiltInFunction::kFunction_sinh_3B;
-                }
-                break;
-            }
-            case 0x7c291893u:
-            {
-                if (name.length() == 14 && name.beginsWith(BuiltInName::yuv_2_rgb_))
-                {
-                    return &BuiltInFunction::kFunction_yuv_2_rgb_2B0G;
-                }
-                break;
-            }
-            case 0x7c675aa4u:
-            {
-                if (name == BuiltInName::textureProjLodOffset_0H3B0B1C)
-                {
-                    return &BuiltInFunction::kFunction_textureProjLodOffset_0H3B0B1C;
-                }
-                break;
-            }
-            case 0x7c701716u:
-            {
-                if (name.length() == 14 && name.beginsWith(BuiltInName::textureSize_))
-                {
-                    return &BuiltInFunction::kFunction_textureSize_0O;
-                }
-                break;
-            }
-            case 0x7cbd2810u:
-            {
-                if (name.length() == 8 && name.beginsWith(BuiltInName::trunc_))
-                {
-                    return &BuiltInFunction::kFunction_trunc_1B;
-                }
-                break;
-            }
-            case 0x7da4e4cdu:
-            {
-                if (name == BuiltInName::textureGradOffset_0I2B2B2B2C)
-                {
-                    return &BuiltInFunction::kFunction_textureGradOffset_0I2B2B2B2C;
-                }
-                break;
-            }
-            case 0x7dcec2c7u:
-            {
-                if (name.length() == 16 && name.beginsWith(BuiltInName::textureProj_))
-                {
-                    return &BuiltInFunction::kFunction_textureProj_0M3B;
-                }
-                break;
-            }
-            case 0x7f4a0e15u:
-            {
-                if (name.length() == 9 && name.beginsWith(BuiltInName::modf_))
-                {
-                    return &BuiltInFunction::kFunction_modf_0B0B;
-                }
-                break;
-            }
-            case 0x7fbf762eu:
-            {
-                if (name.length() == 8 && name.beginsWith(BuiltInName::min_))
-                {
+                    ASSERT(name.length() == 8);
                     return &BuiltInFunction::kFunction_min_3D0D;
                 }
                 break;
             }
-            case 0x7fe4d147u:
+            case 0x0c880c7au:
             {
-                if (name == BuiltInName::textureProjGrad_0I3B2B2B)
+                if (name.beginsWith(BuiltInName::min))
                 {
-                    return &BuiltInFunction::kFunction_textureProjGrad_0I3B2B2B;
-                }
-                break;
-            }
-            case 0x80b45ae8u:
-            {
-                if (name == BuiltInName::textureOffset_0K2B1C)
-                {
-                    return &BuiltInFunction::kFunction_textureOffset_0K2B1C;
-                }
-                break;
-            }
-            case 0x80de719du:
-            {
-                if (name.length() == 8 && name.beginsWith(BuiltInName::min_))
-                {
+                    ASSERT(name.length() == 8);
                     return &BuiltInFunction::kFunction_min_1C1C;
                 }
                 break;
             }
-            case 0x81dadab1u:
+            case 0x0c88171cu:
             {
-                if (name.length() == 8 && name.beginsWith(BuiltInName::min_))
+                if (name.beginsWith(BuiltInName::min))
                 {
+                    ASSERT(name.length() == 8);
                     return &BuiltInFunction::kFunction_min_2C2C;
                 }
                 break;
             }
-            case 0x8374adf3u:
+            case 0x0c884c7au:
             {
-                if (name.length() == 7 && name.beginsWith(BuiltInName::sign_))
+                if (name.beginsWith(BuiltInName::max))
                 {
-                    return &BuiltInFunction::kFunction_sign_2C;
-                }
-                break;
-            }
-            case 0x83b69dd0u:
-            {
-                if (name.length() == 16 && name.beginsWith(BuiltInName::textureProj_))
-                {
-                    return &BuiltInFunction::kFunction_textureProj_0H3B;
-                }
-                break;
-            }
-            case 0x8411eff2u:
-            {
-                if (name.length() == 16 && name.beginsWith(BuiltInName::textureProj_))
-                {
-                    return &BuiltInFunction::kFunction_textureProj_0Z3B;
-                }
-                break;
-            }
-            case 0x8454b931u:
-            {
-                if (name.length() == 8 && name.beginsWith(BuiltInName::max_))
-                {
+                    ASSERT(name.length() == 8);
                     return &BuiltInFunction::kFunction_max_2D0D;
                 }
                 break;
             }
-            case 0x84bc1fc6u:
+            case 0x0c8912a9u:
             {
-                if (name.length() == 8 && name.beginsWith(BuiltInName::isinf_))
+                if (name.beginsWith(BuiltInName::max))
                 {
-                    return &BuiltInFunction::kFunction_isinf_0B;
-                }
-                break;
-            }
-            case 0x85509e6au:
-            {
-                if (name.length() == 16 && name.beginsWith(BuiltInName::textureSize_))
-                {
-                    return &BuiltInFunction::kFunction_textureSize_0H0C;
-                }
-                break;
-            }
-            case 0x87190960u:
-            {
-                if (name.length() == 8 && name.beginsWith(BuiltInName::atanh_))
-                {
-                    return &BuiltInFunction::kFunction_atanh_1B;
-                }
-                break;
-            }
-            case 0x88ee5a65u:
-            {
-                if (name == BuiltInName::textureProjGradOffset_0Q3B2B2B2C)
-                {
-                    return &BuiltInFunction::kFunction_textureProjGradOffset_0Q3B2B2B2C;
-                }
-                break;
-            }
-            case 0x8952b249u:
-            {
-                if (name == BuiltInName::textureProjOffset_0I3B2C)
-                {
-                    return &BuiltInFunction::kFunction_textureProjOffset_0I3B2C;
-                }
-                break;
-            }
-            case 0x89b5d13eu:
-            {
-                if (name.length() == 16 && name.beginsWith(BuiltInName::textureSize_))
-                {
-                    return &BuiltInFunction::kFunction_textureSize_0L0C;
-                }
-                break;
-            }
-            case 0x8b016fcfu:
-            {
-                if (name.length() == 7 && name.beginsWith(BuiltInName::cosh_))
-                {
-                    return &BuiltInFunction::kFunction_cosh_1B;
-                }
-                break;
-            }
-            case 0x8b97d9fbu:
-            {
-                if (name.length() == 12 && name.beginsWith(BuiltInName::texture_))
-                {
-                    return &BuiltInFunction::kFunction_texture_0b3B;
-                }
-                break;
-            }
-            case 0x8e47a097u:
-            {
-                if (name == BuiltInName::textureProjGradOffset_0Z3B1B1B1C)
-                {
-                    return &BuiltInFunction::kFunction_textureProjGradOffset_0Z3B1B1B1C;
-                }
-                break;
-            }
-            case 0x8e78ffabu:
-            {
-                if (name.length() == 16 && name.beginsWith(BuiltInName::textureSize_))
-                {
-                    return &BuiltInFunction::kFunction_textureSize_0W0C;
-                }
-                break;
-            }
-            case 0x8ee6e7c6u:
-            {
-                if (name.length() == 12 && name.beginsWith(BuiltInName::texture_))
-                {
-                    return &BuiltInFunction::kFunction_texture_0J2B;
-                }
-                break;
-            }
-            case 0x8f2182ebu:
-            {
-                if (name == BuiltInName::textureGrad_0P1B1B1B)
-                {
-                    return &BuiltInFunction::kFunction_textureGrad_0P1B1B1B;
-                }
-                break;
-            }
-            case 0x8f8e3971u:
-            {
-                if (name.length() == 12 && name.beginsWith(BuiltInName::texture_))
-                {
-                    return &BuiltInFunction::kFunction_texture_0W2B;
-                }
-                break;
-            }
-            case 0x8fd50890u:
-            {
-                if (name == BuiltInName::texelFetchOffset_0U1C0C1C)
-                {
-                    return &BuiltInFunction::kFunction_texelFetchOffset_0U1C0C1C;
-                }
-                break;
-            }
-            case 0x90a846c6u:
-            {
-                if (name == BuiltInName::textureLodOffset_0Q2B0B2C)
-                {
-                    return &BuiltInFunction::kFunction_textureLodOffset_0Q2B0B2C;
-                }
-                break;
-            }
-            case 0x90b39384u:
-            {
-                if (name.length() == 16 && name.beginsWith(BuiltInName::textureSize_))
-                {
-                    return &BuiltInFunction::kFunction_textureSize_0Z0C;
-                }
-                break;
-            }
-            case 0x919deb77u:
-            {
-                if (name.length() == 8 && name.beginsWith(BuiltInName::max_))
-                {
+                    ASSERT(name.length() == 8);
                     return &BuiltInFunction::kFunction_max_3C3C;
                 }
                 break;
             }
-            case 0x9215c4d9u:
+            case 0x0c895321u:
             {
-                if (name == BuiltInName::textureLodOffset_0H1B0B1C)
+                if (name.beginsWith(BuiltInName::min))
                 {
-                    return &BuiltInFunction::kFunction_textureLodOffset_0H1B0B1C;
+                    ASSERT(name.length() == 8);
+                    return &BuiltInFunction::kFunction_min_1D1D;
                 }
                 break;
             }
-            case 0x938e9938u:
+            case 0x0c89b596u:
             {
-                if (name.length() == 12 && name.beginsWith(BuiltInName::texture_))
+                if (name.beginsWith(BuiltInName::max))
                 {
-                    return &BuiltInFunction::kFunction_texture_0X2B;
+                    ASSERT(name.length() == 8);
+                    return &BuiltInFunction::kFunction_max_2C2C;
                 }
                 break;
             }
-            case 0x93b01b17u:
+            case 0x0c8a0c9au:
             {
-                if (name.length() == 19 && name.beginsWith(BuiltInName::matrixCompMult_))
+                if (name.beginsWith(BuiltInName::min))
                 {
-                    return &BuiltInFunction::kFunction_matrixCompMult_6B6B;
+                    ASSERT(name.length() == 8);
+                    return &BuiltInFunction::kFunction_min_1C0C;
                 }
                 break;
             }
-            case 0x95305b7au:
+            case 0x0c8a492cu:
+            {
+                if (name.beginsWith(BuiltInName::max))
+                {
+                    ASSERT(name.length() == 8);
+                    return &BuiltInFunction::kFunction_max_1D0D;
+                }
+                break;
+            }
+            case 0x0c8aaf96u:
+            {
+                if (name.beginsWith(BuiltInName::max))
+                {
+                    ASSERT(name.length() == 8);
+                    return &BuiltInFunction::kFunction_max_0C0C;
+                }
+                break;
+            }
+            case 0x0c8bd2a5u:
+            {
+                if (name.beginsWith(BuiltInName::min))
+                {
+                    ASSERT(name.length() == 8);
+                    return &BuiltInFunction::kFunction_min_0C0C;
+                }
+                break;
+            }
+            case 0x0c8c2b46u:
+            {
+                if (name.beginsWith(BuiltInName::max))
+                {
+                    ASSERT(name.length() == 8);
+                    return &BuiltInFunction::kFunction_max_1D1D;
+                }
+                break;
+            }
+            case 0x0c8e4658u:
+            {
+                if (name.beginsWith(BuiltInName::max))
+                {
+                    ASSERT(name.length() == 8);
+                    return &BuiltInFunction::kFunction_max_0D0D;
+                }
+                break;
+            }
+            case 0x0c8e71adu:
+            {
+                if (name.beginsWith(BuiltInName::max))
+                {
+                    ASSERT(name.length() == 8);
+                    return &BuiltInFunction::kFunction_max_3D0D;
+                }
+                break;
+            }
+            case 0x0c8e9eabu:
+            {
+                if (name.beginsWith(BuiltInName::max))
+                {
+                    ASSERT(name.length() == 8);
+                    return &BuiltInFunction::kFunction_max_3C0C;
+                }
+                break;
+            }
+            case 0x0c8f6447u:
+            {
+                if (name.beginsWith(BuiltInName::max))
+                {
+                    ASSERT(name.length() == 8);
+                    return &BuiltInFunction::kFunction_max_1C1C;
+                }
+                break;
+            }
+            case 0x0ca9587fu:
             {
                 if (name == BuiltInName::mix_2B2B2E)
                 {
@@ -14712,367 +13332,7 @@
                 }
                 break;
             }
-            case 0x95954a75u:
-            {
-                if (name.length() == 8 && name.beginsWith(BuiltInName::min_))
-                {
-                    return &BuiltInFunction::kFunction_min_1D1D;
-                }
-                break;
-            }
-            case 0x96a71f27u:
-            {
-                if (name == BuiltInName::textureProjGrad_0U3B1B1B)
-                {
-                    return &BuiltInFunction::kFunction_textureProjGrad_0U3B1B1B;
-                }
-                break;
-            }
-            case 0x96d47d37u:
-            {
-                if (name == BuiltInName::textureProjGradOffset_0U2B1B1B1C)
-                {
-                    return &BuiltInFunction::kFunction_textureProjGradOffset_0U2B1B1B1C;
-                }
-                break;
-            }
-            case 0x97123500u:
-            {
-                if (name.length() == 8 && name.beginsWith(BuiltInName::acosh_))
-                {
-                    return &BuiltInFunction::kFunction_acosh_1B;
-                }
-                break;
-            }
-            case 0x987daeb7u:
-            {
-                if (name.length() == 19 && name.beginsWith(BuiltInName::matrixCompMult_))
-                {
-                    return &BuiltInFunction::kFunction_matrixCompMult_BBBB;
-                }
-                break;
-            }
-            case 0x999dc041u:
-            {
-                if (name == BuiltInName::textureLod_0R2B0B)
-                {
-                    return &BuiltInFunction::kFunction_textureLod_0R2B0B;
-                }
-                break;
-            }
-            case 0x9a695ee0u:
-            {
-                if (name == BuiltInName::textureProjOffset_0P2B1C)
-                {
-                    return &BuiltInFunction::kFunction_textureProjOffset_0P2B1C;
-                }
-                break;
-            }
-            case 0x9b0b952fu:
-            {
-                if (name.length() == 8 && name.beginsWith(BuiltInName::max_))
-                {
-                    return &BuiltInFunction::kFunction_max_2C2C;
-                }
-                break;
-            }
-            case 0x9cd7735fu:
-            {
-                if (name.length() == 12 && name.beginsWith(BuiltInName::transpose_))
-                {
-                    return &BuiltInFunction::kFunction_transpose_EB;
-                }
-                break;
-            }
-            case 0x9d0abd32u:
-            {
-                if (name == BuiltInName::clamp_2D2D2D)
-                {
-                    return &BuiltInFunction::kFunction_clamp_2D2D2D;
-                }
-                break;
-            }
-            case 0x9e7b5ec8u:
-            {
-                if (name.length() == 14 && name.beginsWith(BuiltInName::determinant_))
-                {
-                    return &BuiltInFunction::kFunction_determinant_FB;
-                }
-                break;
-            }
-            case 0x9ef04df5u:
-            {
-                if (name.length() == 16 && name.beginsWith(BuiltInName::packSnorm2x16_))
-                {
-                    return &BuiltInFunction::kFunction_packSnorm2x16_1B;
-                }
-                break;
-            }
-            case 0xa09a8937u:
-            {
-                if (name == BuiltInName::textureLodOffset_0K2B0B1C)
-                {
-                    return &BuiltInFunction::kFunction_textureLodOffset_0K2B0B1C;
-                }
-                break;
-            }
-            case 0xa0c1a478u:
-            {
-                if (name == BuiltInName::textureProjGrad_0P3B1B1B)
-                {
-                    return &BuiltInFunction::kFunction_textureProjGrad_0P3B1B1B;
-                }
-                break;
-            }
-            case 0xa0e0e294u:
-            {
-                if (name.length() == 8 && name.beginsWith(BuiltInName::min_))
-                {
-                    return &BuiltInFunction::kFunction_min_1C0C;
-                }
-                break;
-            }
-            case 0xa1c52958u:
-            {
-                if (name.length() == 12 && name.beginsWith(BuiltInName::transpose_))
-                {
-                    return &BuiltInFunction::kFunction_transpose_6B;
-                }
-                break;
-            }
-            case 0xa3b5f7d4u:
-            {
-                if (name == BuiltInName::texelFetch_0K2C0C)
-                {
-                    return &BuiltInFunction::kFunction_texelFetch_0K2C0C;
-                }
-                break;
-            }
-            case 0xa4df529fu:
-            {
-                if (name == BuiltInName::textureGrad_0b3B1B1B)
-                {
-                    return &BuiltInFunction::kFunction_textureGrad_0b3B1B1B;
-                }
-                break;
-            }
-            case 0xa4fce6e2u:
-            {
-                if (name.length() == 8 && name.beginsWith(BuiltInName::max_))
-                {
-                    return &BuiltInFunction::kFunction_max_1D0D;
-                }
-                break;
-            }
-            case 0xa506c0ccu:
-            {
-                if (name == BuiltInName::textureProjOffset_0V3B2C)
-                {
-                    return &BuiltInFunction::kFunction_textureProjOffset_0V3B2C;
-                }
-                break;
-            }
-            case 0xa687812eu:
-            {
-                if (name == BuiltInName::textureLod_0W2B0B)
-                {
-                    return &BuiltInFunction::kFunction_textureLod_0W2B0B;
-                }
-                break;
-            }
-            case 0xa6a99553u:
-            {
-                if (name.length() == 18 && name.beginsWith(BuiltInName::floatBitsToUint_))
-                {
-                    return &BuiltInFunction::kFunction_floatBitsToUint_1B;
-                }
-                break;
-            }
-            case 0xa6be93e3u:
-            {
-                if (name.length() == 8 && name.beginsWith(BuiltInName::isinf_))
-                {
-                    return &BuiltInFunction::kFunction_isinf_1B;
-                }
-                break;
-            }
-            case 0xa78e0f2cu:
-            {
-                if (name == BuiltInName::textureLod_0I2B0B)
-                {
-                    return &BuiltInFunction::kFunction_textureLod_0I2B0B;
-                }
-                break;
-            }
-            case 0xa807b817u:
-            {
-                if (name.length() == 18 && name.beginsWith(BuiltInName::uintBitsToFloat_))
-                {
-                    return &BuiltInFunction::kFunction_uintBitsToFloat_1D;
-                }
-                break;
-            }
-            case 0xa8f6aea4u:
-            {
-                if (name == BuiltInName::textureGradOffset_0S2B1B1B1C)
-                {
-                    return &BuiltInFunction::kFunction_textureGradOffset_0S2B1B1B1C;
-                }
-                break;
-            }
-            case 0xaaa9d50bu:
-            {
-                if (name.length() == 8 && name.beginsWith(BuiltInName::max_))
-                {
-                    return &BuiltInFunction::kFunction_max_0C0C;
-                }
-                break;
-            }
-            case 0xaad0cda4u:
-            {
-                if (name.length() == 12 && name.beginsWith(BuiltInName::transpose_))
-                {
-                    return &BuiltInFunction::kFunction_transpose_BB;
-                }
-                break;
-            }
-            case 0xab46cb2du:
-            {
-                if (name.length() == 18 && name.beginsWith(BuiltInName::unpackSnorm2x16_))
-                {
-                    return &BuiltInFunction::kFunction_unpackSnorm2x16_0D;
-                }
-                break;
-            }
-            case 0xab772b82u:
-            {
-                if (name.length() == 7 && name.beginsWith(BuiltInName::sign_))
-                {
-                    return &BuiltInFunction::kFunction_sign_3C;
-                }
-                break;
-            }
-            case 0xabf9e1fcu:
-            {
-                if (name == BuiltInName::textureProjLodOffset_0P3B0B1C)
-                {
-                    return &BuiltInFunction::kFunction_textureProjLodOffset_0P3B0B1C;
-                }
-                break;
-            }
-            case 0xad25bf79u:
-            {
-                if (name == BuiltInName::textureGrad_0S2B1B1B)
-                {
-                    return &BuiltInFunction::kFunction_textureGrad_0S2B1B1B;
-                }
-                break;
-            }
-            case 0xae38f077u:
-            {
-                if (name.length() == 8 && name.beginsWith(BuiltInName::isnan_))
-                {
-                    return &BuiltInFunction::kFunction_isnan_3B;
-                }
-                break;
-            }
-            case 0xae3dea39u:
-            {
-                if (name.length() == 13 && name.beginsWith(BuiltInName::lessThan_))
-                {
-                    return &BuiltInFunction::kFunction_lessThan_1D1D;
-                }
-                break;
-            }
-            case 0xaec45456u:
-            {
-                if (name == BuiltInName::clamp_3C3C3C)
-                {
-                    return &BuiltInFunction::kFunction_clamp_3C3C3C;
-                }
-                break;
-            }
-            case 0xaf4ae965u:
-            {
-                if (name == BuiltInName::textureGradOffset_0Q2B2B2B2C)
-                {
-                    return &BuiltInFunction::kFunction_textureGradOffset_0Q2B2B2B2C;
-                }
-                break;
-            }
-            case 0xb087ded7u:
-            {
-                if (name == BuiltInName::textureProjLod_0V3B0B)
-                {
-                    return &BuiltInFunction::kFunction_textureProjLod_0V3B0B;
-                }
-                break;
-            }
-            case 0xb103ea38u:
-            {
-                if (name.length() == 7 && name.beginsWith(BuiltInName::cosh_))
-                {
-                    return &BuiltInFunction::kFunction_cosh_2B;
-                }
-                break;
-            }
-            case 0xb11b8a15u:
-            {
-                if (name.length() == 8 && name.beginsWith(BuiltInName::atanh_))
-                {
-                    return &BuiltInFunction::kFunction_atanh_0B;
-                }
-                break;
-            }
-            case 0xb190dd9cu:
-            {
-                if (name == BuiltInName::texelFetchOffset_0Q2C0C2C)
-                {
-                    return &BuiltInFunction::kFunction_texelFetchOffset_0Q2C0C2C;
-                }
-                break;
-            }
-            case 0xb3a4f203u:
-            {
-                if (name.length() == 12 && name.beginsWith(BuiltInName::transpose_))
-                {
-                    return &BuiltInFunction::kFunction_transpose_9B;
-                }
-                break;
-            }
-            case 0xb3da1777u:
-            {
-                if (name.length() == 14 && name.beginsWith(BuiltInName::rgb_2_yuv_))
-                {
-                    return &BuiltInFunction::kFunction_rgb_2_yuv_2B0G;
-                }
-                break;
-            }
-            case 0xb5ff7f5cu:
-            {
-                if (name.length() == 18 && name.beginsWith(BuiltInName::uintBitsToFloat_))
-                {
-                    return &BuiltInFunction::kFunction_uintBitsToFloat_2D;
-                }
-                break;
-            }
-            case 0xb6286939u:
-            {
-                if (name.length() == 17 && name.beginsWith(BuiltInName::outerProduct_))
-                {
-                    return &BuiltInFunction::kFunction_outerProduct_2B2B;
-                }
-                break;
-            }
-            case 0xb6a81eddu:
-            {
-                if (name == BuiltInName::textureProjGrad_0H2B1B1B)
-                {
-                    return &BuiltInFunction::kFunction_textureProjGrad_0H2B1B1B;
-                }
-                break;
-            }
-            case 0xb6c1d1ecu:
+            case 0x0cab6df1u:
             {
                 if (name == BuiltInName::mix_0B0B0E)
                 {
@@ -15080,311 +13340,7 @@
                 }
                 break;
             }
-            case 0xb6f9d1ebu:
-            {
-                if (name == BuiltInName::clamp_3D0D0D)
-                {
-                    return &BuiltInFunction::kFunction_clamp_3D0D0D;
-                }
-                break;
-            }
-            case 0xb7326e16u:
-            {
-                if (name.length() == 16 && name.beginsWith(BuiltInName::textureProj_))
-                {
-                    return &BuiltInFunction::kFunction_textureProj_0N3B;
-                }
-                break;
-            }
-            case 0xb91a42d3u:
-            {
-                if (name.length() == 16 && name.beginsWith(BuiltInName::textureProj_))
-                {
-                    return &BuiltInFunction::kFunction_textureProj_0I3B;
-                }
-                break;
-            }
-            case 0xb937c6f2u:
-            {
-                if (name.length() == 12 && name.beginsWith(BuiltInName::roundEven_))
-                {
-                    return &BuiltInFunction::kFunction_roundEven_1B;
-                }
-                break;
-            }
-            case 0xbb0a6cb5u:
-            {
-                if (name.length() == 17 && name.beginsWith(BuiltInName::unpackHalf2x16_))
-                {
-                    return &BuiltInFunction::kFunction_unpackHalf2x16_0D;
-                }
-                break;
-            }
-            case 0xbb36aeedu:
-            {
-                if (name == BuiltInName::textureProjLod_0P3B0B)
-                {
-                    return &BuiltInFunction::kFunction_textureProjLod_0P3B0B;
-                }
-                break;
-            }
-            case 0xbb7088edu:
-            {
-                if (name.length() == 7 && name.beginsWith(BuiltInName::sign_))
-                {
-                    return &BuiltInFunction::kFunction_sign_0C;
-                }
-                break;
-            }
-            case 0xbc4bed83u:
-            {
-                if (name.length() == 18 && name.beginsWith(BuiltInName::lessThanEqual_))
-                {
-                    return &BuiltInFunction::kFunction_lessThanEqual_1D1D;
-                }
-                break;
-            }
-            case 0xbd22ce5eu:
-            {
-                if (name == BuiltInName::textureLodOffset_0I2B0B2C)
-                {
-                    return &BuiltInFunction::kFunction_textureLodOffset_0I2B0B2C;
-                }
-                break;
-            }
-            case 0xbdf50df5u:
-            {
-                if (name.length() == 8 && name.beginsWith(BuiltInName::min_))
-                {
-                    return &BuiltInFunction::kFunction_min_0C0C;
-                }
-                break;
-            }
-            case 0xbe73df8fu:
-            {
-                if (name == BuiltInName::textureProjOffset_0Z3B1C)
-                {
-                    return &BuiltInFunction::kFunction_textureProjOffset_0Z3B1C;
-                }
-                break;
-            }
-            case 0xbed19cffu:
-            {
-                if (name.length() == 12 && name.beginsWith(BuiltInName::texture_))
-                {
-                    return &BuiltInFunction::kFunction_texture_0H1B;
-                }
-                break;
-            }
-            case 0xbf14e45au:
-            {
-                if (name.length() == 8 && name.beginsWith(BuiltInName::atanh_))
-                {
-                    return &BuiltInFunction::kFunction_atanh_3B;
-                }
-                break;
-            }
-            case 0xbfd16903u:
-            {
-                if (name.length() == 15 && name.beginsWith(BuiltInName::packHalf2x16_))
-                {
-                    return &BuiltInFunction::kFunction_packHalf2x16_1B;
-                }
-                break;
-            }
-            case 0xc011536du:
-            {
-                if (name.length() == 10 && name.beginsWith(BuiltInName::equal_))
-                {
-                    return &BuiltInFunction::kFunction_equal_1D1D;
-                }
-                break;
-            }
-            case 0xc01ff0f1u:
-            {
-                if (name == BuiltInName::texelFetch_0X2C0C)
-                {
-                    return &BuiltInFunction::kFunction_texelFetch_0X2C0C;
-                }
-                break;
-            }
-            case 0xc114b5b5u:
-            {
-                if (name.length() == 8 && name.beginsWith(BuiltInName::acosh_))
-                {
-                    return &BuiltInFunction::kFunction_acosh_0B;
-                }
-                break;
-            }
-            case 0xc1997dcfu:
-            {
-                if (name.length() == 16 && name.beginsWith(BuiltInName::textureSize_))
-                {
-                    return &BuiltInFunction::kFunction_textureSize_0K0C;
-                }
-                break;
-            }
-            case 0xc282793bu:
-            {
-                if (name.length() == 16 && name.beginsWith(BuiltInName::textureProj_))
-                {
-                    return &BuiltInFunction::kFunction_textureProj_0Q3B;
-                }
-                break;
-            }
-            case 0xc2b695f3u:
-            {
-                if (name == BuiltInName::clamp_2C0C0C)
-                {
-                    return &BuiltInFunction::kFunction_clamp_2C0C0C;
-                }
-                break;
-            }
-            case 0xc2d9edc8u:
-            {
-                if (name.length() == 12 && name.beginsWith(BuiltInName::transpose_))
-                {
-                    return &BuiltInFunction::kFunction_transpose_FB;
-                }
-                break;
-            }
-            case 0xc2ff54b3u:
-            {
-                if (name.length() == 8 && name.beginsWith(BuiltInName::max_))
-                {
-                    return &BuiltInFunction::kFunction_max_1D1D;
-                }
-                break;
-            }
-            case 0xc336cfd3u:
-            {
-                if (name.length() == 12 && name.beginsWith(BuiltInName::texture_))
-                {
-                    return &BuiltInFunction::kFunction_texture_0L1B;
-                }
-                break;
-            }
-            case 0xc36ef945u:
-            {
-                if (name.length() == 17 && name.beginsWith(BuiltInName::outerProduct_))
-                {
-                    return &BuiltInFunction::kFunction_outerProduct_3B3B;
-                }
-                break;
-            }
-            case 0xc3bc1280u:
-            {
-                if (name == BuiltInName::clamp_0D0D0D)
-                {
-                    return &BuiltInFunction::kFunction_clamp_0D0D0D;
-                }
-                break;
-            }
-            case 0xc3be50cau:
-            {
-                if (name.length() == 12 && name.beginsWith(BuiltInName::texture_))
-                {
-                    return &BuiltInFunction::kFunction_texture_0a3B;
-                }
-                break;
-            }
-            case 0xc421c37eu:
-            {
-                if (name.length() == 17 && name.beginsWith(BuiltInName::outerProduct_))
-                {
-                    return &BuiltInFunction::kFunction_outerProduct_2B1B;
-                }
-                break;
-            }
-            case 0xc53620b2u:
-            {
-                if (name.length() == 13 && name.beginsWith(BuiltInName::notEqual_))
-                {
-                    return &BuiltInFunction::kFunction_notEqual_3D3D;
-                }
-                break;
-            }
-            case 0xc5462e10u:
-            {
-                if (name == BuiltInName::textureGradOffset_0V2B2B2B2C)
-                {
-                    return &BuiltInFunction::kFunction_textureGradOffset_0V2B2B2B2C;
-                }
-                break;
-            }
-            case 0xc5a2d6f5u:
-            {
-                if (name.length() == 12 && name.beginsWith(BuiltInName::texture_))
-                {
-                    return &BuiltInFunction::kFunction_texture_0N1B;
-                }
-                break;
-            }
-            case 0xc6608dc1u:
-            {
-                if (name == BuiltInName::texelFetchOffset_0V2C0C2C)
-                {
-                    return &BuiltInFunction::kFunction_texelFetchOffset_0V2C0C2C;
-                }
-                break;
-            }
-            case 0xc799e0bcu:
-            {
-                if (name.length() == 16 && name.beginsWith(BuiltInName::textureSize_))
-                {
-                    return &BuiltInFunction::kFunction_textureSize_0R0C;
-                }
-                break;
-            }
-            case 0xc86a5444u:
-            {
-                if (name.length() == 16 && name.beginsWith(BuiltInName::textureProj_))
-                {
-                    return &BuiltInFunction::kFunction_textureProj_0L3B;
-                }
-                break;
-            }
-            case 0xca4a7880u:
-            {
-                if (name.length() == 8 && name.beginsWith(BuiltInName::asinh_))
-                {
-                    return &BuiltInFunction::kFunction_asinh_0B;
-                }
-                break;
-            }
-            case 0xca53d58au:
-            {
-                if (name == BuiltInName::textureProjGrad_0Z3B1B1B)
-                {
-                    return &BuiltInFunction::kFunction_textureProjGrad_0Z3B1B1B;
-                }
-                break;
-            }
-            case 0xcbaf14edu:
-            {
-                if (name == BuiltInName::textureOffset_0I2B2C)
-                {
-                    return &BuiltInFunction::kFunction_textureOffset_0I2B2C;
-                }
-                break;
-            }
-            case 0xcbc7aa0du:
-            {
-                if (name.length() == 12 && name.beginsWith(BuiltInName::transpose_))
-                {
-                    return &BuiltInFunction::kFunction_transpose_7B;
-                }
-                break;
-            }
-            case 0xcbf66d8du:
-            {
-                if (name == BuiltInName::textureProjGradOffset_0P3B1B1B1C)
-                {
-                    return &BuiltInFunction::kFunction_textureProjGradOffset_0P3B1B1B1C;
-                }
-                break;
-            }
-            case 0xcc917983u:
+            case 0x0cacc094u:
             {
                 if (name == BuiltInName::mix_3B3B3E)
                 {
@@ -15392,511 +13348,7 @@
                 }
                 break;
             }
-            case 0xccac0fbcu:
-            {
-                if (name.length() == 18 && name.beginsWith(BuiltInName::floatBitsToUint_))
-                {
-                    return &BuiltInFunction::kFunction_floatBitsToUint_2B;
-                }
-                break;
-            }
-            case 0xcd2de632u:
-            {
-                if (name.length() == 16 && name.beginsWith(BuiltInName::textureSize_))
-                {
-                    return &BuiltInFunction::kFunction_textureSize_0P0C;
-                }
-                break;
-            }
-            case 0xce15eaeau:
-            {
-                if (name.length() == 13 && name.beginsWith(BuiltInName::notEqual_))
-                {
-                    return &BuiltInFunction::kFunction_notEqual_2D2D;
-                }
-                break;
-            }
-            case 0xcf0e0ffau:
-            {
-                if (name.length() == 8 && name.beginsWith(BuiltInName::acosh_))
-                {
-                    return &BuiltInFunction::kFunction_acosh_3B;
-                }
-                break;
-            }
-            case 0xd04f80efu:
-            {
-                if (name == BuiltInName::textureGradOffset_0Z2B1B1B1C)
-                {
-                    return &BuiltInFunction::kFunction_textureGradOffset_0Z2B1B1B1C;
-                }
-                break;
-            }
-            case 0xd095b9adu:
-            {
-                if (name.length() == 16 && name.beginsWith(BuiltInName::textureSize_))
-                {
-                    return &BuiltInFunction::kFunction_textureSize_0Q0C;
-                }
-                break;
-            }
-            case 0xd1427cfeu:
-            {
-                if (name.length() == 21 && name.beginsWith(BuiltInName::greaterThanEqual_))
-                {
-                    return &BuiltInFunction::kFunction_greaterThanEqual_3D3D;
-                }
-                break;
-            }
-            case 0xd43b6ae0u:
-            {
-                if (name.length() == 8 && name.beginsWith(BuiltInName::isnan_))
-                {
-                    return &BuiltInFunction::kFunction_isnan_0B;
-                }
-                break;
-            }
-            case 0xd45005c2u:
-            {
-                if (name == BuiltInName::textureGrad_0Z2B1B1B)
-                {
-                    return &BuiltInFunction::kFunction_textureGrad_0Z2B1B1B;
-                }
-                break;
-            }
-            case 0xd6961c9au:
-            {
-                if (name.length() == 16 && name.beginsWith(BuiltInName::textureSize_))
-                {
-                    return &BuiltInFunction::kFunction_textureSize_0X0C;
-                }
-                break;
-            }
-            case 0xd75220b5u:
-            {
-                if (name.length() == 10 && name.beginsWith(BuiltInName::equal_))
-                {
-                    return &BuiltInFunction::kFunction_equal_3D3D;
-                }
-                break;
-            }
-            case 0xd763566fu:
-            {
-                if (name.length() == 14 && name.beginsWith(BuiltInName::determinant_))
-                {
-                    return &BuiltInFunction::kFunction_determinant_5B;
-                }
-                break;
-            }
-            case 0xd7cedc37u:
-            {
-                if (name.length() == 19 && name.beginsWith(BuiltInName::matrixCompMult_))
-                {
-                    return &BuiltInFunction::kFunction_matrixCompMult_DBDB;
-                }
-                break;
-            }
-            case 0xd846ba4au:
-            {
-                if (name == BuiltInName::textureLod_0K2B0B)
-                {
-                    return &BuiltInFunction::kFunction_textureLod_0K2B0B;
-                }
-                break;
-            }
-            case 0xd8a05eaeu:
-            {
-                if (name.length() == 21 && name.beginsWith(BuiltInName::greaterThanEqual_))
-                {
-                    return &BuiltInFunction::kFunction_greaterThanEqual_1D1D;
-                }
-                break;
-            }
-            case 0xd934e233u:
-            {
-                if (name.length() == 16 && name.beginsWith(BuiltInName::textureProj_))
-                {
-                    return &BuiltInFunction::kFunction_textureProj_0N2B;
-                }
-                break;
-            }
-            case 0xda6f4215u:
-            {
-                if (name == BuiltInName::texelFetch_0U1C0C)
-                {
-                    return &BuiltInFunction::kFunction_texelFetch_0U1C0C;
-                }
-                break;
-            }
-            case 0xdb066aedu:
-            {
-                if (name.length() == 7 && name.beginsWith(BuiltInName::cosh_))
-                {
-                    return &BuiltInFunction::kFunction_cosh_3B;
-                }
-                break;
-            }
-            case 0xdb3a3b0fu:
-            {
-                if (name.length() == 12 && name.beginsWith(BuiltInName::roundEven_))
-                {
-                    return &BuiltInFunction::kFunction_roundEven_0B;
-                }
-                break;
-            }
-            case 0xdb6a1034u:
-            {
-                if (name.length() == 12 && name.beginsWith(BuiltInName::texture_))
-                {
-                    return &BuiltInFunction::kFunction_texture_0U1B;
-                }
-                break;
-            }
-            case 0xdb880a9du:
-            {
-                if (name.length() == 16 && name.beginsWith(BuiltInName::textureSize_))
-                {
-                    return &BuiltInFunction::kFunction_textureSize_0a0C;
-                }
-                break;
-            }
-            case 0xdc7d7139u:
-            {
-                if (name.length() == 8 && name.beginsWith(BuiltInName::round_))
-                {
-                    return &BuiltInFunction::kFunction_round_2B;
-                }
-                break;
-            }
-            case 0xdce2d84eu:
-            {
-                if (name == BuiltInName::texelFetch_0L1C0C)
-                {
-                    return &BuiltInFunction::kFunction_texelFetch_0L1C0C;
-                }
-                break;
-            }
-            case 0xddbc72f5u:
-            {
-                if (name == BuiltInName::textureProjLodOffset_0P2B0B1C)
-                {
-                    return &BuiltInFunction::kFunction_textureProjLodOffset_0P2B0B1C;
-                }
-                break;
-            }
-            case 0xdf19eb73u:
-            {
-                if (name == BuiltInName::textureProjLod_0Z3B0B)
-                {
-                    return &BuiltInFunction::kFunction_textureProjLod_0Z3B0B;
-                }
-                break;
-            }
-            case 0xdf2d350bu:
-            {
-                if (name.length() == 18 && name.beginsWith(BuiltInName::lessThanEqual_))
-                {
-                    return &BuiltInFunction::kFunction_lessThanEqual_3D3D;
-                }
-                break;
-            }
-            case 0xdf3e61ddu:
-            {
-                if (name == BuiltInName::textureProjOffset_0P3B1C)
-                {
-                    return &BuiltInFunction::kFunction_textureProjOffset_0P3B1C;
-                }
-                break;
-            }
-            case 0xe0101092u:
-            {
-                if (name == BuiltInName::textureGradOffset_0H1B1B1B1C)
-                {
-                    return &BuiltInFunction::kFunction_textureGradOffset_0H1B1B1B1C;
-                }
-                break;
-            }
-            case 0xe06efabbu:
-            {
-                if (name.length() == 14 && name.beginsWith(BuiltInName::determinant_))
-                {
-                    return &BuiltInFunction::kFunction_determinant_AB;
-                }
-                break;
-            }
-            case 0xe07acfa6u:
-            {
-                if (name.length() == 6 && name.beginsWith(BuiltInName::abs_))
-                {
-                    return &BuiltInFunction::kFunction_abs_2C;
-                }
-                break;
-            }
-            case 0xe0e2d862u:
-            {
-                if (name == BuiltInName::textureProjGrad_0U2B1B1B)
-                {
-                    return &BuiltInFunction::kFunction_textureProjGrad_0U2B1B1B;
-                }
-                break;
-            }
-            case 0xe12111f7u:
-            {
-                if (name.length() == 18 && name.beginsWith(BuiltInName::unpackUnorm2x16_))
-                {
-                    return &BuiltInFunction::kFunction_unpackUnorm2x16_0D;
-                }
-                break;
-            }
-            case 0xe17cbae1u:
-            {
-                if (name == BuiltInName::textureGrad_0K2B1B1B)
-                {
-                    return &BuiltInFunction::kFunction_textureGrad_0K2B1B1B;
-                }
-                break;
-            }
-            case 0xe3f81a12u:
-            {
-                if (name.length() == 16 && name.beginsWith(BuiltInName::textureProj_))
-                {
-                    return &BuiltInFunction::kFunction_textureProj_0U2B;
-                }
-                break;
-            }
-            case 0xe4231ee7u:
-            {
-                if (name.length() == 12 && name.beginsWith(BuiltInName::texture_))
-                {
-                    return &BuiltInFunction::kFunction_texture_0P1B;
-                }
-                break;
-            }
-            case 0xe45eb3b3u:
-            {
-                if (name.length() == 8 && name.beginsWith(BuiltInName::max_))
-                {
-                    return &BuiltInFunction::kFunction_max_0D0D;
-                }
-                break;
-            }
-            case 0xe707edcau:
-            {
-                if (name == BuiltInName::textureGradOffset_0P1B1B1B1C)
-                {
-                    return &BuiltInFunction::kFunction_textureGradOffset_0P1B1B1B1C;
-                }
-                break;
-            }
-            case 0xe732d280u:
-            {
-                if (name.length() == 8 && name.beginsWith(BuiltInName::max_))
-                {
-                    return &BuiltInFunction::kFunction_max_3D0D;
-                }
-                break;
-            }
-            case 0xe73def97u:
-            {
-                if (name.length() == 16 && name.beginsWith(BuiltInName::packUnorm2x16_))
-                {
-                    return &BuiltInFunction::kFunction_packUnorm2x16_1B;
-                }
-                break;
-            }
-            case 0xe7a84898u:
-            {
-                if (name == BuiltInName::textureGrad_0U1B1B1B)
-                {
-                    return &BuiltInFunction::kFunction_textureGrad_0U1B1B1B;
-                }
-                break;
-            }
-            case 0xe99c3768u:
-            {
-                if (name.length() == 8 && name.beginsWith(BuiltInName::max_))
-                {
-                    return &BuiltInFunction::kFunction_max_3C0C;
-                }
-                break;
-            }
-            case 0xea76cb7eu:
-            {
-                if (name.length() == 8 && name.beginsWith(BuiltInName::round_))
-                {
-                    return &BuiltInFunction::kFunction_round_1B;
-                }
-                break;
-            }
-            case 0xeb86dc53u:
-            {
-                if (name == BuiltInName::clamp_3D3D3D)
-                {
-                    return &BuiltInFunction::kFunction_clamp_3D3D3D;
-                }
-                break;
-            }
-            case 0xeda8ca9eu:
-            {
-                if (name == BuiltInName::textureProjLodOffset_0U2B0B1C)
-                {
-                    return &BuiltInFunction::kFunction_textureProjLodOffset_0U2B0B1C;
-                }
-                break;
-            }
-            case 0xeda92de6u:
-            {
-                if (name.length() == 17 && name.beginsWith(BuiltInName::floatBitsToInt_))
-                {
-                    return &BuiltInFunction::kFunction_floatBitsToInt_3B;
-                }
-                break;
-            }
-            case 0xee116f63u:
-            {
-                if (name == BuiltInName::textureLod_0U1B0B)
-                {
-                    return &BuiltInFunction::kFunction_textureLod_0U1B0B;
-                }
-                break;
-            }
-            case 0xef12ada0u:
-            {
-                if (name == BuiltInName::textureProjGradOffset_0H2B1B1B1C)
-                {
-                    return &BuiltInFunction::kFunction_textureProjGradOffset_0H2B1B1B1C;
-                }
-                break;
-            }
-            case 0xf058b46au:
-            {
-                if (name == BuiltInName::textureProjLod_0I3B0B)
-                {
-                    return &BuiltInFunction::kFunction_textureProjLod_0I3B0B;
-                }
-                break;
-            }
-            case 0xf0742d11u:
-            {
-                if (name.length() == 6 && name.beginsWith(BuiltInName::abs_))
-                {
-                    return &BuiltInFunction::kFunction_abs_1C;
-                }
-                break;
-            }
-            case 0xf1108417u:
-            {
-                if (name.length() == 8 && name.beginsWith(BuiltInName::acosh_))
-                {
-                    return &BuiltInFunction::kFunction_acosh_2B;
-                }
-                break;
-            }
-            case 0xf36934a7u:
-            {
-                if (name.length() == 17 && name.beginsWith(BuiltInName::outerProduct_))
-                {
-                    return &BuiltInFunction::kFunction_outerProduct_3B1B;
-                }
-                break;
-            }
-            case 0xf44cf935u:
-            {
-                if (name.length() == 8 && name.beginsWith(BuiltInName::asinh_))
-                {
-                    return &BuiltInFunction::kFunction_asinh_1B;
-                }
-                break;
-            }
-            case 0xf486ed4eu:
-            {
-                if (name.length() == 12 && name.beginsWith(BuiltInName::texture_))
-                {
-                    return &BuiltInFunction::kFunction_texture_0R2B;
-                }
-                break;
-            }
-            case 0xf4880c75u:
-            {
-                if (name.length() == 9 && name.beginsWith(BuiltInName::modf_))
-                {
-                    return &BuiltInFunction::kFunction_modf_2B2B;
-                }
-                break;
-            }
-            case 0xf48ef6a2u:
-            {
-                if (name == BuiltInName::textureLodOffset_0U1B0B1C)
-                {
-                    return &BuiltInFunction::kFunction_textureLodOffset_0U1B0B1C;
-                }
-                break;
-            }
-            case 0xf68d511bu:
-            {
-                if (name.length() == 19 && name.beginsWith(BuiltInName::matrixCompMult_))
-                {
-                    return &BuiltInFunction::kFunction_matrixCompMult_EBEB;
-                }
-                break;
-            }
-            case 0xf6ae9071u:
-            {
-                if (name.length() == 18 && name.beginsWith(BuiltInName::floatBitsToUint_))
-                {
-                    return &BuiltInFunction::kFunction_floatBitsToUint_3B;
-                }
-                break;
-            }
-            case 0xf6fdcb9bu:
-            {
-                if (name.length() == 8 && name.beginsWith(BuiltInName::max_))
-                {
-                    return &BuiltInFunction::kFunction_max_1C1C;
-                }
-                break;
-            }
-            case 0xf9c25078u:
-            {
-                if (name == BuiltInName::textureLod_0P1B0B)
-                {
-                    return &BuiltInFunction::kFunction_textureLod_0P1B0B;
-                }
-                break;
-            }
-            case 0xfad5c8c2u:
-            {
-                if (name.length() == 12 && name.beginsWith(BuiltInName::transpose_))
-                {
-                    return &BuiltInFunction::kFunction_transpose_DB;
-                }
-                break;
-            }
-            case 0xfb4c331fu:
-            {
-                if (name == BuiltInName::textureProjLodOffset_0U3B0B1C)
-                {
-                    return &BuiltInFunction::kFunction_textureProjLodOffset_0U3B0B1C;
-                }
-                break;
-            }
-            case 0xfb768e02u:
-            {
-                if (name == BuiltInName::texelFetch_0H1C0C)
-                {
-                    return &BuiltInFunction::kFunction_texelFetch_0H1C0C;
-                }
-                break;
-            }
-            case 0xfbc1e56fu:
-            {
-                if (name.length() == 12 && name.beginsWith(BuiltInName::transpose_))
-                {
-                    return &BuiltInFunction::kFunction_transpose_5B;
-                }
-                break;
-            }
-            case 0xfc8b17f5u:
+            case 0x0cafcf44u:
             {
                 if (name == BuiltInName::mix_1B1B1E)
                 {
@@ -15904,7 +13356,1139 @@
                 }
                 break;
             }
-            case 0xfcf90ed9u:
+            case 0x10703776u:
+            {
+                if (name.beginsWith(BuiltInName::tanh))
+                {
+                    ASSERT(name.length() == 7);
+                    return &BuiltInFunction::kFunction_tanh_3B;
+                }
+                break;
+            }
+            case 0x1071119bu:
+            {
+                if (name.beginsWith(BuiltInName::tanh))
+                {
+                    ASSERT(name.length() == 7);
+                    return &BuiltInFunction::kFunction_tanh_0B;
+                }
+                break;
+            }
+            case 0x10725bc1u:
+            {
+                if (name.beginsWith(BuiltInName::sinh))
+                {
+                    ASSERT(name.length() == 7);
+                    return &BuiltInFunction::kFunction_sinh_2B;
+                }
+                break;
+            }
+            case 0x1073328bu:
+            {
+                if (name.beginsWith(BuiltInName::sinh))
+                {
+                    ASSERT(name.length() == 7);
+                    return &BuiltInFunction::kFunction_sinh_1B;
+                }
+                break;
+            }
+            case 0x10733497u:
+            {
+                if (name.beginsWith(BuiltInName::tanh))
+                {
+                    ASSERT(name.length() == 7);
+                    return &BuiltInFunction::kFunction_tanh_1B;
+                }
+                break;
+            }
+            case 0x10755e8fu:
+            {
+                if (name.beginsWith(BuiltInName::sinh))
+                {
+                    ASSERT(name.length() == 7);
+                    return &BuiltInFunction::kFunction_sinh_0B;
+                }
+                break;
+            }
+            case 0x10759e30u:
+            {
+                if (name.beginsWith(BuiltInName::tanh))
+                {
+                    ASSERT(name.length() == 7);
+                    return &BuiltInFunction::kFunction_tanh_2B;
+                }
+                break;
+            }
+            case 0x1075b747u:
+            {
+                if (name.beginsWith(BuiltInName::sign))
+                {
+                    ASSERT(name.length() == 7);
+                    return &BuiltInFunction::kFunction_sign_1C;
+                }
+                break;
+            }
+            case 0x1076845du:
+            {
+                if (name.beginsWith(BuiltInName::cosh))
+                {
+                    ASSERT(name.length() == 7);
+                    return &BuiltInFunction::kFunction_cosh_0B;
+                }
+                break;
+            }
+            case 0x1077b440u:
+            {
+                if (name.beginsWith(BuiltInName::sinh))
+                {
+                    ASSERT(name.length() == 7);
+                    return &BuiltInFunction::kFunction_sinh_3B;
+                }
+                break;
+            }
+            case 0x10783ab9u:
+            {
+                if (name.beginsWith(BuiltInName::sign))
+                {
+                    ASSERT(name.length() == 7);
+                    return &BuiltInFunction::kFunction_sign_2C;
+                }
+                break;
+            }
+            case 0x1078bfd9u:
+            {
+                if (name.beginsWith(BuiltInName::cosh))
+                {
+                    ASSERT(name.length() == 7);
+                    return &BuiltInFunction::kFunction_cosh_1B;
+                }
+                break;
+            }
+            case 0x107abcf0u:
+            {
+                if (name.beginsWith(BuiltInName::sign))
+                {
+                    ASSERT(name.length() == 7);
+                    return &BuiltInFunction::kFunction_sign_3C;
+                }
+                break;
+            }
+            case 0x107b1a06u:
+            {
+                if (name.beginsWith(BuiltInName::cosh))
+                {
+                    ASSERT(name.length() == 7);
+                    return &BuiltInFunction::kFunction_cosh_2B;
+                }
+                break;
+            }
+            case 0x107bbfe5u:
+            {
+                if (name.beginsWith(BuiltInName::sign))
+                {
+                    ASSERT(name.length() == 7);
+                    return &BuiltInFunction::kFunction_sign_0C;
+                }
+                break;
+            }
+            case 0x107dba8bu:
+            {
+                if (name.beginsWith(BuiltInName::cosh))
+                {
+                    ASSERT(name.length() == 7);
+                    return &BuiltInFunction::kFunction_cosh_3B;
+                }
+                break;
+            }
+            case 0x10901551u:
+            {
+                if (name.beginsWith(BuiltInName::modf))
+                {
+                    ASSERT(name.length() == 9);
+                    return &BuiltInFunction::kFunction_modf_3B3B;
+                }
+                break;
+            }
+            case 0x10951ffeu:
+            {
+                if (name.beginsWith(BuiltInName::modf))
+                {
+                    ASSERT(name.length() == 9);
+                    return &BuiltInFunction::kFunction_modf_1B1B;
+                }
+                break;
+            }
+            case 0x1097fab5u:
+            {
+                if (name.beginsWith(BuiltInName::modf))
+                {
+                    ASSERT(name.length() == 9);
+                    return &BuiltInFunction::kFunction_modf_0B0B;
+                }
+                break;
+            }
+            case 0x109f44f5u:
+            {
+                if (name.beginsWith(BuiltInName::modf))
+                {
+                    ASSERT(name.length() == 9);
+                    return &BuiltInFunction::kFunction_modf_2B2B;
+                }
+                break;
+            }
+            case 0x1480271fu:
+            {
+                if (name.beginsWith(BuiltInName::asinh))
+                {
+                    ASSERT(name.length() == 8);
+                    return &BuiltInFunction::kFunction_asinh_2B;
+                }
+                break;
+            }
+            case 0x1480c6aeu:
+            {
+                if (name.beginsWith(BuiltInName::isnan))
+                {
+                    ASSERT(name.length() == 8);
+                    return &BuiltInFunction::kFunction_isnan_2B;
+                }
+                break;
+            }
+            case 0x1480c808u:
+            {
+                if (name.beginsWith(BuiltInName::round))
+                {
+                    ASSERT(name.length() == 8);
+                    return &BuiltInFunction::kFunction_round_0B;
+                }
+                break;
+            }
+            case 0x1482431bu:
+            {
+                if (name.beginsWith(BuiltInName::asinh))
+                {
+                    ASSERT(name.length() == 8);
+                    return &BuiltInFunction::kFunction_asinh_3B;
+                }
+                break;
+            }
+            case 0x14826e42u:
+            {
+                if (name.beginsWith(BuiltInName::trunc))
+                {
+                    ASSERT(name.length() == 8);
+                    return &BuiltInFunction::kFunction_trunc_0B;
+                }
+                break;
+            }
+            case 0x14832dbfu:
+            {
+                if (name.beginsWith(BuiltInName::round))
+                {
+                    ASSERT(name.length() == 8);
+                    return &BuiltInFunction::kFunction_round_3B;
+                }
+                break;
+            }
+            case 0x14834209u:
+            {
+                if (name.beginsWith(BuiltInName::trunc))
+                {
+                    ASSERT(name.length() == 8);
+                    return &BuiltInFunction::kFunction_trunc_3B;
+                }
+                break;
+            }
+            case 0x1484c8c8u:
+            {
+                if (name.beginsWith(BuiltInName::isinf))
+                {
+                    ASSERT(name.length() == 8);
+                    return &BuiltInFunction::kFunction_isinf_2B;
+                }
+                break;
+            }
+            case 0x1485660du:
+            {
+                if (name.beginsWith(BuiltInName::trunc))
+                {
+                    ASSERT(name.length() == 8);
+                    return &BuiltInFunction::kFunction_trunc_2B;
+                }
+                break;
+            }
+            case 0x14861f9fu:
+            {
+                if (name.beginsWith(BuiltInName::atanh))
+                {
+                    ASSERT(name.length() == 8);
+                    return &BuiltInFunction::kFunction_atanh_2B;
+                }
+                break;
+            }
+            case 0x148769adu:
+            {
+                if (name.beginsWith(BuiltInName::isinf))
+                {
+                    ASSERT(name.length() == 8);
+                    return &BuiltInFunction::kFunction_isinf_3B;
+                }
+                break;
+            }
+            case 0x1487c3c2u:
+            {
+                if (name.beginsWith(BuiltInName::trunc))
+                {
+                    ASSERT(name.length() == 8);
+                    return &BuiltInFunction::kFunction_trunc_1B;
+                }
+                break;
+            }
+            case 0x14884407u:
+            {
+                if (name.beginsWith(BuiltInName::isinf))
+                {
+                    ASSERT(name.length() == 8);
+                    return &BuiltInFunction::kFunction_isinf_0B;
+                }
+                break;
+            }
+            case 0x148878f0u:
+            {
+                if (name.beginsWith(BuiltInName::atanh))
+                {
+                    ASSERT(name.length() == 8);
+                    return &BuiltInFunction::kFunction_atanh_1B;
+                }
+                break;
+            }
+            case 0x14897423u:
+            {
+                if (name.beginsWith(BuiltInName::acosh))
+                {
+                    ASSERT(name.length() == 8);
+                    return &BuiltInFunction::kFunction_acosh_1B;
+                }
+                break;
+            }
+            case 0x148a680au:
+            {
+                if (name.beginsWith(BuiltInName::isinf))
+                {
+                    ASSERT(name.length() == 8);
+                    return &BuiltInFunction::kFunction_isinf_1B;
+                }
+                break;
+            }
+            case 0x148ae3f8u:
+            {
+                if (name.beginsWith(BuiltInName::isnan))
+                {
+                    ASSERT(name.length() == 8);
+                    return &BuiltInFunction::kFunction_isnan_3B;
+                }
+                break;
+            }
+            case 0x148b1badu:
+            {
+                if (name.beginsWith(BuiltInName::atanh))
+                {
+                    ASSERT(name.length() == 8);
+                    return &BuiltInFunction::kFunction_atanh_0B;
+                }
+                break;
+            }
+            case 0x148bf514u:
+            {
+                if (name.beginsWith(BuiltInName::atanh))
+                {
+                    ASSERT(name.length() == 8);
+                    return &BuiltInFunction::kFunction_atanh_3B;
+                }
+                break;
+            }
+            case 0x148c14feu:
+            {
+                if (name.beginsWith(BuiltInName::acosh))
+                {
+                    ASSERT(name.length() == 8);
+                    return &BuiltInFunction::kFunction_acosh_0B;
+                }
+                break;
+            }
+            case 0x148cac27u:
+            {
+                if (name.beginsWith(BuiltInName::asinh))
+                {
+                    ASSERT(name.length() == 8);
+                    return &BuiltInFunction::kFunction_asinh_0B;
+                }
+                break;
+            }
+            case 0x148cff1au:
+            {
+                if (name.beginsWith(BuiltInName::acosh))
+                {
+                    ASSERT(name.length() == 8);
+                    return &BuiltInFunction::kFunction_acosh_3B;
+                }
+                break;
+            }
+            case 0x148d4956u:
+            {
+                if (name.beginsWith(BuiltInName::isnan))
+                {
+                    ASSERT(name.length() == 8);
+                    return &BuiltInFunction::kFunction_isnan_0B;
+                }
+                break;
+            }
+            case 0x148dc6eeu:
+            {
+                if (name.beginsWith(BuiltInName::round))
+                {
+                    ASSERT(name.length() == 8);
+                    return &BuiltInFunction::kFunction_round_2B;
+                }
+                break;
+            }
+            case 0x148eac12u:
+            {
+                if (name.beginsWith(BuiltInName::round))
+                {
+                    ASSERT(name.length() == 8);
+                    return &BuiltInFunction::kFunction_round_1B;
+                }
+                break;
+            }
+            case 0x148f151fu:
+            {
+                if (name.beginsWith(BuiltInName::acosh))
+                {
+                    ASSERT(name.length() == 8);
+                    return &BuiltInFunction::kFunction_acosh_2B;
+                }
+                break;
+            }
+            case 0x148f4dfau:
+            {
+                if (name.beginsWith(BuiltInName::asinh))
+                {
+                    ASSERT(name.length() == 8);
+                    return &BuiltInFunction::kFunction_asinh_1B;
+                }
+                break;
+            }
+            case 0x148fe84bu:
+            {
+                if (name.beginsWith(BuiltInName::isnan))
+                {
+                    ASSERT(name.length() == 8);
+                    return &BuiltInFunction::kFunction_isnan_1B;
+                }
+                break;
+            }
+            case 0x14a4b126u:
+            {
+                if (name.beginsWith(BuiltInName::equal))
+                {
+                    ASSERT(name.length() == 10);
+                    return &BuiltInFunction::kFunction_equal_2D2D;
+                }
+                break;
+            }
+            case 0x14ac0278u:
+            {
+                if (name.beginsWith(BuiltInName::equal))
+                {
+                    ASSERT(name.length() == 10);
+                    return &BuiltInFunction::kFunction_equal_1D1D;
+                }
+                break;
+            }
+            case 0x14ad7597u:
+            {
+                if (name.beginsWith(BuiltInName::equal))
+                {
+                    ASSERT(name.length() == 10);
+                    return &BuiltInFunction::kFunction_equal_3D3D;
+                }
+                break;
+            }
+            case 0x14c00d68u:
+            {
+                if (name == BuiltInName::clamp_2C2C2C)
+                {
+                    return &BuiltInFunction::kFunction_clamp_2C2C2C;
+                }
+                break;
+            }
+            case 0x14c0acb1u:
+            {
+                if (name == BuiltInName::clamp_1D0D0D)
+                {
+                    return &BuiltInFunction::kFunction_clamp_1D0D0D;
+                }
+                break;
+            }
+            case 0x14c1bf46u:
+            {
+                if (name == BuiltInName::clamp_1C0C0C)
+                {
+                    return &BuiltInFunction::kFunction_clamp_1C0C0C;
+                }
+                break;
+            }
+            case 0x14c404a0u:
+            {
+                if (name == BuiltInName::clamp_0C0C0C)
+                {
+                    return &BuiltInFunction::kFunction_clamp_0C0C0C;
+                }
+                break;
+            }
+            case 0x14c4515bu:
+            {
+                if (name == BuiltInName::clamp_2D0D0D)
+                {
+                    return &BuiltInFunction::kFunction_clamp_2D0D0D;
+                }
+                break;
+            }
+            case 0x14c4b865u:
+            {
+                if (name == BuiltInName::clamp_3C0C0C)
+                {
+                    return &BuiltInFunction::kFunction_clamp_3C0C0C;
+                }
+                break;
+            }
+            case 0x14c57085u:
+            {
+                if (name == BuiltInName::clamp_1C1C1C)
+                {
+                    return &BuiltInFunction::kFunction_clamp_1C1C1C;
+                }
+                break;
+            }
+            case 0x14c61344u:
+            {
+                if (name == BuiltInName::clamp_1D1D1D)
+                {
+                    return &BuiltInFunction::kFunction_clamp_1D1D1D;
+                }
+                break;
+            }
+            case 0x14c9dd99u:
+            {
+                if (name == BuiltInName::clamp_2D2D2D)
+                {
+                    return &BuiltInFunction::kFunction_clamp_2D2D2D;
+                }
+                break;
+            }
+            case 0x14cae813u:
+            {
+                if (name == BuiltInName::clamp_3C3C3C)
+                {
+                    return &BuiltInFunction::kFunction_clamp_3C3C3C;
+                }
+                break;
+            }
+            case 0x14cb6e76u:
+            {
+                if (name == BuiltInName::clamp_3D0D0D)
+                {
+                    return &BuiltInFunction::kFunction_clamp_3D0D0D;
+                }
+                break;
+            }
+            case 0x14cc2e9au:
+            {
+                if (name == BuiltInName::clamp_2C0C0C)
+                {
+                    return &BuiltInFunction::kFunction_clamp_2C0C0C;
+                }
+                break;
+            }
+            case 0x14cc3941u:
+            {
+                if (name == BuiltInName::clamp_0D0D0D)
+                {
+                    return &BuiltInFunction::kFunction_clamp_0D0D0D;
+                }
+                break;
+            }
+            case 0x14ceb43eu:
+            {
+                if (name == BuiltInName::clamp_3D3D3D)
+                {
+                    return &BuiltInFunction::kFunction_clamp_3D3D3D;
+                }
+                break;
+            }
+            case 0x1ca06416u:
+            {
+                if (name.beginsWith(BuiltInName::inverse))
+                {
+                    ASSERT(name.length() == 10);
+                    return &BuiltInFunction::kFunction_inverse_5B;
+                }
+                break;
+            }
+            case 0x1ca0f080u:
+            {
+                if (name.beginsWith(BuiltInName::inverse))
+                {
+                    ASSERT(name.length() == 10);
+                    return &BuiltInFunction::kFunction_inverse_AB;
+                }
+                break;
+            }
+            case 0x1ca198d9u:
+            {
+                if (name.beginsWith(BuiltInName::inverse))
+                {
+                    ASSERT(name.length() == 10);
+                    return &BuiltInFunction::kFunction_inverse_FB;
+                }
+                break;
+            }
+            case 0x1cc0bf9eu:
+            {
+                if (name.beginsWith(BuiltInName::texture))
+                {
+                    ASSERT(name.length() == 12);
+                    return &BuiltInFunction::kFunction_texture_0S2B;
+                }
+                break;
+            }
+            case 0x1cc25663u:
+            {
+                if (name.beginsWith(BuiltInName::texture))
+                {
+                    ASSERT(name.length() == 12);
+                    return &BuiltInFunction::kFunction_texture_0K2B;
+                }
+                break;
+            }
+            case 0x1cc39501u:
+            {
+                if (name.beginsWith(BuiltInName::texture))
+                {
+                    ASSERT(name.length() == 12);
+                    return &BuiltInFunction::kFunction_texture_0V2B;
+                }
+                break;
+            }
+            case 0x1cc3d380u:
+            {
+                if (name.beginsWith(BuiltInName::texture))
+                {
+                    ASSERT(name.length() == 12);
+                    return &BuiltInFunction::kFunction_texture_0Z2B;
+                }
+                break;
+            }
+            case 0x1cc4bc63u:
+            {
+                if (name.beginsWith(BuiltInName::texture))
+                {
+                    ASSERT(name.length() == 12);
+                    return &BuiltInFunction::kFunction_texture_0I2B;
+                }
+                break;
+            }
+            case 0x1cc71e2fu:
+            {
+                if (name.beginsWith(BuiltInName::texture))
+                {
+                    ASSERT(name.length() == 12);
+                    return &BuiltInFunction::kFunction_texture_0Q2B;
+                }
+                break;
+            }
+            case 0x1cc75b2bu:
+            {
+                if (name.beginsWith(BuiltInName::texture))
+                {
+                    ASSERT(name.length() == 12);
+                    return &BuiltInFunction::kFunction_texture_0M1B;
+                }
+                break;
+            }
+            case 0x1cc8b086u:
+            {
+                if (name.beginsWith(BuiltInName::texture))
+                {
+                    ASSERT(name.length() == 12);
+                    return &BuiltInFunction::kFunction_texture_0b3B;
+                }
+                break;
+            }
+            case 0x1cc8e9a8u:
+            {
+                if (name.beginsWith(BuiltInName::texture))
+                {
+                    ASSERT(name.length() == 12);
+                    return &BuiltInFunction::kFunction_texture_0J2B;
+                }
+                break;
+            }
+            case 0x1cc8f192u:
+            {
+                if (name.beginsWith(BuiltInName::texture))
+                {
+                    ASSERT(name.length() == 12);
+                    return &BuiltInFunction::kFunction_texture_0W2B;
+                }
+                break;
+            }
+            case 0x1cc931d1u:
+            {
+                if (name.beginsWith(BuiltInName::texture))
+                {
+                    ASSERT(name.length() == 12);
+                    return &BuiltInFunction::kFunction_texture_0X2B;
+                }
+                break;
+            }
+            case 0x1ccbe1e6u:
+            {
+                if (name.beginsWith(BuiltInName::texture))
+                {
+                    ASSERT(name.length() == 12);
+                    return &BuiltInFunction::kFunction_texture_0H1B;
+                }
+                break;
+            }
+            case 0x1ccc3b2fu:
+            {
+                if (name.beginsWith(BuiltInName::texture))
+                {
+                    ASSERT(name.length() == 12);
+                    return &BuiltInFunction::kFunction_texture_0a3B;
+                }
+                break;
+            }
+            case 0x1ccc3cbfu:
+            {
+                if (name.beginsWith(BuiltInName::texture))
+                {
+                    ASSERT(name.length() == 12);
+                    return &BuiltInFunction::kFunction_texture_0L1B;
+                }
+                break;
+            }
+            case 0x1ccc5cd8u:
+            {
+                if (name == BuiltInName::texture_0N1B)
+                {
+                    return &BuiltInFunction::kFunction_texture_0N1B;
+                }
+                break;
+            }
+            case 0x1ccdb695u:
+            {
+                if (name.beginsWith(BuiltInName::texture))
+                {
+                    ASSERT(name.length() == 12);
+                    return &BuiltInFunction::kFunction_texture_0U1B;
+                }
+                break;
+            }
+            case 0x1cce4cd6u:
+            {
+                if (name.beginsWith(BuiltInName::texture))
+                {
+                    ASSERT(name.length() == 12);
+                    return &BuiltInFunction::kFunction_texture_0P1B;
+                }
+                break;
+            }
+            case 0x1ccf4520u:
+            {
+                if (name.beginsWith(BuiltInName::texture))
+                {
+                    ASSERT(name.length() == 12);
+                    return &BuiltInFunction::kFunction_texture_0R2B;
+                }
+                break;
+            }
+            case 0x20d0bc8cu:
+            {
+                if (name.beginsWith(BuiltInName::lessThan))
+                {
+                    ASSERT(name.length() == 13);
+                    return &BuiltInFunction::kFunction_lessThan_3D3D;
+                }
+                break;
+            }
+            case 0x20d2c382u:
+            {
+                if (name.beginsWith(BuiltInName::lessThan))
+                {
+                    ASSERT(name.length() == 13);
+                    return &BuiltInFunction::kFunction_lessThan_2D2D;
+                }
+                break;
+            }
+            case 0x20d59f47u:
+            {
+                if (name.beginsWith(BuiltInName::notEqual))
+                {
+                    ASSERT(name.length() == 13);
+                    return &BuiltInFunction::kFunction_notEqual_1D1D;
+                }
+                break;
+            }
+            case 0x20dae9e7u:
+            {
+                if (name.beginsWith(BuiltInName::lessThan))
+                {
+                    ASSERT(name.length() == 13);
+                    return &BuiltInFunction::kFunction_lessThan_1D1D;
+                }
+                break;
+            }
+            case 0x20dc53d0u:
+            {
+                if (name.beginsWith(BuiltInName::notEqual))
+                {
+                    ASSERT(name.length() == 13);
+                    return &BuiltInFunction::kFunction_notEqual_3D3D;
+                }
+                break;
+            }
+            case 0x20dcebb4u:
+            {
+                if (name.beginsWith(BuiltInName::notEqual))
+                {
+                    ASSERT(name.length() == 13);
+                    return &BuiltInFunction::kFunction_notEqual_2D2D;
+                }
+                break;
+            }
+            case 0x24c016b3u:
+            {
+                if (name.beginsWith(BuiltInName::roundEven))
+                {
+                    ASSERT(name.length() == 12);
+                    return &BuiltInFunction::kFunction_roundEven_3B;
+                }
+                break;
+            }
+            case 0x24c04563u:
+            {
+                if (name.beginsWith(BuiltInName::transpose))
+                {
+                    ASSERT(name.length() == 12);
+                    return &BuiltInFunction::kFunction_transpose_AB;
+                }
+                break;
+            }
+            case 0x24c2b5deu:
+            {
+                if (name.beginsWith(BuiltInName::roundEven))
+                {
+                    ASSERT(name.length() == 12);
+                    return &BuiltInFunction::kFunction_roundEven_2B;
+                }
+                break;
+            }
+            case 0x24c9ce28u:
+            {
+                if (name.beginsWith(BuiltInName::transpose))
+                {
+                    ASSERT(name.length() == 12);
+                    return &BuiltInFunction::kFunction_transpose_EB;
+                }
+                break;
+            }
+            case 0x24ca150au:
+            {
+                if (name.beginsWith(BuiltInName::transpose))
+                {
+                    ASSERT(name.length() == 12);
+                    return &BuiltInFunction::kFunction_transpose_6B;
+                }
+                break;
+            }
+            case 0x24caa0a8u:
+            {
+                if (name.beginsWith(BuiltInName::transpose))
+                {
+                    ASSERT(name.length() == 12);
+                    return &BuiltInFunction::kFunction_transpose_BB;
+                }
+                break;
+            }
+            case 0x24cb384cu:
+            {
+                if (name.beginsWith(BuiltInName::transpose))
+                {
+                    ASSERT(name.length() == 12);
+                    return &BuiltInFunction::kFunction_transpose_9B;
+                }
+                break;
+            }
+            case 0x24cb958eu:
+            {
+                if (name.beginsWith(BuiltInName::roundEven))
+                {
+                    ASSERT(name.length() == 12);
+                    return &BuiltInFunction::kFunction_roundEven_1B;
+                }
+                break;
+            }
+            case 0x24cc2056u:
+            {
+                if (name.beginsWith(BuiltInName::transpose))
+                {
+                    ASSERT(name.length() == 12);
+                    return &BuiltInFunction::kFunction_transpose_FB;
+                }
+                break;
+            }
+            case 0x24ccb677u:
+            {
+                if (name.beginsWith(BuiltInName::transpose))
+                {
+                    ASSERT(name.length() == 12);
+                    return &BuiltInFunction::kFunction_transpose_7B;
+                }
+                break;
+            }
+            case 0x24cdb8acu:
+            {
+                if (name.beginsWith(BuiltInName::roundEven))
+                {
+                    ASSERT(name.length() == 12);
+                    return &BuiltInFunction::kFunction_roundEven_0B;
+                }
+                break;
+            }
+            case 0x24cfa59eu:
+            {
+                if (name.beginsWith(BuiltInName::transpose))
+                {
+                    ASSERT(name.length() == 12);
+                    return &BuiltInFunction::kFunction_transpose_DB;
+                }
+                break;
+            }
+            case 0x24cfb971u:
+            {
+                if (name.beginsWith(BuiltInName::transpose))
+                {
+                    ASSERT(name.length() == 12);
+                    return &BuiltInFunction::kFunction_transpose_5B;
+                }
+                break;
+            }
+            case 0x24e7ca02u:
+            {
+                if (name.beginsWith(BuiltInName::yuv_2_rgb))
+                {
+                    ASSERT(name.length() == 14);
+                    return &BuiltInFunction::kFunction_yuv_2_rgb_2B0G;
+                }
+                break;
+            }
+            case 0x24eb3ad6u:
+            {
+                if (name.beginsWith(BuiltInName::rgb_2_yuv))
+                {
+                    ASSERT(name.length() == 14);
+                    return &BuiltInFunction::kFunction_rgb_2_yuv_2B0G;
+                }
+                break;
+            }
+            case 0x29102cb2u:
+            {
+                if (name == BuiltInName::texelFetch_0V2C0C)
+                {
+                    return &BuiltInFunction::kFunction_texelFetch_0V2C0C;
+                }
+                break;
+            }
+            case 0x2910700au:
+            {
+                if (name == BuiltInName::textureLod_0X2B0B)
+                {
+                    return &BuiltInFunction::kFunction_textureLod_0X2B0B;
+                }
+                break;
+            }
+            case 0x29112a03u:
+            {
+                if (name == BuiltInName::textureLod_0Q2B0B)
+                {
+                    return &BuiltInFunction::kFunction_textureLod_0Q2B0B;
+                }
+                break;
+            }
+            case 0x2911720eu:
+            {
+                if (name == BuiltInName::texelFetch_0Q2C0C)
+                {
+                    return &BuiltInFunction::kFunction_texelFetch_0Q2C0C;
+                }
+                break;
+            }
+            case 0x29128f3eu:
+            {
+                if (name == BuiltInName::texelFetch_0P1C0C)
+                {
+                    return &BuiltInFunction::kFunction_texelFetch_0P1C0C;
+                }
+                break;
+            }
+            case 0x29133cc9u:
+            {
+                if (name == BuiltInName::textureLod_0V2B0B)
+                {
+                    return &BuiltInFunction::kFunction_textureLod_0V2B0B;
+                }
+                break;
+            }
+            case 0x29140228u:
+            {
+                if (name == BuiltInName::texelFetch_0M1C0C)
+                {
+                    return &BuiltInFunction::kFunction_texelFetch_0M1C0C;
+                }
+                break;
+            }
+            case 0x29144470u:
+            {
+                if (name == BuiltInName::texelFetch_0S2C0C)
+                {
+                    return &BuiltInFunction::kFunction_texelFetch_0S2C0C;
+                }
+                break;
+            }
+            case 0x2914cd7au:
+            {
+                if (name == BuiltInName::textureLod_0S2B0B)
+                {
+                    return &BuiltInFunction::kFunction_textureLod_0S2B0B;
+                }
+                break;
+            }
+            case 0x2916234cu:
+            {
+                if (name == BuiltInName::textureLod_0J2B0B)
+                {
+                    return &BuiltInFunction::kFunction_textureLod_0J2B0B;
+                }
+                break;
+            }
+            case 0x29166bccu:
+            {
+                if (name == BuiltInName::textureLod_0H1B0B)
+                {
+                    return &BuiltInFunction::kFunction_textureLod_0H1B0B;
+                }
+                break;
+            }
+            case 0x291771ddu:
+            {
+                if (name == BuiltInName::texelFetch_0I2C0C)
+                {
+                    return &BuiltInFunction::kFunction_texelFetch_0I2C0C;
+                }
+                break;
+            }
+            case 0x2919999du:
+            {
+                if (name == BuiltInName::textureLod_0R2B0B)
+                {
+                    return &BuiltInFunction::kFunction_textureLod_0R2B0B;
+                }
+                break;
+            }
+            case 0x291a3c8bu:
+            {
+                if (name == BuiltInName::texelFetch_0K2C0C)
+                {
+                    return &BuiltInFunction::kFunction_texelFetch_0K2C0C;
+                }
+                break;
+            }
+            case 0x291a6956u:
+            {
+                if (name == BuiltInName::textureLod_0W2B0B)
+                {
+                    return &BuiltInFunction::kFunction_textureLod_0W2B0B;
+                }
+                break;
+            }
+            case 0x291a77ccu:
+            {
+                if (name == BuiltInName::textureLod_0I2B0B)
+                {
+                    return &BuiltInFunction::kFunction_textureLod_0I2B0B;
+                }
+                break;
+            }
+            case 0x291c010eu:
+            {
+                if (name == BuiltInName::texelFetch_0X2C0C)
+                {
+                    return &BuiltInFunction::kFunction_texelFetch_0X2C0C;
+                }
+                break;
+            }
+            case 0x291d8e21u:
+            {
+                if (name == BuiltInName::textureLod_0K2B0B)
+                {
+                    return &BuiltInFunction::kFunction_textureLod_0K2B0B;
+                }
+                break;
+            }
+            case 0x291da4e1u:
+            {
+                if (name == BuiltInName::texelFetch_0U1C0C)
+                {
+                    return &BuiltInFunction::kFunction_texelFetch_0U1C0C;
+                }
+                break;
+            }
+            case 0x291dc663u:
+            {
+                if (name == BuiltInName::texelFetch_0L1C0C)
+                {
+                    return &BuiltInFunction::kFunction_texelFetch_0L1C0C;
+                }
+                break;
+            }
+            case 0x291eee75u:
+            {
+                if (name == BuiltInName::textureLod_0U1B0B)
+                {
+                    return &BuiltInFunction::kFunction_textureLod_0U1B0B;
+                }
+                break;
+            }
+            case 0x291f9c5du:
+            {
+                if (name == BuiltInName::textureLod_0P1B0B)
+                {
+                    return &BuiltInFunction::kFunction_textureLod_0P1B0B;
+                }
+                break;
+            }
+            case 0x291fb96au:
+            {
+                if (name == BuiltInName::texelFetch_0H1C0C)
+                {
+                    return &BuiltInFunction::kFunction_texelFetch_0H1C0C;
+                }
+                break;
+            }
+            case 0x291fc149u:
             {
                 if (name == BuiltInName::textureLod_0Z2B0B)
                 {
@@ -15912,15 +14496,497 @@
                 }
                 break;
             }
-            case 0xfe3deb95u:
+            case 0x2ce6e60cu:
             {
-                if (name.length() == 8 && name.beginsWith(BuiltInName::isnan_))
+                if (name.beginsWith(BuiltInName::textureSize))
                 {
-                    return &BuiltInFunction::kFunction_isnan_1B;
+                    ASSERT(name.length() == 14);
+                    return &BuiltInFunction::kFunction_textureSize_0Y;
                 }
                 break;
             }
-            case 0xfe5d9a62u:
+            case 0x2ce73febu:
+            {
+                if (name.beginsWith(BuiltInName::textureSize))
+                {
+                    ASSERT(name.length() == 14);
+                    return &BuiltInFunction::kFunction_textureSize_0T;
+                }
+                break;
+            }
+            case 0x2ce7c017u:
+            {
+                if (name.beginsWith(BuiltInName::textureSize))
+                {
+                    ASSERT(name.length() == 14);
+                    return &BuiltInFunction::kFunction_textureSize_0O;
+                }
+                break;
+            }
+            case 0x2ce9e97du:
+            {
+                if (name.beginsWith(BuiltInName::determinant))
+                {
+                    ASSERT(name.length() == 14);
+                    return &BuiltInFunction::kFunction_determinant_FB;
+                }
+                break;
+            }
+            case 0x2ced705au:
+            {
+                if (name.beginsWith(BuiltInName::determinant))
+                {
+                    ASSERT(name.length() == 14);
+                    return &BuiltInFunction::kFunction_determinant_5B;
+                }
+                break;
+            }
+            case 0x2cee0c54u:
+            {
+                if (name.beginsWith(BuiltInName::determinant))
+                {
+                    ASSERT(name.length() == 14);
+                    return &BuiltInFunction::kFunction_determinant_AB;
+                }
+                break;
+            }
+            case 0x2d005187u:
+            {
+                if (name.beginsWith(BuiltInName::textureProj))
+                {
+                    ASSERT(name.length() == 16);
+                    return &BuiltInFunction::kFunction_textureProj_0U3B;
+                }
+                break;
+            }
+            case 0x2d007125u:
+            {
+                if (name.beginsWith(BuiltInName::textureSize))
+                {
+                    ASSERT(name.length() == 16);
+                    return &BuiltInFunction::kFunction_textureSize_0I0C;
+                }
+                break;
+            }
+            case 0x2d00b7aau:
+            {
+                if (name.beginsWith(BuiltInName::textureSize))
+                {
+                    ASSERT(name.length() == 16);
+                    return &BuiltInFunction::kFunction_textureSize_0M0C;
+                }
+                break;
+            }
+            case 0x2d00dc41u:
+            {
+                if (name.beginsWith(BuiltInName::textureProj))
+                {
+                    ASSERT(name.length() == 16);
+                    return &BuiltInFunction::kFunction_textureProj_0P3B;
+                }
+                break;
+            }
+            case 0x2d015791u:
+            {
+                if (name.beginsWith(BuiltInName::textureSize))
+                {
+                    ASSERT(name.length() == 16);
+                    return &BuiltInFunction::kFunction_textureSize_0U0C;
+                }
+                break;
+            }
+            case 0x2d026f5fu:
+            {
+                if (name.beginsWith(BuiltInName::greaterThan))
+                {
+                    ASSERT(name.length() == 16);
+                    return &BuiltInFunction::kFunction_greaterThan_3D3D;
+                }
+                break;
+            }
+            case 0x2d02d8e9u:
+            {
+                if (name.beginsWith(BuiltInName::greaterThan))
+                {
+                    ASSERT(name.length() == 16);
+                    return &BuiltInFunction::kFunction_greaterThan_1D1D;
+                }
+                break;
+            }
+            case 0x2d02de80u:
+            {
+                if (name.beginsWith(BuiltInName::textureProj))
+                {
+                    ASSERT(name.length() == 16);
+                    return &BuiltInFunction::kFunction_textureProj_0H2B;
+                }
+                break;
+            }
+            case 0x2d037c4cu:
+            {
+                if (name.beginsWith(BuiltInName::textureProj))
+                {
+                    ASSERT(name.length() == 16);
+                    return &BuiltInFunction::kFunction_textureProj_0P2B;
+                }
+                break;
+            }
+            case 0x2d03b1f6u:
+            {
+                if (name.beginsWith(BuiltInName::greaterThan))
+                {
+                    ASSERT(name.length() == 16);
+                    return &BuiltInFunction::kFunction_greaterThan_2D2D;
+                }
+                break;
+            }
+            case 0x2d03e3dau:
+            {
+                if (name.beginsWith(BuiltInName::textureSize))
+                {
+                    ASSERT(name.length() == 16);
+                    return &BuiltInFunction::kFunction_textureSize_0J0C;
+                }
+                break;
+            }
+            case 0x2d03fc9du:
+            {
+                if (name.beginsWith(BuiltInName::textureProj))
+                {
+                    ASSERT(name.length() == 16);
+                    return &BuiltInFunction::kFunction_textureProj_0V3B;
+                }
+                break;
+            }
+            case 0x2d04b5f4u:
+            {
+                if (name.beginsWith(BuiltInName::textureSize))
+                {
+                    ASSERT(name.length() == 16);
+                    return &BuiltInFunction::kFunction_textureSize_0V0C;
+                }
+                break;
+            }
+            case 0x2d04bd90u:
+            {
+                if (name.beginsWith(BuiltInName::textureSize))
+                {
+                    ASSERT(name.length() == 16);
+                    return &BuiltInFunction::kFunction_textureSize_0S0C;
+                }
+                break;
+            }
+            case 0x2d05209au:
+            {
+                if (name.beginsWith(BuiltInName::textureSize))
+                {
+                    ASSERT(name.length() == 16);
+                    return &BuiltInFunction::kFunction_textureSize_0b0C;
+                }
+                break;
+            }
+            case 0x2d05b26eu:
+            {
+                if (name.beginsWith(BuiltInName::textureProj))
+                {
+                    ASSERT(name.length() == 16);
+                    return &BuiltInFunction::kFunction_textureProj_0M2B;
+                }
+                break;
+            }
+            case 0x2d0728a0u:
+            {
+                if (name.beginsWith(BuiltInName::textureProj))
+                {
+                    ASSERT(name.length() == 16);
+                    return &BuiltInFunction::kFunction_textureProj_0L2B;
+                }
+                break;
+            }
+            case 0x2d07de2bu:
+            {
+                if (name.beginsWith(BuiltInName::textureProj))
+                {
+                    ASSERT(name.length() == 16);
+                    return &BuiltInFunction::kFunction_textureProj_0M3B;
+                }
+                break;
+            }
+            case 0x2d0836b9u:
+            {
+                if (name.beginsWith(BuiltInName::textureProj))
+                {
+                    ASSERT(name.length() == 16);
+                    return &BuiltInFunction::kFunction_textureProj_0H3B;
+                }
+                break;
+            }
+            case 0x2d084eecu:
+            {
+                if (name.beginsWith(BuiltInName::textureProj))
+                {
+                    ASSERT(name.length() == 16);
+                    return &BuiltInFunction::kFunction_textureProj_0Z3B;
+                }
+                break;
+            }
+            case 0x2d085b63u:
+            {
+                if (name.beginsWith(BuiltInName::textureSize))
+                {
+                    ASSERT(name.length() == 16);
+                    return &BuiltInFunction::kFunction_textureSize_0H0C;
+                }
+                break;
+            }
+            case 0x2d089a63u:
+            {
+                if (name.beginsWith(BuiltInName::textureSize))
+                {
+                    ASSERT(name.length() == 16);
+                    return &BuiltInFunction::kFunction_textureSize_0L0C;
+                }
+                break;
+            }
+            case 0x2d08e824u:
+            {
+                if (name.beginsWith(BuiltInName::textureSize))
+                {
+                    ASSERT(name.length() == 16);
+                    return &BuiltInFunction::kFunction_textureSize_0W0C;
+                }
+                break;
+            }
+            case 0x2d0908bdu:
+            {
+                if (name.beginsWith(BuiltInName::textureSize))
+                {
+                    ASSERT(name.length() == 16);
+                    return &BuiltInFunction::kFunction_textureSize_0Z0C;
+                }
+                break;
+            }
+            case 0x2d0b7d30u:
+            {
+                if (name.beginsWith(BuiltInName::textureProj))
+                {
+                    ASSERT(name.length() == 16);
+                    return &BuiltInFunction::kFunction_textureProj_0N3B;
+                }
+                break;
+            }
+            case 0x2d0b9377u:
+            {
+                if (name.beginsWith(BuiltInName::textureProj))
+                {
+                    ASSERT(name.length() == 16);
+                    return &BuiltInFunction::kFunction_textureProj_0I3B;
+                }
+                break;
+            }
+            case 0x2d0c1458u:
+            {
+                if (name.beginsWith(BuiltInName::textureSize))
+                {
+                    ASSERT(name.length() == 16);
+                    return &BuiltInFunction::kFunction_textureSize_0K0C;
+                }
+                break;
+            }
+            case 0x2d0c211cu:
+            {
+                if (name.beginsWith(BuiltInName::textureProj))
+                {
+                    ASSERT(name.length() == 16);
+                    return &BuiltInFunction::kFunction_textureProj_0Q3B;
+                }
+                break;
+            }
+            case 0x2d0c7922u:
+            {
+                if (name.beginsWith(BuiltInName::textureSize))
+                {
+                    ASSERT(name.length() == 16);
+                    return &BuiltInFunction::kFunction_textureSize_0R0C;
+                }
+                break;
+            }
+            case 0x2d0c82e1u:
+            {
+                if (name.beginsWith(BuiltInName::textureProj))
+                {
+                    ASSERT(name.length() == 16);
+                    return &BuiltInFunction::kFunction_textureProj_0L3B;
+                }
+                break;
+            }
+            case 0x2d0cd4ecu:
+            {
+                if (name.beginsWith(BuiltInName::textureSize))
+                {
+                    ASSERT(name.length() == 16);
+                    return &BuiltInFunction::kFunction_textureSize_0P0C;
+                }
+                break;
+            }
+            case 0x2d0d00f6u:
+            {
+                if (name.beginsWith(BuiltInName::textureSize))
+                {
+                    ASSERT(name.length() == 16);
+                    return &BuiltInFunction::kFunction_textureSize_0Q0C;
+                }
+                break;
+            }
+            case 0x2d0d65fbu:
+            {
+                if (name.beginsWith(BuiltInName::textureSize))
+                {
+                    ASSERT(name.length() == 16);
+                    return &BuiltInFunction::kFunction_textureSize_0X0C;
+                }
+                break;
+            }
+            case 0x2d0d917du:
+            {
+                if (name.beginsWith(BuiltInName::textureProj))
+                {
+                    ASSERT(name.length() == 16);
+                    return &BuiltInFunction::kFunction_textureProj_0N2B;
+                }
+                break;
+            }
+            case 0x2d0db21du:
+            {
+                if (name.beginsWith(BuiltInName::textureSize))
+                {
+                    ASSERT(name.length() == 16);
+                    return &BuiltInFunction::kFunction_textureSize_0a0C;
+                }
+                break;
+            }
+            case 0x2d0e3593u:
+            {
+                if (name.beginsWith(BuiltInName::textureProj))
+                {
+                    ASSERT(name.length() == 16);
+                    return &BuiltInFunction::kFunction_textureProj_0U2B;
+                }
+                break;
+            }
+            case 0x2d401271u:
+            {
+                if (name == BuiltInName::textureGrad_0I2B2B2B)
+                {
+                    return &BuiltInFunction::kFunction_textureGrad_0I2B2B2B;
+                }
+                break;
+            }
+            case 0x2d423ef7u:
+            {
+                if (name == BuiltInName::textureGrad_0W2B2B2B)
+                {
+                    return &BuiltInFunction::kFunction_textureGrad_0W2B2B2B;
+                }
+                break;
+            }
+            case 0x2d42a4a7u:
+            {
+                if (name == BuiltInName::textureGrad_0a3B2B2B)
+                {
+                    return &BuiltInFunction::kFunction_textureGrad_0a3B2B2B;
+                }
+                break;
+            }
+            case 0x2d4319eeu:
+            {
+                if (name == BuiltInName::textureGrad_0H1B1B1B)
+                {
+                    return &BuiltInFunction::kFunction_textureGrad_0H1B1B1B;
+                }
+                break;
+            }
+            case 0x2d432b01u:
+            {
+                if (name == BuiltInName::textureGrad_0Q2B2B2B)
+                {
+                    return &BuiltInFunction::kFunction_textureGrad_0Q2B2B2B;
+                }
+                break;
+            }
+            case 0x2d43ef75u:
+            {
+                if (name == BuiltInName::textureGrad_0J2B2B2B)
+                {
+                    return &BuiltInFunction::kFunction_textureGrad_0J2B2B2B;
+                }
+                break;
+            }
+            case 0x2d447047u:
+            {
+                if (name == BuiltInName::textureGrad_0X2B1B1B)
+                {
+                    return &BuiltInFunction::kFunction_textureGrad_0X2B1B1B;
+                }
+                break;
+            }
+            case 0x2d468d96u:
+            {
+                if (name == BuiltInName::textureGrad_0R2B2B2B)
+                {
+                    return &BuiltInFunction::kFunction_textureGrad_0R2B2B2B;
+                }
+                break;
+            }
+            case 0x2d48f0f3u:
+            {
+                if (name == BuiltInName::textureGrad_0P1B1B1B)
+                {
+                    return &BuiltInFunction::kFunction_textureGrad_0P1B1B1B;
+                }
+                break;
+            }
+            case 0x2d4a4f6au:
+            {
+                if (name == BuiltInName::textureGrad_0b3B1B1B)
+                {
+                    return &BuiltInFunction::kFunction_textureGrad_0b3B1B1B;
+                }
+                break;
+            }
+            case 0x2d4add22u:
+            {
+                if (name == BuiltInName::textureGrad_0S2B1B1B)
+                {
+                    return &BuiltInFunction::kFunction_textureGrad_0S2B1B1B;
+                }
+                break;
+            }
+            case 0x2d4d40c2u:
+            {
+                if (name == BuiltInName::textureGrad_0Z2B1B1B)
+                {
+                    return &BuiltInFunction::kFunction_textureGrad_0Z2B1B1B;
+                }
+                break;
+            }
+            case 0x2d4e1d2au:
+            {
+                if (name == BuiltInName::textureGrad_0K2B1B1B)
+                {
+                    return &BuiltInFunction::kFunction_textureGrad_0K2B1B1B;
+                }
+                break;
+            }
+            case 0x2d4e721cu:
+            {
+                if (name == BuiltInName::textureGrad_0U1B1B1B)
+                {
+                    return &BuiltInFunction::kFunction_textureGrad_0U1B1B1B;
+                }
+                break;
+            }
+            case 0x2d4fefbbu:
             {
                 if (name == BuiltInName::textureGrad_0V2B2B2B)
                 {
@@ -15928,20 +14994,1259 @@
                 }
                 break;
             }
+            case 0x30fbf415u:
+            {
+                if (name.beginsWith(BuiltInName::packHalf2x16))
+                {
+                    ASSERT(name.length() == 15);
+                    return &BuiltInFunction::kFunction_packHalf2x16_1B;
+                }
+                break;
+            }
+            case 0x3110c06fu:
+            {
+                if (name.beginsWith(BuiltInName::outerProduct))
+                {
+                    ASSERT(name.length() == 17);
+                    return &BuiltInFunction::kFunction_outerProduct_2B3B;
+                }
+                break;
+            }
+            case 0x311128b0u:
+            {
+                if (name.beginsWith(BuiltInName::outerProduct))
+                {
+                    ASSERT(name.length() == 17);
+                    return &BuiltInFunction::kFunction_outerProduct_1B1B;
+                }
+                break;
+            }
+            case 0x311199aau:
+            {
+                if (name.beginsWith(BuiltInName::outerProduct))
+                {
+                    ASSERT(name.length() == 17);
+                    return &BuiltInFunction::kFunction_outerProduct_3B2B;
+                }
+                break;
+            }
+            case 0x31120e21u:
+            {
+                if (name.beginsWith(BuiltInName::outerProduct))
+                {
+                    ASSERT(name.length() == 17);
+                    return &BuiltInFunction::kFunction_outerProduct_1B2B;
+                }
+                break;
+            }
+            case 0x31142a15u:
+            {
+                if (name.beginsWith(BuiltInName::outerProduct))
+                {
+                    ASSERT(name.length() == 17);
+                    return &BuiltInFunction::kFunction_outerProduct_1B3B;
+                }
+                break;
+            }
+            case 0x311b6bbfu:
+            {
+                if (name.beginsWith(BuiltInName::outerProduct))
+                {
+                    ASSERT(name.length() == 17);
+                    return &BuiltInFunction::kFunction_outerProduct_2B2B;
+                }
+                break;
+            }
+            case 0x311c3faau:
+            {
+                if (name.beginsWith(BuiltInName::outerProduct))
+                {
+                    ASSERT(name.length() == 17);
+                    return &BuiltInFunction::kFunction_outerProduct_3B3B;
+                }
+                break;
+            }
+            case 0x311c4162u:
+            {
+                if (name.beginsWith(BuiltInName::outerProduct))
+                {
+                    ASSERT(name.length() == 17);
+                    return &BuiltInFunction::kFunction_outerProduct_2B1B;
+                }
+                break;
+            }
+            case 0x311f3234u:
+            {
+                if (name.beginsWith(BuiltInName::outerProduct))
+                {
+                    ASSERT(name.length() == 17);
+                    return &BuiltInFunction::kFunction_outerProduct_3B1B;
+                }
+                break;
+            }
+            case 0x3509e2f1u:
+            {
+                if (name.beginsWith(BuiltInName::packSnorm2x16))
+                {
+                    ASSERT(name.length() == 16);
+                    return &BuiltInFunction::kFunction_packSnorm2x16_1B;
+                }
+                break;
+            }
+            case 0x350e7c49u:
+            {
+                if (name.beginsWith(BuiltInName::packUnorm2x16))
+                {
+                    ASSERT(name.length() == 16);
+                    return &BuiltInFunction::kFunction_packUnorm2x16_1B;
+                }
+                break;
+            }
+            case 0x35248d4eu:
+            {
+                if (name.beginsWith(BuiltInName::lessThanEqual))
+                {
+                    ASSERT(name.length() == 18);
+                    return &BuiltInFunction::kFunction_lessThanEqual_2D2D;
+                }
+                break;
+            }
+            case 0x352bc93du:
+            {
+                if (name.beginsWith(BuiltInName::lessThanEqual))
+                {
+                    ASSERT(name.length() == 18);
+                    return &BuiltInFunction::kFunction_lessThanEqual_1D1D;
+                }
+                break;
+            }
+            case 0x352df7d8u:
+            {
+                if (name.beginsWith(BuiltInName::lessThanEqual))
+                {
+                    ASSERT(name.length() == 18);
+                    return &BuiltInFunction::kFunction_lessThanEqual_3D3D;
+                }
+                break;
+            }
+            case 0x354102f7u:
+            {
+                if (name == BuiltInName::textureOffset_0P1B1C)
+                {
+                    return &BuiltInFunction::kFunction_textureOffset_0P1B1C;
+                }
+                break;
+            }
+            case 0x35413eedu:
+            {
+                if (name == BuiltInName::textureOffset_0V2B2C)
+                {
+                    return &BuiltInFunction::kFunction_textureOffset_0V2B2C;
+                }
+                break;
+            }
+            case 0x35422c30u:
+            {
+                if (name == BuiltInName::textureOffset_0H1B1C)
+                {
+                    return &BuiltInFunction::kFunction_textureOffset_0H1B1C;
+                }
+                break;
+            }
+            case 0x3543944fu:
+            {
+                if (name == BuiltInName::textureOffset_0U1B1C)
+                {
+                    return &BuiltInFunction::kFunction_textureOffset_0U1B1C;
+                }
+                break;
+            }
+            case 0x35459cf8u:
+            {
+                if (name == BuiltInName::textureOffset_0S2B1C)
+                {
+                    return &BuiltInFunction::kFunction_textureOffset_0S2B1C;
+                }
+                break;
+            }
+            case 0x354706eau:
+            {
+                if (name == BuiltInName::textureOffset_0X2B1C)
+                {
+                    return &BuiltInFunction::kFunction_textureOffset_0X2B1C;
+                }
+                break;
+            }
+            case 0x35473958u:
+            {
+                if (name == BuiltInName::textureOffset_0Z2B1C)
+                {
+                    return &BuiltInFunction::kFunction_textureOffset_0Z2B1C;
+                }
+                break;
+            }
+            case 0x35478003u:
+            {
+                if (name == BuiltInName::textureOffset_0Q2B2C)
+                {
+                    return &BuiltInFunction::kFunction_textureOffset_0Q2B2C;
+                }
+                break;
+            }
+            case 0x354801adu:
+            {
+                if (name == BuiltInName::textureOffset_0K2B1C)
+                {
+                    return &BuiltInFunction::kFunction_textureOffset_0K2B1C;
+                }
+                break;
+            }
+            case 0x354cbe1cu:
+            {
+                if (name == BuiltInName::textureOffset_0I2B2C)
+                {
+                    return &BuiltInFunction::kFunction_textureOffset_0I2B2C;
+                }
+                break;
+            }
+            case 0x3910c5d7u:
+            {
+                if (name.beginsWith(BuiltInName::intBitsToFloat))
+                {
+                    ASSERT(name.length() == 17);
+                    return &BuiltInFunction::kFunction_intBitsToFloat_2C;
+                }
+                break;
+            }
+            case 0x3910f8b9u:
+            {
+                if (name.beginsWith(BuiltInName::floatBitsToInt))
+                {
+                    ASSERT(name.length() == 17);
+                    return &BuiltInFunction::kFunction_floatBitsToInt_2B;
+                }
+                break;
+            }
+            case 0x3911c106u:
+            {
+                if (name.beginsWith(BuiltInName::intBitsToFloat))
+                {
+                    ASSERT(name.length() == 17);
+                    return &BuiltInFunction::kFunction_intBitsToFloat_1C;
+                }
+                break;
+            }
+            case 0x3913568du:
+            {
+                if (name.beginsWith(BuiltInName::floatBitsToInt))
+                {
+                    ASSERT(name.length() == 17);
+                    return &BuiltInFunction::kFunction_floatBitsToInt_1B;
+                }
+                break;
+            }
+            case 0x3913c3f6u:
+            {
+                if (name.beginsWith(BuiltInName::intBitsToFloat))
+                {
+                    ASSERT(name.length() == 17);
+                    return &BuiltInFunction::kFunction_intBitsToFloat_0C;
+                }
+                break;
+            }
+            case 0x3915f628u:
+            {
+                if (name.beginsWith(BuiltInName::floatBitsToInt))
+                {
+                    ASSERT(name.length() == 17);
+                    return &BuiltInFunction::kFunction_floatBitsToInt_0B;
+                }
+                break;
+            }
+            case 0x39164139u:
+            {
+                if (name.beginsWith(BuiltInName::intBitsToFloat))
+                {
+                    ASSERT(name.length() == 17);
+                    return &BuiltInFunction::kFunction_intBitsToFloat_3C;
+                }
+                break;
+            }
+            case 0x391bbc13u:
+            {
+                if (name.beginsWith(BuiltInName::unpackHalf2x16))
+                {
+                    ASSERT(name.length() == 17);
+                    return &BuiltInFunction::kFunction_unpackHalf2x16_0D;
+                }
+                break;
+            }
+            case 0x391ed774u:
+            {
+                if (name.beginsWith(BuiltInName::floatBitsToInt))
+                {
+                    ASSERT(name.length() == 17);
+                    return &BuiltInFunction::kFunction_floatBitsToInt_3B;
+                }
+                break;
+            }
+            case 0x3930f22du:
+            {
+                if (name.beginsWith(BuiltInName::matrixCompMult))
+                {
+                    ASSERT(name.length() == 19);
+                    return &BuiltInFunction::kFunction_matrixCompMult_9B9B;
+                }
+                break;
+            }
+            case 0x39334a4du:
+            {
+                if (name.beginsWith(BuiltInName::matrixCompMult))
+                {
+                    ASSERT(name.length() == 19);
+                    return &BuiltInFunction::kFunction_matrixCompMult_7B7B;
+                }
+                break;
+            }
+            case 0x39393016u:
+            {
+                if (name.beginsWith(BuiltInName::matrixCompMult))
+                {
+                    ASSERT(name.length() == 19);
+                    return &BuiltInFunction::kFunction_matrixCompMult_6B6B;
+                }
+                break;
+            }
+            case 0x3939896du:
+            {
+                if (name.beginsWith(BuiltInName::matrixCompMult))
+                {
+                    ASSERT(name.length() == 19);
+                    return &BuiltInFunction::kFunction_matrixCompMult_BBBB;
+                }
+                break;
+            }
+            case 0x393d70dau:
+            {
+                if (name.beginsWith(BuiltInName::matrixCompMult))
+                {
+                    ASSERT(name.length() == 19);
+                    return &BuiltInFunction::kFunction_matrixCompMult_DBDB;
+                }
+                break;
+            }
+            case 0x393f69ceu:
+            {
+                if (name.beginsWith(BuiltInName::matrixCompMult))
+                {
+                    ASSERT(name.length() == 19);
+                    return &BuiltInFunction::kFunction_matrixCompMult_EBEB;
+                }
+                break;
+            }
+            case 0x39509c5du:
+            {
+                if (name == BuiltInName::textureProjLod_0Q3B0B)
+                {
+                    return &BuiltInFunction::kFunction_textureProjLod_0Q3B0B;
+                }
+                break;
+            }
+            case 0x39516b09u:
+            {
+                if (name == BuiltInName::textureProjLod_0P2B0B)
+                {
+                    return &BuiltInFunction::kFunction_textureProjLod_0P2B0B;
+                }
+                break;
+            }
+            case 0x3951bcdau:
+            {
+                if (name == BuiltInName::textureProjLod_0H3B0B)
+                {
+                    return &BuiltInFunction::kFunction_textureProjLod_0H3B0B;
+                }
+                break;
+            }
+            case 0x3954274au:
+            {
+                if (name == BuiltInName::textureProjLod_0H2B0B)
+                {
+                    return &BuiltInFunction::kFunction_textureProjLod_0H2B0B;
+                }
+                break;
+            }
+            case 0x39564b1cu:
+            {
+                if (name == BuiltInName::textureProjLod_0U3B0B)
+                {
+                    return &BuiltInFunction::kFunction_textureProjLod_0U3B0B;
+                }
+                break;
+            }
+            case 0x395794afu:
+            {
+                if (name == BuiltInName::textureProjLod_0U2B0B)
+                {
+                    return &BuiltInFunction::kFunction_textureProjLod_0U2B0B;
+                }
+                break;
+            }
+            case 0x395b06aau:
+            {
+                if (name == BuiltInName::textureProjLod_0V3B0B)
+                {
+                    return &BuiltInFunction::kFunction_textureProjLod_0V3B0B;
+                }
+                break;
+            }
+            case 0x395bbd87u:
+            {
+                if (name == BuiltInName::textureProjLod_0P3B0B)
+                {
+                    return &BuiltInFunction::kFunction_textureProjLod_0P3B0B;
+                }
+                break;
+            }
+            case 0x395dfaedu:
+            {
+                if (name == BuiltInName::textureProjLod_0Z3B0B)
+                {
+                    return &BuiltInFunction::kFunction_textureProjLod_0Z3B0B;
+                }
+                break;
+            }
+            case 0x395f01e1u:
+            {
+                if (name == BuiltInName::textureProjLod_0I3B0B)
+                {
+                    return &BuiltInFunction::kFunction_textureProjLod_0I3B0B;
+                }
+                break;
+            }
+            case 0x3d204dd3u:
+            {
+                if (name.beginsWith(BuiltInName::floatBitsToUint))
+                {
+                    ASSERT(name.length() == 18);
+                    return &BuiltInFunction::kFunction_floatBitsToUint_0B;
+                }
+                break;
+            }
+            case 0x3d25c369u:
+            {
+                if (name.beginsWith(BuiltInName::uintBitsToFloat))
+                {
+                    ASSERT(name.length() == 18);
+                    return &BuiltInFunction::kFunction_uintBitsToFloat_3D;
+                }
+                break;
+            }
+            case 0x3d27a145u:
+            {
+                if (name.beginsWith(BuiltInName::uintBitsToFloat))
+                {
+                    ASSERT(name.length() == 18);
+                    return &BuiltInFunction::kFunction_uintBitsToFloat_0D;
+                }
+                break;
+            }
+            case 0x3d2a6fcau:
+            {
+                if (name.beginsWith(BuiltInName::floatBitsToUint))
+                {
+                    ASSERT(name.length() == 18);
+                    return &BuiltInFunction::kFunction_floatBitsToUint_1B;
+                }
+                break;
+            }
+            case 0x3d2a886cu:
+            {
+                if (name.beginsWith(BuiltInName::uintBitsToFloat))
+                {
+                    ASSERT(name.length() == 18);
+                    return &BuiltInFunction::kFunction_uintBitsToFloat_1D;
+                }
+                break;
+            }
+            case 0x3d2abf41u:
+            {
+                if (name.beginsWith(BuiltInName::unpackSnorm2x16))
+                {
+                    ASSERT(name.length() == 18);
+                    return &BuiltInFunction::kFunction_unpackSnorm2x16_0D;
+                }
+                break;
+            }
+            case 0x3d2b50abu:
+            {
+                if (name.beginsWith(BuiltInName::uintBitsToFloat))
+                {
+                    ASSERT(name.length() == 18);
+                    return &BuiltInFunction::kFunction_uintBitsToFloat_2D;
+                }
+                break;
+            }
+            case 0x3d2cc57cu:
+            {
+                if (name.beginsWith(BuiltInName::floatBitsToUint))
+                {
+                    ASSERT(name.length() == 18);
+                    return &BuiltInFunction::kFunction_floatBitsToUint_2B;
+                }
+                break;
+            }
+            case 0x3d2e13e6u:
+            {
+                if (name.beginsWith(BuiltInName::unpackUnorm2x16))
+                {
+                    ASSERT(name.length() == 18);
+                    return &BuiltInFunction::kFunction_unpackUnorm2x16_0D;
+                }
+                break;
+            }
+            case 0x3d2f6a98u:
+            {
+                if (name.beginsWith(BuiltInName::floatBitsToUint))
+                {
+                    ASSERT(name.length() == 18);
+                    return &BuiltInFunction::kFunction_floatBitsToUint_3B;
+                }
+                break;
+            }
+            case 0x3d832970u:
+            {
+                if (name == BuiltInName::textureProjGrad_0V3B2B2B)
+                {
+                    return &BuiltInFunction::kFunction_textureProjGrad_0V3B2B2B;
+                }
+                break;
+            }
+            case 0x3d83cc77u:
+            {
+                if (name == BuiltInName::textureProjGrad_0Q3B2B2B)
+                {
+                    return &BuiltInFunction::kFunction_textureProjGrad_0Q3B2B2B;
+                }
+                break;
+            }
+            case 0x3d865b2au:
+            {
+                if (name == BuiltInName::textureProjGrad_0H3B1B1B)
+                {
+                    return &BuiltInFunction::kFunction_textureProjGrad_0H3B1B1B;
+                }
+                break;
+            }
+            case 0x3d86f397u:
+            {
+                if (name == BuiltInName::textureProjGrad_0P2B1B1B)
+                {
+                    return &BuiltInFunction::kFunction_textureProjGrad_0P2B1B1B;
+                }
+                break;
+            }
+            case 0x3d87ff0au:
+            {
+                if (name == BuiltInName::textureProjGrad_0I3B2B2B)
+                {
+                    return &BuiltInFunction::kFunction_textureProjGrad_0I3B2B2B;
+                }
+                break;
+            }
+            case 0x3d896556u:
+            {
+                if (name == BuiltInName::textureProjGrad_0U3B1B1B)
+                {
+                    return &BuiltInFunction::kFunction_textureProjGrad_0U3B1B1B;
+                }
+                break;
+            }
+            case 0x3d8a0862u:
+            {
+                if (name == BuiltInName::textureProjGrad_0P3B1B1B)
+                {
+                    return &BuiltInFunction::kFunction_textureProjGrad_0P3B1B1B;
+                }
+                break;
+            }
+            case 0x3d8b645cu:
+            {
+                if (name == BuiltInName::textureProjGrad_0H2B1B1B)
+                {
+                    return &BuiltInFunction::kFunction_textureProjGrad_0H2B1B1B;
+                }
+                break;
+            }
+            case 0x3d8ca0b7u:
+            {
+                if (name == BuiltInName::textureProjGrad_0Z3B1B1B)
+                {
+                    return &BuiltInFunction::kFunction_textureProjGrad_0Z3B1B1B;
+                }
+                break;
+            }
+            case 0x3d8e064fu:
+            {
+                if (name == BuiltInName::textureProjGrad_0U2B1B1B)
+                {
+                    return &BuiltInFunction::kFunction_textureProjGrad_0U2B1B1B;
+                }
+                break;
+            }
+            case 0x415269b7u:
+            {
+                if (name.beginsWith(BuiltInName::greaterThanEqual))
+                {
+                    ASSERT(name.length() == 21);
+                    return &BuiltInFunction::kFunction_greaterThanEqual_2D2D;
+                }
+                break;
+            }
+            case 0x415d18d9u:
+            {
+                if (name.beginsWith(BuiltInName::greaterThanEqual))
+                {
+                    ASSERT(name.length() == 21);
+                    return &BuiltInFunction::kFunction_greaterThanEqual_3D3D;
+                }
+                break;
+            }
+            case 0x415d84abu:
+            {
+                if (name.beginsWith(BuiltInName::greaterThanEqual))
+                {
+                    ASSERT(name.length() == 21);
+                    return &BuiltInFunction::kFunction_greaterThanEqual_1D1D;
+                }
+                break;
+            }
+            case 0x4190d486u:
+            {
+                if (name == BuiltInName::texelFetchOffset_0X2C0C1C)
+                {
+                    return &BuiltInFunction::kFunction_texelFetchOffset_0X2C0C1C;
+                }
+                break;
+            }
+            case 0x4191cb81u:
+            {
+                if (name == BuiltInName::texelFetchOffset_0I2C0C2C)
+                {
+                    return &BuiltInFunction::kFunction_texelFetchOffset_0I2C0C2C;
+                }
+                break;
+            }
+            case 0x419224bdu:
+            {
+                if (name == BuiltInName::texelFetchOffset_0S2C0C1C)
+                {
+                    return &BuiltInFunction::kFunction_texelFetchOffset_0S2C0C1C;
+                }
+                break;
+            }
+            case 0x4192d547u:
+            {
+                if (name == BuiltInName::textureLodOffset_0X2B0B1C)
+                {
+                    return &BuiltInFunction::kFunction_textureLodOffset_0X2B0B1C;
+                }
+                break;
+            }
+            case 0x41938a11u:
+            {
+                if (name == BuiltInName::texelFetchOffset_0P1C0C1C)
+                {
+                    return &BuiltInFunction::kFunction_texelFetchOffset_0P1C0C1C;
+                }
+                break;
+            }
+            case 0x4194ae35u:
+            {
+                if (name == BuiltInName::textureLodOffset_0Z2B0B1C)
+                {
+                    return &BuiltInFunction::kFunction_textureLodOffset_0Z2B0B1C;
+                }
+                break;
+            }
+            case 0x4194ea77u:
+            {
+                if (name == BuiltInName::textureLodOffset_0V2B0B2C)
+                {
+                    return &BuiltInFunction::kFunction_textureLodOffset_0V2B0B2C;
+                }
+                break;
+            }
+            case 0x41958afau:
+            {
+                if (name == BuiltInName::textureLodOffset_0S2B0B1C)
+                {
+                    return &BuiltInFunction::kFunction_textureLodOffset_0S2B0B1C;
+                }
+                break;
+            }
+            case 0x4195953fu:
+            {
+                if (name == BuiltInName::texelFetchOffset_0K2C0C1C)
+                {
+                    return &BuiltInFunction::kFunction_texelFetchOffset_0K2C0C1C;
+                }
+                break;
+            }
+            case 0x419641e4u:
+            {
+                if (name == BuiltInName::texelFetchOffset_0H1C0C1C)
+                {
+                    return &BuiltInFunction::kFunction_texelFetchOffset_0H1C0C1C;
+                }
+                break;
+            }
+            case 0x41979f66u:
+            {
+                if (name == BuiltInName::textureLodOffset_0P1B0B1C)
+                {
+                    return &BuiltInFunction::kFunction_textureLodOffset_0P1B0B1C;
+                }
+                break;
+            }
+            case 0x4198f5c0u:
+            {
+                if (name == BuiltInName::texelFetchOffset_0U1C0C1C)
+                {
+                    return &BuiltInFunction::kFunction_texelFetchOffset_0U1C0C1C;
+                }
+                break;
+            }
+            case 0x41990c42u:
+            {
+                if (name == BuiltInName::textureLodOffset_0Q2B0B2C)
+                {
+                    return &BuiltInFunction::kFunction_textureLodOffset_0Q2B0B2C;
+                }
+                break;
+            }
+            case 0x41992585u:
+            {
+                if (name == BuiltInName::textureLodOffset_0H1B0B1C)
+                {
+                    return &BuiltInFunction::kFunction_textureLodOffset_0H1B0B1C;
+                }
+                break;
+            }
+            case 0x419a009fu:
+            {
+                if (name == BuiltInName::textureLodOffset_0K2B0B1C)
+                {
+                    return &BuiltInFunction::kFunction_textureLodOffset_0K2B0B1C;
+                }
+                break;
+            }
+            case 0x419b1491u:
+            {
+                if (name == BuiltInName::texelFetchOffset_0Q2C0C2C)
+                {
+                    return &BuiltInFunction::kFunction_texelFetchOffset_0Q2C0C2C;
+                }
+                break;
+            }
+            case 0x419bdc72u:
+            {
+                if (name == BuiltInName::textureLodOffset_0I2B0B2C)
+                {
+                    return &BuiltInFunction::kFunction_textureLodOffset_0I2B0B2C;
+                }
+                break;
+            }
+            case 0x419c6bc9u:
+            {
+                if (name == BuiltInName::texelFetchOffset_0V2C0C2C)
+                {
+                    return &BuiltInFunction::kFunction_texelFetchOffset_0V2C0C2C;
+                }
+                break;
+            }
+            case 0x419f4e4du:
+            {
+                if (name == BuiltInName::textureLodOffset_0U1B0B1C)
+                {
+                    return &BuiltInFunction::kFunction_textureLodOffset_0U1B0B1C;
+                }
+                break;
+            }
+            case 0x45801598u:
+            {
+                if (name == BuiltInName::textureProjOffset_0U3B1C)
+                {
+                    return &BuiltInFunction::kFunction_textureProjOffset_0U3B1C;
+                }
+                break;
+            }
+            case 0x4580712au:
+            {
+                if (name == BuiltInName::textureProjOffset_0U2B1C)
+                {
+                    return &BuiltInFunction::kFunction_textureProjOffset_0U2B1C;
+                }
+                break;
+            }
+            case 0x458150bau:
+            {
+                if (name == BuiltInName::textureProjOffset_0H2B1C)
+                {
+                    return &BuiltInFunction::kFunction_textureProjOffset_0H2B1C;
+                }
+                break;
+            }
+            case 0x45859c54u:
+            {
+                if (name == BuiltInName::textureProjOffset_0Q3B2C)
+                {
+                    return &BuiltInFunction::kFunction_textureProjOffset_0Q3B2C;
+                }
+                break;
+            }
+            case 0x4585bb13u:
+            {
+                if (name == BuiltInName::textureProjOffset_0H3B1C)
+                {
+                    return &BuiltInFunction::kFunction_textureProjOffset_0H3B1C;
+                }
+                break;
+            }
+            case 0x45889762u:
+            {
+                if (name == BuiltInName::textureProjOffset_0I3B2C)
+                {
+                    return &BuiltInFunction::kFunction_textureProjOffset_0I3B2C;
+                }
+                break;
+            }
+            case 0x4589a875u:
+            {
+                if (name == BuiltInName::textureProjOffset_0P2B1C)
+                {
+                    return &BuiltInFunction::kFunction_textureProjOffset_0P2B1C;
+                }
+                break;
+            }
+            case 0x458a50a0u:
+            {
+                if (name == BuiltInName::textureProjOffset_0V3B2C)
+                {
+                    return &BuiltInFunction::kFunction_textureProjOffset_0V3B2C;
+                }
+                break;
+            }
+            case 0x458be8b2u:
+            {
+                if (name == BuiltInName::textureProjOffset_0Z3B1C)
+                {
+                    return &BuiltInFunction::kFunction_textureProjOffset_0Z3B1C;
+                }
+                break;
+            }
+            case 0x458df23bu:
+            {
+                if (name == BuiltInName::textureProjOffset_0P3B1C)
+                {
+                    return &BuiltInFunction::kFunction_textureProjOffset_0P3B1C;
+                }
+                break;
+            }
+            case 0x45c09d88u:
+            {
+                if (name == BuiltInName::textureGradOffset_0U1B1B1B1C)
+                {
+                    return &BuiltInFunction::kFunction_textureGradOffset_0U1B1B1B1C;
+                }
+                break;
+            }
+            case 0x45c2f605u:
+            {
+                if (name == BuiltInName::textureGradOffset_0K2B1B1B1C)
+                {
+                    return &BuiltInFunction::kFunction_textureGradOffset_0K2B1B1B1C;
+                }
+                break;
+            }
+            case 0x45c47453u:
+            {
+                if (name == BuiltInName::textureGradOffset_0X2B1B1B1C)
+                {
+                    return &BuiltInFunction::kFunction_textureGradOffset_0X2B1B1B1C;
+                }
+                break;
+            }
+            case 0x45c59fedu:
+            {
+                if (name == BuiltInName::textureGradOffset_0b3B1B1B1C)
+                {
+                    return &BuiltInFunction::kFunction_textureGradOffset_0b3B1B1B1C;
+                }
+                break;
+            }
+            case 0x45c7de83u:
+            {
+                if (name == BuiltInName::textureGradOffset_0I2B2B2B2C)
+                {
+                    return &BuiltInFunction::kFunction_textureGradOffset_0I2B2B2B2C;
+                }
+                break;
+            }
+            case 0x45ca81ceu:
+            {
+                if (name == BuiltInName::textureGradOffset_0S2B1B1B1C)
+                {
+                    return &BuiltInFunction::kFunction_textureGradOffset_0S2B1B1B1C;
+                }
+                break;
+            }
+            case 0x45cafdcbu:
+            {
+                if (name == BuiltInName::textureGradOffset_0Q2B2B2B2C)
+                {
+                    return &BuiltInFunction::kFunction_textureGradOffset_0Q2B2B2B2C;
+                }
+                break;
+            }
+            case 0x45cc5a72u:
+            {
+                if (name == BuiltInName::textureGradOffset_0V2B2B2B2C)
+                {
+                    return &BuiltInFunction::kFunction_textureGradOffset_0V2B2B2B2C;
+                }
+                break;
+            }
+            case 0x45cd0417u:
+            {
+                if (name == BuiltInName::textureGradOffset_0Z2B1B1B1C)
+                {
+                    return &BuiltInFunction::kFunction_textureGradOffset_0Z2B1B1B1C;
+                }
+                break;
+            }
+            case 0x45ce0193u:
+            {
+                if (name == BuiltInName::textureGradOffset_0H1B1B1B1C)
+                {
+                    return &BuiltInFunction::kFunction_textureGradOffset_0H1B1B1B1C;
+                }
+                break;
+            }
+            case 0x45ce7db4u:
+            {
+                if (name == BuiltInName::textureGradOffset_0P1B1B1B1C)
+                {
+                    return &BuiltInFunction::kFunction_textureGradOffset_0P1B1B1B1C;
+                }
+                break;
+            }
+            case 0x51d1a62du:
+            {
+                if (name == BuiltInName::textureProjLodOffset_0Z3B0B1C)
+                {
+                    return &BuiltInFunction::kFunction_textureProjLodOffset_0Z3B0B1C;
+                }
+                break;
+            }
+            case 0x51d55102u:
+            {
+                if (name == BuiltInName::textureProjLodOffset_0H2B0B1C)
+                {
+                    return &BuiltInFunction::kFunction_textureProjLodOffset_0H2B0B1C;
+                }
+                break;
+            }
+            case 0x51d5cc8cu:
+            {
+                if (name == BuiltInName::textureProjLodOffset_0Q3B0B2C)
+                {
+                    return &BuiltInFunction::kFunction_textureProjLodOffset_0Q3B0B2C;
+                }
+                break;
+            }
+            case 0x51d72007u:
+            {
+                if (name == BuiltInName::textureProjLodOffset_0I3B0B2C)
+                {
+                    return &BuiltInFunction::kFunction_textureProjLodOffset_0I3B0B2C;
+                }
+                break;
+            }
+            case 0x51d731fau:
+            {
+                if (name == BuiltInName::textureProjLodOffset_0V3B0B2C)
+                {
+                    return &BuiltInFunction::kFunction_textureProjLodOffset_0V3B0B2C;
+                }
+                break;
+            }
+            case 0x51d7ccd1u:
+            {
+                if (name == BuiltInName::textureProjLodOffset_0H3B0B1C)
+                {
+                    return &BuiltInFunction::kFunction_textureProjLodOffset_0H3B0B1C;
+                }
+                break;
+            }
+            case 0x51dabe62u:
+            {
+                if (name == BuiltInName::textureProjLodOffset_0P3B0B1C)
+                {
+                    return &BuiltInFunction::kFunction_textureProjLodOffset_0P3B0B1C;
+                }
+                break;
+            }
+            case 0x51ddd932u:
+            {
+                if (name == BuiltInName::textureProjLodOffset_0P2B0B1C)
+                {
+                    return &BuiltInFunction::kFunction_textureProjLodOffset_0P2B0B1C;
+                }
+                break;
+            }
+            case 0x51ded012u:
+            {
+                if (name == BuiltInName::textureProjLodOffset_0U2B0B1C)
+                {
+                    return &BuiltInFunction::kFunction_textureProjLodOffset_0U2B0B1C;
+                }
+                break;
+            }
+            case 0x51dfb7dcu:
+            {
+                if (name == BuiltInName::textureProjLodOffset_0U3B0B1C)
+                {
+                    return &BuiltInFunction::kFunction_textureProjLodOffset_0U3B0B1C;
+                }
+                break;
+            }
+            case 0x560144aau:
+            {
+                if (name == BuiltInName::textureProjGradOffset_0U3B1B1B1C)
+                {
+                    return &BuiltInFunction::kFunction_textureProjGradOffset_0U3B1B1B1C;
+                }
+                break;
+            }
+            case 0x560187dbu:
+            {
+                if (name == BuiltInName::textureProjGradOffset_0V3B2B2B2C)
+                {
+                    return &BuiltInFunction::kFunction_textureProjGradOffset_0V3B2B2B2C;
+                }
+                break;
+            }
+            case 0x56045ff7u:
+            {
+                if (name == BuiltInName::textureProjGradOffset_0P2B1B1B1C)
+                {
+                    return &BuiltInFunction::kFunction_textureProjGradOffset_0P2B1B1B1C;
+                }
+                break;
+            }
+            case 0x5604692eu:
+            {
+                if (name == BuiltInName::textureProjGradOffset_0H3B1B1B1C)
+                {
+                    return &BuiltInFunction::kFunction_textureProjGradOffset_0H3B1B1B1C;
+                }
+                break;
+            }
+            case 0x56057148u:
+            {
+                if (name == BuiltInName::textureProjGradOffset_0I3B2B2B2C)
+                {
+                    return &BuiltInFunction::kFunction_textureProjGradOffset_0I3B2B2B2C;
+                }
+                break;
+            }
+            case 0x56088480u:
+            {
+                if (name == BuiltInName::textureProjGradOffset_0Q3B2B2B2C)
+                {
+                    return &BuiltInFunction::kFunction_textureProjGradOffset_0Q3B2B2B2C;
+                }
+                break;
+            }
+            case 0x5608e4edu:
+            {
+                if (name == BuiltInName::textureProjGradOffset_0Z3B1B1B1C)
+                {
+                    return &BuiltInFunction::kFunction_textureProjGradOffset_0Z3B1B1B1C;
+                }
+                break;
+            }
+            case 0x56096070u:
+            {
+                if (name == BuiltInName::textureProjGradOffset_0U2B1B1B1C)
+                {
+                    return &BuiltInFunction::kFunction_textureProjGradOffset_0U2B1B1B1C;
+                }
+                break;
+            }
+            case 0x560cb2ebu:
+            {
+                if (name == BuiltInName::textureProjGradOffset_0P3B1B1B1C)
+                {
+                    return &BuiltInFunction::kFunction_textureProjGradOffset_0P3B1B1B1C;
+                }
+                break;
+            }
+            case 0x560efc8au:
+            {
+                if (name == BuiltInName::textureProjGradOffset_0H2B1B1B1C)
+                {
+                    return &BuiltInFunction::kFunction_textureProjGradOffset_0H2B1B1B1C;
+                }
+                break;
+            }
+            case 0xfd8203fcu:
+            {
+                if (name == BuiltInName::gl_MaxProgramTexelOffset)
+                {
+                    return mVar_gl_MaxProgramTexelOffset;
+                }
+                break;
+            }
+            case 0xfd87bc19u:
+            {
+                if (name == BuiltInName::gl_MinProgramTexelOffset)
+                {
+                    return mVar_gl_MinProgramTexelOffset;
+                }
+                break;
+            }
+            case 0xfd9190e7u:
+            {
+                if (name == BuiltInName::gl_MaxVertexOutputVectors)
+                {
+                    return mVar_gl_MaxVertexOutputVectors;
+                }
+                break;
+            }
+            case 0xfda34617u:
+            {
+                if (name == BuiltInName::gl_MaxFragmentInputVectors)
+                {
+                    return mVar_gl_MaxFragmentInputVectors;
+                }
+                break;
+            }
         }
         if (mShaderType == GL_FRAGMENT_SHADER)
         {
             switch (nameHash)
             {
-                case 0x02c4537au:
+                case 0x1072a9fbu:
                 {
-                    if (name == BuiltInName::textureProj_0L3B0B)
+                    if (name.beginsWith(BuiltInName::dFdy))
                     {
-                        return &BuiltInFunction::kFunction_textureProj_0L3B0B;
+                        ASSERT(name.length() == 7);
+                        return &BuiltInFunction::kFunction_dFdy_0B;
                     }
                     break;
                 }
-                case 0x042a180au:
+                case 0x1073030fu:
+                {
+                    if (name.beginsWith(BuiltInName::dFdx))
+                    {
+                        ASSERT(name.length() == 7);
+                        return &BuiltInFunction::kFunction_dFdx_0B;
+                    }
+                    break;
+                }
+                case 0x1074c546u:
+                {
+                    if (name.beginsWith(BuiltInName::dFdy))
+                    {
+                        ASSERT(name.length() == 7);
+                        return &BuiltInFunction::kFunction_dFdy_1B;
+                    }
+                    break;
+                }
+                case 0x10756758u:
+                {
+                    if (name.beginsWith(BuiltInName::dFdx))
+                    {
+                        ASSERT(name.length() == 7);
+                        return &BuiltInFunction::kFunction_dFdx_3B;
+                    }
+                    break;
+                }
+                case 0x10772880u:
+                {
+                    if (name.beginsWith(BuiltInName::dFdy))
+                    {
+                        ASSERT(name.length() == 7);
+                        return &BuiltInFunction::kFunction_dFdy_2B;
+                    }
+                    break;
+                }
+                case 0x1078043du:
+                {
+                    if (name.beginsWith(BuiltInName::dFdx))
+                    {
+                        ASSERT(name.length() == 7);
+                        return &BuiltInFunction::kFunction_dFdx_2B;
+                    }
+                    break;
+                }
+                case 0x1078ecffu:
+                {
+                    if (name.beginsWith(BuiltInName::dFdx))
+                    {
+                        ASSERT(name.length() == 7);
+                        return &BuiltInFunction::kFunction_dFdx_1B;
+                    }
+                    break;
+                }
+                case 0x1079c835u:
+                {
+                    if (name.beginsWith(BuiltInName::dFdy))
+                    {
+                        ASSERT(name.length() == 7);
+                        return &BuiltInFunction::kFunction_dFdy_3B;
+                    }
+                    break;
+                }
+                case 0x189044e9u:
+                {
+                    if (name.beginsWith(BuiltInName::fwidth))
+                    {
+                        ASSERT(name.length() == 9);
+                        return &BuiltInFunction::kFunction_fwidth_1B;
+                    }
+                    break;
+                }
+                case 0x189a6fa9u:
+                {
+                    if (name.beginsWith(BuiltInName::fwidth))
+                    {
+                        ASSERT(name.length() == 9);
+                        return &BuiltInFunction::kFunction_fwidth_0B;
+                    }
+                    break;
+                }
+                case 0x189cc19du:
+                {
+                    if (name.beginsWith(BuiltInName::fwidth))
+                    {
+                        ASSERT(name.length() == 9);
+                        return &BuiltInFunction::kFunction_fwidth_3B;
+                    }
+                    break;
+                }
+                case 0x189f6338u:
+                {
+                    if (name.beginsWith(BuiltInName::fwidth))
+                    {
+                        ASSERT(name.length() == 9);
+                        return &BuiltInFunction::kFunction_fwidth_2B;
+                    }
+                    break;
+                }
+                case 0x1ce04aabu:
                 {
                     if (name == BuiltInName::texture_0U1B0B)
                     {
@@ -15949,47 +16254,7 @@
                     }
                     break;
                 }
-                case 0x04c9f876u:
-                {
-                    if (name.length() == 9 && name.beginsWith(BuiltInName::fwidth_))
-                    {
-                        return &BuiltInFunction::kFunction_fwidth_1B;
-                    }
-                    break;
-                }
-                case 0x112e5c27u:
-                {
-                    if (name == BuiltInName::textureOffset_0Q2B2C0B)
-                    {
-                        return &BuiltInFunction::kFunction_textureOffset_0Q2B2C0B;
-                    }
-                    break;
-                }
-                case 0x13b5a742u:
-                {
-                    if (name == BuiltInName::textureProjOffset_0V3B2C0B)
-                    {
-                        return &BuiltInFunction::kFunction_textureProjOffset_0V3B2C0B;
-                    }
-                    break;
-                }
-                case 0x14a54bb5u:
-                {
-                    if (name == BuiltInName::textureProj_0M3B0B)
-                    {
-                        return &BuiltInFunction::kFunction_textureProj_0M3B0B;
-                    }
-                    break;
-                }
-                case 0x18e874deu:
-                {
-                    if (name == BuiltInName::textureOffset_0V2B2C0B)
-                    {
-                        return &BuiltInFunction::kFunction_textureOffset_0V2B2C0B;
-                    }
-                    break;
-                }
-                case 0x1e7afc2eu:
+                case 0x1ce1eb81u:
                 {
                     if (name == BuiltInName::texture_0X2B0B)
                     {
@@ -15997,47 +16262,7 @@
                     }
                     break;
                 }
-                case 0x201ad4aeu:
-                {
-                    if (name == BuiltInName::textureProj_0P3B0B)
-                    {
-                        return &BuiltInFunction::kFunction_textureProj_0P3B0B;
-                    }
-                    break;
-                }
-                case 0x212162acu:
-                {
-                    if (name == BuiltInName::textureProj_0Z3B0B)
-                    {
-                        return &BuiltInFunction::kFunction_textureProj_0Z3B0B;
-                    }
-                    break;
-                }
-                case 0x2a65dfa6u:
-                {
-                    if (name.length() == 7 && name.beginsWith(BuiltInName::dFdy_))
-                    {
-                        return &BuiltInFunction::kFunction_dFdy_0B;
-                    }
-                    break;
-                }
-                case 0x305a9bdfu:
-                {
-                    if (name == BuiltInName::textureOffset_0X2B1C0B)
-                    {
-                        return &BuiltInFunction::kFunction_textureOffset_0X2B1C0B;
-                    }
-                    break;
-                }
-                case 0x30de4eebu:
-                {
-                    if (name.length() == 7 && name.beginsWith(BuiltInName::dFdx_))
-                    {
-                        return &BuiltInFunction::kFunction_dFdx_0B;
-                    }
-                    break;
-                }
-                case 0x3171cee2u:
+                case 0x1ce319feu:
                 {
                     if (name == BuiltInName::texture_0M1B0B)
                     {
@@ -16045,7 +16270,7 @@
                     }
                     break;
                 }
-                case 0x38c7ba95u:
+                case 0x1ce386eeu:
                 {
                     if (name == BuiltInName::texture_0P1B0B)
                     {
@@ -16053,23 +16278,7 @@
                     }
                     break;
                 }
-                case 0x3b753944u:
-                {
-                    if (name == BuiltInName::textureProj_0M2B0B)
-                    {
-                        return &BuiltInFunction::kFunction_textureProj_0M2B0B;
-                    }
-                    break;
-                }
-                case 0x3b7b4d8cu:
-                {
-                    if (name == BuiltInName::textureProj_0U2B0B)
-                    {
-                        return &BuiltInFunction::kFunction_textureProj_0U2B0B;
-                    }
-                    break;
-                }
-                case 0x43c5755cu:
+                case 0x1ce4390bu:
                 {
                     if (name == BuiltInName::texture_0V2B0B)
                     {
@@ -16077,7 +16286,7 @@
                     }
                     break;
                 }
-                case 0x44531081u:
+                case 0x1ce445b0u:
                 {
                     if (name == BuiltInName::texture_0L1B0B)
                     {
@@ -16085,63 +16294,7 @@
                     }
                     break;
                 }
-                case 0x4b4881e9u:
-                {
-                    if (name == BuiltInName::textureProj_0Q3B0B)
-                    {
-                        return &BuiltInFunction::kFunction_textureProj_0Q3B0B;
-                    }
-                    break;
-                }
-                case 0x4c6853c3u:
-                {
-                    if (name.length() == 7 && name.beginsWith(BuiltInName::dFdy_))
-                    {
-                        return &BuiltInFunction::kFunction_dFdy_1B;
-                    }
-                    break;
-                }
-                case 0x522fa659u:
-                {
-                    if (name == BuiltInName::textureOffset_0Z2B1C0B)
-                    {
-                        return &BuiltInFunction::kFunction_textureOffset_0Z2B1C0B;
-                    }
-                    break;
-                }
-                case 0x53bcaf1du:
-                {
-                    if (name == BuiltInName::textureProj_0U3B0B)
-                    {
-                        return &BuiltInFunction::kFunction_textureProj_0U3B0B;
-                    }
-                    break;
-                }
-                case 0x563bd7d7u:
-                {
-                    if (name == BuiltInName::textureOffset_0U1B1C0B)
-                    {
-                        return &BuiltInFunction::kFunction_textureOffset_0U1B1C0B;
-                    }
-                    break;
-                }
-                case 0x56e0c954u:
-                {
-                    if (name.length() == 7 && name.beginsWith(BuiltInName::dFdx_))
-                    {
-                        return &BuiltInFunction::kFunction_dFdx_3B;
-                    }
-                    break;
-                }
-                case 0x5ab4ebd4u:
-                {
-                    if (name == BuiltInName::textureProjOffset_0U3B1C0B)
-                    {
-                        return &BuiltInFunction::kFunction_textureProjOffset_0U3B1C0B;
-                    }
-                    break;
-                }
-                case 0x68d90930u:
+                case 0x1ce684a0u:
                 {
                     if (name == BuiltInName::texture_0Z2B0B)
                     {
@@ -16149,15 +16302,7 @@
                     }
                     break;
                 }
-                case 0x696b3b81u:
-                {
-                    if (name == BuiltInName::textureProj_0I3B0B)
-                    {
-                        return &BuiltInFunction::kFunction_textureProj_0I3B0B;
-                    }
-                    break;
-                }
-                case 0x6c785ca5u:
+                case 0x1ce6cb20u:
                 {
                     if (name == BuiltInName::texture_0Q2B0B)
                     {
@@ -16165,31 +16310,7 @@
                     }
                     break;
                 }
-                case 0x726ace2cu:
-                {
-                    if (name.length() == 7 && name.beginsWith(BuiltInName::dFdy_))
-                    {
-                        return &BuiltInFunction::kFunction_dFdy_2B;
-                    }
-                    break;
-                }
-                case 0x7b1b7dcfu:
-                {
-                    if (name == BuiltInName::textureProjOffset_0P3B1C0B)
-                    {
-                        return &BuiltInFunction::kFunction_textureProjOffset_0P3B1C0B;
-                    }
-                    break;
-                }
-                case 0x7cb00963u:
-                {
-                    if (name == BuiltInName::textureProjOffset_0Q3B2C0B)
-                    {
-                        return &BuiltInFunction::kFunction_textureProjOffset_0Q3B2C0B;
-                    }
-                    break;
-                }
-                case 0x7f200dc3u:
+                case 0x1ce7ffc3u:
                 {
                     if (name == BuiltInName::texture_0W2B0B)
                     {
@@ -16197,15 +16318,7 @@
                     }
                     break;
                 }
-                case 0x80e34a09u:
-                {
-                    if (name.length() == 7 && name.beginsWith(BuiltInName::dFdx_))
-                    {
-                        return &BuiltInFunction::kFunction_dFdx_2B;
-                    }
-                    break;
-                }
-                case 0x875430c7u:
+                case 0x1ce87584u:
                 {
                     if (name == BuiltInName::texture_0K2B0B)
                     {
@@ -16213,39 +16326,7 @@
                     }
                     break;
                 }
-                case 0x88103c08u:
-                {
-                    if (name == BuiltInName::gl_FragDepth)
-                    {
-                        return &BuiltInVariable::kVar_gl_FragDepth;
-                    }
-                    break;
-                }
-                case 0x8edb114eu:
-                {
-                    if (name.length() == 7 && name.beginsWith(BuiltInName::dFdx_))
-                    {
-                        return &BuiltInFunction::kFunction_dFdx_1B;
-                    }
-                    break;
-                }
-                case 0x9c6d4ee1u:
-                {
-                    if (name.length() == 7 && name.beginsWith(BuiltInName::dFdy_))
-                    {
-                        return &BuiltInFunction::kFunction_dFdy_3B;
-                    }
-                    break;
-                }
-                case 0xa6cba313u:
-                {
-                    if (name.length() == 9 && name.beginsWith(BuiltInName::fwidth_))
-                    {
-                        return &BuiltInFunction::kFunction_fwidth_0B;
-                    }
-                    break;
-                }
-                case 0xa702218fu:
+                case 0x1cea71adu:
                 {
                     if (name == BuiltInName::texture_0S2B0B)
                     {
@@ -16253,47 +16334,7 @@
                     }
                     break;
                 }
-                case 0xa8305e3fu:
-                {
-                    if (name == BuiltInName::textureProj_0P2B0B)
-                    {
-                        return &BuiltInFunction::kFunction_textureProj_0P2B0B;
-                    }
-                    break;
-                }
-                case 0xa9904518u:
-                {
-                    if (name == BuiltInName::textureProj_0V3B0B)
-                    {
-                        return &BuiltInFunction::kFunction_textureProj_0V3B0B;
-                    }
-                    break;
-                }
-                case 0xaee18cb0u:
-                {
-                    if (name == BuiltInName::textureOffset_0H1B1C0B)
-                    {
-                        return &BuiltInFunction::kFunction_textureOffset_0H1B1C0B;
-                    }
-                    break;
-                }
-                case 0xb07a78bfu:
-                {
-                    if (name == BuiltInName::textureOffset_0I2B2C0B)
-                    {
-                        return &BuiltInFunction::kFunction_textureOffset_0I2B2C0B;
-                    }
-                    break;
-                }
-                case 0xb1a6333du:
-                {
-                    if (name == BuiltInName::textureProjOffset_0Z3B1C0B)
-                    {
-                        return &BuiltInFunction::kFunction_textureProjOffset_0Z3B1C0B;
-                    }
-                    break;
-                }
-                case 0xb92bf800u:
+                case 0x1ceb9abfu:
                 {
                     if (name == BuiltInName::texture_0J2B0B)
                     {
@@ -16301,63 +16342,7 @@
                     }
                     break;
                 }
-                case 0xc44ccce7u:
-                {
-                    if (name == BuiltInName::textureProjOffset_0H3B1C0B)
-                    {
-                        return &BuiltInFunction::kFunction_textureProjOffset_0H3B1C0B;
-                    }
-                    break;
-                }
-                case 0xc4f49a7eu:
-                {
-                    if (name == BuiltInName::textureOffset_0K2B1C0B)
-                    {
-                        return &BuiltInFunction::kFunction_textureOffset_0K2B1C0B;
-                    }
-                    break;
-                }
-                case 0xcae04b35u:
-                {
-                    if (name == BuiltInName::textureProjOffset_0U2B1C0B)
-                    {
-                        return &BuiltInFunction::kFunction_textureProjOffset_0U2B1C0B;
-                    }
-                    break;
-                }
-                case 0xcae3e8c6u:
-                {
-                    if (name == BuiltInName::textureProj_0H3B0B)
-                    {
-                        return &BuiltInFunction::kFunction_textureProj_0H3B0B;
-                    }
-                    break;
-                }
-                case 0xccce1d7cu:
-                {
-                    if (name.length() == 9 && name.beginsWith(BuiltInName::fwidth_))
-                    {
-                        return &BuiltInFunction::kFunction_fwidth_3B;
-                    }
-                    break;
-                }
-                case 0xd4ea75bbu:
-                {
-                    if (name == BuiltInName::textureProjOffset_0I3B2C0B)
-                    {
-                        return &BuiltInFunction::kFunction_textureProjOffset_0I3B2C0B;
-                    }
-                    break;
-                }
-                case 0xddf5b9e6u:
-                {
-                    if (name == BuiltInName::textureOffset_0S2B1C0B)
-                    {
-                        return &BuiltInFunction::kFunction_textureOffset_0S2B1C0B;
-                    }
-                    break;
-                }
-                case 0xde51954du:
+                case 0x1cede054u:
                 {
                     if (name == BuiltInName::texture_0H1B0B)
                     {
@@ -16365,31 +16350,7 @@
                     }
                     break;
                 }
-                case 0xdf67b56eu:
-                {
-                    if (name == BuiltInName::textureProjOffset_0H2B1C0B)
-                    {
-                        return &BuiltInFunction::kFunction_textureProjOffset_0H2B1C0B;
-                    }
-                    break;
-                }
-                case 0xdf9fccd7u:
-                {
-                    if (name == BuiltInName::textureProj_0H2B0B)
-                    {
-                        return &BuiltInFunction::kFunction_textureProj_0H2B0B;
-                    }
-                    break;
-                }
-                case 0xdfde92d8u:
-                {
-                    if (name == BuiltInName::textureOffset_0P1B1C0B)
-                    {
-                        return &BuiltInFunction::kFunction_textureOffset_0P1B1C0B;
-                    }
-                    break;
-                }
-                case 0xe5810cc8u:
+                case 0x1cee54d8u:
                 {
                     if (name == BuiltInName::texture_0R2B0B)
                     {
@@ -16397,23 +16358,7 @@
                     }
                     break;
                 }
-                case 0xec06a1b6u:
-                {
-                    if (name == BuiltInName::textureProjOffset_0P2B1C0B)
-                    {
-                        return &BuiltInFunction::kFunction_textureProjOffset_0P2B1C0B;
-                    }
-                    break;
-                }
-                case 0xf6d09e31u:
-                {
-                    if (name.length() == 9 && name.beginsWith(BuiltInName::fwidth_))
-                    {
-                        return &BuiltInFunction::kFunction_fwidth_2B;
-                    }
-                    break;
-                }
-                case 0xf79abc24u:
+                case 0x1cef758fu:
                 {
                     if (name == BuiltInName::texture_0a3B0B)
                     {
@@ -16421,7 +16366,7 @@
                     }
                     break;
                 }
-                case 0xfbe2aeddu:
+                case 0x1cefb0f7u:
                 {
                     if (name == BuiltInName::texture_0I2B0B)
                     {
@@ -16429,7 +16374,111 @@
                     }
                     break;
                 }
-                case 0xfcf64e0bu:
+                case 0x2d202f3fu:
+                {
+                    if (name == BuiltInName::textureProj_0L3B0B)
+                    {
+                        return &BuiltInFunction::kFunction_textureProj_0L3B0B;
+                    }
+                    break;
+                }
+                case 0x2d2141e1u:
+                {
+                    if (name == BuiltInName::textureProj_0M3B0B)
+                    {
+                        return &BuiltInFunction::kFunction_textureProj_0M3B0B;
+                    }
+                    break;
+                }
+                case 0x2d220503u:
+                {
+                    if (name == BuiltInName::textureProj_0P3B0B)
+                    {
+                        return &BuiltInFunction::kFunction_textureProj_0P3B0B;
+                    }
+                    break;
+                }
+                case 0x2d2210bau:
+                {
+                    if (name == BuiltInName::textureProj_0Z3B0B)
+                    {
+                        return &BuiltInFunction::kFunction_textureProj_0Z3B0B;
+                    }
+                    break;
+                }
+                case 0x2d23ba38u:
+                {
+                    if (name == BuiltInName::textureProj_0U2B0B)
+                    {
+                        return &BuiltInFunction::kFunction_textureProj_0U2B0B;
+                    }
+                    break;
+                }
+                case 0x2d23be17u:
+                {
+                    if (name == BuiltInName::textureProj_0M2B0B)
+                    {
+                        return &BuiltInFunction::kFunction_textureProj_0M2B0B;
+                    }
+                    break;
+                }
+                case 0x2d24b561u:
+                {
+                    if (name == BuiltInName::textureProj_0Q3B0B)
+                    {
+                        return &BuiltInFunction::kFunction_textureProj_0Q3B0B;
+                    }
+                    break;
+                }
+                case 0x2d2534d7u:
+                {
+                    if (name == BuiltInName::textureProj_0U3B0B)
+                    {
+                        return &BuiltInFunction::kFunction_textureProj_0U3B0B;
+                    }
+                    break;
+                }
+                case 0x2d269d32u:
+                {
+                    if (name == BuiltInName::textureProj_0I3B0B)
+                    {
+                        return &BuiltInFunction::kFunction_textureProj_0I3B0B;
+                    }
+                    break;
+                }
+                case 0x2d2a8d3au:
+                {
+                    if (name == BuiltInName::textureProj_0P2B0B)
+                    {
+                        return &BuiltInFunction::kFunction_textureProj_0P2B0B;
+                    }
+                    break;
+                }
+                case 0x2d2a9c1cu:
+                {
+                    if (name == BuiltInName::textureProj_0V3B0B)
+                    {
+                        return &BuiltInFunction::kFunction_textureProj_0V3B0B;
+                    }
+                    break;
+                }
+                case 0x2d2ca6f8u:
+                {
+                    if (name == BuiltInName::textureProj_0H3B0B)
+                    {
+                        return &BuiltInFunction::kFunction_textureProj_0H3B0B;
+                    }
+                    break;
+                }
+                case 0x2d2df52bu:
+                {
+                    if (name == BuiltInName::textureProj_0H2B0B)
+                    {
+                        return &BuiltInFunction::kFunction_textureProj_0H2B0B;
+                    }
+                    break;
+                }
+                case 0x2d2fc16fu:
                 {
                     if (name == BuiltInName::textureProj_0L2B0B)
                     {
@@ -16437,21 +16486,181 @@
                     }
                     break;
                 }
+                case 0x35611ec2u:
+                {
+                    if (name == BuiltInName::textureOffset_0Q2B2C0B)
+                    {
+                        return &BuiltInFunction::kFunction_textureOffset_0Q2B2C0B;
+                    }
+                    break;
+                }
+                case 0x35618a59u:
+                {
+                    if (name == BuiltInName::textureOffset_0V2B2C0B)
+                    {
+                        return &BuiltInFunction::kFunction_textureOffset_0V2B2C0B;
+                    }
+                    break;
+                }
+                case 0x35630e76u:
+                {
+                    if (name == BuiltInName::textureOffset_0X2B1C0B)
+                    {
+                        return &BuiltInFunction::kFunction_textureOffset_0X2B1C0B;
+                    }
+                    break;
+                }
+                case 0x356524a3u:
+                {
+                    if (name == BuiltInName::textureOffset_0Z2B1C0B)
+                    {
+                        return &BuiltInFunction::kFunction_textureOffset_0Z2B1C0B;
+                    }
+                    break;
+                }
+                case 0x3565646au:
+                {
+                    if (name == BuiltInName::textureOffset_0U1B1C0B)
+                    {
+                        return &BuiltInFunction::kFunction_textureOffset_0U1B1C0B;
+                    }
+                    break;
+                }
+                case 0x356ae2a8u:
+                {
+                    if (name == BuiltInName::textureOffset_0H1B1C0B)
+                    {
+                        return &BuiltInFunction::kFunction_textureOffset_0H1B1C0B;
+                    }
+                    break;
+                }
+                case 0x356b0f18u:
+                {
+                    if (name == BuiltInName::textureOffset_0I2B2C0B)
+                    {
+                        return &BuiltInFunction::kFunction_textureOffset_0I2B2C0B;
+                    }
+                    break;
+                }
+                case 0x356c4537u:
+                {
+                    if (name == BuiltInName::textureOffset_0K2B1C0B)
+                    {
+                        return &BuiltInFunction::kFunction_textureOffset_0K2B1C0B;
+                    }
+                    break;
+                }
+                case 0x356dd6bdu:
+                {
+                    if (name == BuiltInName::textureOffset_0S2B1C0B)
+                    {
+                        return &BuiltInFunction::kFunction_textureOffset_0S2B1C0B;
+                    }
+                    break;
+                }
+                case 0x356dff31u:
+                {
+                    if (name == BuiltInName::textureOffset_0P1B1C0B)
+                    {
+                        return &BuiltInFunction::kFunction_textureOffset_0P1B1C0B;
+                    }
+                    break;
+                }
+                case 0x45a13c18u:
+                {
+                    if (name == BuiltInName::textureProjOffset_0V3B2C0B)
+                    {
+                        return &BuiltInFunction::kFunction_textureProjOffset_0V3B2C0B;
+                    }
+                    break;
+                }
+                case 0x45a5a09au:
+                {
+                    if (name == BuiltInName::textureProjOffset_0U3B1C0B)
+                    {
+                        return &BuiltInFunction::kFunction_textureProjOffset_0U3B1C0B;
+                    }
+                    break;
+                }
+                case 0x45a7bc78u:
+                {
+                    if (name == BuiltInName::textureProjOffset_0P3B1C0B)
+                    {
+                        return &BuiltInFunction::kFunction_textureProjOffset_0P3B1C0B;
+                    }
+                    break;
+                }
+                case 0x45a7c263u:
+                {
+                    if (name == BuiltInName::textureProjOffset_0Q3B2C0B)
+                    {
+                        return &BuiltInFunction::kFunction_textureProjOffset_0Q3B2C0B;
+                    }
+                    break;
+                }
+                case 0x45ab195eu:
+                {
+                    if (name == BuiltInName::textureProjOffset_0Z3B1C0B)
+                    {
+                        return &BuiltInFunction::kFunction_textureProjOffset_0Z3B1C0B;
+                    }
+                    break;
+                }
+                case 0x45ac482bu:
+                {
+                    if (name == BuiltInName::textureProjOffset_0H3B1C0B)
+                    {
+                        return &BuiltInFunction::kFunction_textureProjOffset_0H3B1C0B;
+                    }
+                    break;
+                }
+                case 0x45aca531u:
+                {
+                    if (name == BuiltInName::textureProjOffset_0U2B1C0B)
+                    {
+                        return &BuiltInFunction::kFunction_textureProjOffset_0U2B1C0B;
+                    }
+                    break;
+                }
+                case 0x45ad4b1cu:
+                {
+                    if (name == BuiltInName::textureProjOffset_0I3B2C0B)
+                    {
+                        return &BuiltInFunction::kFunction_textureProjOffset_0I3B2C0B;
+                    }
+                    break;
+                }
+                case 0x45adf315u:
+                {
+                    if (name == BuiltInName::textureProjOffset_0H2B1C0B)
+                    {
+                        return &BuiltInFunction::kFunction_textureProjOffset_0H2B1C0B;
+                    }
+                    break;
+                }
+                case 0x45aec1dcu:
+                {
+                    if (name == BuiltInName::textureProjOffset_0P2B1C0B)
+                    {
+                        return &BuiltInFunction::kFunction_textureProjOffset_0P2B1C0B;
+                    }
+                    break;
+                }
+                case 0xfcc88d0bu:
+                {
+                    if (name == BuiltInName::gl_FragDepth)
+                    {
+                        return &BuiltInVariable::kVar_gl_FragDepth;
+                    }
+                    break;
+                }
             }
         }
         if (mShaderType == GL_VERTEX_SHADER)
         {
             switch (nameHash)
             {
-                case 0x7e8a502du:
-                {
-                    if (name == BuiltInName::gl_InstanceID)
-                    {
-                        return &BuiltInVariable::kVar_gl_InstanceID;
-                    }
-                    break;
-                }
-                case 0xf39cf560u:
+                case 0xfcbf3cafu:
                 {
                     if (name == BuiltInName::gl_VertexID)
                     {
@@ -16459,13 +16668,21 @@
                     }
                     break;
                 }
+                case 0xfcd7e888u:
+                {
+                    if (name == BuiltInName::gl_InstanceID)
+                    {
+                        return &BuiltInVariable::kVar_gl_InstanceID;
+                    }
+                    break;
+                }
             }
         }
         if (mResources.OVR_multiview && mShaderType != GL_COMPUTE_SHADER)
         {
             switch (nameHash)
             {
-                case 0xec388c2du:
+                case 0xfcdecfa5u:
                 {
                     if (name == BuiltInName::gl_ViewID_OVR)
                     {
@@ -16480,31 +16697,113 @@
     {
         switch (nameHash)
         {
-            case 0x05cd2a61u:
+            case 0x24e2c4e7u:
             {
-                if (name.length() == 18 && name.beginsWith(BuiltInName::texture2DRect_))
+                if (name.beginsWith(BuiltInName::texture2D))
                 {
-                    return &BuiltInFunction::kFunction_texture2DRect_0N1B;
-                }
-                break;
-            }
-            case 0x11ea9d29u:
-            {
-                if (name.length() == 16 && name.beginsWith(BuiltInName::textureCube_))
-                {
-                    return &BuiltInFunction::kFunction_textureCube_0J2B;
-                }
-                break;
-            }
-            case 0x2c852cb5u:
-            {
-                if (name.length() == 14 && name.beginsWith(BuiltInName::texture2D_))
-                {
+                    ASSERT(name.length() == 14);
                     return &BuiltInFunction::kFunction_texture2D_0H1B;
                 }
                 break;
             }
-            case 0x33484f89u:
+            case 0x24ee7b56u:
+            {
+                if (name.beginsWith(BuiltInName::texture2D))
+                {
+                    ASSERT(name.length() == 14);
+                    return &BuiltInFunction::kFunction_texture2D_0L1B;
+                }
+                break;
+            }
+            case 0x2d011380u:
+            {
+                if (name.beginsWith(BuiltInName::textureCube))
+                {
+                    ASSERT(name.length() == 16);
+                    return &BuiltInFunction::kFunction_textureCube_0J2B;
+                }
+                break;
+            }
+            case 0x352056b3u:
+            {
+                if (name.beginsWith(BuiltInName::texture2DRect))
+                {
+                    ASSERT(name.length() == 18);
+                    return &BuiltInFunction::kFunction_texture2DRect_0N1B;
+                }
+                break;
+            }
+            case 0x3525221bu:
+            {
+                if (name.beginsWith(BuiltInName::texture2DProj))
+                {
+                    ASSERT(name.length() == 18);
+                    return &BuiltInFunction::kFunction_texture2DProj_0L2B;
+                }
+                break;
+            }
+            case 0x352b0152u:
+            {
+                if (name.beginsWith(BuiltInName::texture2DProj))
+                {
+                    ASSERT(name.length() == 18);
+                    return &BuiltInFunction::kFunction_texture2DProj_0L3B;
+                }
+                break;
+            }
+            case 0x352b4775u:
+            {
+                if (name.beginsWith(BuiltInName::texture2DProj))
+                {
+                    ASSERT(name.length() == 18);
+                    return &BuiltInFunction::kFunction_texture2DProj_0H3B;
+                }
+                break;
+            }
+            case 0x352d6339u:
+            {
+                if (name.beginsWith(BuiltInName::texture2DProj))
+                {
+                    ASSERT(name.length() == 18);
+                    return &BuiltInFunction::kFunction_texture2DProj_0H2B;
+                }
+                break;
+            }
+            case 0x41972dabu:
+            {
+                if (name == BuiltInName::texture2DGradEXT_0H1B1B1B)
+                {
+                    return &BuiltInFunction::kFunction_texture2DGradEXT_0H1B1B1B;
+                }
+                break;
+            }
+            case 0x456a76c4u:
+            {
+                if (name.beginsWith(BuiltInName::texture2DRectProj))
+                {
+                    ASSERT(name.length() == 22);
+                    return &BuiltInFunction::kFunction_texture2DRectProj_0N3B;
+                }
+                break;
+            }
+            case 0x456c9272u:
+            {
+                if (name.beginsWith(BuiltInName::texture2DRectProj))
+                {
+                    ASSERT(name.length() == 22);
+                    return &BuiltInFunction::kFunction_texture2DRectProj_0N2B;
+                }
+                break;
+            }
+            case 0x49b79cd7u:
+            {
+                if (name == BuiltInName::textureCubeGradEXT_0J2B2B2B)
+                {
+                    return &BuiltInFunction::kFunction_textureCubeGradEXT_0J2B2B2B;
+                }
+                break;
+            }
+            case 0x51d33b0du:
             {
                 if (name == BuiltInName::texture2DProjGradEXT_0H3B1B1B)
                 {
@@ -16512,7 +16811,15 @@
                 }
                 break;
             }
-            case 0x4153e697u:
+            case 0x51dab294u:
+            {
+                if (name == BuiltInName::texture2DProjGradEXT_0H2B1B1B)
+                {
+                    return &BuiltInFunction::kFunction_texture2DProjGradEXT_0H2B1B1B;
+                }
+                break;
+            }
+            case 0xfcb413a9u:
             {
                 if (name == BuiltInName::gl_FragData)
                 {
@@ -16521,31 +16828,7 @@
                 }
                 break;
             }
-            case 0x5270451fu:
-            {
-                if (name.length() == 18 && name.beginsWith(BuiltInName::texture2DProj_))
-                {
-                    return &BuiltInFunction::kFunction_texture2DProj_0L2B;
-                }
-                break;
-            }
-            case 0x72093d38u:
-            {
-                if (name == BuiltInName::texture2DGradEXT_0H1B1B1B)
-                {
-                    return &BuiltInFunction::kFunction_texture2DGradEXT_0H1B1B1B;
-                }
-                break;
-            }
-            case 0x79171da6u:
-            {
-                if (name == BuiltInName::textureCubeGradEXT_0J2B2B2B)
-                {
-                    return &BuiltInFunction::kFunction_textureCubeGradEXT_0J2B2B2B;
-                }
-                break;
-            }
-            case 0x86a48dcbu:
+            case 0xfcf86783u:
             {
                 if (name == BuiltInName::gl_FragDepthEXT)
                 {
@@ -16555,7 +16838,15 @@
                 }
                 break;
             }
-            case 0x9dae09f6u:
+            case 0xfd4d8991u:
+            {
+                if (name == BuiltInName::gl_MaxVaryingVectors)
+                {
+                    return mVar_gl_MaxVaryingVectors;
+                }
+                break;
+            }
+            case 0xfd79d316u:
             {
                 if (name == BuiltInName::gl_SecondaryFragDataEXT)
                 {
@@ -16565,188 +16856,120 @@
                 }
                 break;
             }
-            case 0xa777e1bau:
-            {
-                if (name.length() == 22 && name.beginsWith(BuiltInName::texture2DRectProj_))
-                {
-                    return &BuiltInFunction::kFunction_texture2DRectProj_0N3B;
-                }
-                break;
-            }
-            case 0xabd48fdcu:
-            {
-                if (name == BuiltInName::texture2DProjGradEXT_0H2B1B1B)
-                {
-                    return &BuiltInFunction::kFunction_texture2DProjGradEXT_0H2B1B1B;
-                }
-                break;
-            }
-            case 0xb06d0782u:
-            {
-                if (name.length() == 18 && name.beginsWith(BuiltInName::texture2DProj_))
-                {
-                    return &BuiltInFunction::kFunction_texture2DProj_0L3B;
-                }
-                break;
-            }
-            case 0xb4d23a56u:
-            {
-                if (name.length() == 18 && name.beginsWith(BuiltInName::texture2DProj_))
-                {
-                    return &BuiltInFunction::kFunction_texture2DProj_0H3B;
-                }
-                break;
-            }
-            case 0xc97a55d7u:
-            {
-                if (name.length() == 22 && name.beginsWith(BuiltInName::texture2DRectProj_))
-                {
-                    return &BuiltInFunction::kFunction_texture2DRectProj_0N2B;
-                }
-                break;
-            }
-            case 0xd6d4ae73u:
-            {
-                if (name.length() == 18 && name.beginsWith(BuiltInName::texture2DProj_))
-                {
-                    return &BuiltInFunction::kFunction_texture2DProj_0H2B;
-                }
-                break;
-            }
-            case 0xd87bae2bu:
-            {
-                if (name == BuiltInName::gl_MaxVaryingVectors)
-                {
-                    return mVar_gl_MaxVaryingVectors;
-                }
-                break;
-            }
-            case 0xe7d17641u:
-            {
-                if (name.length() == 14 && name.beginsWith(BuiltInName::texture2D_))
-                {
-                    return &BuiltInFunction::kFunction_texture2D_0L1B;
-                }
-                break;
-            }
         }
         if (mShaderType == GL_FRAGMENT_SHADER)
         {
             switch (nameHash)
             {
-                case 0x04c9f876u:
+                case 0x1072a9fbu:
                 {
-                    if (name.length() == 9 && name.beginsWith(BuiltInName::fwidthExt_))
+                    if (name.beginsWith(BuiltInName::dFdyExt))
                     {
-                        return &BuiltInFunction::kFunction_fwidthExt_1B;
-                    }
-                    break;
-                }
-                case 0x1af4d39eu:
-                {
-                    if (name == BuiltInName::gl_FragColor)
-                    {
-                        return &BuiltInVariable::kVar_gl_FragColor;
-                    }
-                    break;
-                }
-                case 0x2a65dfa6u:
-                {
-                    if (name.length() == 7 && name.beginsWith(BuiltInName::dFdyExt_))
-                    {
+                        ASSERT(name.length() == 7);
                         return &BuiltInFunction::kFunction_dFdyExt_0B;
                     }
                     break;
                 }
-                case 0x30daf170u:
+                case 0x1073030fu:
                 {
-                    if (name == BuiltInName::texture2DProj_0H3B0B)
+                    if (name.beginsWith(BuiltInName::dFdxExt))
                     {
-                        return &BuiltInFunction::kFunction_texture2DProj_0H3B0B;
-                    }
-                    break;
-                }
-                case 0x30de4eebu:
-                {
-                    if (name.length() == 7 && name.beginsWith(BuiltInName::dFdxExt_))
-                    {
+                        ASSERT(name.length() == 7);
                         return &BuiltInFunction::kFunction_dFdxExt_0B;
                     }
                     break;
                 }
-                case 0x39021baeu:
+                case 0x1074c546u:
                 {
-                    if (name == BuiltInName::texture2DProjLodEXT_0H3B0B)
+                    if (name.beginsWith(BuiltInName::dFdyExt))
                     {
-                        return &BuiltInFunction::kFunction_texture2DProjLodEXT_0H3B0B;
-                    }
-                    break;
-                }
-                case 0x43f81965u:
-                {
-                    if (name == BuiltInName::textureCubeLodEXT_0J2B0B)
-                    {
-                        return &BuiltInFunction::kFunction_textureCubeLodEXT_0J2B0B;
-                    }
-                    break;
-                }
-                case 0x4c6853c3u:
-                {
-                    if (name.length() == 7 && name.beginsWith(BuiltInName::dFdyExt_))
-                    {
+                        ASSERT(name.length() == 7);
                         return &BuiltInFunction::kFunction_dFdyExt_1B;
                     }
                     break;
                 }
-                case 0x56e0c954u:
+                case 0x10756758u:
                 {
-                    if (name.length() == 7 && name.beginsWith(BuiltInName::dFdxExt_))
+                    if (name.beginsWith(BuiltInName::dFdxExt))
                     {
+                        ASSERT(name.length() == 7);
                         return &BuiltInFunction::kFunction_dFdxExt_3B;
                     }
                     break;
                 }
-                case 0x726ace2cu:
+                case 0x10772880u:
                 {
-                    if (name.length() == 7 && name.beginsWith(BuiltInName::dFdyExt_))
+                    if (name.beginsWith(BuiltInName::dFdyExt))
                     {
+                        ASSERT(name.length() == 7);
                         return &BuiltInFunction::kFunction_dFdyExt_2B;
                     }
                     break;
                 }
-                case 0x80e34a09u:
+                case 0x1078043du:
                 {
-                    if (name.length() == 7 && name.beginsWith(BuiltInName::dFdxExt_))
+                    if (name.beginsWith(BuiltInName::dFdxExt))
                     {
+                        ASSERT(name.length() == 7);
                         return &BuiltInFunction::kFunction_dFdxExt_2B;
                     }
                     break;
                 }
-                case 0x8682af79u:
+                case 0x1078ecffu:
                 {
-                    if (name == BuiltInName::texture2DLodEXT_0H1B0B)
+                    if (name.beginsWith(BuiltInName::dFdxExt))
                     {
-                        return &BuiltInFunction::kFunction_texture2DLodEXT_0H1B0B;
-                    }
-                    break;
-                }
-                case 0x88cd05e1u:
-                {
-                    if (name == BuiltInName::texture2DProj_0H2B0B)
-                    {
-                        return &BuiltInFunction::kFunction_texture2DProj_0H2B0B;
-                    }
-                    break;
-                }
-                case 0x8edb114eu:
-                {
-                    if (name.length() == 7 && name.beginsWith(BuiltInName::dFdxExt_))
-                    {
+                        ASSERT(name.length() == 7);
                         return &BuiltInFunction::kFunction_dFdxExt_1B;
                     }
                     break;
                 }
-                case 0x8ee03ca7u:
+                case 0x1079c835u:
+                {
+                    if (name.beginsWith(BuiltInName::dFdyExt))
+                    {
+                        ASSERT(name.length() == 7);
+                        return &BuiltInFunction::kFunction_dFdyExt_3B;
+                    }
+                    break;
+                }
+                case 0x189044e9u:
+                {
+                    if (name.beginsWith(BuiltInName::fwidthExt))
+                    {
+                        ASSERT(name.length() == 9);
+                        return &BuiltInFunction::kFunction_fwidthExt_1B;
+                    }
+                    break;
+                }
+                case 0x189a6fa9u:
+                {
+                    if (name.beginsWith(BuiltInName::fwidthExt))
+                    {
+                        ASSERT(name.length() == 9);
+                        return &BuiltInFunction::kFunction_fwidthExt_0B;
+                    }
+                    break;
+                }
+                case 0x189cc19du:
+                {
+                    if (name.beginsWith(BuiltInName::fwidthExt))
+                    {
+                        ASSERT(name.length() == 9);
+                        return &BuiltInFunction::kFunction_fwidthExt_3B;
+                    }
+                    break;
+                }
+                case 0x189f6338u:
+                {
+                    if (name.beginsWith(BuiltInName::fwidthExt))
+                    {
+                        ASSERT(name.length() == 9);
+                        return &BuiltInFunction::kFunction_fwidthExt_2B;
+                    }
+                    break;
+                }
+                case 0x2508e2a4u:
                 {
                     if (name == BuiltInName::texture2D_0H1B0B)
                     {
@@ -16754,39 +16977,7 @@
                     }
                     break;
                 }
-                case 0x9c6d4ee1u:
-                {
-                    if (name.length() == 7 && name.beginsWith(BuiltInName::dFdyExt_))
-                    {
-                        return &BuiltInFunction::kFunction_dFdyExt_3B;
-                    }
-                    break;
-                }
-                case 0xa6cba313u:
-                {
-                    if (name.length() == 9 && name.beginsWith(BuiltInName::fwidthExt_))
-                    {
-                        return &BuiltInFunction::kFunction_fwidthExt_0B;
-                    }
-                    break;
-                }
-                case 0xc117a53fu:
-                {
-                    if (name == BuiltInName::texture2DProjLodEXT_0H2B0B)
-                    {
-                        return &BuiltInFunction::kFunction_texture2DProjLodEXT_0H2B0B;
-                    }
-                    break;
-                }
-                case 0xccce1d7cu:
-                {
-                    if (name.length() == 9 && name.beginsWith(BuiltInName::fwidthExt_))
-                    {
-                        return &BuiltInFunction::kFunction_fwidthExt_3B;
-                    }
-                    break;
-                }
-                case 0xd649f15bu:
+                case 0x2d2d65c4u:
                 {
                     if (name == BuiltInName::textureCube_0J2B0B)
                     {
@@ -16794,11 +16985,59 @@
                     }
                     break;
                 }
-                case 0xf6d09e31u:
+                case 0x35430cdfu:
                 {
-                    if (name.length() == 9 && name.beginsWith(BuiltInName::fwidthExt_))
+                    if (name == BuiltInName::texture2DProj_0H3B0B)
                     {
-                        return &BuiltInFunction::kFunction_fwidthExt_2B;
+                        return &BuiltInFunction::kFunction_texture2DProj_0H3B0B;
+                    }
+                    break;
+                }
+                case 0x35488931u:
+                {
+                    if (name == BuiltInName::texture2DProj_0H2B0B)
+                    {
+                        return &BuiltInFunction::kFunction_texture2DProj_0H2B0B;
+                    }
+                    break;
+                }
+                case 0x3d686753u:
+                {
+                    if (name == BuiltInName::texture2DLodEXT_0H1B0B)
+                    {
+                        return &BuiltInFunction::kFunction_texture2DLodEXT_0H1B0B;
+                    }
+                    break;
+                }
+                case 0x458436e4u:
+                {
+                    if (name == BuiltInName::textureCubeLodEXT_0J2B0B)
+                    {
+                        return &BuiltInFunction::kFunction_textureCubeLodEXT_0J2B0B;
+                    }
+                    break;
+                }
+                case 0x4da39b8fu:
+                {
+                    if (name == BuiltInName::texture2DProjLodEXT_0H3B0B)
+                    {
+                        return &BuiltInFunction::kFunction_texture2DProjLodEXT_0H3B0B;
+                    }
+                    break;
+                }
+                case 0x4dac1445u:
+                {
+                    if (name == BuiltInName::texture2DProjLodEXT_0H2B0B)
+                    {
+                        return &BuiltInFunction::kFunction_texture2DProjLodEXT_0H2B0B;
+                    }
+                    break;
+                }
+                case 0xfcc1acd3u:
+                {
+                    if (name == BuiltInName::gl_FragColor)
+                    {
+                        return &BuiltInVariable::kVar_gl_FragColor;
                     }
                     break;
                 }
@@ -16808,7 +17047,7 @@
         {
             switch (nameHash)
             {
-                case 0x0cf3085au:
+                case 0x3130c76au:
                 {
                     if (name == BuiltInName::texture2DLod_0H1B0B)
                     {
@@ -16816,15 +17055,7 @@
                     }
                     break;
                 }
-                case 0x157c8b27u:
-                {
-                    if (name == BuiltInName::texture2DProjLod_0H3B0B)
-                    {
-                        return &BuiltInFunction::kFunction_texture2DProjLod_0H3B0B;
-                    }
-                    break;
-                }
-                case 0x8238ae88u:
+                case 0x39582d02u:
                 {
                     if (name == BuiltInName::textureCubeLod_0J2B0B)
                     {
@@ -16832,7 +17063,15 @@
                     }
                     break;
                 }
-                case 0x8ea43616u:
+                case 0x41715cefu:
+                {
+                    if (name == BuiltInName::texture2DProjLod_0H3B0B)
+                    {
+                        return &BuiltInFunction::kFunction_texture2DProjLod_0H3B0B;
+                    }
+                    break;
+                }
+                case 0x4178ec55u:
                 {
                     if (name == BuiltInName::texture2DProjLod_0H2B0B)
                     {
@@ -16846,7 +17085,7 @@
         {
             switch (nameHash)
             {
-                case 0xae48fef9u:
+                case 0xfd8aea76u:
                 {
                     if (name == BuiltInName::gl_SecondaryFragColorEXT)
                     {
@@ -16860,7 +17099,7 @@
         {
             switch (nameHash)
             {
-                case 0x2ca6b5f7u:
+                case 0xfcf2cf9cu:
                 {
                     if (name == BuiltInName::gl_LastFragData)
                     {
@@ -16874,15 +17113,7 @@
         {
             switch (nameHash)
             {
-                case 0x048d047eu:
-                {
-                    if (name == BuiltInName::gl_LastFragColor)
-                    {
-                        return &BuiltInVariable::kVar_gl_LastFragColor;
-                    }
-                    break;
-                }
-                case 0x2ca6b5f7u:
+                case 0xfcf2cf9cu:
                 {
                     if (name == BuiltInName::gl_LastFragData)
                     {
@@ -16890,6 +17121,14 @@
                     }
                     break;
                 }
+                case 0xfd004caeu:
+                {
+                    if (name == BuiltInName::gl_LastFragColor)
+                    {
+                        return &BuiltInVariable::kVar_gl_LastFragColor;
+                    }
+                    break;
+                }
             }
         }
         if ((mShaderType == GL_FRAGMENT_SHADER) &&
@@ -16898,7 +17137,7 @@
         {
             switch (nameHash)
             {
-                case 0xe1ad07e0u:
+                case 0xfd3e1d30u:
                 {
                     if (name == BuiltInName::gl_LastFragColorARM)
                     {
@@ -16912,7 +17151,7 @@
         {
             switch (nameHash)
             {
-                case 0xec388c2du:
+                case 0xfcdecfa5u:
                 {
                     if (name == BuiltInName::gl_ViewID_OVR)
                     {
@@ -16925,223 +17164,565 @@
     }
     switch (nameHash)
     {
-        case 0x009846a3u:
+        case 0x0c60bd37u:
         {
-            if (name.length() == 8 && name.beginsWith(BuiltInName::max_))
+            if (name.beginsWith(BuiltInName::log))
             {
-                return &BuiltInFunction::kFunction_max_2B2B;
-            }
-            break;
-        }
-        case 0x046a9b13u:
-        {
-            if (name.length() == 8 && name.beginsWith(BuiltInName::mod_))
-            {
-                return &BuiltInFunction::kFunction_mod_2B0B;
-            }
-            break;
-        }
-        case 0x05339330u:
-        {
-            if (name.length() == 7 && name.beginsWith(BuiltInName::acos_))
-            {
-                return &BuiltInFunction::kFunction_acos_3B;
-            }
-            break;
-        }
-        case 0x0548e241u:
-        {
-            if (name.length() == 9 && name.beginsWith(BuiltInName::atan_))
-            {
-                return &BuiltInFunction::kFunction_atan_3B3B;
-            }
-            break;
-        }
-        case 0x061a7a4fu:
-        {
-            if (name.length() == 8 && name.beginsWith(BuiltInName::fract_))
-            {
-                return &BuiltInFunction::kFunction_fract_0B;
-            }
-            break;
-        }
-        case 0x081f826fu:
-        {
-            if (name == BuiltInName::gl_MaxCombinedTextureImageUnits)
-            {
-                return mVar_gl_MaxCombinedTextureImageUnits;
-            }
-            break;
-        }
-        case 0x0887a662u:
-        {
-            if (name.length() == 13 && name.beginsWith(BuiltInName::distance_))
-            {
-                return &BuiltInFunction::kFunction_distance_3B3B;
-            }
-            break;
-        }
-        case 0x0b09eda9u:
-        {
-            if (name.length() == 6 && name.beginsWith(BuiltInName::log_))
-            {
+                ASSERT(name.length() == 6);
                 return &BuiltInFunction::kFunction_log_0B;
             }
             break;
         }
-        case 0x0c4b44deu:
+        case 0x0c60fbdau:
         {
-            if (name == BuiltInName::refract_1B1B0B)
+            if (name.beginsWith(BuiltInName::all))
             {
-                return &BuiltInFunction::kFunction_refract_1B1B0B;
-            }
-            break;
-        }
-        case 0x0f84439eu:
-        {
-            if (name.length() == 6 && name.beginsWith(BuiltInName::all_))
-            {
+                ASSERT(name.length() == 6);
                 return &BuiltInFunction::kFunction_all_1E;
             }
             break;
         }
-        case 0x0fc88166u:
+        case 0x0c610070u:
         {
-            if (name.length() == 10 && name.beginsWith(BuiltInName::degrees_))
+            if (name.beginsWith(BuiltInName::tan))
             {
-                return &BuiltInFunction::kFunction_degrees_2B;
-            }
-            break;
-        }
-        case 0x108d38a3u:
-        {
-            if (name.length() == 6 && name.beginsWith(BuiltInName::tan_))
-            {
+                ASSERT(name.length() == 6);
                 return &BuiltInFunction::kFunction_tan_1B;
             }
             break;
         }
-        case 0x11769f9bu:
+        case 0x0c6118f2u:
         {
-            if (name.length() == 6 && name.beginsWith(BuiltInName::abs_))
+            if (name.beginsWith(BuiltInName::abs))
             {
+                ASSERT(name.length() == 6);
                 return &BuiltInFunction::kFunction_abs_0B;
             }
             break;
         }
-        case 0x128e361eu:
+        case 0x0c612efdu:
         {
-            if (name.length() == 6 && name.beginsWith(BuiltInName::notFunc_))
+            if (name.beginsWith(BuiltInName::notFunc))
             {
+                ASSERT(name.length() == 6);
                 return &BuiltInFunction::kFunction_notFunc_3E;
             }
             break;
         }
-        case 0x13c35068u:
+        case 0x0c617c1cu:
         {
-            if (name == BuiltInName::smoothstep_0B0B1B)
+            if (name.beginsWith(BuiltInName::cos))
             {
-                return &BuiltInFunction::kFunction_smoothstep_0B0B1B;
-            }
-            break;
-        }
-        case 0x13e5dde0u:
-        {
-            if (name.length() == 8 && name.beginsWith(BuiltInName::mod_))
-            {
-                return &BuiltInFunction::kFunction_mod_1B0B;
-            }
-            break;
-        }
-        case 0x14414e83u:
-        {
-            if (name.length() == 7 && name.beginsWith(BuiltInName::exp2_))
-            {
-                return &BuiltInFunction::kFunction_exp2_3B;
-            }
-            break;
-        }
-        case 0x15095167u:
-        {
-            if (name.length() == 14 && name.beginsWith(BuiltInName::inversesqrt_))
-            {
-                return &BuiltInFunction::kFunction_inversesqrt_2B;
-            }
-            break;
-        }
-        case 0x15c84f3cu:
-        {
-            if (name.length() == 7 && name.beginsWith(BuiltInName::ceil_))
-            {
-                return &BuiltInFunction::kFunction_ceil_2B;
-            }
-            break;
-        }
-        case 0x1655eae2u:
-        {
-            if (name == BuiltInName::faceforward_3B3B3B)
-            {
-                return &BuiltInFunction::kFunction_faceforward_3B3B3B;
-            }
-            break;
-        }
-        case 0x1731e675u:
-        {
-            if (name.length() == 9 && name.beginsWith(BuiltInName::length_))
-            {
-                return &BuiltInFunction::kFunction_length_0B;
-            }
-            break;
-        }
-        case 0x177cf26du:
-        {
-            if (name.length() == 8 && name.beginsWith(BuiltInName::min_))
-            {
-                return &BuiltInFunction::kFunction_min_2B2B;
-            }
-            break;
-        }
-        case 0x17fa43b8u:
-        {
-            if (name.length() == 6 && name.beginsWith(BuiltInName::cos_))
-            {
+                ASSERT(name.length() == 6);
                 return &BuiltInFunction::kFunction_cos_2B;
             }
             break;
         }
-        case 0x1901b4eeu:
+        case 0x0c6194f5u:
         {
-            if (name.length() == 6 && name.beginsWith(BuiltInName::log_))
+            if (name.beginsWith(BuiltInName::log))
             {
+                ASSERT(name.length() == 6);
                 return &BuiltInFunction::kFunction_log_3B;
             }
             break;
         }
-        case 0x1a10ccb7u:
+        case 0x0c632bd9u:
         {
-            if (name.length() == 7 && name.beginsWith(BuiltInName::sqrt_))
+            if (name.beginsWith(BuiltInName::any))
             {
-                return &BuiltInFunction::kFunction_sqrt_0B;
+                ASSERT(name.length() == 6);
+                return &BuiltInFunction::kFunction_any_1E;
             }
             break;
         }
-        case 0x1a473286u:
+        case 0x0c637d95u:
         {
-            if (name.length() == 13 && name.beginsWith(BuiltInName::distance_))
+            if (name.beginsWith(BuiltInName::abs))
             {
-                return &BuiltInFunction::kFunction_distance_2B2B;
+                ASSERT(name.length() == 6);
+                return &BuiltInFunction::kFunction_abs_3B;
             }
             break;
         }
-        case 0x1da7dd5eu:
+        case 0x0c63b949u:
         {
-            if (name.length() == 13 && name.beginsWith(BuiltInName::notEqual_))
+            if (name.beginsWith(BuiltInName::log))
             {
-                return &BuiltInFunction::kFunction_notEqual_1E1E;
+                ASSERT(name.length() == 6);
+                return &BuiltInFunction::kFunction_log_2B;
             }
             break;
         }
-        case 0x1f8d8da5u:
+        case 0x0c641ba1u:
+        {
+            if (name.beginsWith(BuiltInName::cos))
+            {
+                ASSERT(name.length() == 6);
+                return &BuiltInFunction::kFunction_cos_3B;
+            }
+            break;
+        }
+        case 0x0c65e3b3u:
+        {
+            if (name.beginsWith(BuiltInName::any))
+            {
+                ASSERT(name.length() == 6);
+                return &BuiltInFunction::kFunction_any_3E;
+            }
+            break;
+        }
+        case 0x0c6604cbu:
+        {
+            if (name.beginsWith(BuiltInName::sin))
+            {
+                ASSERT(name.length() == 6);
+                return &BuiltInFunction::kFunction_sin_1B;
+            }
+            break;
+        }
+        case 0x0c66131eu:
+        {
+            if (name.beginsWith(BuiltInName::log))
+            {
+                ASSERT(name.length() == 6);
+                return &BuiltInFunction::kFunction_log_1B;
+            }
+            break;
+        }
+        case 0x0c682adeu:
+        {
+            if (name.beginsWith(BuiltInName::any))
+            {
+                ASSERT(name.length() == 6);
+                return &BuiltInFunction::kFunction_any_2E;
+            }
+            break;
+        }
+        case 0x0c68a536u:
+        {
+            if (name.beginsWith(BuiltInName::sin))
+            {
+                ASSERT(name.length() == 6);
+                return &BuiltInFunction::kFunction_sin_0B;
+            }
+            break;
+        }
+        case 0x0c698f82u:
+        {
+            if (name.beginsWith(BuiltInName::sin))
+            {
+                ASSERT(name.length() == 6);
+                return &BuiltInFunction::kFunction_sin_3B;
+            }
+            break;
+        }
+        case 0x0c6a5499u:
+        {
+            if (name.beginsWith(BuiltInName::exp))
+            {
+                ASSERT(name.length() == 6);
+                return &BuiltInFunction::kFunction_exp_3B;
+            }
+            break;
+        }
+        case 0x0c6b32c8u:
+        {
+            if (name.beginsWith(BuiltInName::exp))
+            {
+                ASSERT(name.length() == 6);
+                return &BuiltInFunction::kFunction_exp_0B;
+            }
+            break;
+        }
+        case 0x0c6b658bu:
+        {
+            if (name.beginsWith(BuiltInName::tan))
+            {
+                ASSERT(name.length() == 6);
+                return &BuiltInFunction::kFunction_tan_2B;
+            }
+            break;
+        }
+        case 0x0c6ba397u:
+        {
+            if (name.beginsWith(BuiltInName::sin))
+            {
+                ASSERT(name.length() == 6);
+                return &BuiltInFunction::kFunction_sin_2B;
+            }
+            break;
+        }
+        case 0x0c6bff3cu:
+        {
+            if (name.beginsWith(BuiltInName::all))
+            {
+                ASSERT(name.length() == 6);
+                return &BuiltInFunction::kFunction_all_2E;
+            }
+            break;
+        }
+        case 0x0c6cfa67u:
+        {
+            if (name.beginsWith(BuiltInName::cos))
+            {
+                ASSERT(name.length() == 6);
+                return &BuiltInFunction::kFunction_cos_0B;
+            }
+            break;
+        }
+        case 0x0c6d5636u:
+        {
+            if (name.beginsWith(BuiltInName::exp))
+            {
+                ASSERT(name.length() == 6);
+                return &BuiltInFunction::kFunction_exp_1B;
+            }
+            break;
+        }
+        case 0x0c6db950u:
+        {
+            if (name.beginsWith(BuiltInName::all))
+            {
+                ASSERT(name.length() == 6);
+                return &BuiltInFunction::kFunction_all_3E;
+            }
+            break;
+        }
+        case 0x0c6ded4fu:
+        {
+            if (name.beginsWith(BuiltInName::notFunc))
+            {
+                ASSERT(name.length() == 6);
+                return &BuiltInFunction::kFunction_notFunc_1E;
+            }
+            break;
+        }
+        case 0x0c6e046eu:
+        {
+            if (name.beginsWith(BuiltInName::tan))
+            {
+                ASSERT(name.length() == 6);
+                return &BuiltInFunction::kFunction_tan_3B;
+            }
+            break;
+        }
+        case 0x0c6e1694u:
+        {
+            if (name.beginsWith(BuiltInName::abs))
+            {
+                ASSERT(name.length() == 6);
+                return &BuiltInFunction::kFunction_abs_2B;
+            }
+            break;
+        }
+        case 0x0c6ee660u:
+        {
+            if (name.beginsWith(BuiltInName::notFunc))
+            {
+                ASSERT(name.length() == 6);
+                return &BuiltInFunction::kFunction_notFunc_2E;
+            }
+            break;
+        }
+        case 0x0c6eec2au:
+        {
+            if (name.beginsWith(BuiltInName::tan))
+            {
+                ASSERT(name.length() == 6);
+                return &BuiltInFunction::kFunction_tan_0B;
+            }
+            break;
+        }
+        case 0x0c6efc3cu:
+        {
+            if (name.beginsWith(BuiltInName::abs))
+            {
+                ASSERT(name.length() == 6);
+                return &BuiltInFunction::kFunction_abs_1B;
+            }
+            break;
+        }
+        case 0x0c6f1633u:
+        {
+            if (name.beginsWith(BuiltInName::cos))
+            {
+                ASSERT(name.length() == 6);
+                return &BuiltInFunction::kFunction_cos_1B;
+            }
+            break;
+        }
+        case 0x0c6fbdb1u:
+        {
+            if (name.beginsWith(BuiltInName::exp))
+            {
+                ASSERT(name.length() == 6);
+                return &BuiltInFunction::kFunction_exp_2B;
+            }
+            break;
+        }
+        case 0x0c800f27u:
+        {
+            if (name.beginsWith(BuiltInName::max))
+            {
+                ASSERT(name.length() == 8);
+                return &BuiltInFunction::kFunction_max_2B2B;
+            }
+            break;
+        }
+        case 0x0c804dbau:
+        {
+            if (name.beginsWith(BuiltInName::mod))
+            {
+                ASSERT(name.length() == 8);
+                return &BuiltInFunction::kFunction_mod_2B0B;
+            }
+            break;
+        }
+        case 0x0c8133bdu:
+        {
+            if (name.beginsWith(BuiltInName::mod))
+            {
+                ASSERT(name.length() == 8);
+                return &BuiltInFunction::kFunction_mod_1B0B;
+            }
+            break;
+        }
+        case 0x0c8175a2u:
+        {
+            if (name.beginsWith(BuiltInName::min))
+            {
+                ASSERT(name.length() == 8);
+                return &BuiltInFunction::kFunction_min_2B2B;
+            }
+            break;
+        }
+        case 0x0c82396bu:
+        {
+            if (name.beginsWith(BuiltInName::min))
+            {
+                ASSERT(name.length() == 8);
+                return &BuiltInFunction::kFunction_min_1B0B;
+            }
+            break;
+        }
+        case 0x0c82ace0u:
+        {
+            if (name.beginsWith(BuiltInName::dot))
+            {
+                ASSERT(name.length() == 8);
+                return &BuiltInFunction::kFunction_dot_3B3B;
+            }
+            break;
+        }
+        case 0x0c831999u:
+        {
+            if (name.beginsWith(BuiltInName::pow))
+            {
+                ASSERT(name.length() == 8);
+                return &BuiltInFunction::kFunction_pow_3B3B;
+            }
+            break;
+        }
+        case 0x0c83ba4au:
+        {
+            if (name.beginsWith(BuiltInName::min))
+            {
+                ASSERT(name.length() == 8);
+                return &BuiltInFunction::kFunction_min_0B0B;
+            }
+            break;
+        }
+        case 0x0c83d010u:
+        {
+            if (name.beginsWith(BuiltInName::mod))
+            {
+                ASSERT(name.length() == 8);
+                return &BuiltInFunction::kFunction_mod_1B1B;
+            }
+            break;
+        }
+        case 0x0c8412a7u:
+        {
+            if (name.beginsWith(BuiltInName::dot))
+            {
+                ASSERT(name.length() == 8);
+                return &BuiltInFunction::kFunction_dot_1B1B;
+            }
+            break;
+        }
+        case 0x0c844fb5u:
+        {
+            if (name.beginsWith(BuiltInName::max))
+            {
+                ASSERT(name.length() == 8);
+                return &BuiltInFunction::kFunction_max_3B3B;
+            }
+            break;
+        }
+        case 0x0c84da0eu:
+        {
+            if (name.beginsWith(BuiltInName::min))
+            {
+                ASSERT(name.length() == 8);
+                return &BuiltInFunction::kFunction_min_1B1B;
+            }
+            break;
+        }
+        case 0x0c8540c8u:
+        {
+            if (name.beginsWith(BuiltInName::mod))
+            {
+                ASSERT(name.length() == 8);
+                return &BuiltInFunction::kFunction_mod_2B2B;
+            }
+            break;
+        }
+        case 0x0c860330u:
+        {
+            if (name.beginsWith(BuiltInName::pow))
+            {
+                ASSERT(name.length() == 8);
+                return &BuiltInFunction::kFunction_pow_2B2B;
+            }
+            break;
+        }
+        case 0x0c86a229u:
+        {
+            if (name.beginsWith(BuiltInName::max))
+            {
+                ASSERT(name.length() == 8);
+                return &BuiltInFunction::kFunction_max_3B0B;
+            }
+            break;
+        }
+        case 0x0c87043eu:
+        {
+            if (name.beginsWith(BuiltInName::pow))
+            {
+                ASSERT(name.length() == 8);
+                return &BuiltInFunction::kFunction_pow_1B1B;
+            }
+            break;
+        }
+        case 0x0c8a02a9u:
+        {
+            if (name.beginsWith(BuiltInName::max))
+            {
+                ASSERT(name.length() == 8);
+                return &BuiltInFunction::kFunction_max_1B0B;
+            }
+            break;
+        }
+        case 0x0c8a0e3eu:
+        {
+            if (name.beginsWith(BuiltInName::dot))
+            {
+                ASSERT(name.length() == 8);
+                return &BuiltInFunction::kFunction_dot_0B0B;
+            }
+            break;
+        }
+        case 0x0c8ae761u:
+        {
+            if (name.beginsWith(BuiltInName::mod))
+            {
+                ASSERT(name.length() == 8);
+                return &BuiltInFunction::kFunction_mod_3B3B;
+            }
+            break;
+        }
+        case 0x0c8bcf1bu:
+        {
+            if (name.beginsWith(BuiltInName::mod))
+            {
+                ASSERT(name.length() == 8);
+                return &BuiltInFunction::kFunction_mod_3B0B;
+            }
+            break;
+        }
+        case 0x0c8bed0fu:
+        {
+            if (name.beginsWith(BuiltInName::min))
+            {
+                ASSERT(name.length() == 8);
+                return &BuiltInFunction::kFunction_min_3B3B;
+            }
+            break;
+        }
+        case 0x0c8c26cdu:
+        {
+            if (name.beginsWith(BuiltInName::max))
+            {
+                ASSERT(name.length() == 8);
+                return &BuiltInFunction::kFunction_max_1B1B;
+            }
+            break;
+        }
+        case 0x0c8c41a3u:
+        {
+            if (name.beginsWith(BuiltInName::dot))
+            {
+                ASSERT(name.length() == 8);
+                return &BuiltInFunction::kFunction_dot_2B2B;
+            }
+            break;
+        }
+        case 0x0c8c7030u:
+        {
+            if (name.beginsWith(BuiltInName::min))
+            {
+                ASSERT(name.length() == 8);
+                return &BuiltInFunction::kFunction_min_2B0B;
+            }
+            break;
+        }
+        case 0x0c8cc54du:
+        {
+            if (name.beginsWith(BuiltInName::min))
+            {
+                ASSERT(name.length() == 8);
+                return &BuiltInFunction::kFunction_min_3B0B;
+            }
+            break;
+        }
+        case 0x0c8d02a1u:
+        {
+            if (name.beginsWith(BuiltInName::max))
+            {
+                ASSERT(name.length() == 8);
+                return &BuiltInFunction::kFunction_max_2B0B;
+            }
+            break;
+        }
+        case 0x0c8d484cu:
+        {
+            if (name.beginsWith(BuiltInName::pow))
+            {
+                ASSERT(name.length() == 8);
+                return &BuiltInFunction::kFunction_pow_0B0B;
+            }
+            break;
+        }
+        case 0x0c8e7928u:
+        {
+            if (name.beginsWith(BuiltInName::max))
+            {
+                ASSERT(name.length() == 8);
+                return &BuiltInFunction::kFunction_max_0B0B;
+            }
+            break;
+        }
+        case 0x0c8ed10eu:
+        {
+            if (name.beginsWith(BuiltInName::mod))
+            {
+                ASSERT(name.length() == 8);
+                return &BuiltInFunction::kFunction_mod_0B0B;
+            }
+            break;
+        }
+        case 0x0ca1f57du:
         {
             if (name == BuiltInName::mix_1B1B0B)
             {
@@ -17149,519 +17730,7 @@
             }
             break;
         }
-        case 0x22da85d0u:
-        {
-            if (name.length() == 9 && name.beginsWith(BuiltInName::step_))
-            {
-                return &BuiltInFunction::kFunction_step_0B1B;
-            }
-            break;
-        }
-        case 0x23497dfcu:
-        {
-            if (name.length() == 8 && name.beginsWith(BuiltInName::min_))
-            {
-                return &BuiltInFunction::kFunction_min_1B0B;
-            }
-            break;
-        }
-        case 0x242c7b45u:
-        {
-            if (name.length() == 10 && name.beginsWith(BuiltInName::equal_))
-            {
-                return &BuiltInFunction::kFunction_equal_3E3E;
-            }
-            break;
-        }
-        case 0x2529adbau:
-        {
-            if (name.length() == 9 && name.beginsWith(BuiltInName::length_))
-            {
-                return &BuiltInFunction::kFunction_length_3B;
-            }
-            break;
-        }
-        case 0x2530925bu:
-        {
-            if (name.length() == 19 && name.beginsWith(BuiltInName::matrixCompMult_))
-            {
-                return &BuiltInFunction::kFunction_matrixCompMult_5B5B;
-            }
-            break;
-        }
-        case 0x29eb2c34u:
-        {
-            if (name == BuiltInName::smoothstep_1B1B1B)
-            {
-                return &BuiltInFunction::kFunction_smoothstep_1B1B1B;
-            }
-            break;
-        }
-        case 0x2a4048e4u:
-        {
-            if (name.length() == 8 && name.beginsWith(BuiltInName::dot_))
-            {
-                return &BuiltInFunction::kFunction_dot_3B3B;
-            }
-            break;
-        }
-        case 0x2ba422c6u:
-        {
-            if (name.length() == 13 && name.beginsWith(BuiltInName::notEqual_))
-            {
-                return &BuiltInFunction::kFunction_notEqual_2E2E;
-            }
-            break;
-        }
-        case 0x2c1cf4b8u:
-        {
-            if (name.length() == 8 && name.beginsWith(BuiltInName::fract_))
-            {
-                return &BuiltInFunction::kFunction_fract_3B;
-            }
-            break;
-        }
-        case 0x2e4fef86u:
-        {
-            if (name.length() == 16 && name.beginsWith(BuiltInName::greaterThan_))
-            {
-                return &BuiltInFunction::kFunction_greaterThan_1B1B;
-            }
-            break;
-        }
-        case 0x2f3613e5u:
-        {
-            if (name.length() == 7 && name.beginsWith(BuiltInName::acos_))
-            {
-                return &BuiltInFunction::kFunction_acos_2B;
-            }
-            break;
-        }
-        case 0x31a9230bu:
-        {
-            if (name.length() == 8 && name.beginsWith(BuiltInName::pow_))
-            {
-                return &BuiltInFunction::kFunction_pow_3B3B;
-            }
-            break;
-        }
-        case 0x31caf583u:
-        {
-            if (name.length() == 10 && name.beginsWith(BuiltInName::degrees_))
-            {
-                return &BuiltInFunction::kFunction_degrees_3B;
-            }
-            break;
-        }
-        case 0x32a4419du:
-        {
-            if (name.length() == 6 && name.beginsWith(BuiltInName::any_))
-            {
-                return &BuiltInFunction::kFunction_any_1E;
-            }
-            break;
-        }
-        case 0x33d780d9u:
-        {
-            if (name == BuiltInName::clamp_3B3B3B)
-            {
-                return &BuiltInFunction::kFunction_clamp_3B3B3B;
-            }
-            break;
-        }
-        case 0x343e737eu:
-        {
-            if (name == BuiltInName::refract_3B3B0B)
-            {
-                return &BuiltInFunction::kFunction_refract_3B3B0B;
-            }
-            break;
-        }
-        case 0x3446c6cau:
-        {
-            if (name == BuiltInName::refract_2B2B0B)
-            {
-                return &BuiltInFunction::kFunction_refract_2B2B0B;
-            }
-            break;
-        }
-        case 0x34e1bad1u:
-        {
-            if (name.length() == 10 && name.beginsWith(BuiltInName::equal_))
-            {
-                return &BuiltInFunction::kFunction_equal_3B3B;
-            }
-            break;
-        }
-        case 0x35731765u:
-        {
-            if (name.length() == 9 && name.beginsWith(BuiltInName::step_))
-            {
-                return &BuiltInFunction::kFunction_step_2B2B;
-            }
-            break;
-        }
-        case 0x35d2bc55u:
-        {
-            if (name.length() == 13 && name.beginsWith(BuiltInName::lessThan_))
-            {
-                return &BuiltInFunction::kFunction_lessThan_1B1B;
-            }
-            break;
-        }
-        case 0x36d7afdeu:
-        {
-            if (name.length() == 16 && name.beginsWith(BuiltInName::greaterThan_))
-            {
-                return &BuiltInFunction::kFunction_greaterThan_3C3C;
-            }
-            break;
-        }
-        case 0x372206a6u:
-        {
-            if (name == BuiltInName::smoothstep_3B3B3B)
-            {
-                return &BuiltInFunction::kFunction_smoothstep_3B3B3B;
-            }
-            break;
-        }
-        case 0x37791a04u:
-        {
-            if (name.length() == 6 && name.beginsWith(BuiltInName::abs_))
-            {
-                return &BuiltInFunction::kFunction_abs_3B;
-            }
-            break;
-        }
-        case 0x3a43c8ecu:
-        {
-            if (name.length() == 7 && name.beginsWith(BuiltInName::exp2_))
-            {
-                return &BuiltInFunction::kFunction_exp2_0B;
-            }
-            break;
-        }
-        case 0x3a4f7670u:
-        {
-            if (name == BuiltInName::faceforward_1B1B1B)
-            {
-                return &BuiltInFunction::kFunction_faceforward_1B1B1B;
-            }
-            break;
-        }
-        case 0x3b04290bu:
-        {
-            if (name.length() == 6 && name.beginsWith(BuiltInName::log_))
-            {
-                return &BuiltInFunction::kFunction_log_2B;
-            }
-            break;
-        }
-        case 0x3b0bcbd0u:
-        {
-            if (name.length() == 14 && name.beginsWith(BuiltInName::inversesqrt_))
-            {
-                return &BuiltInFunction::kFunction_inversesqrt_1B;
-            }
-            break;
-        }
-        case 0x3b8c728du:
-        {
-            if (name.length() == 8 && name.beginsWith(BuiltInName::min_))
-            {
-                return &BuiltInFunction::kFunction_min_0B0B;
-            }
-            break;
-        }
-        case 0x3d2f6e2au:
-        {
-            if (name.length() == 7 && name.beginsWith(BuiltInName::acos_))
-            {
-                return &BuiltInFunction::kFunction_acos_1B;
-            }
-            break;
-        }
-        case 0x3de18904u:
-        {
-            if (name == BuiltInName::gl_MaxDualSourceDrawBuffersEXT)
-            {
-                return mVar_gl_MaxDualSourceDrawBuffersEXT;
-            }
-            break;
-        }
-        case 0x3de85e95u:
-        {
-            if (name.length() == 8 && name.beginsWith(BuiltInName::mod_))
-            {
-                return &BuiltInFunction::kFunction_mod_1B1B;
-            }
-            break;
-        }
-        case 0x3fcacff1u:
-        {
-            if (name.length() == 7 && name.beginsWith(BuiltInName::ceil_))
-            {
-                return &BuiltInFunction::kFunction_ceil_3B;
-            }
-            break;
-        }
-        case 0x40134720u:
-        {
-            if (name.length() == 7 && name.beginsWith(BuiltInName::sqrt_))
-            {
-                return &BuiltInFunction::kFunction_sqrt_3B;
-            }
-            break;
-        }
-        case 0x40514dceu:
-        {
-            if (name.length() == 12 && name.beginsWith(BuiltInName::reflect_))
-            {
-                return &BuiltInFunction::kFunction_reflect_2B2B;
-            }
-            break;
-        }
-        case 0x41aa3804u:
-        {
-            if (name.length() == 8 && name.beginsWith(BuiltInName::dot_))
-            {
-                return &BuiltInFunction::kFunction_dot_1B1B;
-            }
-            break;
-        }
-        case 0x41fcc46du:
-        {
-            if (name.length() == 6 && name.beginsWith(BuiltInName::cos_))
-            {
-                return &BuiltInFunction::kFunction_cos_3B;
-            }
-            break;
-        }
-        case 0x421d21e5u:
-        {
-            if (name.length() == 13 && name.beginsWith(BuiltInName::lessThan_))
-            {
-                return &BuiltInFunction::kFunction_lessThan_3C3C;
-            }
-            break;
-        }
-        case 0x42355230u:
-        {
-            if (name == BuiltInName::gl_MaxVertexTextureImageUnits)
-            {
-                return mVar_gl_MaxVertexTextureImageUnits;
-            }
-            break;
-        }
-        case 0x44c523e7u:
-        {
-            if (name.length() == 8 && name.beginsWith(BuiltInName::max_))
-            {
-                return &BuiltInFunction::kFunction_max_3B3B;
-            }
-            break;
-        }
-        case 0x44eb729fu:
-        {
-            if (name.length() == 12 && name.beginsWith(BuiltInName::normalize_))
-            {
-                return &BuiltInFunction::kFunction_normalize_1B;
-            }
-            break;
-        }
-        case 0x45ccdddfu:
-        {
-            if (name == BuiltInName::smoothstep_2B2B2B)
-            {
-                return &BuiltInFunction::kFunction_smoothstep_2B2B2B;
-            }
-            break;
-        }
-        case 0x472c21d7u:
-        {
-            if (name.length() == 9 && name.beginsWith(BuiltInName::length_))
-            {
-                return &BuiltInFunction::kFunction_length_2B;
-            }
-            break;
-        }
-        case 0x4c59f3f1u:
-        {
-            if (name.length() == 13 && name.beginsWith(BuiltInName::lessThan_))
-            {
-                return &BuiltInFunction::kFunction_lessThan_2B2B;
-            }
-            break;
-        }
-        case 0x4c7e8006u:
-        {
-            if (name.length() == 13 && name.beginsWith(BuiltInName::notEqual_))
-            {
-                return &BuiltInFunction::kFunction_notEqual_2C2C;
-            }
-            break;
-        }
-        case 0x4c9b39c9u:
-        {
-            if (name.length() == 10 && name.beginsWith(BuiltInName::cross_))
-            {
-                return &BuiltInFunction::kFunction_cross_2B2B;
-            }
-            break;
-        }
-        case 0x4d4bfeb1u:
-        {
-            if (name.length() == 8 && name.beginsWith(BuiltInName::min_))
-            {
-                return &BuiltInFunction::kFunction_min_1B1B;
-            }
-            break;
-        }
-        case 0x4dc29736u:
-        {
-            if (name.length() == 7 && name.beginsWith(BuiltInName::ceil_))
-            {
-                return &BuiltInFunction::kFunction_ceil_0B;
-            }
-            break;
-        }
-        case 0x525f6fa6u:
-        {
-            if (name.length() == 16 && name.beginsWith(BuiltInName::greaterThan_))
-            {
-                return &BuiltInFunction::kFunction_greaterThan_3B3B;
-            }
-            break;
-        }
-        case 0x546f9631u:
-        {
-            if (name.length() == 8 && name.beginsWith(BuiltInName::mod_))
-            {
-                return &BuiltInFunction::kFunction_mod_2B2B;
-            }
-            break;
-        }
-        case 0x54d4c019u:
-        {
-            if (name.length() == 9 && name.beginsWith(BuiltInName::atan_))
-            {
-                return &BuiltInFunction::kFunction_atan_1B1B;
-            }
-            break;
-        }
-        case 0x55895c64u:
-        {
-            if (name == BuiltInName::gl_MaxDrawBuffers)
-            {
-                return mVar_gl_MaxDrawBuffers;
-            }
-            break;
-        }
-        case 0x561f756du:
-        {
-            if (name.length() == 8 && name.beginsWith(BuiltInName::fract_))
-            {
-                return &BuiltInFunction::kFunction_fract_2B;
-            }
-            break;
-        }
-        case 0x5625f9cau:
-        {
-            if (name == BuiltInName::gl_MaxTextureImageUnits)
-            {
-                return mVar_gl_MaxTextureImageUnits;
-            }
-            break;
-        }
-        case 0x57cd6fecu:
-        {
-            if (name.length() == 10 && name.beginsWith(BuiltInName::degrees_))
-            {
-                return &BuiltInFunction::kFunction_degrees_0B;
-            }
-            break;
-        }
-        case 0x58ce58e6u:
-        {
-            if (name.length() == 13 && name.beginsWith(BuiltInName::notEqual_))
-            {
-                return &BuiltInFunction::kFunction_notEqual_1B1B;
-            }
-            break;
-        }
-        case 0x5a89e3d6u:
-        {
-            if (name == BuiltInName::gl_MaxVertexAttribs)
-            {
-                return mVar_gl_MaxVertexAttribs;
-            }
-            break;
-        }
-        case 0x5c63b321u:
-        {
-            if (name == BuiltInName::gl_DepthRange)
-            {
-                return mVar_gl_DepthRange;
-            }
-            break;
-        }
-        case 0x5c7231f7u:
-        {
-            if (name.length() == 7 && name.beginsWith(BuiltInName::sign_))
-            {
-                return &BuiltInFunction::kFunction_sign_1B;
-            }
-            break;
-        }
-        case 0x5e39910fu:
-        {
-            if (name == BuiltInName::clamp_1B0B0B)
-            {
-                return &BuiltInFunction::kFunction_clamp_1B0B0B;
-            }
-            break;
-        }
-        case 0x5e435845u:
-        {
-            if (name.length() == 7 && name.beginsWith(BuiltInName::atan_))
-            {
-                return &BuiltInFunction::kFunction_atan_2B;
-            }
-            break;
-        }
-        case 0x5ea009b3u:
-        {
-            if (name.length() == 6 && name.beginsWith(BuiltInName::any_))
-            {
-                return &BuiltInFunction::kFunction_any_3E;
-            }
-            break;
-        }
-        case 0x5f31e247u:
-        {
-            if (name.length() == 7 && name.beginsWith(BuiltInName::acos_))
-            {
-                return &BuiltInFunction::kFunction_acos_0B;
-            }
-            break;
-        }
-        case 0x5ff73ab9u:
-        {
-            if (name.length() == 10 && name.beginsWith(BuiltInName::radians_))
-            {
-                return &BuiltInFunction::kFunction_radians_0B;
-            }
-            break;
-        }
-        case 0x60053498u:
-        {
-            if (name.length() == 6 && name.beginsWith(BuiltInName::sin_))
-            {
-                return &BuiltInFunction::kFunction_sin_1B;
-            }
-            break;
-        }
-        case 0x60348539u:
+        case 0x0ca60671u:
         {
             if (name == BuiltInName::mix_2B2B0B)
             {
@@ -17669,263 +17738,7 @@
             }
             break;
         }
-        case 0x60d77e47u:
-        {
-            if (name.length() == 8 && name.beginsWith(BuiltInName::pow_))
-            {
-                return &BuiltInFunction::kFunction_pow_2B2B;
-            }
-            break;
-        }
-        case 0x6106a374u:
-        {
-            if (name.length() == 6 && name.beginsWith(BuiltInName::log_))
-            {
-                return &BuiltInFunction::kFunction_log_1B;
-            }
-            break;
-        }
-        case 0x619b508au:
-        {
-            if (name.length() == 12 && name.beginsWith(BuiltInName::reflect_))
-            {
-                return &BuiltInFunction::kFunction_reflect_3B3B;
-            }
-            break;
-        }
-        case 0x63c84382u:
-        {
-            if (name.length() == 21 && name.beginsWith(BuiltInName::greaterThanEqual_))
-            {
-                return &BuiltInFunction::kFunction_greaterThanEqual_2C2C;
-            }
-            break;
-        }
-        case 0x641f1576u:
-        {
-            if (name.length() == 12 && name.beginsWith(BuiltInName::reflect_))
-            {
-                return &BuiltInFunction::kFunction_reflect_0B0B;
-            }
-            break;
-        }
-        case 0x644649a1u:
-        {
-            if (name.length() == 7 && name.beginsWith(BuiltInName::exp2_))
-            {
-                return &BuiltInFunction::kFunction_exp2_1B;
-            }
-            break;
-        }
-        case 0x646d7617u:
-        {
-            if (name.length() == 19 && name.beginsWith(BuiltInName::matrixCompMult_))
-            {
-                return &BuiltInFunction::kFunction_matrixCompMult_FBFB;
-            }
-            break;
-        }
-        case 0x658a699au:
-        {
-            if (name.length() == 13 && name.beginsWith(BuiltInName::notEqual_))
-            {
-                return &BuiltInFunction::kFunction_notEqual_1C1C;
-            }
-            break;
-        }
-        case 0x68b063ddu:
-        {
-            if (name.length() == 8 && name.beginsWith(BuiltInName::floor_))
-            {
-                return &BuiltInFunction::kFunction_floor_0B;
-            }
-            break;
-        }
-        case 0x69652f41u:
-        {
-            if (name.length() == 13 && name.beginsWith(BuiltInName::lessThan_))
-            {
-                return &BuiltInFunction::kFunction_lessThan_1C1C;
-            }
-            break;
-        }
-        case 0x6a15c7d5u:
-        {
-            if (name.length() == 7 && name.beginsWith(BuiltInName::sqrt_))
-            {
-                return &BuiltInFunction::kFunction_sqrt_2B;
-            }
-            break;
-        }
-        case 0x6ac79e50u:
-        {
-            if (name.length() == 8 && name.beginsWith(BuiltInName::max_))
-            {
-                return &BuiltInFunction::kFunction_max_3B0B;
-            }
-            break;
-        }
-        case 0x6aeded08u:
-        {
-            if (name.length() == 12 && name.beginsWith(BuiltInName::normalize_))
-            {
-                return &BuiltInFunction::kFunction_normalize_2B;
-            }
-            break;
-        }
-        case 0x6b620a41u:
-        {
-            if (name == BuiltInName::gl_MaxVertexUniformVectors)
-            {
-                return mVar_gl_MaxVertexUniformVectors;
-            }
-            break;
-        }
-        case 0x6b80211bu:
-        {
-            if (name == BuiltInName::clamp_1B1B1B)
-            {
-                return &BuiltInFunction::kFunction_clamp_1B1B1B;
-            }
-            break;
-        }
-        case 0x6c3b1f8au:
-        {
-            if (name.length() == 7 && name.beginsWith(BuiltInName::atan_))
-            {
-                return &BuiltInFunction::kFunction_atan_1B;
-            }
-            break;
-        }
-        case 0x6df094feu:
-        {
-            if (name.length() == 10 && name.beginsWith(BuiltInName::radians_))
-            {
-                return &BuiltInFunction::kFunction_radians_3B;
-            }
-            break;
-        }
-        case 0x7000d433u:
-        {
-            if (name.length() == 8 && name.beginsWith(BuiltInName::pow_))
-            {
-                return &BuiltInFunction::kFunction_pow_1B1B;
-            }
-            break;
-        }
-        case 0x7173e986u:
-        {
-            if (name.length() == 13 && name.beginsWith(BuiltInName::notEqual_))
-            {
-                return &BuiltInFunction::kFunction_notEqual_3B3B;
-            }
-            break;
-        }
-        case 0x762ec4e2u:
-        {
-            if (name == BuiltInName::refract_0B0B0B)
-            {
-                return &BuiltInFunction::kFunction_refract_0B0B0B;
-            }
-            break;
-        }
-        case 0x76a82b22u:
-        {
-            if (name.length() == 8 && name.beginsWith(BuiltInName::floor_))
-            {
-                return &BuiltInFunction::kFunction_floor_3B;
-            }
-            break;
-        }
-        case 0x780d8f1au:
-        {
-            if (name.length() == 7 && name.beginsWith(BuiltInName::sqrt_))
-            {
-                return &BuiltInFunction::kFunction_sqrt_1B;
-            }
-            break;
-        }
-        case 0x785bc622u:
-        {
-            if (name.length() == 13 && name.beginsWith(BuiltInName::notEqual_))
-            {
-                return &BuiltInFunction::kFunction_notEqual_3E3E;
-            }
-            break;
-        }
-        case 0x81cff0a1u:
-        {
-            if (name.length() == 10 && name.beginsWith(BuiltInName::degrees_))
-            {
-                return &BuiltInFunction::kFunction_degrees_1B;
-            }
-            break;
-        }
-        case 0x8274ac60u:
-        {
-            if (name.length() == 7 && name.beginsWith(BuiltInName::sign_))
-            {
-                return &BuiltInFunction::kFunction_sign_2B;
-            }
-            break;
-        }
-        case 0x82a280f6u:
-        {
-            if (name.length() == 6 && name.beginsWith(BuiltInName::any_))
-            {
-                return &BuiltInFunction::kFunction_any_2E;
-            }
-            break;
-        }
-        case 0x82c5e6d5u:
-        {
-            if (name.length() == 9 && name.beginsWith(BuiltInName::atan_))
-            {
-                return &BuiltInFunction::kFunction_atan_0B0B;
-            }
-            break;
-        }
-        case 0x8417e089u:
-        {
-            if (name.length() == 10 && name.beginsWith(BuiltInName::equal_))
-            {
-                return &BuiltInFunction::kFunction_equal_2C2C;
-            }
-            break;
-        }
-        case 0x89745003u:
-        {
-            if (name == BuiltInName::gl_MaxFragmentUniformVectors)
-            {
-                return mVar_gl_MaxFragmentUniformVectors;
-            }
-            break;
-        }
-        case 0x8a07b54du:
-        {
-            if (name.length() == 6 && name.beginsWith(BuiltInName::sin_))
-            {
-                return &BuiltInFunction::kFunction_sin_0B;
-            }
-            break;
-        }
-        case 0x8e3d93a7u:
-        {
-            if (name.length() == 7 && name.beginsWith(BuiltInName::atan_))
-            {
-                return &BuiltInFunction::kFunction_atan_0B;
-            }
-            break;
-        }
-        case 0x8ff3091bu:
-        {
-            if (name.length() == 10 && name.beginsWith(BuiltInName::radians_))
-            {
-                return &BuiltInFunction::kFunction_radians_2B;
-            }
-            break;
-        }
-        case 0x9030539bu:
+        case 0x0ca9009eu:
         {
             if (name == BuiltInName::mix_2B2B2B)
             {
@@ -17933,207 +17746,7 @@
             }
             break;
         }
-        case 0x92458549u:
-        {
-            if (name.length() == 9 && name.beginsWith(BuiltInName::step_))
-            {
-                return &BuiltInFunction::kFunction_step_1B1B;
-            }
-            break;
-        }
-        case 0x931af97fu:
-        {
-            if (name.length() == 18 && name.beginsWith(BuiltInName::lessThanEqual_))
-            {
-                return &BuiltInFunction::kFunction_lessThanEqual_2C2C;
-            }
-            break;
-        }
-        case 0x94f06dbdu:
-        {
-            if (name.length() == 12 && name.beginsWith(BuiltInName::normalize_))
-            {
-                return &BuiltInFunction::kFunction_normalize_3B;
-            }
-            break;
-        }
-        case 0x95a6e964u:
-        {
-            if (name.length() == 7 && name.beginsWith(BuiltInName::asin_))
-            {
-                return &BuiltInFunction::kFunction_asin_0B;
-            }
-            break;
-        }
-        case 0x965473c7u:
-        {
-            if (name.length() == 18 && name.beginsWith(BuiltInName::lessThanEqual_))
-            {
-                return &BuiltInFunction::kFunction_lessThanEqual_3C3C;
-            }
-            break;
-        }
-        case 0x97b032ceu:
-        {
-            if (name.length() == 13 && name.beginsWith(BuiltInName::distance_))
-            {
-                return &BuiltInFunction::kFunction_distance_0B0B;
-            }
-            break;
-        }
-        case 0x98010f92u:
-        {
-            if (name.length() == 6 && name.beginsWith(BuiltInName::sin_))
-            {
-                return &BuiltInFunction::kFunction_sin_3B;
-            }
-            break;
-        }
-        case 0x98571f82u:
-        {
-            if (name.length() == 21 && name.beginsWith(BuiltInName::greaterThanEqual_))
-            {
-                return &BuiltInFunction::kFunction_greaterThanEqual_1B1B;
-            }
-            break;
-        }
-        case 0x98aa9f3fu:
-        {
-            if (name.length() == 8 && name.beginsWith(BuiltInName::floor_))
-            {
-                return &BuiltInFunction::kFunction_floor_2B;
-            }
-            break;
-        }
-        case 0x99b92ec5u:
-        {
-            if (name.length() == 10 && name.beginsWith(BuiltInName::equal_))
-            {
-                return &BuiltInFunction::kFunction_equal_2B2B;
-            }
-            break;
-        }
-        case 0x9be659d3u:
-        {
-            if (name.length() == 7 && name.beginsWith(BuiltInName::log2_))
-            {
-                return &BuiltInFunction::kFunction_log2_2B;
-            }
-            break;
-        }
-        case 0xa02bb012u:
-        {
-            if (name.length() == 8 && name.beginsWith(BuiltInName::max_))
-            {
-                return &BuiltInFunction::kFunction_max_1B0B;
-            }
-            break;
-        }
-        case 0xa05f6bc8u:
-        {
-            if (name.length() == 8 && name.beginsWith(BuiltInName::dot_))
-            {
-                return &BuiltInFunction::kFunction_dot_0B0B;
-            }
-            break;
-        }
-        case 0xa0dedfdau:
-        {
-            if (name.length() == 21 && name.beginsWith(BuiltInName::greaterThanEqual_))
-            {
-                return &BuiltInFunction::kFunction_greaterThanEqual_3C3C;
-            }
-            break;
-        }
-        case 0xa2e83502u:
-        {
-            if (name.length() == 12 && name.beginsWith(BuiltInName::normalize_))
-            {
-                return &BuiltInFunction::kFunction_normalize_0B;
-            }
-            break;
-        }
-        case 0xa46f126au:
-        {
-            if (name.length() == 16 && name.beginsWith(BuiltInName::greaterThan_))
-            {
-                return &BuiltInFunction::kFunction_greaterThan_2B2B;
-            }
-            break;
-        }
-        case 0xa5ac8e51u:
-        {
-            if (name.length() == 6 && name.beginsWith(BuiltInName::exp_))
-            {
-                return &BuiltInFunction::kFunction_exp_3B;
-            }
-            break;
-        }
-        case 0xa694989du:
-        {
-            if (name.length() == 13 && name.beginsWith(BuiltInName::lessThan_))
-            {
-                return &BuiltInFunction::kFunction_lessThan_3B3B;
-            }
-            break;
-        }
-        case 0xab5a7a95u:
-        {
-            if (name.length() == 10 && name.beginsWith(BuiltInName::equal_))
-            {
-                return &BuiltInFunction::kFunction_equal_1C1C;
-            }
-            break;
-        }
-        case 0xac772d15u:
-        {
-            if (name.length() == 7 && name.beginsWith(BuiltInName::sign_))
-            {
-                return &BuiltInFunction::kFunction_sign_3B;
-            }
-            break;
-        }
-        case 0xaeabcdddu:
-        {
-            if (name.length() == 8 && name.beginsWith(BuiltInName::mod_))
-            {
-                return &BuiltInFunction::kFunction_mod_3B3B;
-            }
-            break;
-        }
-        case 0xb154856du:
-        {
-            if (name == BuiltInName::clamp_3B0B0B)
-            {
-                return &BuiltInFunction::kFunction_clamp_3B0B0B;
-            }
-            break;
-        }
-        case 0xb3a5e896u:
-        {
-            if (name.length() == 6 && name.beginsWith(BuiltInName::exp_))
-            {
-                return &BuiltInFunction::kFunction_exp_0B;
-            }
-            break;
-        }
-        case 0xb4400e10u:
-        {
-            if (name.length() == 7 && name.beginsWith(BuiltInName::atan_))
-            {
-                return &BuiltInFunction::kFunction_atan_3B;
-            }
-            break;
-        }
-        case 0xb5a0c6cau:
-        {
-            if (name.length() == 13 && name.beginsWith(BuiltInName::notEqual_))
-            {
-                return &BuiltInFunction::kFunction_notEqual_2B2B;
-            }
-            break;
-        }
-        case 0xb5c1d059u:
+        case 0x0cab5c44u:
         {
             if (name == BuiltInName::mix_0B0B0B)
             {
@@ -18141,143 +17754,7 @@
             }
             break;
         }
-        case 0xb5f58384u:
-        {
-            if (name.length() == 10 && name.beginsWith(BuiltInName::radians_))
-            {
-                return &BuiltInFunction::kFunction_radians_1B;
-            }
-            break;
-        }
-        case 0xb6907c8cu:
-        {
-            if (name.length() == 6 && name.beginsWith(BuiltInName::tan_))
-            {
-                return &BuiltInFunction::kFunction_tan_2B;
-            }
-            break;
-        }
-        case 0xb9cf953au:
-        {
-            if (name.length() == 16 && name.beginsWith(BuiltInName::greaterThan_))
-            {
-                return &BuiltInFunction::kFunction_greaterThan_1C1C;
-            }
-            break;
-        }
-        case 0xba0383afu:
-        {
-            if (name.length() == 6 && name.beginsWith(BuiltInName::sin_))
-            {
-                return &BuiltInFunction::kFunction_sin_2B;
-            }
-            break;
-        }
-        case 0xba1060a6u:
-        {
-            if (name.length() == 16 && name.beginsWith(BuiltInName::greaterThan_))
-            {
-                return &BuiltInFunction::kFunction_greaterThan_2C2C;
-            }
-            break;
-        }
-        case 0xba70875au:
-        {
-            if (name.length() == 7 && name.beginsWith(BuiltInName::sign_))
-            {
-                return &BuiltInFunction::kFunction_sign_0B;
-            }
-            break;
-        }
-        case 0xbb7abcffu:
-        {
-            if (name.length() == 18 && name.beginsWith(BuiltInName::lessThanEqual_))
-            {
-                return &BuiltInFunction::kFunction_lessThanEqual_1B1B;
-            }
-            break;
-        }
-        case 0xbc669fa2u:
-        {
-            if (name.length() == 21 && name.beginsWith(BuiltInName::greaterThanEqual_))
-            {
-                return &BuiltInFunction::kFunction_greaterThanEqual_3B3B;
-            }
-            break;
-        }
-        case 0xbca39522u:
-        {
-            if (name.length() == 8 && name.beginsWith(BuiltInName::mod_))
-            {
-                return &BuiltInFunction::kFunction_mod_3B0B;
-            }
-            break;
-        }
-        case 0xbdc5079du:
-        {
-            if (name == BuiltInName::smoothstep_0B0B0B)
-            {
-                return &BuiltInFunction::kFunction_smoothstep_0B0B0B;
-            }
-            break;
-        }
-        case 0xbe0f6df9u:
-        {
-            if (name.length() == 8 && name.beginsWith(BuiltInName::min_))
-            {
-                return &BuiltInFunction::kFunction_min_3B3B;
-            }
-            break;
-        }
-        case 0xbe16c602u:
-        {
-            if (name == BuiltInName::clamp_0B0B0B)
-            {
-                return &BuiltInFunction::kFunction_clamp_0B0B0B;
-            }
-            break;
-        }
-        case 0xbead19a8u:
-        {
-            if (name.length() == 8 && name.beginsWith(BuiltInName::floor_))
-            {
-                return &BuiltInFunction::kFunction_floor_1B;
-            }
-            break;
-        }
-        case 0xbf879745u:
-        {
-            if (name.length() == 6 && name.beginsWith(BuiltInName::all_))
-            {
-                return &BuiltInFunction::kFunction_all_2E;
-            }
-            break;
-        }
-        case 0xbfa96a19u:
-        {
-            if (name.length() == 7 && name.beginsWith(BuiltInName::asin_))
-            {
-                return &BuiltInFunction::kFunction_asin_1B;
-            }
-            break;
-        }
-        case 0xc1e8d43cu:
-        {
-            if (name.length() == 7 && name.beginsWith(BuiltInName::log2_))
-            {
-                return &BuiltInFunction::kFunction_log2_1B;
-            }
-            break;
-        }
-        case 0xc22e242fu:
-        {
-            if (name.length() == 8 && name.beginsWith(BuiltInName::max_))
-            {
-                return &BuiltInFunction::kFunction_max_1B1B;
-            }
-            break;
-        }
-        case 0xc398271du:
+        case 0x0cac3e9fu:
         {
             if (name == BuiltInName::mix_3B3B0B)
             {
@@ -18285,127 +17762,7 @@
             }
             break;
         }
-        case 0xc42d3370u:
-        {
-            if (name.length() == 8 && name.beginsWith(BuiltInName::dot_))
-            {
-                return &BuiltInFunction::kFunction_dot_2B2B;
-            }
-            break;
-        }
-        case 0xc777f74fu:
-        {
-            if (name.length() == 8 && name.beginsWith(BuiltInName::min_))
-            {
-                return &BuiltInFunction::kFunction_min_2B0B;
-            }
-            break;
-        }
-        case 0xca322aeau:
-        {
-            if (name.length() == 12 && name.beginsWith(BuiltInName::reflect_))
-            {
-                return &BuiltInFunction::kFunction_reflect_1B1B;
-            }
-            break;
-        }
-        case 0xcab81737u:
-        {
-            if (name.length() == 18 && name.beginsWith(BuiltInName::lessThanEqual_))
-            {
-                return &BuiltInFunction::kFunction_lessThanEqual_3B3B;
-            }
-            break;
-        }
-        case 0xcbbe61e2u:
-        {
-            if (name == BuiltInName::smoothstep_0B0B3B)
-            {
-                return &BuiltInFunction::kFunction_smoothstep_0B0B3B;
-            }
-            break;
-        }
-        case 0xcc07353eu:
-        {
-            if (name.length() == 8 && name.beginsWith(BuiltInName::min_))
-            {
-                return &BuiltInFunction::kFunction_min_3B0B;
-            }
-            break;
-        }
-        case 0xccc2d6c8u:
-        {
-            if (name == BuiltInName::clamp_2B0B0B)
-            {
-                return &BuiltInFunction::kFunction_clamp_2B0B0B;
-            }
-            break;
-        }
-        case 0xccdc3d05u:
-        {
-            if (name.length() == 9 && name.beginsWith(BuiltInName::step_))
-            {
-                return &BuiltInFunction::kFunction_step_0B0B;
-            }
-            break;
-        }
-        case 0xcda2c45eu:
-        {
-            if (name.length() == 7 && name.beginsWith(BuiltInName::asin_))
-            {
-                return &BuiltInFunction::kFunction_asin_2B;
-            }
-            break;
-        }
-        case 0xce0b0283u:
-        {
-            if (name.length() == 19 && name.beginsWith(BuiltInName::matrixCompMult_))
-            {
-                return &BuiltInFunction::kFunction_matrixCompMult_ABAB;
-            }
-            break;
-        }
-        case 0xce27bec6u:
-        {
-            if (name.length() == 21 && name.beginsWith(BuiltInName::greaterThanEqual_))
-            {
-                return &BuiltInFunction::kFunction_greaterThanEqual_2B2B;
-            }
-            break;
-        }
-        case 0xcf6001f1u:
-        {
-            if (name.length() == 9 && name.beginsWith(BuiltInName::step_))
-            {
-                return &BuiltInFunction::kFunction_step_3B3B;
-            }
-            break;
-        }
-        case 0xcff55532u:
-        {
-            if (name.length() == 6 && name.beginsWith(BuiltInName::cos_))
-            {
-                return &BuiltInFunction::kFunction_cos_0B;
-            }
-            break;
-        }
-        case 0xd06a4419u:
-        {
-            if (name.length() == 10 && name.beginsWith(BuiltInName::equal_))
-            {
-                return &BuiltInFunction::kFunction_equal_3C3C;
-            }
-            break;
-        }
-        case 0xd09e0b41u:
-        {
-            if (name.length() == 8 && name.beginsWith(BuiltInName::max_))
-            {
-                return &BuiltInFunction::kFunction_max_2B0B;
-            }
-            break;
-        }
-        case 0xd1918162u:
+        case 0x0cad187au:
         {
             if (name == BuiltInName::mix_3B3B3B)
             {
@@ -18413,255 +17770,7 @@
             }
             break;
         }
-        case 0xd4d6b527u:
-        {
-            if (name.length() == 8 && name.beginsWith(BuiltInName::pow_))
-            {
-                return &BuiltInFunction::kFunction_pow_0B0B;
-            }
-            break;
-        }
-        case 0xd4f4bd1bu:
-        {
-            if (name == BuiltInName::faceforward_2B2B2B)
-            {
-                return &BuiltInFunction::kFunction_faceforward_2B2B2B;
-            }
-            break;
-        }
-        case 0xd5a85cb3u:
-        {
-            if (name.length() == 6 && name.beginsWith(BuiltInName::exp_))
-            {
-                return &BuiltInFunction::kFunction_exp_1B;
-            }
-            break;
-        }
-        case 0xd5eb603eu:
-        {
-            if (name.length() == 13 && name.beginsWith(BuiltInName::notEqual_))
-            {
-                return &BuiltInFunction::kFunction_notEqual_3C3C;
-            }
-            break;
-        }
-        case 0xdad5974au:
-        {
-            if (name.length() == 9 && name.beginsWith(BuiltInName::step_))
-            {
-                return &BuiltInFunction::kFunction_step_0B3B;
-            }
-            break;
-        }
-        case 0xdb8a01f0u:
-        {
-            if (name.length() == 6 && name.beginsWith(BuiltInName::all_))
-            {
-                return &BuiltInFunction::kFunction_all_3E;
-            }
-            break;
-        }
-        case 0xdc6a3fd9u:
-        {
-            if (name.length() == 10 && name.beginsWith(BuiltInName::equal_))
-            {
-                return &BuiltInFunction::kFunction_equal_2E2E;
-            }
-            break;
-        }
-        case 0xdcd239f5u:
-        {
-            if (name == BuiltInName::gl_DepthRangeParameters)
-            {
-                return mVar_gl_DepthRangeParameters;
-            }
-            break;
-        }
-        case 0xde93f470u:
-        {
-            if (name.length() == 6 && name.beginsWith(BuiltInName::notFunc_))
-            {
-                return &BuiltInFunction::kFunction_notFunc_1E;
-            }
-            break;
-        }
-        case 0xdeb59d35u:
-        {
-            if (name.length() == 9 && name.beginsWith(BuiltInName::atan_))
-            {
-                return &BuiltInFunction::kFunction_atan_2B2B;
-            }
-            break;
-        }
-        case 0xe092fd41u:
-        {
-            if (name.length() == 6 && name.beginsWith(BuiltInName::tan_))
-            {
-                return &BuiltInFunction::kFunction_tan_3B;
-            }
-            break;
-        }
-        case 0xe17ad139u:
-        {
-            if (name.length() == 6 && name.beginsWith(BuiltInName::abs_))
-            {
-                return &BuiltInFunction::kFunction_abs_2B;
-            }
-            break;
-        }
-        case 0xe3884196u:
-        {
-            if (name.length() == 21 && name.beginsWith(BuiltInName::greaterThanEqual_))
-            {
-                return &BuiltInFunction::kFunction_greaterThanEqual_1C1C;
-            }
-            break;
-        }
-        case 0xe4180632u:
-        {
-            if (name.length() == 8 && name.beginsWith(BuiltInName::fract_))
-            {
-                return &BuiltInFunction::kFunction_fract_1B;
-            }
-            break;
-        }
-        case 0xe50d8305u:
-        {
-            if (name.length() == 14 && name.beginsWith(BuiltInName::inversesqrt_))
-            {
-                return &BuiltInFunction::kFunction_inversesqrt_0B;
-            }
-            break;
-        }
-        case 0xe7f2b603u:
-        {
-            if (name.length() == 8 && name.beginsWith(BuiltInName::max_))
-            {
-                return &BuiltInFunction::kFunction_max_0B0B;
-            }
-            break;
-        }
-        case 0xeba3b9c1u:
-        {
-            if (name.length() == 10 && name.beginsWith(BuiltInName::equal_))
-            {
-                return &BuiltInFunction::kFunction_equal_1E1E;
-            }
-            break;
-        }
-        case 0xebeb54f1u:
-        {
-            if (name.length() == 7 && name.beginsWith(BuiltInName::log2_))
-            {
-                return &BuiltInFunction::kFunction_log2_0B;
-            }
-            break;
-        }
-        case 0xed15f051u:
-        {
-            if (name.length() == 8 && name.beginsWith(BuiltInName::mod_))
-            {
-                return &BuiltInFunction::kFunction_mod_0B0B;
-            }
-            break;
-        }
-        case 0xed2f65c0u:
-        {
-            if (name.length() == 9 && name.beginsWith(BuiltInName::length_))
-            {
-                return &BuiltInFunction::kFunction_length_1B;
-            }
-            break;
-        }
-        case 0xedc0d5ffu:
-        {
-            if (name == BuiltInName::smoothstep_0B0B2B)
-            {
-                return &BuiltInFunction::kFunction_smoothstep_0B0B2B;
-            }
-            break;
-        }
-        case 0xee8ac486u:
-        {
-            if (name.length() == 6 && name.beginsWith(BuiltInName::tan_))
-            {
-                return &BuiltInFunction::kFunction_tan_0B;
-            }
-            break;
-        }
-        case 0xee8bbedbu:
-        {
-            if (name.length() == 6 && name.beginsWith(BuiltInName::notFunc_))
-            {
-                return &BuiltInFunction::kFunction_notFunc_2E;
-            }
-            break;
-        }
-        case 0xef0d2febu:
-        {
-            if (name.length() == 18 && name.beginsWith(BuiltInName::lessThanEqual_))
-            {
-                return &BuiltInFunction::kFunction_lessThanEqual_1C1C;
-            }
-            break;
-        }
-        case 0xef742b7eu:
-        {
-            if (name.length() == 6 && name.beginsWith(BuiltInName::abs_))
-            {
-                return &BuiltInFunction::kFunction_abs_1B;
-            }
-            break;
-        }
-        case 0xefa5387bu:
-        {
-            if (name.length() == 7 && name.beginsWith(BuiltInName::asin_))
-            {
-                return &BuiltInFunction::kFunction_asin_3B;
-            }
-            break;
-        }
-        case 0xefc5d4d3u:
-        {
-            if (name.length() == 7 && name.beginsWith(BuiltInName::ceil_))
-            {
-                return &BuiltInFunction::kFunction_ceil_1B;
-            }
-            break;
-        }
-        case 0xf0909e70u:
-        {
-            if (name == BuiltInName::clamp_2B2B2B)
-            {
-                return &BuiltInFunction::kFunction_clamp_2B2B2B;
-            }
-            break;
-        }
-        case 0xf1f7c94fu:
-        {
-            if (name.length() == 6 && name.beginsWith(BuiltInName::cos_))
-            {
-                return &BuiltInFunction::kFunction_cos_1B;
-            }
-            break;
-        }
-        case 0xf23eda66u:
-        {
-            if (name.length() == 7 && name.beginsWith(BuiltInName::exp2_))
-            {
-                return &BuiltInFunction::kFunction_exp2_2B;
-            }
-            break;
-        }
-        case 0xf306dd4au:
-        {
-            if (name.length() == 14 && name.beginsWith(BuiltInName::inversesqrt_))
-            {
-                return &BuiltInFunction::kFunction_inversesqrt_3B;
-            }
-            break;
-        }
-        case 0xf58b0cf0u:
+        case 0x0caf5440u:
         {
             if (name == BuiltInName::mix_1B1B1B)
             {
@@ -18669,39 +17778,1165 @@
             }
             break;
         }
-        case 0xf68b9ca9u:
+        case 0x10705009u:
         {
-            if (name.length() == 10 && name.beginsWith(BuiltInName::equal_))
+            if (name.beginsWith(BuiltInName::acos))
             {
-                return &BuiltInFunction::kFunction_equal_1B1B;
+                ASSERT(name.length() == 7);
+                return &BuiltInFunction::kFunction_acos_3B;
             }
             break;
         }
-        case 0xf707f2d5u:
+        case 0x10714a97u:
         {
-            if (name.length() == 13 && name.beginsWith(BuiltInName::lessThan_))
+            if (name.beginsWith(BuiltInName::exp2))
             {
-                return &BuiltInFunction::kFunction_lessThan_2C2C;
+                ASSERT(name.length() == 7);
+                return &BuiltInFunction::kFunction_exp2_3B;
             }
             break;
         }
-        case 0xf9e31c36u:
+        case 0x107153b8u:
         {
-            if (name.length() == 7 && name.beginsWith(BuiltInName::log2_))
+            if (name.beginsWith(BuiltInName::ceil))
             {
+                ASSERT(name.length() == 7);
+                return &BuiltInFunction::kFunction_ceil_2B;
+            }
+            break;
+        }
+        case 0x1071adbbu:
+        {
+            if (name.beginsWith(BuiltInName::sqrt))
+            {
+                ASSERT(name.length() == 7);
+                return &BuiltInFunction::kFunction_sqrt_0B;
+            }
+            break;
+        }
+        case 0x1072f084u:
+        {
+            if (name.beginsWith(BuiltInName::acos))
+            {
+                ASSERT(name.length() == 7);
+                return &BuiltInFunction::kFunction_acos_2B;
+            }
+            break;
+        }
+        case 0x1073acd0u:
+        {
+            if (name.beginsWith(BuiltInName::exp2))
+            {
+                ASSERT(name.length() == 7);
+                return &BuiltInFunction::kFunction_exp2_0B;
+            }
+            break;
+        }
+        case 0x1073dcdcu:
+        {
+            if (name.beginsWith(BuiltInName::acos))
+            {
+                ASSERT(name.length() == 7);
+                return &BuiltInFunction::kFunction_acos_1B;
+            }
+            break;
+        }
+        case 0x1073f35du:
+        {
+            if (name.beginsWith(BuiltInName::ceil))
+            {
+                ASSERT(name.length() == 7);
+                return &BuiltInFunction::kFunction_ceil_3B;
+            }
+            break;
+        }
+        case 0x10740614u:
+        {
+            if (name.beginsWith(BuiltInName::sqrt))
+            {
+                ASSERT(name.length() == 7);
+                return &BuiltInFunction::kFunction_sqrt_3B;
+            }
+            break;
+        }
+        case 0x1074db1fu:
+        {
+            if (name.beginsWith(BuiltInName::ceil))
+            {
+                ASSERT(name.length() == 7);
+                return &BuiltInFunction::kFunction_ceil_0B;
+            }
+            break;
+        }
+        case 0x1075c6d4u:
+        {
+            if (name.beginsWith(BuiltInName::sign))
+            {
+                ASSERT(name.length() == 7);
+                return &BuiltInFunction::kFunction_sign_1B;
+            }
+            break;
+        }
+        case 0x1075ec70u:
+        {
+            if (name.beginsWith(BuiltInName::atan))
+            {
+                ASSERT(name.length() == 7);
+                return &BuiltInFunction::kFunction_atan_2B;
+            }
+            break;
+        }
+        case 0x1075f159u:
+        {
+            if (name.beginsWith(BuiltInName::acos))
+            {
+                ASSERT(name.length() == 7);
+                return &BuiltInFunction::kFunction_acos_0B;
+            }
+            break;
+        }
+        case 0x10764dc5u:
+        {
+            if (name.beginsWith(BuiltInName::exp2))
+            {
+                ASSERT(name.length() == 7);
+                return &BuiltInFunction::kFunction_exp2_1B;
+            }
+            break;
+        }
+        case 0x1076a689u:
+        {
+            if (name.beginsWith(BuiltInName::sqrt))
+            {
+                ASSERT(name.length() == 7);
+                return &BuiltInFunction::kFunction_sqrt_2B;
+            }
+            break;
+        }
+        case 0x1076cc3bu:
+        {
+            if (name.beginsWith(BuiltInName::atan))
+            {
+                ASSERT(name.length() == 7);
+                return &BuiltInFunction::kFunction_atan_1B;
+            }
+            break;
+        }
+        case 0x10778fc2u:
+        {
+            if (name.beginsWith(BuiltInName::sqrt))
+            {
+                ASSERT(name.length() == 7);
+                return &BuiltInFunction::kFunction_sqrt_1B;
+            }
+            break;
+        }
+        case 0x10782b2au:
+        {
+            if (name.beginsWith(BuiltInName::sign))
+            {
+                ASSERT(name.length() == 7);
+                return &BuiltInFunction::kFunction_sign_2B;
+            }
+            break;
+        }
+        case 0x1078e07eu:
+        {
+            if (name.beginsWith(BuiltInName::atan))
+            {
+                ASSERT(name.length() == 7);
+                return &BuiltInFunction::kFunction_atan_0B;
+            }
+            break;
+        }
+        case 0x1079530au:
+        {
+            if (name.beginsWith(BuiltInName::asin))
+            {
+                ASSERT(name.length() == 7);
+                return &BuiltInFunction::kFunction_asin_0B;
+            }
+            break;
+        }
+        case 0x1079b7b6u:
+        {
+            if (name.beginsWith(BuiltInName::log2))
+            {
+                ASSERT(name.length() == 7);
+                return &BuiltInFunction::kFunction_log2_2B;
+            }
+            break;
+        }
+        case 0x107aca67u:
+        {
+            if (name.beginsWith(BuiltInName::sign))
+            {
+                ASSERT(name.length() == 7);
+                return &BuiltInFunction::kFunction_sign_3B;
+            }
+            break;
+        }
+        case 0x107b4a10u:
+        {
+            if (name.beginsWith(BuiltInName::atan))
+            {
+                ASSERT(name.length() == 7);
+                return &BuiltInFunction::kFunction_atan_3B;
+            }
+            break;
+        }
+        case 0x107ba052u:
+        {
+            if (name.beginsWith(BuiltInName::sign))
+            {
+                ASSERT(name.length() == 7);
+                return &BuiltInFunction::kFunction_sign_0B;
+            }
+            break;
+        }
+        case 0x107bf08fu:
+        {
+            if (name.beginsWith(BuiltInName::asin))
+            {
+                ASSERT(name.length() == 7);
+                return &BuiltInFunction::kFunction_asin_1B;
+            }
+            break;
+        }
+        case 0x107c1ab1u:
+        {
+            if (name.beginsWith(BuiltInName::log2))
+            {
+                ASSERT(name.length() == 7);
+                return &BuiltInFunction::kFunction_log2_1B;
+            }
+            break;
+        }
+        case 0x107cde72u:
+        {
+            if (name.beginsWith(BuiltInName::asin))
+            {
+                ASSERT(name.length() == 7);
+                return &BuiltInFunction::kFunction_asin_2B;
+            }
+            break;
+        }
+        case 0x107eba44u:
+        {
+            if (name.beginsWith(BuiltInName::log2))
+            {
+                ASSERT(name.length() == 7);
+                return &BuiltInFunction::kFunction_log2_0B;
+            }
+            break;
+        }
+        case 0x107ef228u:
+        {
+            if (name.beginsWith(BuiltInName::asin))
+            {
+                ASSERT(name.length() == 7);
+                return &BuiltInFunction::kFunction_asin_3B;
+            }
+            break;
+        }
+        case 0x107ef88eu:
+        {
+            if (name.beginsWith(BuiltInName::ceil))
+            {
+                ASSERT(name.length() == 7);
+                return &BuiltInFunction::kFunction_ceil_1B;
+            }
+            break;
+        }
+        case 0x107f298bu:
+        {
+            if (name.beginsWith(BuiltInName::exp2))
+            {
+                ASSERT(name.length() == 7);
+                return &BuiltInFunction::kFunction_exp2_2B;
+            }
+            break;
+        }
+        case 0x107f9207u:
+        {
+            if (name.beginsWith(BuiltInName::log2))
+            {
+                ASSERT(name.length() == 7);
                 return &BuiltInFunction::kFunction_log2_3B;
             }
             break;
         }
-        case 0xf9e4df73u:
+        case 0x109056cfu:
         {
-            if (name.length() == 18 && name.beginsWith(BuiltInName::lessThanEqual_))
+            if (name.beginsWith(BuiltInName::atan))
             {
-                return &BuiltInFunction::kFunction_lessThanEqual_2B2B;
+                ASSERT(name.length() == 9);
+                return &BuiltInFunction::kFunction_atan_3B3B;
             }
             break;
         }
-        case 0xfa8639d9u:
+        case 0x10922878u:
+        {
+            if (name.beginsWith(BuiltInName::step))
+            {
+                ASSERT(name.length() == 9);
+                return &BuiltInFunction::kFunction_step_0B1B;
+            }
+            break;
+        }
+        case 0x10935054u:
+        {
+            if (name.beginsWith(BuiltInName::step))
+            {
+                ASSERT(name.length() == 9);
+                return &BuiltInFunction::kFunction_step_2B2B;
+            }
+            break;
+        }
+        case 0x10954d55u:
+        {
+            if (name.beginsWith(BuiltInName::atan))
+            {
+                ASSERT(name.length() == 9);
+                return &BuiltInFunction::kFunction_atan_1B1B;
+            }
+            break;
+        }
+        case 0x10982a8bu:
+        {
+            if (name.beginsWith(BuiltInName::atan))
+            {
+                ASSERT(name.length() == 9);
+                return &BuiltInFunction::kFunction_atan_0B0B;
+            }
+            break;
+        }
+        case 0x10992111u:
+        {
+            if (name.beginsWith(BuiltInName::step))
+            {
+                ASSERT(name.length() == 9);
+                return &BuiltInFunction::kFunction_step_1B1B;
+            }
+            break;
+        }
+        case 0x109cc0c6u:
+        {
+            if (name.beginsWith(BuiltInName::step))
+            {
+                ASSERT(name.length() == 9);
+                return &BuiltInFunction::kFunction_step_0B0B;
+            }
+            break;
+        }
+        case 0x109cf7f1u:
+        {
+            if (name.beginsWith(BuiltInName::step))
+            {
+                ASSERT(name.length() == 9);
+                return &BuiltInFunction::kFunction_step_3B3B;
+            }
+            break;
+        }
+        case 0x109daa13u:
+        {
+            if (name.beginsWith(BuiltInName::step))
+            {
+                ASSERT(name.length() == 9);
+                return &BuiltInFunction::kFunction_step_0B3B;
+            }
+            break;
+        }
+        case 0x109de66cu:
+        {
+            if (name.beginsWith(BuiltInName::atan))
+            {
+                ASSERT(name.length() == 9);
+                return &BuiltInFunction::kFunction_atan_2B2B;
+            }
+            break;
+        }
+        case 0x109fc6e7u:
+        {
+            if (name.beginsWith(BuiltInName::step))
+            {
+                ASSERT(name.length() == 9);
+                return &BuiltInFunction::kFunction_step_0B2B;
+            }
+            break;
+        }
+        case 0x14806be8u:
+        {
+            if (name.beginsWith(BuiltInName::fract))
+            {
+                ASSERT(name.length() == 8);
+                return &BuiltInFunction::kFunction_fract_0B;
+            }
+            break;
+        }
+        case 0x1482c577u:
+        {
+            if (name.beginsWith(BuiltInName::fract))
+            {
+                ASSERT(name.length() == 8);
+                return &BuiltInFunction::kFunction_fract_3B;
+            }
+            break;
+        }
+        case 0x1485649au:
+        {
+            if (name.beginsWith(BuiltInName::fract))
+            {
+                ASSERT(name.length() == 8);
+                return &BuiltInFunction::kFunction_fract_2B;
+            }
+            break;
+        }
+        case 0x148688dbu:
+        {
+            if (name.beginsWith(BuiltInName::floor))
+            {
+                ASSERT(name.length() == 8);
+                return &BuiltInFunction::kFunction_floor_0B;
+            }
+            break;
+        }
+        case 0x148761a0u:
+        {
+            if (name.beginsWith(BuiltInName::floor))
+            {
+                ASSERT(name.length() == 8);
+                return &BuiltInFunction::kFunction_floor_3B;
+            }
+            break;
+        }
+        case 0x14898596u:
+        {
+            if (name.beginsWith(BuiltInName::floor))
+            {
+                ASSERT(name.length() == 8);
+                return &BuiltInFunction::kFunction_floor_2B;
+            }
+            break;
+        }
+        case 0x148be379u:
+        {
+            if (name.beginsWith(BuiltInName::floor))
+            {
+                ASSERT(name.length() == 8);
+                return &BuiltInFunction::kFunction_floor_1B;
+            }
+            break;
+        }
+        case 0x148e47b2u:
+        {
+            if (name.beginsWith(BuiltInName::fract))
+            {
+                ASSERT(name.length() == 8);
+                return &BuiltInFunction::kFunction_fract_1B;
+            }
+            break;
+        }
+        case 0x14a24982u:
+        {
+            if (name.beginsWith(BuiltInName::equal))
+            {
+                ASSERT(name.length() == 10);
+                return &BuiltInFunction::kFunction_equal_3E3E;
+            }
+            break;
+        }
+        case 0x14a344cau:
+        {
+            if (name.beginsWith(BuiltInName::equal))
+            {
+                ASSERT(name.length() == 10);
+                return &BuiltInFunction::kFunction_equal_3B3B;
+            }
+            break;
+        }
+        case 0x14a4c07au:
+        {
+            if (name.beginsWith(BuiltInName::cross))
+            {
+                ASSERT(name.length() == 10);
+                return &BuiltInFunction::kFunction_cross_2B2B;
+            }
+            break;
+        }
+        case 0x14a841f7u:
+        {
+            if (name.beginsWith(BuiltInName::equal))
+            {
+                ASSERT(name.length() == 10);
+                return &BuiltInFunction::kFunction_equal_2C2C;
+            }
+            break;
+        }
+        case 0x14a99557u:
+        {
+            if (name.beginsWith(BuiltInName::equal))
+            {
+                ASSERT(name.length() == 10);
+                return &BuiltInFunction::kFunction_equal_2B2B;
+            }
+            break;
+        }
+        case 0x14aabf32u:
+        {
+            if (name.beginsWith(BuiltInName::equal))
+            {
+                ASSERT(name.length() == 10);
+                return &BuiltInFunction::kFunction_equal_1C1C;
+            }
+            break;
+        }
+        case 0x14ad02bdu:
+        {
+            if (name.beginsWith(BuiltInName::equal))
+            {
+                ASSERT(name.length() == 10);
+                return &BuiltInFunction::kFunction_equal_3C3C;
+            }
+            break;
+        }
+        case 0x14adc97au:
+        {
+            if (name.beginsWith(BuiltInName::equal))
+            {
+                ASSERT(name.length() == 10);
+                return &BuiltInFunction::kFunction_equal_2E2E;
+            }
+            break;
+        }
+        case 0x14aeb3fau:
+        {
+            if (name.beginsWith(BuiltInName::equal))
+            {
+                ASSERT(name.length() == 10);
+                return &BuiltInFunction::kFunction_equal_1E1E;
+            }
+            break;
+        }
+        case 0x14af6410u:
+        {
+            if (name.beginsWith(BuiltInName::equal))
+            {
+                ASSERT(name.length() == 10);
+                return &BuiltInFunction::kFunction_equal_1B1B;
+            }
+            break;
+        }
+        case 0x14c33da1u:
+        {
+            if (name == BuiltInName::clamp_3B3B3B)
+            {
+                return &BuiltInFunction::kFunction_clamp_3B3B3B;
+            }
+            break;
+        }
+        case 0x14c5e296u:
+        {
+            if (name == BuiltInName::clamp_1B0B0B)
+            {
+                return &BuiltInFunction::kFunction_clamp_1B0B0B;
+            }
+            break;
+        }
+        case 0x14c6b919u:
+        {
+            if (name == BuiltInName::clamp_1B1B1B)
+            {
+                return &BuiltInFunction::kFunction_clamp_1B1B1B;
+            }
+            break;
+        }
+        case 0x14cb1025u:
+        {
+            if (name == BuiltInName::clamp_3B0B0B)
+            {
+                return &BuiltInFunction::kFunction_clamp_3B0B0B;
+            }
+            break;
+        }
+        case 0x14cbe76eu:
+        {
+            if (name == BuiltInName::clamp_0B0B0B)
+            {
+                return &BuiltInFunction::kFunction_clamp_0B0B0B;
+            }
+            break;
+        }
+        case 0x14cccae5u:
+        {
+            if (name == BuiltInName::clamp_2B0B0B)
+            {
+                return &BuiltInFunction::kFunction_clamp_2B0B0B;
+            }
+            break;
+        }
+        case 0x14cf0779u:
+        {
+            if (name == BuiltInName::clamp_2B2B2B)
+            {
+                return &BuiltInFunction::kFunction_clamp_2B2B2B;
+            }
+            break;
+        }
+        case 0x1891756bu:
+        {
+            if (name.beginsWith(BuiltInName::length))
+            {
+                ASSERT(name.length() == 9);
+                return &BuiltInFunction::kFunction_length_0B;
+            }
+            break;
+        }
+        case 0x18925f20u:
+        {
+            if (name.beginsWith(BuiltInName::length))
+            {
+                ASSERT(name.length() == 9);
+                return &BuiltInFunction::kFunction_length_3B;
+            }
+            break;
+        }
+        case 0x18947315u:
+        {
+            if (name.beginsWith(BuiltInName::length))
+            {
+                ASSERT(name.length() == 9);
+                return &BuiltInFunction::kFunction_length_2B;
+            }
+            break;
+        }
+        case 0x189ed736u:
+        {
+            if (name.beginsWith(BuiltInName::length))
+            {
+                ASSERT(name.length() == 9);
+                return &BuiltInFunction::kFunction_length_1B;
+            }
+            break;
+        }
+        case 0x1ca0fdeeu:
+        {
+            if (name.beginsWith(BuiltInName::degrees))
+            {
+                ASSERT(name.length() == 10);
+                return &BuiltInFunction::kFunction_degrees_2B;
+            }
+            break;
+        }
+        case 0x1ca3192cu:
+        {
+            if (name.beginsWith(BuiltInName::degrees))
+            {
+                ASSERT(name.length() == 10);
+                return &BuiltInFunction::kFunction_degrees_3B;
+            }
+            break;
+        }
+        case 0x1ca5733au:
+        {
+            if (name.beginsWith(BuiltInName::degrees))
+            {
+                ASSERT(name.length() == 10);
+                return &BuiltInFunction::kFunction_degrees_0B;
+            }
+            break;
+        }
+        case 0x1ca5f5cau:
+        {
+            if (name.beginsWith(BuiltInName::radians))
+            {
+                ASSERT(name.length() == 10);
+                return &BuiltInFunction::kFunction_radians_0B;
+            }
+            break;
+        }
+        case 0x1ca6dbf7u:
+        {
+            if (name.beginsWith(BuiltInName::radians))
+            {
+                ASSERT(name.length() == 10);
+                return &BuiltInFunction::kFunction_radians_3B;
+            }
+            break;
+        }
+        case 0x1ca81c5eu:
+        {
+            if (name.beginsWith(BuiltInName::degrees))
+            {
+                ASSERT(name.length() == 10);
+                return &BuiltInFunction::kFunction_degrees_1B;
+            }
+            break;
+        }
+        case 0x1ca8f62bu:
+        {
+            if (name.beginsWith(BuiltInName::radians))
+            {
+                ASSERT(name.length() == 10);
+                return &BuiltInFunction::kFunction_radians_2B;
+            }
+            break;
+        }
+        case 0x1cab5cdcu:
+        {
+            if (name.beginsWith(BuiltInName::radians))
+            {
+                ASSERT(name.length() == 10);
+                return &BuiltInFunction::kFunction_radians_1B;
+            }
+            break;
+        }
+        case 0x1cc408dau:
+        {
+            if (name.beginsWith(BuiltInName::reflect))
+            {
+                ASSERT(name.length() == 12);
+                return &BuiltInFunction::kFunction_reflect_2B2B;
+            }
+            break;
+        }
+        case 0x1cc6193fu:
+        {
+            if (name.beginsWith(BuiltInName::reflect))
+            {
+                ASSERT(name.length() == 12);
+                return &BuiltInFunction::kFunction_reflect_3B3B;
+            }
+            break;
+        }
+        case 0x1cc64487u:
+        {
+            if (name.beginsWith(BuiltInName::reflect))
+            {
+                ASSERT(name.length() == 12);
+                return &BuiltInFunction::kFunction_reflect_0B0B;
+            }
+            break;
+        }
+        case 0x1ccca9c8u:
+        {
+            if (name.beginsWith(BuiltInName::reflect))
+            {
+                ASSERT(name.length() == 12);
+                return &BuiltInFunction::kFunction_reflect_1B1B;
+            }
+            break;
+        }
+        case 0x1ce0c06au:
+        {
+            if (name == BuiltInName::refract_1B1B0B)
+            {
+                return &BuiltInFunction::kFunction_refract_1B1B0B;
+            }
+            break;
+        }
+        case 0x1ce34099u:
+        {
+            if (name == BuiltInName::refract_3B3B0B)
+            {
+                return &BuiltInFunction::kFunction_refract_3B3B0B;
+            }
+            break;
+        }
+        case 0x1ce342a6u:
+        {
+            if (name == BuiltInName::refract_2B2B0B)
+            {
+                return &BuiltInFunction::kFunction_refract_2B2B0B;
+            }
+            break;
+        }
+        case 0x1ce7660eu:
+        {
+            if (name == BuiltInName::refract_0B0B0B)
+            {
+                return &BuiltInFunction::kFunction_refract_0B0B0B;
+            }
+            break;
+        }
+        case 0x20d08e18u:
+        {
+            if (name.beginsWith(BuiltInName::distance))
+            {
+                ASSERT(name.length() == 13);
+                return &BuiltInFunction::kFunction_distance_3B3B;
+            }
+            break;
+        }
+        case 0x20d1a6f5u:
+        {
+            if (name.beginsWith(BuiltInName::distance))
+            {
+                ASSERT(name.length() == 13);
+                return &BuiltInFunction::kFunction_distance_2B2B;
+            }
+            break;
+        }
+        case 0x20d1d723u:
+        {
+            if (name.beginsWith(BuiltInName::notEqual))
+            {
+                ASSERT(name.length() == 13);
+                return &BuiltInFunction::kFunction_notEqual_1E1E;
+            }
+            break;
+        }
+        case 0x20d2b884u:
+        {
+            if (name.beginsWith(BuiltInName::notEqual))
+            {
+                ASSERT(name.length() == 13);
+                return &BuiltInFunction::kFunction_notEqual_2E2E;
+            }
+            break;
+        }
+        case 0x20d3517eu:
+        {
+            if (name.beginsWith(BuiltInName::lessThan))
+            {
+                ASSERT(name.length() == 13);
+                return &BuiltInFunction::kFunction_lessThan_1B1B;
+            }
+            break;
+        }
+        case 0x20d42037u:
+        {
+            if (name.beginsWith(BuiltInName::lessThan))
+            {
+                ASSERT(name.length() == 13);
+                return &BuiltInFunction::kFunction_lessThan_3C3C;
+            }
+            break;
+        }
+        case 0x20d4c66eu:
+        {
+            if (name.beginsWith(BuiltInName::lessThan))
+            {
+                ASSERT(name.length() == 13);
+                return &BuiltInFunction::kFunction_lessThan_2B2B;
+            }
+            break;
+        }
+        case 0x20d4c7eeu:
+        {
+            if (name.beginsWith(BuiltInName::notEqual))
+            {
+                ASSERT(name.length() == 13);
+                return &BuiltInFunction::kFunction_notEqual_2C2C;
+            }
+            break;
+        }
+        case 0x20d58403u:
+        {
+            if (name.beginsWith(BuiltInName::notEqual))
+            {
+                ASSERT(name.length() == 13);
+                return &BuiltInFunction::kFunction_notEqual_1B1B;
+            }
+            break;
+        }
+        case 0x20d6513cu:
+        {
+            if (name.beginsWith(BuiltInName::notEqual))
+            {
+                ASSERT(name.length() == 13);
+                return &BuiltInFunction::kFunction_notEqual_1C1C;
+            }
+            break;
+        }
+        case 0x20d69913u:
+        {
+            if (name.beginsWith(BuiltInName::lessThan))
+            {
+                ASSERT(name.length() == 13);
+                return &BuiltInFunction::kFunction_lessThan_1C1C;
+            }
+            break;
+        }
+        case 0x20d71eb8u:
+        {
+            if (name.beginsWith(BuiltInName::notEqual))
+            {
+                ASSERT(name.length() == 13);
+                return &BuiltInFunction::kFunction_notEqual_3B3B;
+            }
+            break;
+        }
+        case 0x20d7839eu:
+        {
+            if (name.beginsWith(BuiltInName::notEqual))
+            {
+                ASSERT(name.length() == 13);
+                return &BuiltInFunction::kFunction_notEqual_3E3E;
+            }
+            break;
+        }
+        case 0x20d979cdu:
+        {
+            if (name.beginsWith(BuiltInName::distance))
+            {
+                ASSERT(name.length() == 13);
+                return &BuiltInFunction::kFunction_distance_0B0B;
+            }
+            break;
+        }
+        case 0x20da61d4u:
+        {
+            if (name.beginsWith(BuiltInName::lessThan))
+            {
+                ASSERT(name.length() == 13);
+                return &BuiltInFunction::kFunction_lessThan_3B3B;
+            }
+            break;
+        }
+        case 0x20db5cc6u:
+        {
+            if (name.beginsWith(BuiltInName::notEqual))
+            {
+                ASSERT(name.length() == 13);
+                return &BuiltInFunction::kFunction_notEqual_2B2B;
+            }
+            break;
+        }
+        case 0x20dd5e88u:
+        {
+            if (name.beginsWith(BuiltInName::notEqual))
+            {
+                ASSERT(name.length() == 13);
+                return &BuiltInFunction::kFunction_notEqual_3C3C;
+            }
+            break;
+        }
+        case 0x20df72aau:
+        {
+            if (name.beginsWith(BuiltInName::lessThan))
+            {
+                ASSERT(name.length() == 13);
+                return &BuiltInFunction::kFunction_lessThan_2C2C;
+            }
+            break;
+        }
+        case 0x20dfd70fu:
+        {
+            if (name.beginsWith(BuiltInName::distance))
+            {
+                ASSERT(name.length() == 13);
+                return &BuiltInFunction::kFunction_distance_1B1B;
+            }
+            break;
+        }
+        case 0x24c44c28u:
+        {
+            if (name.beginsWith(BuiltInName::normalize))
+            {
+                ASSERT(name.length() == 12);
+                return &BuiltInFunction::kFunction_normalize_1B;
+            }
+            break;
+        }
+        case 0x24c6a3d6u:
+        {
+            if (name.beginsWith(BuiltInName::normalize))
+            {
+                ASSERT(name.length() == 12);
+                return &BuiltInFunction::kFunction_normalize_2B;
+            }
+            break;
+        }
+        case 0x24c942bbu:
+        {
+            if (name.beginsWith(BuiltInName::normalize))
+            {
+                ASSERT(name.length() == 12);
+                return &BuiltInFunction::kFunction_normalize_3B;
+            }
+            break;
+        }
+        case 0x24ca2b81u:
+        {
+            if (name.beginsWith(BuiltInName::normalize))
+            {
+                ASSERT(name.length() == 12);
+                return &BuiltInFunction::kFunction_normalize_0B;
+            }
+            break;
+        }
+        case 0x29113c5du:
+        {
+            if (name == BuiltInName::smoothstep_0B0B1B)
+            {
+                return &BuiltInFunction::kFunction_smoothstep_0B0B1B;
+            }
+            break;
+        }
+        case 0x29129286u:
+        {
+            if (name == BuiltInName::smoothstep_1B1B1B)
+            {
+                return &BuiltInFunction::kFunction_smoothstep_1B1B1B;
+            }
+            break;
+        }
+        case 0x29137486u:
+        {
+            if (name == BuiltInName::smoothstep_3B3B3B)
+            {
+                return &BuiltInFunction::kFunction_smoothstep_3B3B3B;
+            }
+            break;
+        }
+        case 0x29145112u:
+        {
+            if (name == BuiltInName::smoothstep_2B2B2B)
+            {
+                return &BuiltInFunction::kFunction_smoothstep_2B2B2B;
+            }
+            break;
+        }
+        case 0x291bdbcdu:
+        {
+            if (name == BuiltInName::smoothstep_0B0B0B)
+            {
+                return &BuiltInFunction::kFunction_smoothstep_0B0B0B;
+            }
+            break;
+        }
+        case 0x291cba04u:
+        {
+            if (name == BuiltInName::smoothstep_0B0B3B)
+            {
+                return &BuiltInFunction::kFunction_smoothstep_0B0B3B;
+            }
+            break;
+        }
+        case 0x291ed9f2u:
+        {
+            if (name == BuiltInName::smoothstep_0B0B2B)
+            {
+                return &BuiltInFunction::kFunction_smoothstep_0B0B2B;
+            }
+            break;
+        }
+        case 0x2ce151f2u:
+        {
+            if (name.beginsWith(BuiltInName::inversesqrt))
+            {
+                ASSERT(name.length() == 14);
+                return &BuiltInFunction::kFunction_inversesqrt_2B;
+            }
+            break;
+        }
+        case 0x2ce3bb6cu:
+        {
+            if (name.beginsWith(BuiltInName::inversesqrt))
+            {
+                ASSERT(name.length() == 14);
+                return &BuiltInFunction::kFunction_inversesqrt_1B;
+            }
+            break;
+        }
+        case 0x2cee53ddu:
+        {
+            if (name.beginsWith(BuiltInName::inversesqrt))
+            {
+                ASSERT(name.length() == 14);
+                return &BuiltInFunction::kFunction_inversesqrt_0B;
+            }
+            break;
+        }
+        case 0x2cef3d27u:
+        {
+            if (name.beginsWith(BuiltInName::inversesqrt))
+            {
+                ASSERT(name.length() == 14);
+                return &BuiltInFunction::kFunction_inversesqrt_3B;
+            }
+            break;
+        }
+        case 0x2d02eb78u:
+        {
+            if (name.beginsWith(BuiltInName::greaterThan))
+            {
+                ASSERT(name.length() == 16);
+                return &BuiltInFunction::kFunction_greaterThan_1B1B;
+            }
+            break;
+        }
+        case 0x2d0362a4u:
+        {
+            if (name.beginsWith(BuiltInName::greaterThan))
+            {
+                ASSERT(name.length() == 16);
+                return &BuiltInFunction::kFunction_greaterThan_3C3C;
+            }
+            break;
+        }
+        case 0x2d052a50u:
+        {
+            if (name.beginsWith(BuiltInName::greaterThan))
+            {
+                ASSERT(name.length() == 16);
+                return &BuiltInFunction::kFunction_greaterThan_3B3B;
+            }
+            break;
+        }
+        case 0x2d0a449bu:
+        {
+            if (name.beginsWith(BuiltInName::greaterThan))
+            {
+                ASSERT(name.length() == 16);
+                return &BuiltInFunction::kFunction_greaterThan_2B2B;
+            }
+            break;
+        }
+        case 0x2d0b99c3u:
+        {
+            if (name.beginsWith(BuiltInName::greaterThan))
+            {
+                ASSERT(name.length() == 16);
+                return &BuiltInFunction::kFunction_greaterThan_1C1C;
+            }
+            break;
+        }
+        case 0x2d0ba1a0u:
+        {
+            if (name.beginsWith(BuiltInName::greaterThan))
+            {
+                ASSERT(name.length() == 16);
+                return &BuiltInFunction::kFunction_greaterThan_2C2C;
+            }
+            break;
+        }
+        case 0x2d216fbcu:
+        {
+            if (name == BuiltInName::faceforward_3B3B3B)
+            {
+                return &BuiltInFunction::kFunction_faceforward_3B3B3B;
+            }
+            break;
+        }
+        case 0x2d23a287u:
+        {
+            if (name == BuiltInName::faceforward_1B1B1B)
+            {
+                return &BuiltInFunction::kFunction_faceforward_1B1B1B;
+            }
+            break;
+        }
+        case 0x2d2d4250u:
+        {
+            if (name == BuiltInName::faceforward_2B2B2B)
+            {
+                return &BuiltInFunction::kFunction_faceforward_2B2B2B;
+            }
+            break;
+        }
+        case 0x2d2fa1bau:
         {
             if (name == BuiltInName::faceforward_0B0B0B)
             {
@@ -18709,27 +18944,218 @@
             }
             break;
         }
-        case 0xfbaad71cu:
+        case 0x352938d0u:
         {
-            if (name.length() == 6 && name.beginsWith(BuiltInName::exp_))
+            if (name.beginsWith(BuiltInName::lessThanEqual))
             {
-                return &BuiltInFunction::kFunction_exp_2B;
+                ASSERT(name.length() == 18);
+                return &BuiltInFunction::kFunction_lessThanEqual_2C2C;
             }
             break;
         }
-        case 0xfcd80b67u:
+        case 0x35296680u:
         {
-            if (name.length() == 9 && name.beginsWith(BuiltInName::step_))
+            if (name.beginsWith(BuiltInName::lessThanEqual))
             {
-                return &BuiltInFunction::kFunction_step_0B2B;
+                ASSERT(name.length() == 18);
+                return &BuiltInFunction::kFunction_lessThanEqual_3C3C;
             }
             break;
         }
-        case 0xfdc4db42u:
+        case 0x352bbb54u:
         {
-            if (name.length() == 13 && name.beginsWith(BuiltInName::distance_))
+            if (name.beginsWith(BuiltInName::lessThanEqual))
             {
-                return &BuiltInFunction::kFunction_distance_1B1B;
+                ASSERT(name.length() == 18);
+                return &BuiltInFunction::kFunction_lessThanEqual_1B1B;
+            }
+            break;
+        }
+        case 0x352cacb6u:
+        {
+            if (name.beginsWith(BuiltInName::lessThanEqual))
+            {
+                ASSERT(name.length() == 18);
+                return &BuiltInFunction::kFunction_lessThanEqual_3B3B;
+            }
+            break;
+        }
+        case 0x352eff39u:
+        {
+            if (name.beginsWith(BuiltInName::lessThanEqual))
+            {
+                ASSERT(name.length() == 18);
+                return &BuiltInFunction::kFunction_lessThanEqual_1C1C;
+            }
+            break;
+        }
+        case 0x352f913eu:
+        {
+            if (name.beginsWith(BuiltInName::lessThanEqual))
+            {
+                ASSERT(name.length() == 18);
+                return &BuiltInFunction::kFunction_lessThanEqual_2B2B;
+            }
+            break;
+        }
+        case 0x39325152u:
+        {
+            if (name.beginsWith(BuiltInName::matrixCompMult))
+            {
+                ASSERT(name.length() == 19);
+                return &BuiltInFunction::kFunction_matrixCompMult_5B5B;
+            }
+            break;
+        }
+        case 0x393640c0u:
+        {
+            if (name.beginsWith(BuiltInName::matrixCompMult))
+            {
+                ASSERT(name.length() == 19);
+                return &BuiltInFunction::kFunction_matrixCompMult_FBFB;
+            }
+            break;
+        }
+        case 0x393ce233u:
+        {
+            if (name.beginsWith(BuiltInName::matrixCompMult))
+            {
+                ASSERT(name.length() == 19);
+                return &BuiltInFunction::kFunction_matrixCompMult_ABAB;
+            }
+            break;
+        }
+        case 0x41563f06u:
+        {
+            if (name.beginsWith(BuiltInName::greaterThanEqual))
+            {
+                ASSERT(name.length() == 21);
+                return &BuiltInFunction::kFunction_greaterThanEqual_2C2C;
+            }
+            break;
+        }
+        case 0x41598af3u:
+        {
+            if (name.beginsWith(BuiltInName::greaterThanEqual))
+            {
+                ASSERT(name.length() == 21);
+                return &BuiltInFunction::kFunction_greaterThanEqual_1B1B;
+            }
+            break;
+        }
+        case 0x415a0237u:
+        {
+            if (name.beginsWith(BuiltInName::greaterThanEqual))
+            {
+                ASSERT(name.length() == 21);
+                return &BuiltInFunction::kFunction_greaterThanEqual_3C3C;
+            }
+            break;
+        }
+        case 0x415bc9cbu:
+        {
+            if (name.beginsWith(BuiltInName::greaterThanEqual))
+            {
+                ASSERT(name.length() == 21);
+                return &BuiltInFunction::kFunction_greaterThanEqual_3B3B;
+            }
+            break;
+        }
+        case 0x415cecbdu:
+        {
+            if (name.beginsWith(BuiltInName::greaterThanEqual))
+            {
+                ASSERT(name.length() == 21);
+                return &BuiltInFunction::kFunction_greaterThanEqual_2B2B;
+            }
+            break;
+        }
+        case 0x415e3912u:
+        {
+            if (name.beginsWith(BuiltInName::greaterThanEqual))
+            {
+                ASSERT(name.length() == 21);
+                return &BuiltInFunction::kFunction_greaterThanEqual_1C1C;
+            }
+            break;
+        }
+        case 0xfcd5c51au:
+        {
+            if (name == BuiltInName::gl_DepthRange)
+            {
+                return mVar_gl_DepthRange;
+            }
+            break;
+        }
+        case 0xfd1554f1u:
+        {
+            if (name == BuiltInName::gl_MaxDrawBuffers)
+            {
+                return mVar_gl_MaxDrawBuffers;
+            }
+            break;
+        }
+        case 0xfd35ab48u:
+        {
+            if (name == BuiltInName::gl_MaxVertexAttribs)
+            {
+                return mVar_gl_MaxVertexAttribs;
+            }
+            break;
+        }
+        case 0xfd756b95u:
+        {
+            if (name == BuiltInName::gl_MaxTextureImageUnits)
+            {
+                return mVar_gl_MaxTextureImageUnits;
+            }
+            break;
+        }
+        case 0xfd7dc4d6u:
+        {
+            if (name == BuiltInName::gl_DepthRangeParameters)
+            {
+                return mVar_gl_DepthRangeParameters;
+            }
+            break;
+        }
+        case 0xfda6bc61u:
+        {
+            if (name == BuiltInName::gl_MaxVertexUniformVectors)
+            {
+                return mVar_gl_MaxVertexUniformVectors;
+            }
+            break;
+        }
+        case 0xfdc89746u:
+        {
+            if (name == BuiltInName::gl_MaxFragmentUniformVectors)
+            {
+                return mVar_gl_MaxFragmentUniformVectors;
+            }
+            break;
+        }
+        case 0xfdd42165u:
+        {
+            if (name == BuiltInName::gl_MaxVertexTextureImageUnits)
+            {
+                return mVar_gl_MaxVertexTextureImageUnits;
+            }
+            break;
+        }
+        case 0xfde3d71cu:
+        {
+            if (name == BuiltInName::gl_MaxDualSourceDrawBuffersEXT)
+            {
+                return mVar_gl_MaxDualSourceDrawBuffersEXT;
+            }
+            break;
+        }
+        case 0xfdf08397u:
+        {
+            if (name == BuiltInName::gl_MaxCombinedTextureImageUnits)
+            {
+                return mVar_gl_MaxCombinedTextureImageUnits;
             }
             break;
         }
@@ -18738,15 +19164,15 @@
     {
         switch (nameHash)
         {
-            case 0x6024403cu:
+            case 0xfcc997bcu:
             {
-                if (name == BuiltInName::gl_FrontFacing)
+                if (name == BuiltInName::gl_FragCoord)
                 {
-                    return &BuiltInVariable::kVar_gl_FrontFacing;
+                    return &BuiltInVariable::kVar_gl_FragCoord;
                 }
                 break;
             }
-            case 0x86d91640u:
+            case 0xfcd86bd1u:
             {
                 if (name == BuiltInName::gl_PointCoord)
                 {
@@ -18754,11 +19180,11 @@
                 }
                 break;
             }
-            case 0x99ac8d74u:
+            case 0xfce60278u:
             {
-                if (name == BuiltInName::gl_FragCoord)
+                if (name == BuiltInName::gl_FrontFacing)
                 {
-                    return &BuiltInVariable::kVar_gl_FragCoord;
+                    return &BuiltInVariable::kVar_gl_FrontFacing;
                 }
                 break;
             }
@@ -18768,7 +19194,7 @@
     {
         switch (nameHash)
         {
-            case 0x02c4bde0u:
+            case 0xfcb021abu:
             {
                 if (name == BuiltInName::gl_Position)
                 {
@@ -18776,7 +19202,7 @@
                 }
                 break;
             }
-            case 0x70b0d69au:
+            case 0xfcc70d97u:
             {
                 if (name == BuiltInName::gl_PointSize)
                 {
@@ -18793,156 +19219,16 @@
     const ImmutableString &name,
     int shaderVersion)
 {
-    uint32_t nameHash = name.hash32();
+    if (name.length() > 26)
+    {
+        return nullptr;
+    }
+    uint32_t nameHash = name.mangledNameHash();
     if (shaderVersion >= 310)
     {
         switch (nameHash)
         {
-            case 0x026813a3u:
-            {
-                if (name == BuiltInName::atomicAdd)
-                {
-                    return &UnmangledBuiltIns::UNDEFINED;
-                }
-                break;
-            }
-            case 0x1150d92eu:
-            {
-                if (name == BuiltInName::atomicMax)
-                {
-                    return &UnmangledBuiltIns::UNDEFINED;
-                }
-                break;
-            }
-            case 0x23647d3cu:
-            {
-                if (name == BuiltInName::atomicMin)
-                {
-                    return &UnmangledBuiltIns::UNDEFINED;
-                }
-                break;
-            }
-            case 0x2568837fu:
-            {
-                if (name == BuiltInName::bitCount)
-                {
-                    return &UnmangledBuiltIns::UNDEFINED;
-                }
-                break;
-            }
-            case 0x310cbdf3u:
-            {
-                if (name == BuiltInName::findLSB)
-                {
-                    return &UnmangledBuiltIns::UNDEFINED;
-                }
-                break;
-            }
-            case 0x33b8cbf8u:
-            {
-                if (name == BuiltInName::unpackUnorm4x8)
-                {
-                    return &UnmangledBuiltIns::UNDEFINED;
-                }
-                break;
-            }
-            case 0x3815d075u:
-            {
-                if (name == BuiltInName::memoryBarrier)
-                {
-                    return &UnmangledBuiltIns::UNDEFINED;
-                }
-                break;
-            }
-            case 0x44a612d1u:
-            {
-                if (name == BuiltInName::texelFetch)
-                {
-                    return &UnmangledBuiltIns::UNDEFINED;
-                }
-                break;
-            }
-            case 0x493c8c52u:
-            {
-                if (name == BuiltInName::imageLoad)
-                {
-                    return &UnmangledBuiltIns::UNDEFINED;
-                }
-                break;
-            }
-            case 0x4d4a19b5u:
-            {
-                if (name == BuiltInName::packSnorm4x8)
-                {
-                    return &UnmangledBuiltIns::UNDEFINED;
-                }
-                break;
-            }
-            case 0x4dafa4aau:
-            {
-                if (name == BuiltInName::memoryBarrierImage)
-                {
-                    return &UnmangledBuiltIns::UNDEFINED;
-                }
-                break;
-            }
-            case 0x4f0e8e9bu:
-            {
-                if (name == BuiltInName::imageStore)
-                {
-                    return &UnmangledBuiltIns::UNDEFINED;
-                }
-                break;
-            }
-            case 0x55fde64fu:
-            {
-                if (name == BuiltInName::imulExtended)
-                {
-                    return &UnmangledBuiltIns::UNDEFINED;
-                }
-                break;
-            }
-            case 0x666490f9u:
-            {
-                if (name == BuiltInName::atomicCounterIncrement)
-                {
-                    return &UnmangledBuiltIns::UNDEFINED;
-                }
-                break;
-            }
-            case 0x6ef2b1c3u:
-            {
-                if (name == BuiltInName::imageSize)
-                {
-                    return &UnmangledBuiltIns::UNDEFINED;
-                }
-                break;
-            }
-            case 0x6fdf21cbu:
-            {
-                if (name == BuiltInName::memoryBarrierBuffer)
-                {
-                    return &UnmangledBuiltIns::UNDEFINED;
-                }
-                break;
-            }
-            case 0x7ba9e270u:
-            {
-                if (name == BuiltInName::findMSB)
-                {
-                    return &UnmangledBuiltIns::UNDEFINED;
-                }
-                break;
-            }
-            case 0x7c07f1eeu:
-            {
-                if (name == BuiltInName::unpackSnorm4x8)
-                {
-                    return &UnmangledBuiltIns::UNDEFINED;
-                }
-                break;
-            }
-            case 0x8c63f160u:
+            case 0xfc58c75fu:
             {
                 if (name == BuiltInName::ldexp)
                 {
@@ -18950,7 +19236,7 @@
                 }
                 break;
             }
-            case 0xa30cdef4u:
+            case 0xfc5a3e39u:
             {
                 if (name == BuiltInName::frexp)
                 {
@@ -18958,79 +19244,31 @@
                 }
                 break;
             }
-            case 0xa3a03233u:
+            case 0xfc731d38u:
             {
-                if (name == BuiltInName::textureGather)
+                if (name == BuiltInName::findLSB)
                 {
                     return &UnmangledBuiltIns::UNDEFINED;
                 }
                 break;
             }
-            case 0xae0f4e53u:
+            case 0xfc77b8eeu:
             {
-                if (name == BuiltInName::packUnorm4x8)
+                if (name == BuiltInName::findMSB)
                 {
                     return &UnmangledBuiltIns::UNDEFINED;
                 }
                 break;
             }
-            case 0xb24338c0u:
+            case 0xfc8255f7u:
             {
-                if (name == BuiltInName::textureGatherOffset)
+                if (name == BuiltInName::bitCount)
                 {
                     return &UnmangledBuiltIns::UNDEFINED;
                 }
                 break;
             }
-            case 0xb5e7ff54u:
-            {
-                if (name == BuiltInName::memoryBarrierAtomicCounter)
-                {
-                    return &UnmangledBuiltIns::UNDEFINED;
-                }
-                break;
-            }
-            case 0xb82cbfe3u:
-            {
-                if (name == BuiltInName::usubBorrow)
-                {
-                    return &UnmangledBuiltIns::UNDEFINED;
-                }
-                break;
-            }
-            case 0xb94d85ddu:
-            {
-                if (name == BuiltInName::atomicExchange)
-                {
-                    return &UnmangledBuiltIns::UNDEFINED;
-                }
-                break;
-            }
-            case 0xbfd854b5u:
-            {
-                if (name == BuiltInName::atomicXor)
-                {
-                    return &UnmangledBuiltIns::UNDEFINED;
-                }
-                break;
-            }
-            case 0xc1e02fa4u:
-            {
-                if (name == BuiltInName::atomicCounter)
-                {
-                    return &UnmangledBuiltIns::UNDEFINED;
-                }
-                break;
-            }
-            case 0xca0f40eeu:
-            {
-                if (name == BuiltInName::uaddCarry)
-                {
-                    return &UnmangledBuiltIns::UNDEFINED;
-                }
-                break;
-            }
-            case 0xd2b1c53du:
+            case 0xfc8d2e21u:
             {
                 if (name == BuiltInName::atomicOr)
                 {
@@ -19038,23 +19276,63 @@
                 }
                 break;
             }
-            case 0xd651bc5du:
+            case 0xfc902522u:
             {
-                if (name == BuiltInName::atomicCounterDecrement)
+                if (name == BuiltInName::atomicAdd)
                 {
                     return &UnmangledBuiltIns::UNDEFINED;
                 }
                 break;
             }
-            case 0xe5c5029au:
+            case 0xfc911c23u:
             {
-                if (name == BuiltInName::bitfieldReverse)
+                if (name == BuiltInName::atomicMax)
                 {
                     return &UnmangledBuiltIns::UNDEFINED;
                 }
                 break;
             }
-            case 0xe676f219u:
+            case 0xfc923b7bu:
+            {
+                if (name == BuiltInName::atomicMin)
+                {
+                    return &UnmangledBuiltIns::UNDEFINED;
+                }
+                break;
+            }
+            case 0xfc949f9au:
+            {
+                if (name == BuiltInName::imageLoad)
+                {
+                    return &UnmangledBuiltIns::UNDEFINED;
+                }
+                break;
+            }
+            case 0xfc96eee8u:
+            {
+                if (name == BuiltInName::imageSize)
+                {
+                    return &UnmangledBuiltIns::UNDEFINED;
+                }
+                break;
+            }
+            case 0xfc9bf930u:
+            {
+                if (name == BuiltInName::atomicXor)
+                {
+                    return &UnmangledBuiltIns::UNDEFINED;
+                }
+                break;
+            }
+            case 0xfc9ca01au:
+            {
+                if (name == BuiltInName::uaddCarry)
+                {
+                    return &UnmangledBuiltIns::UNDEFINED;
+                }
+                break;
+            }
+            case 0xfc9e6576u:
             {
                 if (name == BuiltInName::atomicAnd)
                 {
@@ -19062,7 +19340,55 @@
                 }
                 break;
             }
-            case 0xebfef903u:
+            case 0xfca448b0u:
+            {
+                if (name == BuiltInName::texelFetch)
+                {
+                    return &UnmangledBuiltIns::UNDEFINED;
+                }
+                break;
+            }
+            case 0xfca4fe73u:
+            {
+                if (name == BuiltInName::imageStore)
+                {
+                    return &UnmangledBuiltIns::UNDEFINED;
+                }
+                break;
+            }
+            case 0xfcab8d28u:
+            {
+                if (name == BuiltInName::usubBorrow)
+                {
+                    return &UnmangledBuiltIns::UNDEFINED;
+                }
+                break;
+            }
+            case 0xfcc4dd14u:
+            {
+                if (name == BuiltInName::packSnorm4x8)
+                {
+                    return &UnmangledBuiltIns::UNDEFINED;
+                }
+                break;
+            }
+            case 0xfcc55991u:
+            {
+                if (name == BuiltInName::imulExtended)
+                {
+                    return &UnmangledBuiltIns::UNDEFINED;
+                }
+                break;
+            }
+            case 0xfccaeea7u:
+            {
+                if (name == BuiltInName::packUnorm4x8)
+                {
+                    return &UnmangledBuiltIns::UNDEFINED;
+                }
+                break;
+            }
+            case 0xfcceb6ecu:
             {
                 if (name == BuiltInName::umulExtended)
                 {
@@ -19070,7 +19396,55 @@
                 }
                 break;
             }
-            case 0xf3bd9210u:
+            case 0xfcd38128u:
+            {
+                if (name == BuiltInName::memoryBarrier)
+                {
+                    return &UnmangledBuiltIns::UNDEFINED;
+                }
+                break;
+            }
+            case 0xfcda3830u:
+            {
+                if (name == BuiltInName::textureGather)
+                {
+                    return &UnmangledBuiltIns::UNDEFINED;
+                }
+                break;
+            }
+            case 0xfcdc11a6u:
+            {
+                if (name == BuiltInName::atomicCounter)
+                {
+                    return &UnmangledBuiltIns::UNDEFINED;
+                }
+                break;
+            }
+            case 0xfce33074u:
+            {
+                if (name == BuiltInName::unpackUnorm4x8)
+                {
+                    return &UnmangledBuiltIns::UNDEFINED;
+                }
+                break;
+            }
+            case 0xfce7c191u:
+            {
+                if (name == BuiltInName::unpackSnorm4x8)
+                {
+                    return &UnmangledBuiltIns::UNDEFINED;
+                }
+                break;
+            }
+            case 0xfceb9105u:
+            {
+                if (name == BuiltInName::atomicExchange)
+                {
+                    return &UnmangledBuiltIns::UNDEFINED;
+                }
+                break;
+            }
+            case 0xfcef39c9u:
             {
                 if (name == BuiltInName::atomicCompSwap)
                 {
@@ -19078,7 +19452,23 @@
                 }
                 break;
             }
-            case 0xf50788fdu:
+            case 0xfcef8089u:
+            {
+                if (name == BuiltInName::bitfieldInsert)
+                {
+                    return &UnmangledBuiltIns::UNDEFINED;
+                }
+                break;
+            }
+            case 0xfcfe5ecau:
+            {
+                if (name == BuiltInName::bitfieldReverse)
+                {
+                    return &UnmangledBuiltIns::UNDEFINED;
+                }
+                break;
+            }
+            case 0xfcff5885u:
             {
                 if (name == BuiltInName::bitfieldExtract)
                 {
@@ -19086,9 +19476,49 @@
                 }
                 break;
             }
-            case 0xf81301b9u:
+            case 0xfd24de50u:
             {
-                if (name == BuiltInName::bitfieldInsert)
+                if (name == BuiltInName::memoryBarrierImage)
+                {
+                    return &UnmangledBuiltIns::UNDEFINED;
+                }
+                break;
+            }
+            case 0xfd36fc39u:
+            {
+                if (name == BuiltInName::memoryBarrierBuffer)
+                {
+                    return &UnmangledBuiltIns::UNDEFINED;
+                }
+                break;
+            }
+            case 0xfd3b2cf3u:
+            {
+                if (name == BuiltInName::textureGatherOffset)
+                {
+                    return &UnmangledBuiltIns::UNDEFINED;
+                }
+                break;
+            }
+            case 0xfd6666b0u:
+            {
+                if (name == BuiltInName::atomicCounterIncrement)
+                {
+                    return &UnmangledBuiltIns::UNDEFINED;
+                }
+                break;
+            }
+            case 0xfd6d6946u:
+            {
+                if (name == BuiltInName::atomicCounterDecrement)
+                {
+                    return &UnmangledBuiltIns::UNDEFINED;
+                }
+                break;
+            }
+            case 0xfdab512bu:
+            {
+                if (name == BuiltInName::memoryBarrierAtomicCounter)
                 {
                     return &UnmangledBuiltIns::UNDEFINED;
                 }
@@ -19099,7 +19529,7 @@
         {
             switch (nameHash)
             {
-                case 0x3d693fa0u:
+                case 0xfc73d933u:
                 {
                     if (name == BuiltInName::barrier)
                     {
@@ -19107,7 +19537,7 @@
                     }
                     break;
                 }
-                case 0x7afaf16eu:
+                case 0xfd27aec1u:
                 {
                     if (name == BuiltInName::groupMemoryBarrier)
                     {
@@ -19115,7 +19545,7 @@
                     }
                     break;
                 }
-                case 0xe85fa9e4u:
+                case 0xfd3e8c1eu:
                 {
                     if (name == BuiltInName::memoryBarrierShared)
                     {
@@ -19129,17 +19559,17 @@
         {
             switch (nameHash)
             {
-                case 0xb413b257u:
+                case 0xfcab5e6cu:
                 {
-                    if (name == BuiltInName::EndPrimitive)
+                    if (name == BuiltInName::EmitVertex)
                     {
                         return &UnmangledBuiltIns::EXT_geometry_shader;
                     }
                     break;
                 }
-                case 0xb5d34358u:
+                case 0xfccb436cu:
                 {
-                    if (name == BuiltInName::EmitVertex)
+                    if (name == BuiltInName::EndPrimitive)
                     {
                         return &UnmangledBuiltIns::EXT_geometry_shader;
                     }
@@ -19152,119 +19582,7 @@
     {
         switch (nameHash)
         {
-            case 0x023feff3u:
-            {
-                if (name == BuiltInName::textureLod)
-                {
-                    return &UnmangledBuiltIns::UNDEFINED;
-                }
-                break;
-            }
-            case 0x04644cdeu:
-            {
-                if (name == BuiltInName::greaterThan)
-                {
-                    return &UnmangledBuiltIns::UNDEFINED;
-                }
-                break;
-            }
-            case 0x0491f109u:
-            {
-                if (name == BuiltInName::lessThanEqual)
-                {
-                    return &UnmangledBuiltIns::UNDEFINED;
-                }
-                break;
-            }
-            case 0x05fc75c3u:
-            {
-                if (name == BuiltInName::lessThan)
-                {
-                    return &UnmangledBuiltIns::UNDEFINED;
-                }
-                break;
-            }
-            case 0x07275075u:
-            {
-                if (name == BuiltInName::atanh)
-                {
-                    return &UnmangledBuiltIns::UNDEFINED;
-                }
-                break;
-            }
-            case 0x092855d0u:
-            {
-                if (name == BuiltInName::tanh)
-                {
-                    return &UnmangledBuiltIns::UNDEFINED;
-                }
-                break;
-            }
-            case 0x0cbc8ba4u:
-            {
-                if (name == BuiltInName::sign)
-                {
-                    return &UnmangledBuiltIns::UNDEFINED;
-                }
-                break;
-            }
-            case 0x10d2583fu:
-            {
-                if (name == BuiltInName::sinh)
-                {
-                    return &UnmangledBuiltIns::UNDEFINED;
-                }
-                break;
-            }
-            case 0x12b2640eu:
-            {
-                if (name == BuiltInName::texelFetchOffset)
-                {
-                    return &UnmangledBuiltIns::UNDEFINED;
-                }
-                break;
-            }
-            case 0x1535b7a5u:
-            {
-                if (name == BuiltInName::textureProjLodOffset)
-                {
-                    return &UnmangledBuiltIns::UNDEFINED;
-                }
-                break;
-            }
-            case 0x2485bbbeu:
-            {
-                if (name == BuiltInName::notEqual)
-                {
-                    return &UnmangledBuiltIns::UNDEFINED;
-                }
-                break;
-            }
-            case 0x25680679u:
-            {
-                if (name == BuiltInName::unpackUnorm2x16)
-                {
-                    return &UnmangledBuiltIns::UNDEFINED;
-                }
-                break;
-            }
-            case 0x26ac11d8u:
-            {
-                if (name == BuiltInName::isinf)
-                {
-                    return &UnmangledBuiltIns::UNDEFINED;
-                }
-                break;
-            }
-            case 0x28cedbc3u:
-            {
-                if (name == BuiltInName::unpackHalf2x16)
-                {
-                    return &UnmangledBuiltIns::UNDEFINED;
-                }
-                break;
-            }
-            case 0x2a48023bu:
+            case 0xfc32a6bbu:
             {
                 if (name == BuiltInName::abs)
                 {
@@ -19272,255 +19590,7 @@
                 }
                 break;
             }
-            case 0x2f7508efu:
-            {
-                if (name == BuiltInName::equal)
-                {
-                    return &UnmangledBuiltIns::UNDEFINED;
-                }
-                break;
-            }
-            case 0x33a56e6cu:
-            {
-                if (name == BuiltInName::textureGrad)
-                {
-                    return &UnmangledBuiltIns::UNDEFINED;
-                }
-                break;
-            }
-            case 0x39d34980u:
-            {
-                if (name == BuiltInName::textureLodOffset)
-                {
-                    return &UnmangledBuiltIns::UNDEFINED;
-                }
-                break;
-            }
-            case 0x3c6468f4u:
-            {
-                if (name == BuiltInName::texture)
-                {
-                    return &UnmangledBuiltIns::UNDEFINED;
-                }
-                break;
-            }
-            case 0x4326f80au:
-            {
-                if (name == BuiltInName::packSnorm2x16)
-                {
-                    return &UnmangledBuiltIns::UNDEFINED;
-                }
-                break;
-            }
-            case 0x44a612d1u:
-            {
-                if (name == BuiltInName::texelFetch)
-                {
-                    return &UnmangledBuiltIns::UNDEFINED;
-                }
-                break;
-            }
-            case 0x4f0be23bu:
-            {
-                if (name == BuiltInName::round)
-                {
-                    return &UnmangledBuiltIns::UNDEFINED;
-                }
-                break;
-            }
-            case 0x5bd36438u:
-            {
-                if (name == BuiltInName::packHalf2x16)
-                {
-                    return &UnmangledBuiltIns::UNDEFINED;
-                }
-                break;
-            }
-            case 0x6b0ca057u:
-            {
-                if (name == BuiltInName::textureGradOffset)
-                {
-                    return &UnmangledBuiltIns::UNDEFINED;
-                }
-                break;
-            }
-            case 0x6e02ba1bu:
-            {
-                if (name == BuiltInName::unpackSnorm2x16)
-                {
-                    return &UnmangledBuiltIns::UNDEFINED;
-                }
-                break;
-            }
-            case 0x6ff78d04u:
-            {
-                if (name == BuiltInName::packUnorm2x16)
-                {
-                    return &UnmangledBuiltIns::UNDEFINED;
-                }
-                break;
-            }
-            case 0x767e36c0u:
-            {
-                if (name == BuiltInName::determinant)
-                {
-                    return &UnmangledBuiltIns::UNDEFINED;
-                }
-                break;
-            }
-            case 0x7bf8de3bu:
-            {
-                if (name == BuiltInName::textureProjGrad)
-                {
-                    return &UnmangledBuiltIns::UNDEFINED;
-                }
-                break;
-            }
-            case 0x88c917cfu:
-            {
-                if (name == BuiltInName::textureOffset)
-                {
-                    return &UnmangledBuiltIns::UNDEFINED;
-                }
-                break;
-            }
-            case 0x8b45ed38u:
-            {
-                if (name == BuiltInName::textureProjGradOffset)
-                {
-                    return &UnmangledBuiltIns::UNDEFINED;
-                }
-                break;
-            }
-            case 0x8f8617abu:
-            {
-                if (name == BuiltInName::outerProduct)
-                {
-                    return &UnmangledBuiltIns::UNDEFINED;
-                }
-                break;
-            }
-            case 0x94b08f7fu:
-            {
-                if (name == BuiltInName::textureProj)
-                {
-                    return &UnmangledBuiltIns::UNDEFINED;
-                }
-                break;
-            }
-            case 0xa4639127u:
-            {
-                if (name == BuiltInName::roundEven)
-                {
-                    return &UnmangledBuiltIns::UNDEFINED;
-                }
-                break;
-            }
-            case 0xa5212424u:
-            {
-                if (name == BuiltInName::textureProjOffset)
-                {
-                    return &UnmangledBuiltIns::UNDEFINED;
-                }
-                break;
-            }
-            case 0xa6789406u:
-            {
-                if (name == BuiltInName::rgb_2_yuv)
-                {
-                    return &UnmangledBuiltIns::EXT_YUV_target;
-                }
-                break;
-            }
-            case 0xa82efcbcu:
-            {
-                if (name == BuiltInName::clamp)
-                {
-                    return &UnmangledBuiltIns::UNDEFINED;
-                }
-                break;
-            }
-            case 0xb15a3cc9u:
-            {
-                if (name == BuiltInName::floatBitsToInt)
-                {
-                    return &UnmangledBuiltIns::UNDEFINED;
-                }
-                break;
-            }
-            case 0xb1b3c06au:
-            {
-                if (name == BuiltInName::isnan)
-                {
-                    return &UnmangledBuiltIns::UNDEFINED;
-                }
-                break;
-            }
-            case 0xb201f283u:
-            {
-                if (name == BuiltInName::inverse)
-                {
-                    return &UnmangledBuiltIns::UNDEFINED;
-                }
-                break;
-            }
-            case 0xb755b482u:
-            {
-                if (name == BuiltInName::textureProjLod)
-                {
-                    return &UnmangledBuiltIns::UNDEFINED;
-                }
-                break;
-            }
-            case 0xbab19e4au:
-            {
-                if (name == BuiltInName::asinh)
-                {
-                    return &UnmangledBuiltIns::UNDEFINED;
-                }
-                break;
-            }
-            case 0xc03183c0u:
-            {
-                if (name == BuiltInName::transpose)
-                {
-                    return &UnmangledBuiltIns::UNDEFINED;
-                }
-                break;
-            }
-            case 0xc29ffa7eu:
-            {
-                if (name == BuiltInName::uintBitsToFloat)
-                {
-                    return &UnmangledBuiltIns::UNDEFINED;
-                }
-                break;
-            }
-            case 0xc73e788du:
-            {
-                if (name == BuiltInName::textureSize)
-                {
-                    return &UnmangledBuiltIns::UNDEFINED;
-                }
-                break;
-            }
-            case 0xc7818fa2u:
-            {
-                if (name == BuiltInName::yuv_2_rgb)
-                {
-                    return &UnmangledBuiltIns::EXT_YUV_target;
-                }
-                break;
-            }
-            case 0xc8575388u:
-            {
-                if (name == BuiltInName::floatBitsToUint)
-                {
-                    return &UnmangledBuiltIns::UNDEFINED;
-                }
-                break;
-            }
-            case 0xc98f4557u:
+            case 0xfc3c9da3u:
             {
                 if (name == BuiltInName::min)
                 {
@@ -19528,23 +19598,7 @@
                 }
                 break;
             }
-            case 0xd55e61e5u:
-            {
-                if (name == BuiltInName::trunc)
-                {
-                    return &UnmangledBuiltIns::UNDEFINED;
-                }
-                break;
-            }
-            case 0xd5f05125u:
-            {
-                if (name == BuiltInName::matrixCompMult)
-                {
-                    return &UnmangledBuiltIns::UNDEFINED;
-                }
-                break;
-            }
-            case 0xd78f5b61u:
+            case 0xfc3d7394u:
             {
                 if (name == BuiltInName::mix)
                 {
@@ -19552,7 +19606,7 @@
                 }
                 break;
             }
-            case 0xd7a2e319u:
+            case 0xfc3d7937u:
             {
                 if (name == BuiltInName::max)
                 {
@@ -19560,7 +19614,31 @@
                 }
                 break;
             }
-            case 0xeb6ede7fu:
+            case 0xfc409755u:
+            {
+                if (name == BuiltInName::tanh)
+                {
+                    return &UnmangledBuiltIns::UNDEFINED;
+                }
+                break;
+            }
+            case 0xfc40c06cu:
+            {
+                if (name == BuiltInName::sign)
+                {
+                    return &UnmangledBuiltIns::UNDEFINED;
+                }
+                break;
+            }
+            case 0xfc41051au:
+            {
+                if (name == BuiltInName::sinh)
+                {
+                    return &UnmangledBuiltIns::UNDEFINED;
+                }
+                break;
+            }
+            case 0xfc4eb892u:
             {
                 if (name == BuiltInName::modf)
                 {
@@ -19568,23 +19646,7 @@
                 }
                 break;
             }
-            case 0xed7dc722u:
-            {
-                if (name == BuiltInName::greaterThanEqual)
-                {
-                    return &UnmangledBuiltIns::UNDEFINED;
-                }
-                break;
-            }
-            case 0xedf2c855u:
-            {
-                if (name == BuiltInName::acosh)
-                {
-                    return &UnmangledBuiltIns::UNDEFINED;
-                }
-                break;
-            }
-            case 0xf45c461cu:
+            case 0xfc4f43d8u:
             {
                 if (name == BuiltInName::cosh)
                 {
@@ -19592,7 +19654,279 @@
                 }
                 break;
             }
-            case 0xfc501e17u:
+            case 0xfc507200u:
+            {
+                if (name == BuiltInName::atanh)
+                {
+                    return &UnmangledBuiltIns::UNDEFINED;
+                }
+                break;
+            }
+            case 0xfc526b19u:
+            {
+                if (name == BuiltInName::isinf)
+                {
+                    return &UnmangledBuiltIns::UNDEFINED;
+                }
+                break;
+            }
+            case 0xfc52ffbfu:
+            {
+                if (name == BuiltInName::equal)
+                {
+                    return &UnmangledBuiltIns::UNDEFINED;
+                }
+                break;
+            }
+            case 0xfc54f285u:
+            {
+                if (name == BuiltInName::round)
+                {
+                    return &UnmangledBuiltIns::UNDEFINED;
+                }
+                break;
+            }
+            case 0xfc5a8e53u:
+            {
+                if (name == BuiltInName::clamp)
+                {
+                    return &UnmangledBuiltIns::UNDEFINED;
+                }
+                break;
+            }
+            case 0xfc5b1b56u:
+            {
+                if (name == BuiltInName::isnan)
+                {
+                    return &UnmangledBuiltIns::UNDEFINED;
+                }
+                break;
+            }
+            case 0xfc5ba553u:
+            {
+                if (name == BuiltInName::asinh)
+                {
+                    return &UnmangledBuiltIns::UNDEFINED;
+                }
+                break;
+            }
+            case 0xfc5d5403u:
+            {
+                if (name == BuiltInName::trunc)
+                {
+                    return &UnmangledBuiltIns::UNDEFINED;
+                }
+                break;
+            }
+            case 0xfc5ed779u:
+            {
+                if (name == BuiltInName::acosh)
+                {
+                    return &UnmangledBuiltIns::UNDEFINED;
+                }
+                break;
+            }
+            case 0xfc73ceb2u:
+            {
+                if (name == BuiltInName::texture)
+                {
+                    return &UnmangledBuiltIns::UNDEFINED;
+                }
+                break;
+            }
+            case 0xfc7b229cu:
+            {
+                if (name == BuiltInName::inverse)
+                {
+                    return &UnmangledBuiltIns::UNDEFINED;
+                }
+                break;
+            }
+            case 0xfc805a04u:
+            {
+                if (name == BuiltInName::lessThan)
+                {
+                    return &UnmangledBuiltIns::UNDEFINED;
+                }
+                break;
+            }
+            case 0xfc8243e5u:
+            {
+                if (name == BuiltInName::notEqual)
+                {
+                    return &UnmangledBuiltIns::UNDEFINED;
+                }
+                break;
+            }
+            case 0xfc9a471eu:
+            {
+                if (name == BuiltInName::roundEven)
+                {
+                    return &UnmangledBuiltIns::UNDEFINED;
+                }
+                break;
+            }
+            case 0xfc9a638fu:
+            {
+                if (name == BuiltInName::rgb_2_yuv)
+                {
+                    return &UnmangledBuiltIns::EXT_YUV_target;
+                }
+                break;
+            }
+            case 0xfc9c00d8u:
+            {
+                if (name == BuiltInName::transpose)
+                {
+                    return &UnmangledBuiltIns::UNDEFINED;
+                }
+                break;
+            }
+            case 0xfc9c77bau:
+            {
+                if (name == BuiltInName::yuv_2_rgb)
+                {
+                    return &UnmangledBuiltIns::EXT_YUV_target;
+                }
+                break;
+            }
+            case 0xfca02c0du:
+            {
+                if (name == BuiltInName::textureLod)
+                {
+                    return &UnmangledBuiltIns::UNDEFINED;
+                }
+                break;
+            }
+            case 0xfca448b0u:
+            {
+                if (name == BuiltInName::texelFetch)
+                {
+                    return &UnmangledBuiltIns::UNDEFINED;
+                }
+                break;
+            }
+            case 0xfcb04a9au:
+            {
+                if (name == BuiltInName::greaterThan)
+                {
+                    return &UnmangledBuiltIns::UNDEFINED;
+                }
+                break;
+            }
+            case 0xfcb3343au:
+            {
+                if (name == BuiltInName::textureGrad)
+                {
+                    return &UnmangledBuiltIns::UNDEFINED;
+                }
+                break;
+            }
+            case 0xfcb76123u:
+            {
+                if (name == BuiltInName::determinant)
+                {
+                    return &UnmangledBuiltIns::UNDEFINED;
+                }
+                break;
+            }
+            case 0xfcb94477u:
+            {
+                if (name == BuiltInName::textureProj)
+                {
+                    return &UnmangledBuiltIns::UNDEFINED;
+                }
+                break;
+            }
+            case 0xfcbc7b6au:
+            {
+                if (name == BuiltInName::textureSize)
+                {
+                    return &UnmangledBuiltIns::UNDEFINED;
+                }
+                break;
+            }
+            case 0xfcc5b90eu:
+            {
+                if (name == BuiltInName::packHalf2x16)
+                {
+                    return &UnmangledBuiltIns::UNDEFINED;
+                }
+                break;
+            }
+            case 0xfcc8ffcau:
+            {
+                if (name == BuiltInName::outerProduct)
+                {
+                    return &UnmangledBuiltIns::UNDEFINED;
+                }
+                break;
+            }
+            case 0xfcd04816u:
+            {
+                if (name == BuiltInName::lessThanEqual)
+                {
+                    return &UnmangledBuiltIns::UNDEFINED;
+                }
+                break;
+            }
+            case 0xfcd43a65u:
+            {
+                if (name == BuiltInName::packSnorm2x16)
+                {
+                    return &UnmangledBuiltIns::UNDEFINED;
+                }
+                break;
+            }
+            case 0xfcd6f27cu:
+            {
+                if (name == BuiltInName::packUnorm2x16)
+                {
+                    return &UnmangledBuiltIns::UNDEFINED;
+                }
+                break;
+            }
+            case 0xfcd88b5eu:
+            {
+                if (name == BuiltInName::textureOffset)
+                {
+                    return &UnmangledBuiltIns::UNDEFINED;
+                }
+                break;
+            }
+            case 0xfce2872eu:
+            {
+                if (name == BuiltInName::unpackHalf2x16)
+                {
+                    return &UnmangledBuiltIns::UNDEFINED;
+                }
+                break;
+            }
+            case 0xfceb196au:
+            {
+                if (name == BuiltInName::floatBitsToInt)
+                {
+                    return &UnmangledBuiltIns::UNDEFINED;
+                }
+                break;
+            }
+            case 0xfceb71d9u:
+            {
+                if (name == BuiltInName::textureProjLod)
+                {
+                    return &UnmangledBuiltIns::UNDEFINED;
+                }
+                break;
+            }
+            case 0xfced5e20u:
+            {
+                if (name == BuiltInName::matrixCompMult)
+                {
+                    return &UnmangledBuiltIns::UNDEFINED;
+                }
+                break;
+            }
+            case 0xfcefcb16u:
             {
                 if (name == BuiltInName::intBitsToFloat)
                 {
@@ -19600,20 +19934,108 @@
                 }
                 break;
             }
+            case 0xfcf250f9u:
+            {
+                if (name == BuiltInName::unpackUnorm2x16)
+                {
+                    return &UnmangledBuiltIns::UNDEFINED;
+                }
+                break;
+            }
+            case 0xfcf6ea30u:
+            {
+                if (name == BuiltInName::unpackSnorm2x16)
+                {
+                    return &UnmangledBuiltIns::UNDEFINED;
+                }
+                break;
+            }
+            case 0xfcf7b1b6u:
+            {
+                if (name == BuiltInName::textureProjGrad)
+                {
+                    return &UnmangledBuiltIns::UNDEFINED;
+                }
+                break;
+            }
+            case 0xfcfc2381u:
+            {
+                if (name == BuiltInName::uintBitsToFloat)
+                {
+                    return &UnmangledBuiltIns::UNDEFINED;
+                }
+                break;
+            }
+            case 0xfcfc86fdu:
+            {
+                if (name == BuiltInName::floatBitsToUint)
+                {
+                    return &UnmangledBuiltIns::UNDEFINED;
+                }
+                break;
+            }
+            case 0xfd012f28u:
+            {
+                if (name == BuiltInName::texelFetchOffset)
+                {
+                    return &UnmangledBuiltIns::UNDEFINED;
+                }
+                break;
+            }
+            case 0xfd0394b4u:
+            {
+                if (name == BuiltInName::textureLodOffset)
+                {
+                    return &UnmangledBuiltIns::UNDEFINED;
+                }
+                break;
+            }
+            case 0xfd0ed0feu:
+            {
+                if (name == BuiltInName::greaterThanEqual)
+                {
+                    return &UnmangledBuiltIns::UNDEFINED;
+                }
+                break;
+            }
+            case 0xfd16b09du:
+            {
+                if (name == BuiltInName::textureGradOffset)
+                {
+                    return &UnmangledBuiltIns::UNDEFINED;
+                }
+                break;
+            }
+            case 0xfd1a5636u:
+            {
+                if (name == BuiltInName::textureProjOffset)
+                {
+                    return &UnmangledBuiltIns::UNDEFINED;
+                }
+                break;
+            }
+            case 0xfd4154feu:
+            {
+                if (name == BuiltInName::textureProjLodOffset)
+                {
+                    return &UnmangledBuiltIns::UNDEFINED;
+                }
+                break;
+            }
+            case 0xfd58b966u:
+            {
+                if (name == BuiltInName::textureProjGradOffset)
+                {
+                    return &UnmangledBuiltIns::UNDEFINED;
+                }
+                break;
+            }
         }
         if (mShaderType == GL_FRAGMENT_SHADER)
         {
             switch (nameHash)
             {
-                case 0x4b6e55d3u:
-                {
-                    if (name == BuiltInName::fwidth)
-                    {
-                        return &UnmangledBuiltIns::UNDEFINED;
-                    }
-                    break;
-                }
-                case 0xc78598f8u:
+                case 0xfc4c70a1u:
                 {
                     if (name == BuiltInName::dFdy)
                     {
@@ -19621,7 +20043,7 @@
                     }
                     break;
                 }
-                case 0xc8859a8bu:
+                case 0xfc4c82d2u:
                 {
                     if (name == BuiltInName::dFdx)
                     {
@@ -19629,6 +20051,14 @@
                     }
                     break;
                 }
+                case 0xfc64b336u:
+                {
+                    if (name == BuiltInName::fwidth)
+                    {
+                        return &UnmangledBuiltIns::UNDEFINED;
+                    }
+                    break;
+                }
             }
         }
     }
@@ -19636,7 +20066,7 @@
     {
         switch (nameHash)
         {
-            case 0x18a9c042u:
+            case 0xfc918adeu:
             {
                 if (name == BuiltInName::texture2D)
                 {
@@ -19644,15 +20074,15 @@
                 }
                 break;
             }
-            case 0x1d18f29cu:
+            case 0xfcbfe6dbu:
             {
-                if (name == BuiltInName::textureCubeGradEXT)
+                if (name == BuiltInName::textureCube)
                 {
-                    return &UnmangledBuiltIns::EXT_shader_texture_lod;
+                    return &UnmangledBuiltIns::UNDEFINED;
                 }
                 break;
             }
-            case 0x3d4abf10u:
+            case 0xfcd3dbbbu:
             {
                 if (name == BuiltInName::texture2DRect)
                 {
@@ -19660,23 +20090,7 @@
                 }
                 break;
             }
-            case 0x4040698cu:
-            {
-                if (name == BuiltInName::texture2DProjGradEXT)
-                {
-                    return &UnmangledBuiltIns::EXT_shader_texture_lod;
-                }
-                break;
-            }
-            case 0x6dc0e8e3u:
-            {
-                if (name == BuiltInName::texture2DRectProj)
-                {
-                    return &UnmangledBuiltIns::ARB_texture_rectangle;
-                }
-                break;
-            }
-            case 0xc7cb8969u:
+            case 0xfcdc75d1u:
             {
                 if (name == BuiltInName::texture2DProj)
                 {
@@ -19684,7 +20098,7 @@
                 }
                 break;
             }
-            case 0xd1836639u:
+            case 0xfd0d1e0fu:
             {
                 if (name == BuiltInName::texture2DGradEXT)
                 {
@@ -19692,11 +20106,27 @@
                 }
                 break;
             }
-            case 0xfece2a39u:
+            case 0xfd16d4edu:
             {
-                if (name == BuiltInName::textureCube)
+                if (name == BuiltInName::texture2DRectProj)
                 {
-                    return &UnmangledBuiltIns::UNDEFINED;
+                    return &UnmangledBuiltIns::ARB_texture_rectangle;
+                }
+                break;
+            }
+            case 0xfd21d313u:
+            {
+                if (name == BuiltInName::textureCubeGradEXT)
+                {
+                    return &UnmangledBuiltIns::EXT_shader_texture_lod;
+                }
+                break;
+            }
+            case 0xfd440d8au:
+            {
+                if (name == BuiltInName::texture2DProjGradEXT)
+                {
+                    return &UnmangledBuiltIns::EXT_shader_texture_lod;
                 }
                 break;
             }
@@ -19705,39 +20135,7 @@
         {
             switch (nameHash)
             {
-                case 0x4b6e55d3u:
-                {
-                    if (name == BuiltInName::fwidthExt)
-                    {
-                        return &UnmangledBuiltIns::OES_standard_derivatives;
-                    }
-                    break;
-                }
-                case 0x7150ceb8u:
-                {
-                    if (name == BuiltInName::texture2DLodEXT)
-                    {
-                        return &UnmangledBuiltIns::EXT_shader_texture_lod;
-                    }
-                    break;
-                }
-                case 0x7309b987u:
-                {
-                    if (name == BuiltInName::textureCubeLodEXT)
-                    {
-                        return &UnmangledBuiltIns::EXT_shader_texture_lod;
-                    }
-                    break;
-                }
-                case 0xbacaedf7u:
-                {
-                    if (name == BuiltInName::texture2DProjLodEXT)
-                    {
-                        return &UnmangledBuiltIns::EXT_shader_texture_lod;
-                    }
-                    break;
-                }
-                case 0xc78598f8u:
+                case 0xfc4c70a1u:
                 {
                     if (name == BuiltInName::dFdyExt)
                     {
@@ -19745,7 +20143,7 @@
                     }
                     break;
                 }
-                case 0xc8859a8bu:
+                case 0xfc4c82d2u:
                 {
                     if (name == BuiltInName::dFdxExt)
                     {
@@ -19753,21 +20151,53 @@
                     }
                     break;
                 }
+                case 0xfc64b336u:
+                {
+                    if (name == BuiltInName::fwidthExt)
+                    {
+                        return &UnmangledBuiltIns::OES_standard_derivatives;
+                    }
+                    break;
+                }
+                case 0xfcf71bb4u:
+                {
+                    if (name == BuiltInName::texture2DLodEXT)
+                    {
+                        return &UnmangledBuiltIns::EXT_shader_texture_lod;
+                    }
+                    break;
+                }
+                case 0xfd17391cu:
+                {
+                    if (name == BuiltInName::textureCubeLodEXT)
+                    {
+                        return &UnmangledBuiltIns::EXT_shader_texture_lod;
+                    }
+                    break;
+                }
+                case 0xfd3ba159u:
+                {
+                    if (name == BuiltInName::texture2DProjLodEXT)
+                    {
+                        return &UnmangledBuiltIns::EXT_shader_texture_lod;
+                    }
+                    break;
+                }
             }
         }
         if (mShaderType == GL_VERTEX_SHADER)
         {
             switch (nameHash)
             {
-                case 0x30ed9cfcu:
+                case 0xfccfa39eu:
                 {
-                    if (name == BuiltInName::texture2DProjLod)
+                    if (name == BuiltInName::texture2DLod)
                     {
                         return &UnmangledBuiltIns::UNDEFINED;
                     }
                     break;
                 }
-                case 0xb35e342cu:
+                case 0xfceb31cfu:
                 {
                     if (name == BuiltInName::textureCubeLod)
                     {
@@ -19775,9 +20205,9 @@
                     }
                     break;
                 }
-                case 0xfa79f401u:
+                case 0xfd030225u:
                 {
-                    if (name == BuiltInName::texture2DLod)
+                    if (name == BuiltInName::texture2DProjLod)
                     {
                         return &UnmangledBuiltIns::UNDEFINED;
                     }
@@ -19788,63 +20218,7 @@
     }
     switch (nameHash)
     {
-        case 0x04644cdeu:
-        {
-            if (name == BuiltInName::greaterThan)
-            {
-                return &UnmangledBuiltIns::UNDEFINED;
-            }
-            break;
-        }
-        case 0x0491f109u:
-        {
-            if (name == BuiltInName::lessThanEqual)
-            {
-                return &UnmangledBuiltIns::UNDEFINED;
-            }
-            break;
-        }
-        case 0x05fc75c3u:
-        {
-            if (name == BuiltInName::lessThan)
-            {
-                return &UnmangledBuiltIns::UNDEFINED;
-            }
-            break;
-        }
-        case 0x066c705cu:
-        {
-            if (name == BuiltInName::refract)
-            {
-                return &UnmangledBuiltIns::UNDEFINED;
-            }
-            break;
-        }
-        case 0x0678cabfu:
-        {
-            if (name == BuiltInName::atan)
-            {
-                return &UnmangledBuiltIns::UNDEFINED;
-            }
-            break;
-        }
-        case 0x0cbc8ba4u:
-        {
-            if (name == BuiltInName::sign)
-            {
-                return &UnmangledBuiltIns::UNDEFINED;
-            }
-            break;
-        }
-        case 0x10031ed9u:
-        {
-            if (name == BuiltInName::log2)
-            {
-                return &UnmangledBuiltIns::UNDEFINED;
-            }
-            break;
-        }
-        case 0x13254bc4u:
+        case 0xfc313990u:
         {
             if (name == BuiltInName::all)
             {
@@ -19852,15 +20226,7 @@
             }
             break;
         }
-        case 0x2485bbbeu:
-        {
-            if (name == BuiltInName::notEqual)
-            {
-                return &UnmangledBuiltIns::UNDEFINED;
-            }
-            break;
-        }
-        case 0x29b19c8au:
+        case 0xfc329793u:
         {
             if (name == BuiltInName::notFunc)
             {
@@ -19868,15 +20234,7 @@
             }
             break;
         }
-        case 0x29f5189bu:
-        {
-            if (name == BuiltInName::cross)
-            {
-                return &UnmangledBuiltIns::UNDEFINED;
-            }
-            break;
-        }
-        case 0x2a48023bu:
+        case 0xfc32a6bbu:
         {
             if (name == BuiltInName::abs)
             {
@@ -19884,7 +20242,7 @@
             }
             break;
         }
-        case 0x2c29f04du:
+        case 0xfc32c2d2u:
         {
             if (name == BuiltInName::any)
             {
@@ -19892,31 +20250,7 @@
             }
             break;
         }
-        case 0x2eb31462u:
-        {
-            if (name == BuiltInName::distance)
-            {
-                return &UnmangledBuiltIns::UNDEFINED;
-            }
-            break;
-        }
-        case 0x2f7508efu:
-        {
-            if (name == BuiltInName::equal)
-            {
-                return &UnmangledBuiltIns::UNDEFINED;
-            }
-            break;
-        }
-        case 0x3c01df1fu:
-        {
-            if (name == BuiltInName::acos)
-            {
-                return &UnmangledBuiltIns::UNDEFINED;
-            }
-            break;
-        }
-        case 0x3f515151u:
+        case 0xfc33f444u:
         {
             if (name == BuiltInName::log)
             {
@@ -19924,7 +20258,7 @@
             }
             break;
         }
-        case 0x58336ad5u:
+        case 0xfc3589e3u:
         {
             if (name == BuiltInName::pow)
             {
@@ -19932,23 +20266,7 @@
             }
             break;
         }
-        case 0x5fd55fe1u:
-        {
-            if (name == BuiltInName::faceforward)
-            {
-                return &UnmangledBuiltIns::UNDEFINED;
-            }
-            break;
-        }
-        case 0x62e4e208u:
-        {
-            if (name == BuiltInName::ceil)
-            {
-                return &UnmangledBuiltIns::UNDEFINED;
-            }
-            break;
-        }
-        case 0x72a68728u:
+        case 0xfc372d40u:
         {
             if (name == BuiltInName::exp)
             {
@@ -19956,55 +20274,7 @@
             }
             break;
         }
-        case 0x7dee3bcfu:
-        {
-            if (name == BuiltInName::sqrt)
-            {
-                return &UnmangledBuiltIns::UNDEFINED;
-            }
-            break;
-        }
-        case 0x83d03615u:
-        {
-            if (name == BuiltInName::length)
-            {
-                return &UnmangledBuiltIns::UNDEFINED;
-            }
-            break;
-        }
-        case 0x856a57e1u:
-        {
-            if (name == BuiltInName::radians)
-            {
-                return &UnmangledBuiltIns::UNDEFINED;
-            }
-            break;
-        }
-        case 0x92c778aau:
-        {
-            if (name == BuiltInName::reflect)
-            {
-                return &UnmangledBuiltIns::UNDEFINED;
-            }
-            break;
-        }
-        case 0x95964e7du:
-        {
-            if (name == BuiltInName::smoothstep)
-            {
-                return &UnmangledBuiltIns::UNDEFINED;
-            }
-            break;
-        }
-        case 0x9626adeeu:
-        {
-            if (name == BuiltInName::exp2)
-            {
-                return &UnmangledBuiltIns::UNDEFINED;
-            }
-            break;
-        }
-        case 0x9cf73498u:
+        case 0xfc39cbebu:
         {
             if (name == BuiltInName::tan)
             {
@@ -20012,39 +20282,7 @@
             }
             break;
         }
-        case 0xa82efcbcu:
-        {
-            if (name == BuiltInName::clamp)
-            {
-                return &UnmangledBuiltIns::UNDEFINED;
-            }
-            break;
-        }
-        case 0xaf5442eeu:
-        {
-            if (name == BuiltInName::degrees)
-            {
-                return &UnmangledBuiltIns::UNDEFINED;
-            }
-            break;
-        }
-        case 0xb8e70c1du:
-        {
-            if (name == BuiltInName::floor)
-            {
-                return &UnmangledBuiltIns::UNDEFINED;
-            }
-            break;
-        }
-        case 0xc7441a0fu:
-        {
-            if (name == BuiltInName::step)
-            {
-                return &UnmangledBuiltIns::UNDEFINED;
-            }
-            break;
-        }
-        case 0xc98f4557u:
+        case 0xfc3c9da3u:
         {
             if (name == BuiltInName::min)
             {
@@ -20052,15 +20290,7 @@
             }
             break;
         }
-        case 0xce79296cu:
-        {
-            if (name == BuiltInName::normalize)
-            {
-                return &UnmangledBuiltIns::UNDEFINED;
-            }
-            break;
-        }
-        case 0xd3689f20u:
+        case 0xfc3d39a9u:
         {
             if (name == BuiltInName::dot)
             {
@@ -20068,15 +20298,7 @@
             }
             break;
         }
-        case 0xd5f05125u:
-        {
-            if (name == BuiltInName::matrixCompMult)
-            {
-                return &UnmangledBuiltIns::UNDEFINED;
-            }
-            break;
-        }
-        case 0xd78f5b61u:
+        case 0xfc3d7394u:
         {
             if (name == BuiltInName::mix)
             {
@@ -20084,7 +20306,7 @@
             }
             break;
         }
-        case 0xd7a2e319u:
+        case 0xfc3d7937u:
         {
             if (name == BuiltInName::max)
             {
@@ -20092,7 +20314,7 @@
             }
             break;
         }
-        case 0xdf9e7283u:
+        case 0xfc3dfb64u:
         {
             if (name == BuiltInName::mod)
             {
@@ -20100,7 +20322,7 @@
             }
             break;
         }
-        case 0xe0302a4du:
+        case 0xfc3e094fu:
         {
             if (name == BuiltInName::sin)
             {
@@ -20108,31 +20330,7 @@
             }
             break;
         }
-        case 0xe8b548a5u:
-        {
-            if (name == BuiltInName::inversesqrt)
-            {
-                return &UnmangledBuiltIns::UNDEFINED;
-            }
-            break;
-        }
-        case 0xed7dc722u:
-        {
-            if (name == BuiltInName::greaterThanEqual)
-            {
-                return &UnmangledBuiltIns::UNDEFINED;
-            }
-            break;
-        }
-        case 0xeef29a67u:
-        {
-            if (name == BuiltInName::fract)
-            {
-                return &UnmangledBuiltIns::UNDEFINED;
-            }
-            break;
-        }
-        case 0xfb8de29cu:
+        case 0xfc3fba42u:
         {
             if (name == BuiltInName::cos)
             {
@@ -20140,7 +20338,71 @@
             }
             break;
         }
-        case 0xfeae7ea6u:
+        case 0xfc406d33u:
+        {
+            if (name == BuiltInName::atan)
+            {
+                return &UnmangledBuiltIns::UNDEFINED;
+            }
+            break;
+        }
+        case 0xfc40c06cu:
+        {
+            if (name == BuiltInName::sign)
+            {
+                return &UnmangledBuiltIns::UNDEFINED;
+            }
+            break;
+        }
+        case 0xfc410ee8u:
+        {
+            if (name == BuiltInName::log2)
+            {
+                return &UnmangledBuiltIns::UNDEFINED;
+            }
+            break;
+        }
+        case 0xfc43cf02u:
+        {
+            if (name == BuiltInName::acos)
+            {
+                return &UnmangledBuiltIns::UNDEFINED;
+            }
+            break;
+        }
+        case 0xfc462c46u:
+        {
+            if (name == BuiltInName::ceil)
+            {
+                return &UnmangledBuiltIns::UNDEFINED;
+            }
+            break;
+        }
+        case 0xfc47d52cu:
+        {
+            if (name == BuiltInName::sqrt)
+            {
+                return &UnmangledBuiltIns::UNDEFINED;
+            }
+            break;
+        }
+        case 0xfc496f84u:
+        {
+            if (name == BuiltInName::exp2)
+            {
+                return &UnmangledBuiltIns::UNDEFINED;
+            }
+            break;
+        }
+        case 0xfc4c7e4eu:
+        {
+            if (name == BuiltInName::step)
+            {
+                return &UnmangledBuiltIns::UNDEFINED;
+            }
+            break;
+        }
+        case 0xfc4fe441u:
         {
             if (name == BuiltInName::asin)
             {
@@ -20148,6 +20410,174 @@
             }
             break;
         }
+        case 0xfc5297cau:
+        {
+            if (name == BuiltInName::cross)
+            {
+                return &UnmangledBuiltIns::UNDEFINED;
+            }
+            break;
+        }
+        case 0xfc52ffbfu:
+        {
+            if (name == BuiltInName::equal)
+            {
+                return &UnmangledBuiltIns::UNDEFINED;
+            }
+            break;
+        }
+        case 0xfc5a8e53u:
+        {
+            if (name == BuiltInName::clamp)
+            {
+                return &UnmangledBuiltIns::UNDEFINED;
+            }
+            break;
+        }
+        case 0xfc5b826du:
+        {
+            if (name == BuiltInName::floor)
+            {
+                return &UnmangledBuiltIns::UNDEFINED;
+            }
+            break;
+        }
+        case 0xfc5ee54eu:
+        {
+            if (name == BuiltInName::fract)
+            {
+                return &UnmangledBuiltIns::UNDEFINED;
+            }
+            break;
+        }
+        case 0xfc683b16u:
+        {
+            if (name == BuiltInName::length)
+            {
+                return &UnmangledBuiltIns::UNDEFINED;
+            }
+            break;
+        }
+        case 0xfc70669bu:
+        {
+            if (name == BuiltInName::refract)
+            {
+                return &UnmangledBuiltIns::UNDEFINED;
+            }
+            break;
+        }
+        case 0xfc785144u:
+        {
+            if (name == BuiltInName::radians)
+            {
+                return &UnmangledBuiltIns::UNDEFINED;
+            }
+            break;
+        }
+        case 0xfc7924ddu:
+        {
+            if (name == BuiltInName::reflect)
+            {
+                return &UnmangledBuiltIns::UNDEFINED;
+            }
+            break;
+        }
+        case 0xfc7af7aau:
+        {
+            if (name == BuiltInName::degrees)
+            {
+                return &UnmangledBuiltIns::UNDEFINED;
+            }
+            break;
+        }
+        case 0xfc805a04u:
+        {
+            if (name == BuiltInName::lessThan)
+            {
+                return &UnmangledBuiltIns::UNDEFINED;
+            }
+            break;
+        }
+        case 0xfc8243e5u:
+        {
+            if (name == BuiltInName::notEqual)
+            {
+                return &UnmangledBuiltIns::UNDEFINED;
+            }
+            break;
+        }
+        case 0xfc82ef53u:
+        {
+            if (name == BuiltInName::distance)
+            {
+                return &UnmangledBuiltIns::UNDEFINED;
+            }
+            break;
+        }
+        case 0xfc9ceefeu:
+        {
+            if (name == BuiltInName::normalize)
+            {
+                return &UnmangledBuiltIns::UNDEFINED;
+            }
+            break;
+        }
+        case 0xfca95719u:
+        {
+            if (name == BuiltInName::smoothstep)
+            {
+                return &UnmangledBuiltIns::UNDEFINED;
+            }
+            break;
+        }
+        case 0xfcb04a9au:
+        {
+            if (name == BuiltInName::greaterThan)
+            {
+                return &UnmangledBuiltIns::UNDEFINED;
+            }
+            break;
+        }
+        case 0xfcb5f2b4u:
+        {
+            if (name == BuiltInName::faceforward)
+            {
+                return &UnmangledBuiltIns::UNDEFINED;
+            }
+            break;
+        }
+        case 0xfcbe83f1u:
+        {
+            if (name == BuiltInName::inversesqrt)
+            {
+                return &UnmangledBuiltIns::UNDEFINED;
+            }
+            break;
+        }
+        case 0xfcd04816u:
+        {
+            if (name == BuiltInName::lessThanEqual)
+            {
+                return &UnmangledBuiltIns::UNDEFINED;
+            }
+            break;
+        }
+        case 0xfced5e20u:
+        {
+            if (name == BuiltInName::matrixCompMult)
+            {
+                return &UnmangledBuiltIns::UNDEFINED;
+            }
+            break;
+        }
+        case 0xfd0ed0feu:
+        {
+            if (name == BuiltInName::greaterThanEqual)
+            {
+                return &UnmangledBuiltIns::UNDEFINED;
+            }
+            break;
+        }
     }
     return nullptr;
 }
diff --git a/src/compiler/translator/gen_builtin_symbols.py b/src/compiler/translator/gen_builtin_symbols.py
index 49b9919..1a9bdc8 100644
--- a/src/compiler/translator/gen_builtin_symbols.py
+++ b/src/compiler/translator/gen_builtin_symbols.py
@@ -202,13 +202,21 @@
 const TSymbol *TSymbolTable::findBuiltIn(const ImmutableString &name,
                                          int shaderVersion) const
 {{
-    uint32_t nameHash = name.hash32();
+    if (name.length() > {max_mangled_name_length})
+    {{
+        return nullptr;
+    }}
+    uint32_t nameHash = name.mangledNameHash();
 {get_builtin}
 }}
 
 const UnmangledBuiltIn *TSymbolTable::getUnmangledBuiltInForShaderVersion(const ImmutableString &name, int shaderVersion)
 {{
-    uint32_t nameHash = name.hash32();
+    if (name.length() > {max_unmangled_name_length})
+    {{
+        return nullptr;
+    }}
+    uint32_t nameHash = name.mangledNameHash();
 {get_unmangled_builtin}
 }}
 
@@ -317,6 +325,7 @@
     """"Class for storing a list of objects grouped by symbol table level and condition."""
     def __init__(self):
         self.objs = OrderedDict()
+        self.max_name_length = 0
         # We need to add all the levels here instead of lazily since they must be in a specific order.
         for l in levels:
             self.objs[l] = OrderedDict()
@@ -327,6 +336,8 @@
         if condition not in self.objs[level]:
             self.objs[level][condition] = OrderedDict()
         self.objs[level][condition][name] = obj
+        if len(name) > self.max_name_length:
+            self.max_name_length = len(name)
 
     def has_key(self, level, condition, name):
         if (level not in levels):
@@ -340,6 +351,9 @@
             return self.objs[level][condition][name]
         return None
 
+    def get_max_name_length(self):
+        return self.max_name_length
+
     def get_switch_code(self):
         code = []
         for level in levels:
@@ -357,7 +371,7 @@
 
                     switch = {}
                     for name, obj in objs.iteritems():
-                        name_hash = hash32(name)
+                        name_hash = mangledNameHash(name)
                         if name_hash not in switch:
                             switch[name_hash] = []
                         switch[name_hash].append(obj['hash_matched_code'])
@@ -685,15 +699,22 @@
 
 id_counter = 0
 
-def hash32(str, save_test = True):
+def mangledNameHash(str, save_test = True):
     fnvOffsetBasis = 0x811c9dc5
     fnvPrime = 16777619
     hash = fnvOffsetBasis
+    index = 0
+    max_six_bit_value = (1 << 6) - 1
+    paren_location = max_six_bit_value
     for c in str:
         hash = hash ^ ord(c)
         hash = hash * fnvPrime & 0xffffffff
+        if c == '(':
+            paren_location = index
+        index += 1
+    hash = ((hash >> 12) ^ (hash & 0xfff)) | (paren_location << 26) | (index << 20)
     if save_test:
-        sanity_check = '    ASSERT_EQ(0x{hash}u, ImmutableString("{str}").hash32());'.format(hash = ('%08x' % hash), str = str)
+        sanity_check = '    ASSERT_EQ(0x{hash}u, ImmutableString("{str}").mangledNameHash());'.format(hash = ('%08x' % hash), str = str)
         script_generated_hash_tests.update({sanity_check: None})
     return hash
 
@@ -740,7 +761,7 @@
     # We exhaustively search through all possible lists of parameters and see if any other mangled
     # name has the same hash.
     mangled_name = function_variant_props['mangled_name']
-    hash = hash32(mangled_name)
+    hash = mangledNameHash(mangled_name)
     mangled_name_prefix = function_variant_props['name'] + '('
     parameters_mangled_name_len = len(mangled_name) - len(mangled_name_prefix)
     parameters_mangled_name = mangled_name[len(mangled_name_prefix):]
@@ -751,7 +772,7 @@
         # may be possible.
         return True
     for variant in gen_parameters_mangled_name_variants(parameters_mangled_name_len):
-        if parameters_mangled_name != variant and hash32(mangled_name_prefix + variant, False) == hash:
+        if parameters_mangled_name != variant and mangledNameHash(mangled_name_prefix + variant, False) == hash:
             return True
     return False
 
@@ -880,7 +901,6 @@
             parameters = get_parameters(function_props)
 
             template_args['unique_name'] = get_unique_identifier_name(template_args['name_with_suffix'], parameters)
-            template_args['unique_name_no_parameters'] = get_unique_identifier_name(template_args['name_with_suffix'], [])
 
             if template_args['unique_name'] in defined_function_variants:
                 continue
@@ -936,10 +956,9 @@
     return &BuiltInFunction::kFunction_{unique_name};
 }}"""
             else:
-                template_mangled_name_declaration = 'constexpr const ImmutableString {unique_name_no_parameters}("{name}(");'
-                name_declarations.add(template_mangled_name_declaration.format(**template_args))
-                template_mangled_if = """if (name.length() == {mangled_name_length} && name.beginsWith(BuiltInName::{unique_name_no_parameters}))
+                template_mangled_if = """if (name.beginsWith(BuiltInName::{name_with_suffix}))
 {{
+    ASSERT(name.length() == {mangled_name_length});
     return &BuiltInFunction::kFunction_{unique_name};
 }}"""
             mangled_if = template_mangled_if.format(**template_args)
@@ -1195,6 +1214,8 @@
 
     'get_unmangled_builtin': unmangled_function_if_statements.get_switch_code(),
     'get_builtin': get_builtin_if_statements.get_switch_code(),
+    'max_unmangled_name_length': unmangled_function_if_statements.get_max_name_length(),
+    'max_mangled_name_length': get_builtin_if_statements.get_max_name_length(),
 
     'script_generated_hash_tests': '\n'.join(script_generated_hash_tests.iterkeys())
 }
diff --git a/src/tests/compiler_tests/ImmutableString_test_autogen.cpp b/src/tests/compiler_tests/ImmutableString_test_autogen.cpp
index c0f643c..2123e99 100644
--- a/src/tests/compiler_tests/ImmutableString_test_autogen.cpp
+++ b/src/tests/compiler_tests/ImmutableString_test_autogen.cpp
@@ -16,1067 +16,1069 @@
 
 TEST(ImmutableStringTest, ScriptGeneratedHashesMatch)
 {
-    ASSERT_EQ(0x5ff73ab9u, ImmutableString("radians(0B").hash32());
-    ASSERT_EQ(0xb5f58384u, ImmutableString("radians(1B").hash32());
-    ASSERT_EQ(0x8ff3091bu, ImmutableString("radians(2B").hash32());
-    ASSERT_EQ(0x6df094feu, ImmutableString("radians(3B").hash32());
-    ASSERT_EQ(0x57cd6fecu, ImmutableString("degrees(0B").hash32());
-    ASSERT_EQ(0x81cff0a1u, ImmutableString("degrees(1B").hash32());
-    ASSERT_EQ(0x0fc88166u, ImmutableString("degrees(2B").hash32());
-    ASSERT_EQ(0x31caf583u, ImmutableString("degrees(3B").hash32());
-    ASSERT_EQ(0x8a07b54du, ImmutableString("sin(0B").hash32());
-    ASSERT_EQ(0x60053498u, ImmutableString("sin(1B").hash32());
-    ASSERT_EQ(0xba0383afu, ImmutableString("sin(2B").hash32());
-    ASSERT_EQ(0x98010f92u, ImmutableString("sin(3B").hash32());
-    ASSERT_EQ(0xcff55532u, ImmutableString("cos(0B").hash32());
-    ASSERT_EQ(0xf1f7c94fu, ImmutableString("cos(1B").hash32());
-    ASSERT_EQ(0x17fa43b8u, ImmutableString("cos(2B").hash32());
-    ASSERT_EQ(0x41fcc46du, ImmutableString("cos(3B").hash32());
-    ASSERT_EQ(0xee8ac486u, ImmutableString("tan(0B").hash32());
-    ASSERT_EQ(0x108d38a3u, ImmutableString("tan(1B").hash32());
-    ASSERT_EQ(0xb6907c8cu, ImmutableString("tan(2B").hash32());
-    ASSERT_EQ(0xe092fd41u, ImmutableString("tan(3B").hash32());
-    ASSERT_EQ(0x95a6e964u, ImmutableString("asin(0B").hash32());
-    ASSERT_EQ(0xbfa96a19u, ImmutableString("asin(1B").hash32());
-    ASSERT_EQ(0xcda2c45eu, ImmutableString("asin(2B").hash32());
-    ASSERT_EQ(0xefa5387bu, ImmutableString("asin(3B").hash32());
-    ASSERT_EQ(0x5f31e247u, ImmutableString("acos(0B").hash32());
-    ASSERT_EQ(0x3d2f6e2au, ImmutableString("acos(1B").hash32());
-    ASSERT_EQ(0x2f3613e5u, ImmutableString("acos(2B").hash32());
-    ASSERT_EQ(0x05339330u, ImmutableString("acos(3B").hash32());
-    ASSERT_EQ(0x82c5e6d5u, ImmutableString("atan(0B0B").hash32());
-    ASSERT_EQ(0x54d4c019u, ImmutableString("atan(1B1B").hash32());
-    ASSERT_EQ(0xdeb59d35u, ImmutableString("atan(2B2B").hash32());
-    ASSERT_EQ(0x0548e241u, ImmutableString("atan(3B3B").hash32());
-    ASSERT_EQ(0x8e3d93a7u, ImmutableString("atan(0B").hash32());
-    ASSERT_EQ(0x6c3b1f8au, ImmutableString("atan(1B").hash32());
-    ASSERT_EQ(0x5e435845u, ImmutableString("atan(2B").hash32());
-    ASSERT_EQ(0xb4400e10u, ImmutableString("atan(3B").hash32());
-    ASSERT_EQ(0x556a8827u, ImmutableString("sinh(0B").hash32());
-    ASSERT_EQ(0x3368140au, ImmutableString("sinh(1B").hash32());
-    ASSERT_EQ(0x25704cc5u, ImmutableString("sinh(2B").hash32());
-    ASSERT_EQ(0x7b6d0290u, ImmutableString("sinh(3B").hash32());
-    ASSERT_EQ(0x68fefbb2u, ImmutableString("cosh(0B").hash32());
-    ASSERT_EQ(0x8b016fcfu, ImmutableString("cosh(1B").hash32());
-    ASSERT_EQ(0xb103ea38u, ImmutableString("cosh(2B").hash32());
-    ASSERT_EQ(0xdb066aedu, ImmutableString("cosh(3B").hash32());
-    ASSERT_EQ(0x119658feu, ImmutableString("tanh(0B").hash32());
-    ASSERT_EQ(0x3398cd1bu, ImmutableString("tanh(1B").hash32());
-    ASSERT_EQ(0x599b4784u, ImmutableString("tanh(2B").hash32());
-    ASSERT_EQ(0x039cfeb9u, ImmutableString("tanh(3B").hash32());
-    ASSERT_EQ(0xca4a7880u, ImmutableString("asinh(0B").hash32());
-    ASSERT_EQ(0xf44cf935u, ImmutableString("asinh(1B").hash32());
-    ASSERT_EQ(0x0246537au, ImmutableString("asinh(2B").hash32());
-    ASSERT_EQ(0x2448c797u, ImmutableString("asinh(3B").hash32());
-    ASSERT_EQ(0xc114b5b5u, ImmutableString("acosh(0B").hash32());
-    ASSERT_EQ(0x97123500u, ImmutableString("acosh(1B").hash32());
-    ASSERT_EQ(0xf1108417u, ImmutableString("acosh(2B").hash32());
-    ASSERT_EQ(0xcf0e0ffau, ImmutableString("acosh(3B").hash32());
-    ASSERT_EQ(0xb11b8a15u, ImmutableString("atanh(0B").hash32());
-    ASSERT_EQ(0x87190960u, ImmutableString("atanh(1B").hash32());
-    ASSERT_EQ(0x61168ef7u, ImmutableString("atanh(2B").hash32());
-    ASSERT_EQ(0xbf14e45au, ImmutableString("atanh(3B").hash32());
-    ASSERT_EQ(0xd4d6b527u, ImmutableString("pow(0B0B").hash32());
-    ASSERT_EQ(0x7000d433u, ImmutableString("pow(1B1B").hash32());
-    ASSERT_EQ(0x60d77e47u, ImmutableString("pow(2B2B").hash32());
-    ASSERT_EQ(0x31a9230bu, ImmutableString("pow(3B3B").hash32());
-    ASSERT_EQ(0xb3a5e896u, ImmutableString("exp(0B").hash32());
-    ASSERT_EQ(0xd5a85cb3u, ImmutableString("exp(1B").hash32());
-    ASSERT_EQ(0xfbaad71cu, ImmutableString("exp(2B").hash32());
-    ASSERT_EQ(0xa5ac8e51u, ImmutableString("exp(3B").hash32());
-    ASSERT_EQ(0x0b09eda9u, ImmutableString("log(0B").hash32());
-    ASSERT_EQ(0x6106a374u, ImmutableString("log(1B").hash32());
-    ASSERT_EQ(0x3b04290bu, ImmutableString("log(2B").hash32());
-    ASSERT_EQ(0x1901b4eeu, ImmutableString("log(3B").hash32());
-    ASSERT_EQ(0x3a43c8ecu, ImmutableString("exp2(0B").hash32());
-    ASSERT_EQ(0x644649a1u, ImmutableString("exp2(1B").hash32());
-    ASSERT_EQ(0xf23eda66u, ImmutableString("exp2(2B").hash32());
-    ASSERT_EQ(0x14414e83u, ImmutableString("exp2(3B").hash32());
-    ASSERT_EQ(0xebeb54f1u, ImmutableString("log2(0B").hash32());
-    ASSERT_EQ(0xc1e8d43cu, ImmutableString("log2(1B").hash32());
-    ASSERT_EQ(0x9be659d3u, ImmutableString("log2(2B").hash32());
-    ASSERT_EQ(0xf9e31c36u, ImmutableString("log2(3B").hash32());
-    ASSERT_EQ(0x1a10ccb7u, ImmutableString("sqrt(0B").hash32());
-    ASSERT_EQ(0x780d8f1au, ImmutableString("sqrt(1B").hash32());
-    ASSERT_EQ(0x6a15c7d5u, ImmutableString("sqrt(2B").hash32());
-    ASSERT_EQ(0x40134720u, ImmutableString("sqrt(3B").hash32());
-    ASSERT_EQ(0xe50d8305u, ImmutableString("inversesqrt(0B").hash32());
-    ASSERT_EQ(0x3b0bcbd0u, ImmutableString("inversesqrt(1B").hash32());
-    ASSERT_EQ(0x15095167u, ImmutableString("inversesqrt(2B").hash32());
-    ASSERT_EQ(0xf306dd4au, ImmutableString("inversesqrt(3B").hash32());
-    ASSERT_EQ(0x11769f9bu, ImmutableString("abs(0B").hash32());
-    ASSERT_EQ(0xef742b7eu, ImmutableString("abs(1B").hash32());
-    ASSERT_EQ(0xe17ad139u, ImmutableString("abs(2B").hash32());
-    ASSERT_EQ(0x37791a04u, ImmutableString("abs(3B").hash32());
-    ASSERT_EQ(0x10769e08u, ImmutableString("abs(0C").hash32());
-    ASSERT_EQ(0xf0742d11u, ImmutableString("abs(1C").hash32());
-    ASSERT_EQ(0xe07acfa6u, ImmutableString("abs(2C").hash32());
-    ASSERT_EQ(0x38791b97u, ImmutableString("abs(3C").hash32());
-    ASSERT_EQ(0xba70875au, ImmutableString("sign(0B").hash32());
-    ASSERT_EQ(0x5c7231f7u, ImmutableString("sign(1B").hash32());
-    ASSERT_EQ(0x8274ac60u, ImmutableString("sign(2B").hash32());
-    ASSERT_EQ(0xac772d15u, ImmutableString("sign(3B").hash32());
-    ASSERT_EQ(0xbb7088edu, ImmutableString("sign(0C").hash32());
-    ASSERT_EQ(0x5b723064u, ImmutableString("sign(1C").hash32());
-    ASSERT_EQ(0x8374adf3u, ImmutableString("sign(2C").hash32());
-    ASSERT_EQ(0xab772b82u, ImmutableString("sign(3C").hash32());
-    ASSERT_EQ(0x68b063ddu, ImmutableString("floor(0B").hash32());
-    ASSERT_EQ(0xbead19a8u, ImmutableString("floor(1B").hash32());
-    ASSERT_EQ(0x98aa9f3fu, ImmutableString("floor(2B").hash32());
-    ASSERT_EQ(0x76a82b22u, ImmutableString("floor(3B").hash32());
-    ASSERT_EQ(0x26c07245u, ImmutableString("trunc(0B").hash32());
-    ASSERT_EQ(0x7cbd2810u, ImmutableString("trunc(1B").hash32());
-    ASSERT_EQ(0x56baada7u, ImmutableString("trunc(2B").hash32());
-    ASSERT_EQ(0x34b8398au, ImmutableString("trunc(3B").hash32());
-    ASSERT_EQ(0x0c793f9bu, ImmutableString("round(0B").hash32());
-    ASSERT_EQ(0xea76cb7eu, ImmutableString("round(1B").hash32());
-    ASSERT_EQ(0xdc7d7139u, ImmutableString("round(2B").hash32());
-    ASSERT_EQ(0x327bba04u, ImmutableString("round(3B").hash32());
-    ASSERT_EQ(0xdb3a3b0fu, ImmutableString("roundEven(0B").hash32());
-    ASSERT_EQ(0xb937c6f2u, ImmutableString("roundEven(1B").hash32());
-    ASSERT_EQ(0x2b3f362du, ImmutableString("roundEven(2B").hash32());
-    ASSERT_EQ(0x013cb578u, ImmutableString("roundEven(3B").hash32());
-    ASSERT_EQ(0x4dc29736u, ImmutableString("ceil(0B").hash32());
-    ASSERT_EQ(0xefc5d4d3u, ImmutableString("ceil(1B").hash32());
-    ASSERT_EQ(0x15c84f3cu, ImmutableString("ceil(2B").hash32());
-    ASSERT_EQ(0x3fcacff1u, ImmutableString("ceil(3B").hash32());
-    ASSERT_EQ(0x061a7a4fu, ImmutableString("fract(0B").hash32());
-    ASSERT_EQ(0xe4180632u, ImmutableString("fract(1B").hash32());
-    ASSERT_EQ(0x561f756du, ImmutableString("fract(2B").hash32());
-    ASSERT_EQ(0x2c1cf4b8u, ImmutableString("fract(3B").hash32());
-    ASSERT_EQ(0xed15f051u, ImmutableString("mod(0B0B").hash32());
-    ASSERT_EQ(0x13e5dde0u, ImmutableString("mod(1B0B").hash32());
-    ASSERT_EQ(0x046a9b13u, ImmutableString("mod(2B0B").hash32());
-    ASSERT_EQ(0xbca39522u, ImmutableString("mod(3B0B").hash32());
-    ASSERT_EQ(0x3de85e95u, ImmutableString("mod(1B1B").hash32());
-    ASSERT_EQ(0x546f9631u, ImmutableString("mod(2B2B").hash32());
-    ASSERT_EQ(0xaeabcdddu, ImmutableString("mod(3B3B").hash32());
-    ASSERT_EQ(0x3b8c728du, ImmutableString("min(0B0B").hash32());
-    ASSERT_EQ(0x23497dfcu, ImmutableString("min(1B0B").hash32());
-    ASSERT_EQ(0xc777f74fu, ImmutableString("min(2B0B").hash32());
-    ASSERT_EQ(0xcc07353eu, ImmutableString("min(3B0B").hash32());
-    ASSERT_EQ(0x4d4bfeb1u, ImmutableString("min(1B1B").hash32());
-    ASSERT_EQ(0x177cf26du, ImmutableString("min(2B2B").hash32());
-    ASSERT_EQ(0xbe0f6df9u, ImmutableString("min(3B3B").hash32());
-    ASSERT_EQ(0xbdf50df5u, ImmutableString("min(0C0C").hash32());
-    ASSERT_EQ(0x80de719du, ImmutableString("min(1C1C").hash32());
-    ASSERT_EQ(0x81dadab1u, ImmutableString("min(2C2C").hash32());
-    ASSERT_EQ(0x5997f741u, ImmutableString("min(3C3C").hash32());
-    ASSERT_EQ(0xa0e0e294u, ImmutableString("min(1C0C").hash32());
-    ASSERT_EQ(0x49e092b7u, ImmutableString("min(2C0C").hash32());
-    ASSERT_EQ(0x499e99d6u, ImmutableString("min(3C0C").hash32());
-    ASSERT_EQ(0x405da95du, ImmutableString("min(0D0D").hash32());
-    ASSERT_EQ(0x95954a75u, ImmutableString("min(1D1D").hash32());
-    ASSERT_EQ(0x47bb8b0du, ImmutableString("min(2D2D").hash32());
-    ASSERT_EQ(0x61bd085du, ImmutableString("min(3D3D").hash32());
-    ASSERT_EQ(0x6f92d00cu, ImmutableString("min(1D0D").hash32());
-    ASSERT_EQ(0x13bfb65fu, ImmutableString("min(2D0D").hash32());
-    ASSERT_EQ(0x7fbf762eu, ImmutableString("min(3D0D").hash32());
-    ASSERT_EQ(0xe7f2b603u, ImmutableString("max(0B0B").hash32());
-    ASSERT_EQ(0xa02bb012u, ImmutableString("max(1B0B").hash32());
-    ASSERT_EQ(0xd09e0b41u, ImmutableString("max(2B0B").hash32());
-    ASSERT_EQ(0x6ac79e50u, ImmutableString("max(3B0B").hash32());
-    ASSERT_EQ(0xc22e242fu, ImmutableString("max(1B1B").hash32());
-    ASSERT_EQ(0x009846a3u, ImmutableString("max(2B2B").hash32());
-    ASSERT_EQ(0x44c523e7u, ImmutableString("max(3B3B").hash32());
-    ASSERT_EQ(0xaaa9d50bu, ImmutableString("max(0C0C").hash32());
-    ASSERT_EQ(0xf6fdcb9bu, ImmutableString("max(1C1C").hash32());
-    ASSERT_EQ(0x9b0b952fu, ImmutableString("max(2C2C").hash32());
-    ASSERT_EQ(0x919deb77u, ImmutableString("max(3C3C").hash32());
-    ASSERT_EQ(0x1f00492au, ImmutableString("max(1C0C").hash32());
-    ASSERT_EQ(0x5306a6a9u, ImmutableString("max(2C0C").hash32());
-    ASSERT_EQ(0xe99c3768u, ImmutableString("max(3C0C").hash32());
-    ASSERT_EQ(0xe45eb3b3u, ImmutableString("max(0D0D").hash32());
-    ASSERT_EQ(0xc2ff54b3u, ImmutableString("max(1D1D").hash32());
-    ASSERT_EQ(0x505a7783u, ImmutableString("max(2D2D").hash32());
-    ASSERT_EQ(0x593a41bbu, ImmutableString("max(3D3D").hash32());
-    ASSERT_EQ(0xa4fce6e2u, ImmutableString("max(1D0D").hash32());
-    ASSERT_EQ(0x8454b931u, ImmutableString("max(2D0D").hash32());
-    ASSERT_EQ(0xe732d280u, ImmutableString("max(3D0D").hash32());
-    ASSERT_EQ(0xbe16c602u, ImmutableString("clamp(0B0B0B").hash32());
-    ASSERT_EQ(0x5e39910fu, ImmutableString("clamp(1B0B0B").hash32());
-    ASSERT_EQ(0xccc2d6c8u, ImmutableString("clamp(2B0B0B").hash32());
-    ASSERT_EQ(0xb154856du, ImmutableString("clamp(3B0B0B").hash32());
-    ASSERT_EQ(0x6b80211bu, ImmutableString("clamp(1B1B1B").hash32());
-    ASSERT_EQ(0xf0909e70u, ImmutableString("clamp(2B2B2B").hash32());
-    ASSERT_EQ(0x33d780d9u, ImmutableString("clamp(3B3B3B").hash32());
-    ASSERT_EQ(0x40b0dfadu, ImmutableString("clamp(0C0C0C").hash32());
-    ASSERT_EQ(0x1b502a44u, ImmutableString("clamp(1C0C0C").hash32());
-    ASSERT_EQ(0xc2b695f3u, ImmutableString("clamp(2C0C0C").hash32());
-    ASSERT_EQ(0x4ba47222u, ImmutableString("clamp(3C0C0C").hash32());
-    ASSERT_EQ(0x5729921cu, ImmutableString("clamp(1C1C1C").hash32());
-    ASSERT_EQ(0x000dfdb7u, ImmutableString("clamp(2C2C2C").hash32());
-    ASSERT_EQ(0xaec45456u, ImmutableString("clamp(3C3C3C").hash32());
-    ASSERT_EQ(0xc3bc1280u, ImmutableString("clamp(0D0D0D").hash32());
-    ASSERT_EQ(0x0ad28199u, ImmutableString("clamp(1D0D0D").hash32());
-    ASSERT_EQ(0x45e11f4au, ImmutableString("clamp(2D0D0D").hash32());
-    ASSERT_EQ(0xb6f9d1ebu, ImmutableString("clamp(3D0D0D").hash32());
-    ASSERT_EQ(0x61475731u, ImmutableString("clamp(1D1D1D").hash32());
-    ASSERT_EQ(0x9d0abd32u, ImmutableString("clamp(2D2D2D").hash32());
-    ASSERT_EQ(0xeb86dc53u, ImmutableString("clamp(3D3D3D").hash32());
-    ASSERT_EQ(0xb5c1d059u, ImmutableString("mix(0B0B0B").hash32());
-    ASSERT_EQ(0x1f8d8da5u, ImmutableString("mix(1B1B0B").hash32());
-    ASSERT_EQ(0x60348539u, ImmutableString("mix(2B2B0B").hash32());
-    ASSERT_EQ(0xc398271du, ImmutableString("mix(3B3B0B").hash32());
-    ASSERT_EQ(0xf58b0cf0u, ImmutableString("mix(1B1B1B").hash32());
-    ASSERT_EQ(0x9030539bu, ImmutableString("mix(2B2B2B").hash32());
-    ASSERT_EQ(0xd1918162u, ImmutableString("mix(3B3B3B").hash32());
-    ASSERT_EQ(0xb6c1d1ecu, ImmutableString("mix(0B0B0E").hash32());
-    ASSERT_EQ(0xfc8b17f5u, ImmutableString("mix(1B1B1E").hash32());
-    ASSERT_EQ(0x95305b7au, ImmutableString("mix(2B2B2E").hash32());
-    ASSERT_EQ(0xcc917983u, ImmutableString("mix(3B3B3E").hash32());
-    ASSERT_EQ(0xccdc3d05u, ImmutableString("step(0B0B").hash32());
-    ASSERT_EQ(0x92458549u, ImmutableString("step(1B1B").hash32());
-    ASSERT_EQ(0x35731765u, ImmutableString("step(2B2B").hash32());
-    ASSERT_EQ(0xcf6001f1u, ImmutableString("step(3B3B").hash32());
-    ASSERT_EQ(0x22da85d0u, ImmutableString("step(0B1B").hash32());
-    ASSERT_EQ(0xfcd80b67u, ImmutableString("step(0B2B").hash32());
-    ASSERT_EQ(0xdad5974au, ImmutableString("step(0B3B").hash32());
-    ASSERT_EQ(0xbdc5079du, ImmutableString("smoothstep(0B0B0B").hash32());
-    ASSERT_EQ(0x29eb2c34u, ImmutableString("smoothstep(1B1B1B").hash32());
-    ASSERT_EQ(0x45ccdddfu, ImmutableString("smoothstep(2B2B2B").hash32());
-    ASSERT_EQ(0x372206a6u, ImmutableString("smoothstep(3B3B3B").hash32());
-    ASSERT_EQ(0x13c35068u, ImmutableString("smoothstep(0B0B1B").hash32());
-    ASSERT_EQ(0xedc0d5ffu, ImmutableString("smoothstep(0B0B2B").hash32());
-    ASSERT_EQ(0xcbbe61e2u, ImmutableString("smoothstep(0B0B3B").hash32());
-    ASSERT_EQ(0x7f4a0e15u, ImmutableString("modf(0B0B").hash32());
-    ASSERT_EQ(0x515a7a59u, ImmutableString("modf(1B1B").hash32());
-    ASSERT_EQ(0xf4880c75u, ImmutableString("modf(2B2B").hash32());
-    ASSERT_EQ(0x01cd0981u, ImmutableString("modf(3B3B").hash32());
-    ASSERT_EQ(0xd43b6ae0u, ImmutableString("isnan(0B").hash32());
-    ASSERT_EQ(0xfe3deb95u, ImmutableString("isnan(1B").hash32());
-    ASSERT_EQ(0x0c3745dau, ImmutableString("isnan(2B").hash32());
-    ASSERT_EQ(0xae38f077u, ImmutableString("isnan(3B").hash32());
-    ASSERT_EQ(0x84bc1fc6u, ImmutableString("isinf(0B").hash32());
-    ASSERT_EQ(0xa6be93e3u, ImmutableString("isinf(1B").hash32());
-    ASSERT_EQ(0x4cc044ccu, ImmutableString("isinf(2B").hash32());
-    ASSERT_EQ(0x76c2c581u, ImmutableString("isinf(3B").hash32());
-    ASSERT_EQ(0x5fb09d21u, ImmutableString("floatBitsToInt(0B").hash32());
-    ASSERT_EQ(0x35ae1c6cu, ImmutableString("floatBitsToInt(1B").hash32());
-    ASSERT_EQ(0x0faba203u, ImmutableString("floatBitsToInt(2B").hash32());
-    ASSERT_EQ(0xeda92de6u, ImmutableString("floatBitsToInt(3B").hash32());
-    ASSERT_EQ(0x04a657b6u, ImmutableString("floatBitsToUint(0B").hash32());
-    ASSERT_EQ(0xa6a99553u, ImmutableString("floatBitsToUint(1B").hash32());
-    ASSERT_EQ(0xccac0fbcu, ImmutableString("floatBitsToUint(2B").hash32());
-    ASSERT_EQ(0xf6ae9071u, ImmutableString("floatBitsToUint(3B").hash32());
-    ASSERT_EQ(0x3c11a2ecu, ImmutableString("intBitsToFloat(0C").hash32());
-    ASSERT_EQ(0x1c0f31f5u, ImmutableString("intBitsToFloat(1C").hash32());
-    ASSERT_EQ(0x0c15d48au, ImmutableString("intBitsToFloat(2C").hash32());
-    ASSERT_EQ(0x6414207bu, ImmutableString("intBitsToFloat(3C").hash32());
-    ASSERT_EQ(0x7a053116u, ImmutableString("uintBitsToFloat(0D").hash32());
-    ASSERT_EQ(0xa807b817u, ImmutableString("uintBitsToFloat(1D").hash32());
-    ASSERT_EQ(0xb5ff7f5cu, ImmutableString("uintBitsToFloat(2D").hash32());
-    ASSERT_EQ(0x5c02c345u, ImmutableString("uintBitsToFloat(3D").hash32());
-    ASSERT_EQ(0xf3de0717u, ImmutableString("frexp(0B0C").hash32());
-    ASSERT_EQ(0xa30b98d3u, ImmutableString("frexp(1B1C").hash32());
-    ASSERT_EQ(0x17aa3bbfu, ImmutableString("frexp(2B2C").hash32());
-    ASSERT_EQ(0x7dbee433u, ImmutableString("frexp(3B3C").hash32());
-    ASSERT_EQ(0x57b9431bu, ImmutableString("ldexp(0B0C").hash32());
-    ASSERT_EQ(0x124f3157u, ImmutableString("ldexp(1B1C").hash32());
-    ASSERT_EQ(0x94d22cc3u, ImmutableString("ldexp(2B2C").hash32());
-    ASSERT_EQ(0xfae6d537u, ImmutableString("ldexp(3B3C").hash32());
-    ASSERT_EQ(0x9ef04df5u, ImmutableString("packSnorm2x16(1B").hash32());
-    ASSERT_EQ(0xe73def97u, ImmutableString("packUnorm2x16(1B").hash32());
-    ASSERT_EQ(0xbfd16903u, ImmutableString("packHalf2x16(1B").hash32());
-    ASSERT_EQ(0xab46cb2du, ImmutableString("unpackSnorm2x16(0D").hash32());
-    ASSERT_EQ(0xe12111f7u, ImmutableString("unpackUnorm2x16(0D").hash32());
-    ASSERT_EQ(0xbb0a6cb5u, ImmutableString("unpackHalf2x16(0D").hash32());
-    ASSERT_EQ(0x82b86afcu, ImmutableString("packUnorm4x8(3B").hash32());
-    ASSERT_EQ(0x6d7cd09au, ImmutableString("packSnorm4x8(3B").hash32());
-    ASSERT_EQ(0x7e0ed3ccu, ImmutableString("unpackUnorm4x8(0D").hash32());
-    ASSERT_EQ(0x2bceb1c6u, ImmutableString("unpackSnorm4x8(0D").hash32());
-    ASSERT_EQ(0x1731e675u, ImmutableString("length(0B").hash32());
-    ASSERT_EQ(0xed2f65c0u, ImmutableString("length(1B").hash32());
-    ASSERT_EQ(0x472c21d7u, ImmutableString("length(2B").hash32());
-    ASSERT_EQ(0x2529adbau, ImmutableString("length(3B").hash32());
-    ASSERT_EQ(0x97b032ceu, ImmutableString("distance(0B0B").hash32());
-    ASSERT_EQ(0xfdc4db42u, ImmutableString("distance(1B1B").hash32());
-    ASSERT_EQ(0x1a473286u, ImmutableString("distance(2B2B").hash32());
-    ASSERT_EQ(0x0887a662u, ImmutableString("distance(3B3B").hash32());
-    ASSERT_EQ(0xa05f6bc8u, ImmutableString("dot(0B0B").hash32());
-    ASSERT_EQ(0x41aa3804u, ImmutableString("dot(1B1B").hash32());
-    ASSERT_EQ(0xc42d3370u, ImmutableString("dot(2B2B").hash32());
-    ASSERT_EQ(0x2a4048e4u, ImmutableString("dot(3B3B").hash32());
-    ASSERT_EQ(0x4c9b39c9u, ImmutableString("cross(2B2B").hash32());
-    ASSERT_EQ(0xa2e83502u, ImmutableString("normalize(0B").hash32());
-    ASSERT_EQ(0x44eb729fu, ImmutableString("normalize(1B").hash32());
-    ASSERT_EQ(0x6aeded08u, ImmutableString("normalize(2B").hash32());
-    ASSERT_EQ(0x94f06dbdu, ImmutableString("normalize(3B").hash32());
-    ASSERT_EQ(0xfa8639d9u, ImmutableString("faceforward(0B0B0B").hash32());
-    ASSERT_EQ(0x3a4f7670u, ImmutableString("faceforward(1B1B1B").hash32());
-    ASSERT_EQ(0xd4f4bd1bu, ImmutableString("faceforward(2B2B2B").hash32());
-    ASSERT_EQ(0x1655eae2u, ImmutableString("faceforward(3B3B3B").hash32());
-    ASSERT_EQ(0x641f1576u, ImmutableString("reflect(0B0B").hash32());
-    ASSERT_EQ(0xca322aeau, ImmutableString("reflect(1B1B").hash32());
-    ASSERT_EQ(0x40514dceu, ImmutableString("reflect(2B2B").hash32());
-    ASSERT_EQ(0x619b508au, ImmutableString("reflect(3B3B").hash32());
-    ASSERT_EQ(0x762ec4e2u, ImmutableString("refract(0B0B0B").hash32());
-    ASSERT_EQ(0x0c4b44deu, ImmutableString("refract(1B1B0B").hash32());
-    ASSERT_EQ(0x3446c6cau, ImmutableString("refract(2B2B0B").hash32());
-    ASSERT_EQ(0x343e737eu, ImmutableString("refract(3B3B0B").hash32());
-    ASSERT_EQ(0x2530925bu, ImmutableString("matrixCompMult(5B5B").hash32());
-    ASSERT_EQ(0xce0b0283u, ImmutableString("matrixCompMult(ABAB").hash32());
-    ASSERT_EQ(0x646d7617u, ImmutableString("matrixCompMult(FBFB").hash32());
-    ASSERT_EQ(0x0f88eaa3u, ImmutableString("matrixCompMult(9B9B").hash32());
-    ASSERT_EQ(0x93b01b17u, ImmutableString("matrixCompMult(6B6B").hash32());
-    ASSERT_EQ(0xd7cedc37u, ImmutableString("matrixCompMult(DBDB").hash32());
-    ASSERT_EQ(0x346dec93u, ImmutableString("matrixCompMult(7B7B").hash32());
-    ASSERT_EQ(0xf68d511bu, ImmutableString("matrixCompMult(EBEB").hash32());
-    ASSERT_EQ(0x987daeb7u, ImmutableString("matrixCompMult(BBBB").hash32());
-    ASSERT_EQ(0x12fad71du, ImmutableString("outerProduct(1B1B").hash32());
-    ASSERT_EQ(0xb6286939u, ImmutableString("outerProduct(2B2B").hash32());
-    ASSERT_EQ(0xc36ef945u, ImmutableString("outerProduct(3B3B").hash32());
-    ASSERT_EQ(0xc421c37eu, ImmutableString("outerProduct(2B1B").hash32());
-    ASSERT_EQ(0x20f43162u, ImmutableString("outerProduct(1B2B").hash32());
-    ASSERT_EQ(0xf36934a7u, ImmutableString("outerProduct(3B1B").hash32());
-    ASSERT_EQ(0x42f6a57fu, ImmutableString("outerProduct(1B3B").hash32());
-    ASSERT_EQ(0x196baf10u, ImmutableString("outerProduct(3B2B").hash32());
-    ASSERT_EQ(0x0c26b204u, ImmutableString("outerProduct(2B3B").hash32());
-    ASSERT_EQ(0xfbc1e56fu, ImmutableString("transpose(5B").hash32());
-    ASSERT_EQ(0x04cd89bbu, ImmutableString("transpose(AB").hash32());
-    ASSERT_EQ(0xc2d9edc8u, ImmutableString("transpose(FB").hash32());
-    ASSERT_EQ(0xa1c52958u, ImmutableString("transpose(6B").hash32());
-    ASSERT_EQ(0xb3a4f203u, ImmutableString("transpose(9B").hash32());
-    ASSERT_EQ(0xcbc7aa0du, ImmutableString("transpose(7B").hash32());
-    ASSERT_EQ(0xfad5c8c2u, ImmutableString("transpose(DB").hash32());
-    ASSERT_EQ(0xaad0cda4u, ImmutableString("transpose(BB").hash32());
-    ASSERT_EQ(0x9cd7735fu, ImmutableString("transpose(EB").hash32());
-    ASSERT_EQ(0xd763566fu, ImmutableString("determinant(5B").hash32());
-    ASSERT_EQ(0xe06efabbu, ImmutableString("determinant(AB").hash32());
-    ASSERT_EQ(0x9e7b5ec8u, ImmutableString("determinant(FB").hash32());
-    ASSERT_EQ(0x0671c30au, ImmutableString("inverse(5B").hash32());
-    ASSERT_EQ(0x0f7d6756u, ImmutableString("inverse(AB").hash32());
-    ASSERT_EQ(0x198ec035u, ImmutableString("inverse(FB").hash32());
-    ASSERT_EQ(0x35d2bc55u, ImmutableString("lessThan(1B1B").hash32());
-    ASSERT_EQ(0x4c59f3f1u, ImmutableString("lessThan(2B2B").hash32());
-    ASSERT_EQ(0xa694989du, ImmutableString("lessThan(3B3B").hash32());
-    ASSERT_EQ(0x69652f41u, ImmutableString("lessThan(1C1C").hash32());
-    ASSERT_EQ(0xf707f2d5u, ImmutableString("lessThan(2C2C").hash32());
-    ASSERT_EQ(0x421d21e5u, ImmutableString("lessThan(3C3C").hash32());
-    ASSERT_EQ(0xae3dea39u, ImmutableString("lessThan(1D1D").hash32());
-    ASSERT_EQ(0x2cbb3831u, ImmutableString("lessThan(2D2D").hash32());
-    ASSERT_EQ(0x0b5bd931u, ImmutableString("lessThan(3D3D").hash32());
-    ASSERT_EQ(0xbb7abcffu, ImmutableString("lessThanEqual(1B1B").hash32());
-    ASSERT_EQ(0xf9e4df73u, ImmutableString("lessThanEqual(2B2B").hash32());
-    ASSERT_EQ(0xcab81737u, ImmutableString("lessThanEqual(3B3B").hash32());
-    ASSERT_EQ(0xef0d2febu, ImmutableString("lessThanEqual(1C1C").hash32());
-    ASSERT_EQ(0x931af97fu, ImmutableString("lessThanEqual(2C2C").hash32());
-    ASSERT_EQ(0x965473c7u, ImmutableString("lessThanEqual(3C3C").hash32());
-    ASSERT_EQ(0xbc4bed83u, ImmutableString("lessThanEqual(1D1D").hash32());
-    ASSERT_EQ(0x4869dbd3u, ImmutableString("lessThanEqual(2D2D").hash32());
-    ASSERT_EQ(0xdf2d350bu, ImmutableString("lessThanEqual(3D3D").hash32());
-    ASSERT_EQ(0x2e4fef86u, ImmutableString("greaterThan(1B1B").hash32());
-    ASSERT_EQ(0xa46f126au, ImmutableString("greaterThan(2B2B").hash32());
-    ASSERT_EQ(0x525f6fa6u, ImmutableString("greaterThan(3B3B").hash32());
-    ASSERT_EQ(0xb9cf953au, ImmutableString("greaterThan(1C1C").hash32());
-    ASSERT_EQ(0xba1060a6u, ImmutableString("greaterThan(2C2C").hash32());
-    ASSERT_EQ(0x36d7afdeu, ImmutableString("greaterThan(3C3C").hash32());
-    ASSERT_EQ(0x2d7ebf02u, ImmutableString("greaterThan(1D1D").hash32());
-    ASSERT_EQ(0x3ba7cb8au, ImmutableString("greaterThan(2D2D").hash32());
-    ASSERT_EQ(0x2620dd52u, ImmutableString("greaterThan(3D3D").hash32());
-    ASSERT_EQ(0x98571f82u, ImmutableString("greaterThanEqual(1B1B").hash32());
-    ASSERT_EQ(0xce27bec6u, ImmutableString("greaterThanEqual(2B2B").hash32());
-    ASSERT_EQ(0xbc669fa2u, ImmutableString("greaterThanEqual(3B3B").hash32());
-    ASSERT_EQ(0xe3884196u, ImmutableString("greaterThanEqual(1C1C").hash32());
-    ASSERT_EQ(0x63c84382u, ImmutableString("greaterThanEqual(2C2C").hash32());
-    ASSERT_EQ(0xa0dedfdau, ImmutableString("greaterThanEqual(3C3C").hash32());
-    ASSERT_EQ(0xd8a05eaeu, ImmutableString("greaterThanEqual(1D1D").hash32());
-    ASSERT_EQ(0x267a1e16u, ImmutableString("greaterThanEqual(2D2D").hash32());
-    ASSERT_EQ(0xd1427cfeu, ImmutableString("greaterThanEqual(3D3D").hash32());
-    ASSERT_EQ(0xf68b9ca9u, ImmutableString("equal(1B1B").hash32());
-    ASSERT_EQ(0x99b92ec5u, ImmutableString("equal(2B2B").hash32());
-    ASSERT_EQ(0x34e1bad1u, ImmutableString("equal(3B3B").hash32());
-    ASSERT_EQ(0xab5a7a95u, ImmutableString("equal(1C1C").hash32());
-    ASSERT_EQ(0x8417e089u, ImmutableString("equal(2C2C").hash32());
-    ASSERT_EQ(0xd06a4419u, ImmutableString("equal(3C3C").hash32());
-    ASSERT_EQ(0xc011536du, ImmutableString("equal(1D1D").hash32());
-    ASSERT_EQ(0x4b343265u, ImmutableString("equal(2D2D").hash32());
-    ASSERT_EQ(0xd75220b5u, ImmutableString("equal(3D3D").hash32());
-    ASSERT_EQ(0xeba3b9c1u, ImmutableString("equal(1E1E").hash32());
-    ASSERT_EQ(0xdc6a3fd9u, ImmutableString("equal(2E2E").hash32());
-    ASSERT_EQ(0x242c7b45u, ImmutableString("equal(3E3E").hash32());
-    ASSERT_EQ(0x58ce58e6u, ImmutableString("notEqual(1B1B").hash32());
-    ASSERT_EQ(0xb5a0c6cau, ImmutableString("notEqual(2B2B").hash32());
-    ASSERT_EQ(0x7173e986u, ImmutableString("notEqual(3B3B").hash32());
-    ASSERT_EQ(0x658a699au, ImmutableString("notEqual(1C1C").hash32());
-    ASSERT_EQ(0x4c7e8006u, ImmutableString("notEqual(2C2C").hash32());
-    ASSERT_EQ(0xd5eb603eu, ImmutableString("notEqual(3C3C").hash32());
-    ASSERT_EQ(0x593a5ce2u, ImmutableString("notEqual(1D1D").hash32());
-    ASSERT_EQ(0xce15eaeau, ImmutableString("notEqual(2D2D").hash32());
-    ASSERT_EQ(0xc53620b2u, ImmutableString("notEqual(3D3D").hash32());
-    ASSERT_EQ(0x1da7dd5eu, ImmutableString("notEqual(1E1E").hash32());
-    ASSERT_EQ(0x2ba422c6u, ImmutableString("notEqual(2E2E").hash32());
-    ASSERT_EQ(0x785bc622u, ImmutableString("notEqual(3E3E").hash32());
-    ASSERT_EQ(0x32a4419du, ImmutableString("any(1E").hash32());
-    ASSERT_EQ(0x82a280f6u, ImmutableString("any(2E").hash32());
-    ASSERT_EQ(0x5ea009b3u, ImmutableString("any(3E").hash32());
-    ASSERT_EQ(0x0f84439eu, ImmutableString("all(1E").hash32());
-    ASSERT_EQ(0xbf879745u, ImmutableString("all(2E").hash32());
-    ASSERT_EQ(0xdb8a01f0u, ImmutableString("all(3E").hash32());
-    ASSERT_EQ(0xde93f470u, ImmutableString("not(1E").hash32());
-    ASSERT_EQ(0xee8bbedbu, ImmutableString("not(2E").hash32());
-    ASSERT_EQ(0x128e361eu, ImmutableString("not(3E").hash32());
-    ASSERT_EQ(0x2c65fc52u, ImmutableString("bitfieldExtract(0C0C0C").hash32());
-    ASSERT_EQ(0x301e7aa3u, ImmutableString("bitfieldExtract(1C0C0C").hash32());
-    ASSERT_EQ(0x1bc77874u, ImmutableString("bitfieldExtract(2C0C0C").hash32());
-    ASSERT_EQ(0x2e198dddu, ImmutableString("bitfieldExtract(3C0C0C").hash32());
-    ASSERT_EQ(0x1ef52e53u, ImmutableString("bitfieldExtract(0D0C0C").hash32());
-    ASSERT_EQ(0xbecd46a2u, ImmutableString("bitfieldExtract(1D0C0C").hash32());
-    ASSERT_EQ(0x50828f41u, ImmutableString("bitfieldExtract(2D0C0C").hash32());
-    ASSERT_EQ(0x26e63818u, ImmutableString("bitfieldExtract(3D0C0C").hash32());
-    ASSERT_EQ(0xbcfd7f73u, ImmutableString("bitfieldInsert(0C0C0C0C").hash32());
-    ASSERT_EQ(0x221a7f03u, ImmutableString("bitfieldInsert(1C1C0C0C").hash32());
-    ASSERT_EQ(0xf4fc8897u, ImmutableString("bitfieldInsert(2C2C0C0C").hash32());
-    ASSERT_EQ(0x100c00dfu, ImmutableString("bitfieldInsert(3C3C0C0C").hash32());
-    ASSERT_EQ(0x6bd9dd3bu, ImmutableString("bitfieldInsert(0D0D0C0C").hash32());
-    ASSERT_EQ(0x3d7510bbu, ImmutableString("bitfieldInsert(1D1D0C0C").hash32());
-    ASSERT_EQ(0x70f71a0bu, ImmutableString("bitfieldInsert(2D2D0C0C").hash32());
-    ASSERT_EQ(0x0a15fba3u, ImmutableString("bitfieldInsert(3D3D0C0C").hash32());
-    ASSERT_EQ(0x380ee623u, ImmutableString("bitfieldReverse(0C").hash32());
-    ASSERT_EQ(0xe0122d32u, ImmutableString("bitfieldReverse(1C").hash32());
-    ASSERT_EQ(0xf009f79du, ImmutableString("bitfieldReverse(2C").hash32());
-    ASSERT_EQ(0x100c6894u, ImmutableString("bitfieldReverse(3C").hash32());
-    ASSERT_EQ(0x3d0eee02u, ImmutableString("bitfieldReverse(0D").hash32());
-    ASSERT_EQ(0xdb122553u, ImmutableString("bitfieldReverse(1D").hash32());
-    ASSERT_EQ(0xe909ec98u, ImmutableString("bitfieldReverse(2D").hash32());
-    ASSERT_EQ(0x0f0c6701u, ImmutableString("bitfieldReverse(3D").hash32());
-    ASSERT_EQ(0x3827bbd4u, ImmutableString("bitCount(0C").hash32());
-    ASSERT_EQ(0x18254addu, ImmutableString("bitCount(1C").hash32());
-    ASSERT_EQ(0x082bed72u, ImmutableString("bitCount(2C").hash32());
-    ASSERT_EQ(0x602a3963u, ImmutableString("bitCount(3C").hash32());
-    ASSERT_EQ(0x3727ba41u, ImmutableString("bitCount(0D").hash32());
-    ASSERT_EQ(0x11253fd8u, ImmutableString("bitCount(1D").hash32());
-    ASSERT_EQ(0x032be593u, ImmutableString("bitCount(2D").hash32());
-    ASSERT_EQ(0x652a4142u, ImmutableString("bitCount(3D").hash32());
-    ASSERT_EQ(0xc1b44a60u, ImmutableString("findLSB(0C").hash32());
-    ASSERT_EQ(0xa1b1d969u, ImmutableString("findLSB(1C").hash32());
-    ASSERT_EQ(0x91ba0efeu, ImmutableString("findLSB(2C").hash32());
-    ASSERT_EQ(0xe9b6c7efu, ImmutableString("findLSB(3C").hash32());
-    ASSERT_EQ(0xc8b45565u, ImmutableString("findLSB(0D").hash32());
-    ASSERT_EQ(0xa2b1dafcu, ImmutableString("findLSB(1D").hash32());
-    ASSERT_EQ(0x94ba13b7u, ImmutableString("findLSB(2D").hash32());
-    ASSERT_EQ(0xe6b6c336u, ImmutableString("findLSB(3D").hash32());
-    ASSERT_EQ(0x129034f1u, ImmutableString("findMSB(0C").hash32());
-    ASSERT_EQ(0x3292a5e8u, ImmutableString("findMSB(1C").hash32());
-    ASSERT_EQ(0xda9459f7u, ImmutableString("findMSB(2C").hash32());
-    ASSERT_EQ(0x0296d786u, ImmutableString("findMSB(3C").hash32());
-    ASSERT_EQ(0x13903684u, ImmutableString("findMSB(0D").hash32());
-    ASSERT_EQ(0x3992b0edu, ImmutableString("findMSB(1D").hash32());
-    ASSERT_EQ(0xd794553eu, ImmutableString("findMSB(2D").hash32());
-    ASSERT_EQ(0x0596dc3fu, ImmutableString("findMSB(3D").hash32());
-    ASSERT_EQ(0x76d26c06u, ImmutableString("uaddCarry(0D0D0D").hash32());
-    ASSERT_EQ(0x8638ea07u, ImmutableString("uaddCarry(1D1D1D").hash32());
-    ASSERT_EQ(0x830df594u, ImmutableString("uaddCarry(2D2D2D").hash32());
-    ASSERT_EQ(0x859069e5u, ImmutableString("uaddCarry(3D3D3D").hash32());
-    ASSERT_EQ(0xee0c9f85u, ImmutableString("usubBorrow(0D0D0D").hash32());
-    ASSERT_EQ(0x56a8a0b4u, ImmutableString("usubBorrow(1D1D1D").hash32());
-    ASSERT_EQ(0x2d76ad27u, ImmutableString("usubBorrow(2D2D2D").hash32());
-    ASSERT_EQ(0x1e102f26u, ImmutableString("usubBorrow(3D3D3D").hash32());
-    ASSERT_EQ(0x2691af51u, ImmutableString("umulExtended(0D0D0D0D").hash32());
-    ASSERT_EQ(0x6b51f121u, ImmutableString("umulExtended(1D1D1D1D").hash32());
-    ASSERT_EQ(0x4d3ff831u, ImmutableString("umulExtended(2D2D2D2D").hash32());
-    ASSERT_EQ(0x282a4a31u, ImmutableString("umulExtended(3D3D3D3D").hash32());
-    ASSERT_EQ(0x84d951b5u, ImmutableString("imulExtended(0C0C0C0C").hash32());
-    ASSERT_EQ(0xcc193b45u, ImmutableString("imulExtended(1C1C1C1C").hash32());
-    ASSERT_EQ(0x0a58432du, ImmutableString("imulExtended(2C2C2C2C").hash32());
-    ASSERT_EQ(0x8277ae4du, ImmutableString("imulExtended(3C3C3C3C").hash32());
-    ASSERT_EQ(0x2c852cb5u, ImmutableString("texture2D(0H1B").hash32());
-    ASSERT_EQ(0xd6d4ae73u, ImmutableString("texture2DProj(0H2B").hash32());
-    ASSERT_EQ(0xb4d23a56u, ImmutableString("texture2DProj(0H3B").hash32());
-    ASSERT_EQ(0x11ea9d29u, ImmutableString("textureCube(0J2B").hash32());
-    ASSERT_EQ(0xe7d17641u, ImmutableString("texture2D(0L1B").hash32());
-    ASSERT_EQ(0x5270451fu, ImmutableString("texture2DProj(0L2B").hash32());
-    ASSERT_EQ(0xb06d0782u, ImmutableString("texture2DProj(0L3B").hash32());
-    ASSERT_EQ(0x05cd2a61u, ImmutableString("texture2DRect(0N1B").hash32());
-    ASSERT_EQ(0xc97a55d7u, ImmutableString("texture2DRectProj(0N2B").hash32());
-    ASSERT_EQ(0xa777e1bau, ImmutableString("texture2DRectProj(0N3B").hash32());
-    ASSERT_EQ(0xc5a2d6f5u, ImmutableString("texture(0N1B").hash32());
-    ASSERT_EQ(0xd934e233u, ImmutableString("textureProj(0N2B").hash32());
-    ASSERT_EQ(0xb7326e16u, ImmutableString("textureProj(0N3B").hash32());
-    ASSERT_EQ(0x72093d38u, ImmutableString("texture2DGradEXT(0H1B1B1B").hash32());
-    ASSERT_EQ(0xabd48fdcu, ImmutableString("texture2DProjGradEXT(0H2B1B1B").hash32());
-    ASSERT_EQ(0x33484f89u, ImmutableString("texture2DProjGradEXT(0H3B1B1B").hash32());
-    ASSERT_EQ(0x79171da6u, ImmutableString("textureCubeGradEXT(0J2B2B2B").hash32());
-    ASSERT_EQ(0x8ee03ca7u, ImmutableString("texture2D(0H1B0B").hash32());
-    ASSERT_EQ(0x88cd05e1u, ImmutableString("texture2DProj(0H2B0B").hash32());
-    ASSERT_EQ(0x30daf170u, ImmutableString("texture2DProj(0H3B0B").hash32());
-    ASSERT_EQ(0xd649f15bu, ImmutableString("textureCube(0J2B0B").hash32());
-    ASSERT_EQ(0x30de4eebu, ImmutableString("dFdx(0B").hash32());
-    ASSERT_EQ(0x8edb114eu, ImmutableString("dFdx(1B").hash32());
-    ASSERT_EQ(0x80e34a09u, ImmutableString("dFdx(2B").hash32());
-    ASSERT_EQ(0x56e0c954u, ImmutableString("dFdx(3B").hash32());
-    ASSERT_EQ(0x2a65dfa6u, ImmutableString("dFdy(0B").hash32());
-    ASSERT_EQ(0x4c6853c3u, ImmutableString("dFdy(1B").hash32());
-    ASSERT_EQ(0x726ace2cu, ImmutableString("dFdy(2B").hash32());
-    ASSERT_EQ(0x9c6d4ee1u, ImmutableString("dFdy(3B").hash32());
-    ASSERT_EQ(0xa6cba313u, ImmutableString("fwidth(0B").hash32());
-    ASSERT_EQ(0x04c9f876u, ImmutableString("fwidth(1B").hash32());
-    ASSERT_EQ(0xf6d09e31u, ImmutableString("fwidth(2B").hash32());
-    ASSERT_EQ(0xccce1d7cu, ImmutableString("fwidth(3B").hash32());
-    ASSERT_EQ(0x8682af79u, ImmutableString("texture2DLodEXT(0H1B0B").hash32());
-    ASSERT_EQ(0xc117a53fu, ImmutableString("texture2DProjLodEXT(0H2B0B").hash32());
-    ASSERT_EQ(0x39021baeu, ImmutableString("texture2DProjLodEXT(0H3B0B").hash32());
-    ASSERT_EQ(0x43f81965u, ImmutableString("textureCubeLodEXT(0J2B0B").hash32());
-    ASSERT_EQ(0x0cf3085au, ImmutableString("texture2DLod(0H1B0B").hash32());
-    ASSERT_EQ(0x8ea43616u, ImmutableString("texture2DProjLod(0H2B0B").hash32());
-    ASSERT_EQ(0x157c8b27u, ImmutableString("texture2DProjLod(0H3B0B").hash32());
-    ASSERT_EQ(0x8238ae88u, ImmutableString("textureCubeLod(0J2B0B").hash32());
-    ASSERT_EQ(0xbed19cffu, ImmutableString("texture(0H1B").hash32());
-    ASSERT_EQ(0xe4231ee7u, ImmutableString("texture(0P1B").hash32());
-    ASSERT_EQ(0xdb6a1034u, ImmutableString("texture(0U1B").hash32());
-    ASSERT_EQ(0x4b60ca6fu, ImmutableString("texture(0I2B").hash32());
-    ASSERT_EQ(0x71ef80d7u, ImmutableString("texture(0Q2B").hash32());
-    ASSERT_EQ(0x393c36c2u, ImmutableString("texture(0V2B").hash32());
-    ASSERT_EQ(0x8ee6e7c6u, ImmutableString("texture(0J2B").hash32());
-    ASSERT_EQ(0xf486ed4eu, ImmutableString("texture(0R2B").hash32());
-    ASSERT_EQ(0x8f8e3971u, ImmutableString("texture(0W2B").hash32());
-    ASSERT_EQ(0x25876e15u, ImmutableString("texture(0K2B").hash32());
-    ASSERT_EQ(0x0b283d1du, ImmutableString("texture(0S2B").hash32());
-    ASSERT_EQ(0x938e9938u, ImmutableString("texture(0X2B").hash32());
-    ASSERT_EQ(0x2db85505u, ImmutableString("textureProj(0H2B").hash32());
-    ASSERT_EQ(0x37221e6du, ImmutableString("textureProj(0P2B").hash32());
-    ASSERT_EQ(0xe3f81a12u, ImmutableString("textureProj(0U2B").hash32());
-    ASSERT_EQ(0x83b69dd0u, ImmutableString("textureProj(0H3B").hash32());
-    ASSERT_EQ(0x0d1f9db8u, ImmutableString("textureProj(0P3B").hash32());
-    ASSERT_EQ(0x05fa8e2fu, ImmutableString("textureProj(0U3B").hash32());
-    ASSERT_EQ(0xb91a42d3u, ImmutableString("textureProj(0I3B").hash32());
-    ASSERT_EQ(0xc282793bu, ImmutableString("textureProj(0Q3B").hash32());
-    ASSERT_EQ(0x3f5e397eu, ImmutableString("textureProj(0V3B").hash32());
-    ASSERT_EQ(0x66fac460u, ImmutableString("textureLod(0H1B0B").hash32());
-    ASSERT_EQ(0xf9c25078u, ImmutableString("textureLod(0P1B0B").hash32());
-    ASSERT_EQ(0xee116f63u, ImmutableString("textureLod(0U1B0B").hash32());
-    ASSERT_EQ(0xa78e0f2cu, ImmutableString("textureLod(0I2B0B").hash32());
-    ASSERT_EQ(0x12a67064u, ImmutableString("textureLod(0Q2B0B").hash32());
-    ASSERT_EQ(0x339c450du, ImmutableString("textureLod(0V2B0B").hash32());
-    ASSERT_EQ(0x622e51a9u, ImmutableString("textureLod(0J2B0B").hash32());
-    ASSERT_EQ(0x999dc041u, ImmutableString("textureLod(0R2B0B").hash32());
-    ASSERT_EQ(0xa687812eu, ImmutableString("textureLod(0W2B0B").hash32());
-    ASSERT_EQ(0xd846ba4au, ImmutableString("textureLod(0K2B0B").hash32());
-    ASSERT_EQ(0x4cd78002u, ImmutableString("textureLod(0S2B0B").hash32());
-    ASSERT_EQ(0x072c92c3u, ImmutableString("textureLod(0X2B0B").hash32());
-    ASSERT_EQ(0x3da16996u, ImmutableString("texture(0Z2B").hash32());
-    ASSERT_EQ(0xc3be50cau, ImmutableString("texture(0a3B").hash32());
-    ASSERT_EQ(0x8b97d9fbu, ImmutableString("texture(0b3B").hash32());
-    ASSERT_EQ(0x8411eff2u, ImmutableString("textureProj(0Z3B").hash32());
-    ASSERT_EQ(0xfcf90ed9u, ImmutableString("textureLod(0Z2B0B").hash32());
-    ASSERT_EQ(0x85509e6au, ImmutableString("textureSize(0H0C").hash32());
-    ASSERT_EQ(0xcd2de632u, ImmutableString("textureSize(0P0C").hash32());
-    ASSERT_EQ(0x154b0321u, ImmutableString("textureSize(0U0C").hash32());
-    ASSERT_EQ(0x077c06e5u, ImmutableString("textureSize(0I0C").hash32());
-    ASSERT_EQ(0xd095b9adu, ImmutableString("textureSize(0Q0C").hash32());
-    ASSERT_EQ(0x4bfe4a10u, ImmutableString("textureSize(0V0C").hash32());
-    ASSERT_EQ(0x3e30e0d4u, ImmutableString("textureSize(0J0C").hash32());
-    ASSERT_EQ(0xc799e0bcu, ImmutableString("textureSize(0R0C").hash32());
-    ASSERT_EQ(0x8e78ffabu, ImmutableString("textureSize(0W0C").hash32());
-    ASSERT_EQ(0xc1997dcfu, ImmutableString("textureSize(0K0C").hash32());
-    ASSERT_EQ(0x4b027db7u, ImmutableString("textureSize(0S0C").hash32());
-    ASSERT_EQ(0xd6961c9au, ImmutableString("textureSize(0X0C").hash32());
-    ASSERT_EQ(0x90b39384u, ImmutableString("textureSize(0Z0C").hash32());
-    ASSERT_EQ(0xdb880a9du, ImmutableString("textureSize(0a0C").hash32());
-    ASSERT_EQ(0x528b682cu, ImmutableString("textureSize(0b0C").hash32());
-    ASSERT_EQ(0x7c701716u, ImmutableString("textureSize(0O").hash32());
-    ASSERT_EQ(0x737008ebu, ImmutableString("textureSize(0T").hash32());
-    ASSERT_EQ(0x6e70010cu, ImmutableString("textureSize(0Y").hash32());
-    ASSERT_EQ(0x4257e234u, ImmutableString("textureProjLod(0H2B0B").hash32());
-    ASSERT_EQ(0x164d5fdcu, ImmutableString("textureProjLod(0P2B0B").hash32());
-    ASSERT_EQ(0x798a0c0fu, ImmutableString("textureProjLod(0U2B0B").hash32());
-    ASSERT_EQ(0x1b87f4a5u, ImmutableString("textureProjLod(0H3B0B").hash32());
-    ASSERT_EQ(0xbb36aeedu, ImmutableString("textureProjLod(0P3B0B").hash32());
-    ASSERT_EQ(0x64ce27feu, ImmutableString("textureProjLod(0U3B0B").hash32());
-    ASSERT_EQ(0xf058b46au, ImmutableString("textureProjLod(0I3B0B").hash32());
-    ASSERT_EQ(0x09e0f252u, ImmutableString("textureProjLod(0Q3B0B").hash32());
-    ASSERT_EQ(0xb087ded7u, ImmutableString("textureProjLod(0V3B0B").hash32());
-    ASSERT_EQ(0xdf19eb73u, ImmutableString("textureProjLod(0Z3B0B").hash32());
-    ASSERT_EQ(0xfb768e02u, ImmutableString("texelFetch(0H1C0C").hash32());
-    ASSERT_EQ(0x28be44dau, ImmutableString("texelFetch(0P1C0C").hash32());
-    ASSERT_EQ(0xda6f4215u, ImmutableString("texelFetch(0U1C0C").hash32());
-    ASSERT_EQ(0x7732f2f2u, ImmutableString("texelFetch(0I2C0C").hash32());
-    ASSERT_EQ(0x17d44f4au, ImmutableString("texelFetch(0Q2C0C").hash32());
-    ASSERT_EQ(0x0233df8fu, ImmutableString("texelFetch(0V2C0C").hash32());
-    ASSERT_EQ(0xa3b5f7d4u, ImmutableString("texelFetch(0K2C0C").hash32());
-    ASSERT_EQ(0x4455c12cu, ImmutableString("texelFetch(0S2C0C").hash32());
-    ASSERT_EQ(0xc01ff0f1u, ImmutableString("texelFetch(0X2C0C").hash32());
-    ASSERT_EQ(0x319bd053u, ImmutableString("textureGrad(0H1B1B1B").hash32());
-    ASSERT_EQ(0x8f2182ebu, ImmutableString("textureGrad(0P1B1B1B").hash32());
-    ASSERT_EQ(0xe7a84898u, ImmutableString("textureGrad(0U1B1B1B").hash32());
-    ASSERT_EQ(0x017a65d7u, ImmutableString("textureGrad(0I2B2B2B").hash32());
-    ASSERT_EQ(0x32c6e76fu, ImmutableString("textureGrad(0Q2B2B2B").hash32());
-    ASSERT_EQ(0xfe5d9a62u, ImmutableString("textureGrad(0V2B2B2B").hash32());
-    ASSERT_EQ(0x3e2a3dd6u, ImmutableString("textureGrad(0J2B2B2B").hash32());
-    ASSERT_EQ(0x68df806eu, ImmutableString("textureGrad(0R2B2B2B").hash32());
-    ASSERT_EQ(0x2337ed89u, ImmutableString("textureGrad(0W2B2B2B").hash32());
-    ASSERT_EQ(0xd45005c2u, ImmutableString("textureGrad(0Z2B1B1B").hash32());
-    ASSERT_EQ(0x2a98dd2au, ImmutableString("textureGrad(0a3B2B2B").hash32());
-    ASSERT_EQ(0xe17cbae1u, ImmutableString("textureGrad(0K2B1B1B").hash32());
-    ASSERT_EQ(0xad25bf79u, ImmutableString("textureGrad(0S2B1B1B").hash32());
-    ASSERT_EQ(0x47a2ba6cu, ImmutableString("textureGrad(0X2B1B1B").hash32());
-    ASSERT_EQ(0xa4df529fu, ImmutableString("textureGrad(0b3B1B1B").hash32());
-    ASSERT_EQ(0xb6a81eddu, ImmutableString("textureProjGrad(0H2B1B1B").hash32());
-    ASSERT_EQ(0x6fa329a5u, ImmutableString("textureProjGrad(0P2B1B1B").hash32());
-    ASSERT_EQ(0xe0e2d862u, ImmutableString("textureProjGrad(0U2B1B1B").hash32());
-    ASSERT_EQ(0x6509abb0u, ImmutableString("textureProjGrad(0H3B1B1B").hash32());
-    ASSERT_EQ(0xa0c1a478u, ImmutableString("textureProjGrad(0P3B1B1B").hash32());
-    ASSERT_EQ(0x96a71f27u, ImmutableString("textureProjGrad(0U3B1B1B").hash32());
-    ASSERT_EQ(0x7fe4d147u, ImmutableString("textureProjGrad(0I3B2B2B").hash32());
-    ASSERT_EQ(0x3c0d8cafu, ImmutableString("textureProjGrad(0Q3B2B2B").hash32());
-    ASSERT_EQ(0x32a42332u, ImmutableString("textureProjGrad(0V3B2B2B").hash32());
-    ASSERT_EQ(0xca53d58au, ImmutableString("textureProjGrad(0Z3B1B1B").hash32());
-    ASSERT_EQ(0x22d26116u, ImmutableString("textureOffset(0H1B1C").hash32());
-    ASSERT_EQ(0x101493beu, ImmutableString("textureOffset(0P1B1C").hash32());
-    ASSERT_EQ(0x39c4a805u, ImmutableString("textureOffset(0U1B1C").hash32());
-    ASSERT_EQ(0xcbaf14edu, ImmutableString("textureOffset(0I2B2C").hash32());
-    ASSERT_EQ(0x78036035u, ImmutableString("textureOffset(0Q2B2C").hash32());
-    ASSERT_EQ(0x138e5608u, ImmutableString("textureOffset(0V2B2C").hash32());
-    ASSERT_EQ(0x73713e4bu, ImmutableString("textureOffset(0Z2B1C").hash32());
-    ASSERT_EQ(0x80b45ae8u, ImmutableString("textureOffset(0K2B1C").hash32());
-    ASSERT_EQ(0x59ec8230u, ImmutableString("textureOffset(0S2B1C").hash32());
-    ASSERT_EQ(0x70c27acdu, ImmutableString("textureOffset(0X2B1C").hash32());
-    ASSERT_EQ(0x15d42df8u, ImmutableString("textureProjOffset(0H2B1C").hash32());
-    ASSERT_EQ(0x9a695ee0u, ImmutableString("textureProjOffset(0P2B1C").hash32());
-    ASSERT_EQ(0x0776d647u, ImmutableString("textureProjOffset(0U2B1C").hash32());
-    ASSERT_EQ(0x5be66575u, ImmutableString("textureProjOffset(0H3B1C").hash32());
-    ASSERT_EQ(0xdf3e61ddu, ImmutableString("textureProjOffset(0P3B1C").hash32());
-    ASSERT_EQ(0x01882d1au, ImmutableString("textureProjOffset(0U3B1C").hash32());
-    ASSERT_EQ(0x8952b249u, ImmutableString("textureProjOffset(0I3B2C").hash32());
-    ASSERT_EQ(0x59a05651u, ImmutableString("textureProjOffset(0Q3B2C").hash32());
-    ASSERT_EQ(0xa506c0ccu, ImmutableString("textureProjOffset(0V3B2C").hash32());
-    ASSERT_EQ(0xbe73df8fu, ImmutableString("textureProjOffset(0Z3B1C").hash32());
-    ASSERT_EQ(0x9215c4d9u, ImmutableString("textureLodOffset(0H1B0B1C").hash32());
-    ASSERT_EQ(0x793a7cc1u, ImmutableString("textureLodOffset(0P1B0B1C").hash32());
-    ASSERT_EQ(0xf48ef6a2u, ImmutableString("textureLodOffset(0U1B0B1C").hash32());
-    ASSERT_EQ(0xbd22ce5eu, ImmutableString("textureLodOffset(0I2B0B2C").hash32());
-    ASSERT_EQ(0x90a846c6u, ImmutableString("textureLodOffset(0Q2B0B2C").hash32());
-    ASSERT_EQ(0x4ee30447u, ImmutableString("textureLodOffset(0V2B0B2C").hash32());
-    ASSERT_EQ(0x4a5c1bf4u, ImmutableString("textureLodOffset(0Z2B0B1C").hash32());
-    ASSERT_EQ(0xa09a8937u, ImmutableString("textureLodOffset(0K2B0B1C").hash32());
-    ASSERT_EQ(0x58585f7fu, ImmutableString("textureLodOffset(0S2B0B1C").hash32());
-    ASSERT_EQ(0x2d30964eu, ImmutableString("textureLodOffset(0X2B0B1C").hash32());
-    ASSERT_EQ(0x559bf8bdu, ImmutableString("textureProjLodOffset(0H2B0B1C").hash32());
-    ASSERT_EQ(0xddbc72f5u, ImmutableString("textureProjLodOffset(0P2B0B1C").hash32());
-    ASSERT_EQ(0xeda8ca9eu, ImmutableString("textureProjLodOffset(0U2B0B1C").hash32());
-    ASSERT_EQ(0x7c675aa4u, ImmutableString("textureProjLodOffset(0H3B0B1C").hash32());
-    ASSERT_EQ(0xabf9e1fcu, ImmutableString("textureProjLodOffset(0P3B0B1C").hash32());
-    ASSERT_EQ(0xfb4c331fu, ImmutableString("textureProjLodOffset(0U3B0B1C").hash32());
-    ASSERT_EQ(0x72403404u, ImmutableString("textureProjLodOffset(0I3B0B2C").hash32());
-    ASSERT_EQ(0x5c0b0c3cu, ImmutableString("textureProjLodOffset(0Q3B0B2C").hash32());
-    ASSERT_EQ(0x73cbbd41u, ImmutableString("textureProjLodOffset(0V3B0B2C").hash32());
-    ASSERT_EQ(0x1a4b729au, ImmutableString("textureProjLodOffset(0Z3B0B1C").hash32());
-    ASSERT_EQ(0x640bb15fu, ImmutableString("texelFetchOffset(0H1C0C1C").hash32());
-    ASSERT_EQ(0x38a66077u, ImmutableString("texelFetchOffset(0P1C0C1C").hash32());
-    ASSERT_EQ(0x8fd50890u, ImmutableString("texelFetchOffset(0U1C0C1C").hash32());
-    ASSERT_EQ(0x1c1e5a64u, ImmutableString("texelFetchOffset(0I2C0C2C").hash32());
-    ASSERT_EQ(0xb190dd9cu, ImmutableString("texelFetchOffset(0Q2C0C2C").hash32());
-    ASSERT_EQ(0xc6608dc1u, ImmutableString("texelFetchOffset(0V2C0C2C").hash32());
-    ASSERT_EQ(0x5999aca5u, ImmutableString("texelFetchOffset(0K2C0C1C").hash32());
-    ASSERT_EQ(0x22a80e3du, ImmutableString("texelFetchOffset(0S2C0C1C").hash32());
-    ASSERT_EQ(0x0da46ec0u, ImmutableString("texelFetchOffset(0X2C0C1C").hash32());
-    ASSERT_EQ(0xe0101092u, ImmutableString("textureGradOffset(0H1B1B1B1C").hash32());
-    ASSERT_EQ(0xe707edcau, ImmutableString("textureGradOffset(0P1B1B1B1C").hash32());
-    ASSERT_EQ(0x098595d1u, ImmutableString("textureGradOffset(0U1B1B1B1C").hash32());
-    ASSERT_EQ(0x7da4e4cdu, ImmutableString("textureGradOffset(0I2B2B2B2C").hash32());
-    ASSERT_EQ(0xaf4ae965u, ImmutableString("textureGradOffset(0Q2B2B2B2C").hash32());
-    ASSERT_EQ(0xc5462e10u, ImmutableString("textureGradOffset(0V2B2B2B2C").hash32());
-    ASSERT_EQ(0xd04f80efu, ImmutableString("textureGradOffset(0Z2B1B1B1C").hash32());
-    ASSERT_EQ(0x2fd29b2cu, ImmutableString("textureGradOffset(0K2B1B1B1C").hash32());
-    ASSERT_EQ(0xa8f6aea4u, ImmutableString("textureGradOffset(0S2B1B1B1C").hash32());
-    ASSERT_EQ(0x4759a1c9u, ImmutableString("textureGradOffset(0X2B1B1B1C").hash32());
-    ASSERT_EQ(0x59e1f1f2u, ImmutableString("textureGradOffset(0b3B1B1B1C").hash32());
-    ASSERT_EQ(0xef12ada0u, ImmutableString("textureProjGradOffset(0H2B1B1B1C").hash32());
-    ASSERT_EQ(0x455afa58u, ImmutableString("textureProjGradOffset(0P2B1B1B1C").hash32());
-    ASSERT_EQ(0x96d47d37u, ImmutableString("textureProjGradOffset(0U2B1B1B1C").hash32());
-    ASSERT_EQ(0x469db0f5u, ImmutableString("textureProjGradOffset(0H3B1B1B1C").hash32());
-    ASSERT_EQ(0xcbf66d8du, ImmutableString("textureProjGradOffset(0P3B1B1B1C").hash32());
-    ASSERT_EQ(0x147c8362u, ImmutableString("textureProjGradOffset(0U3B1B1B1C").hash32());
-    ASSERT_EQ(0x574855cdu, ImmutableString("textureProjGradOffset(0I3B2B2B2C").hash32());
-    ASSERT_EQ(0x88ee5a65u, ImmutableString("textureProjGradOffset(0Q3B2B2B2C").hash32());
-    ASSERT_EQ(0x1830b4d0u, ImmutableString("textureProjGradOffset(0V3B2B2B2C").hash32());
-    ASSERT_EQ(0x8e47a097u, ImmutableString("textureProjGradOffset(0Z3B1B1B1C").hash32());
-    ASSERT_EQ(0xaee18cb0u, ImmutableString("textureOffset(0H1B1C0B").hash32());
-    ASSERT_EQ(0xdfde92d8u, ImmutableString("textureOffset(0P1B1C0B").hash32());
-    ASSERT_EQ(0x563bd7d7u, ImmutableString("textureOffset(0U1B1C0B").hash32());
-    ASSERT_EQ(0xb07a78bfu, ImmutableString("textureOffset(0I2B2C0B").hash32());
-    ASSERT_EQ(0x112e5c27u, ImmutableString("textureOffset(0Q2B2C0B").hash32());
-    ASSERT_EQ(0x18e874deu, ImmutableString("textureOffset(0V2B2C0B").hash32());
-    ASSERT_EQ(0x522fa659u, ImmutableString("textureOffset(0Z2B1C0B").hash32());
-    ASSERT_EQ(0xc4f49a7eu, ImmutableString("textureOffset(0K2B1C0B").hash32());
-    ASSERT_EQ(0xddf5b9e6u, ImmutableString("textureOffset(0S2B1C0B").hash32());
-    ASSERT_EQ(0x305a9bdfu, ImmutableString("textureOffset(0X2B1C0B").hash32());
-    ASSERT_EQ(0xdf67b56eu, ImmutableString("textureProjOffset(0H2B1C0B").hash32());
-    ASSERT_EQ(0xec06a1b6u, ImmutableString("textureProjOffset(0P2B1C0B").hash32());
-    ASSERT_EQ(0xcae04b35u, ImmutableString("textureProjOffset(0U2B1C0B").hash32());
-    ASSERT_EQ(0xc44ccce7u, ImmutableString("textureProjOffset(0H3B1C0B").hash32());
-    ASSERT_EQ(0x7b1b7dcfu, ImmutableString("textureProjOffset(0P3B1C0B").hash32());
-    ASSERT_EQ(0x5ab4ebd4u, ImmutableString("textureProjOffset(0U3B1C0B").hash32());
-    ASSERT_EQ(0xd4ea75bbu, ImmutableString("textureProjOffset(0I3B2C0B").hash32());
-    ASSERT_EQ(0x7cb00963u, ImmutableString("textureProjOffset(0Q3B2C0B").hash32());
-    ASSERT_EQ(0x13b5a742u, ImmutableString("textureProjOffset(0V3B2C0B").hash32());
-    ASSERT_EQ(0xb1a6333du, ImmutableString("textureProjOffset(0Z3B1C0B").hash32());
-    ASSERT_EQ(0xc336cfd3u, ImmutableString("texture(0L1B").hash32());
-    ASSERT_EQ(0x726d9e79u, ImmutableString("textureProj(0L2B").hash32());
-    ASSERT_EQ(0xc86a5444u, ImmutableString("textureProj(0L3B").hash32());
-    ASSERT_EQ(0x89b5d13eu, ImmutableString("textureSize(0L0C").hash32());
-    ASSERT_EQ(0xdce2d84eu, ImmutableString("texelFetch(0L1C0C").hash32());
-    ASSERT_EQ(0x75c877acu, ImmutableString("texture(0M1B").hash32());
-    ASSERT_EQ(0x5bcc4eaau, ImmutableString("textureProj(0M2B").hash32());
-    ASSERT_EQ(0x7dcec2c7u, ImmutableString("textureProj(0M3B").hash32());
-    ASSERT_EQ(0xb3da1777u, ImmutableString("rgb_2_yuv(2B0G").hash32());
-    ASSERT_EQ(0x7c291893u, ImmutableString("yuv_2_rgb(2B0G").hash32());
-    ASSERT_EQ(0x0be139b9u, ImmutableString("textureSize(0M0C").hash32());
-    ASSERT_EQ(0x404f56ddu, ImmutableString("texelFetch(0M1C0C").hash32());
-    ASSERT_EQ(0xde51954du, ImmutableString("texture(0H1B0B").hash32());
-    ASSERT_EQ(0x38c7ba95u, ImmutableString("texture(0P1B0B").hash32());
-    ASSERT_EQ(0x042a180au, ImmutableString("texture(0U1B0B").hash32());
-    ASSERT_EQ(0xfbe2aeddu, ImmutableString("texture(0I2B0B").hash32());
-    ASSERT_EQ(0x6c785ca5u, ImmutableString("texture(0Q2B0B").hash32());
-    ASSERT_EQ(0x43c5755cu, ImmutableString("texture(0V2B0B").hash32());
-    ASSERT_EQ(0xb92bf800u, ImmutableString("texture(0J2B0B").hash32());
-    ASSERT_EQ(0xe5810cc8u, ImmutableString("texture(0R2B0B").hash32());
-    ASSERT_EQ(0x7f200dc3u, ImmutableString("texture(0W2B0B").hash32());
-    ASSERT_EQ(0x875430c7u, ImmutableString("texture(0K2B0B").hash32());
-    ASSERT_EQ(0xa702218fu, ImmutableString("texture(0S2B0B").hash32());
-    ASSERT_EQ(0x1e7afc2eu, ImmutableString("texture(0X2B0B").hash32());
-    ASSERT_EQ(0xdf9fccd7u, ImmutableString("textureProj(0H2B0B").hash32());
-    ASSERT_EQ(0xa8305e3fu, ImmutableString("textureProj(0P2B0B").hash32());
-    ASSERT_EQ(0x3b7b4d8cu, ImmutableString("textureProj(0U2B0B").hash32());
-    ASSERT_EQ(0xcae3e8c6u, ImmutableString("textureProj(0H3B0B").hash32());
-    ASSERT_EQ(0x201ad4aeu, ImmutableString("textureProj(0P3B0B").hash32());
-    ASSERT_EQ(0x53bcaf1du, ImmutableString("textureProj(0U3B0B").hash32());
-    ASSERT_EQ(0x696b3b81u, ImmutableString("textureProj(0I3B0B").hash32());
-    ASSERT_EQ(0x4b4881e9u, ImmutableString("textureProj(0Q3B0B").hash32());
-    ASSERT_EQ(0xa9904518u, ImmutableString("textureProj(0V3B0B").hash32());
-    ASSERT_EQ(0x68d90930u, ImmutableString("texture(0Z2B0B").hash32());
-    ASSERT_EQ(0xf79abc24u, ImmutableString("texture(0a3B0B").hash32());
-    ASSERT_EQ(0x212162acu, ImmutableString("textureProj(0Z3B0B").hash32());
-    ASSERT_EQ(0x44531081u, ImmutableString("texture(0L1B0B").hash32());
-    ASSERT_EQ(0xfcf64e0bu, ImmutableString("textureProj(0L2B0B").hash32());
-    ASSERT_EQ(0x02c4537au, ImmutableString("textureProj(0L3B0B").hash32());
-    ASSERT_EQ(0x3171cee2u, ImmutableString("texture(0M1B0B").hash32());
-    ASSERT_EQ(0x3b753944u, ImmutableString("textureProj(0M2B0B").hash32());
-    ASSERT_EQ(0x14a54bb5u, ImmutableString("textureProj(0M3B0B").hash32());
-    ASSERT_EQ(0x2e205f43u, ImmutableString("texelFetch(0O1C0C").hash32());
-    ASSERT_EQ(0x83a9e786u, ImmutableString("texelFetch(0T1C0C").hash32());
-    ASSERT_EQ(0xbbdb8c61u, ImmutableString("texelFetch(0Y1C0C").hash32());
-    ASSERT_EQ(0x573d1826u, ImmutableString("textureGather(0H1B").hash32());
-    ASSERT_EQ(0x0f61635eu, ImmutableString("textureGather(0P1B").hash32());
-    ASSERT_EQ(0x181a7211u, ImmutableString("textureGather(0U1B").hash32());
-    ASSERT_EQ(0x98b5c033u, ImmutableString("textureGather(0H1B0C").hash32());
-    ASSERT_EQ(0x1230974bu, ImmutableString("textureGather(0P1B0C").hash32());
-    ASSERT_EQ(0x047e2010u, ImmutableString("textureGather(0U1B0C").hash32());
-    ASSERT_EQ(0x889130b4u, ImmutableString("textureGather(0K2B").hash32());
-    ASSERT_EQ(0x80649bccu, ImmutableString("textureGather(0S2B").hash32());
-    ASSERT_EQ(0x77ff0931u, ImmutableString("textureGather(0X2B").hash32());
-    ASSERT_EQ(0xf0b36e1du, ImmutableString("textureGather(0K2B0C").hash32());
-    ASSERT_EQ(0x7e927bd5u, ImmutableString("textureGather(0S2B0C").hash32());
-    ASSERT_EQ(0x36e78b70u, ImmutableString("textureGather(0X2B0C").hash32());
-    ASSERT_EQ(0xf05b183bu, ImmutableString("textureGather(0J2B").hash32());
-    ASSERT_EQ(0xe6f2e1d3u, ImmutableString("textureGather(0R2B").hash32());
-    ASSERT_EQ(0x7bff68f8u, ImmutableString("textureGather(0W2B").hash32());
-    ASSERT_EQ(0x91e7b756u, ImmutableString("textureGather(0J2B0C").hash32());
-    ASSERT_EQ(0xb00a70eeu, ImmutableString("textureGather(0R2B0C").hash32());
-    ASSERT_EQ(0xd840ea01u, ImmutableString("textureGather(0W2B0C").hash32());
-    ASSERT_EQ(0xc3dadff4u, ImmutableString("textureGather(0Z1B").hash32());
-    ASSERT_EQ(0xbcf1974au, ImmutableString("textureGather(0Z1B0B").hash32());
-    ASSERT_EQ(0xdc0090e3u, ImmutableString("textureGather(0b2B").hash32());
-    ASSERT_EQ(0x36e65c71u, ImmutableString("textureGather(0b2B0B").hash32());
-    ASSERT_EQ(0x5e97fd5au, ImmutableString("textureGather(0a2B").hash32());
-    ASSERT_EQ(0xafef0c94u, ImmutableString("textureGather(0a2B0B").hash32());
-    ASSERT_EQ(0xe3b7a4efu, ImmutableString("textureGatherOffset(0H1B1C").hash32());
-    ASSERT_EQ(0x38ee90d7u, ImmutableString("textureGatherOffset(0P1B1C").hash32());
-    ASSERT_EQ(0xf91ef410u, ImmutableString("textureGatherOffset(0U1B1C").hash32());
-    ASSERT_EQ(0x8fa34bcau, ImmutableString("textureGatherOffset(0H1B1C0C").hash32());
-    ASSERT_EQ(0xb7b5eb12u, ImmutableString("textureGatherOffset(0P1B1C0C").hash32());
-    ASSERT_EQ(0x59490119u, ImmutableString("textureGatherOffset(0U1B1C0C").hash32());
-    ASSERT_EQ(0x3f682f01u, ImmutableString("textureGatherOffset(0K2B1C").hash32());
-    ASSERT_EQ(0x50a3ba69u, ImmutableString("textureGatherOffset(0S2B1C").hash32());
-    ASSERT_EQ(0xe3bd7c3cu, ImmutableString("textureGatherOffset(0X2B1C").hash32());
-    ASSERT_EQ(0x899b1520u, ImmutableString("textureGatherOffset(0K2B1C0C").hash32());
-    ASSERT_EQ(0x01a83888u, ImmutableString("textureGatherOffset(0S2B1C0C").hash32());
-    ASSERT_EQ(0x38ed38e5u, ImmutableString("textureGatherOffset(0X2B1C0C").hash32());
-    ASSERT_EQ(0xb006f693u, ImmutableString("textureGatherOffset(0Z1B0B1C").hash32());
-    ASSERT_EQ(0xd26cea7cu, ImmutableString("textureGatherOffset(0b2B0B1C").hash32());
-    ASSERT_EQ(0x0b8d8d0eu, ImmutableString("atomicCounter(0F").hash32());
-    ASSERT_EQ(0xf0f5289du, ImmutableString("atomicCounterIncrement(0F").hash32());
-    ASSERT_EQ(0xf5adf6d1u, ImmutableString("atomicCounterDecrement(0F").hash32());
-    ASSERT_EQ(0x48923c61u, ImmutableString("atomicAdd(0D0D").hash32());
-    ASSERT_EQ(0x174429d9u, ImmutableString("atomicAdd(0C0C").hash32());
-    ASSERT_EQ(0x7de6c91cu, ImmutableString("atomicMin(0D0D").hash32());
-    ASSERT_EQ(0x2f35a524u, ImmutableString("atomicMin(0C0C").hash32());
-    ASSERT_EQ(0x7a93e532u, ImmutableString("atomicMax(0D0D").hash32());
-    ASSERT_EQ(0xf35a12fau, ImmutableString("atomicMax(0C0C").hash32());
-    ASSERT_EQ(0xc90f20b3u, ImmutableString("atomicAnd(0D0D").hash32());
-    ASSERT_EQ(0x8f5a420bu, ImmutableString("atomicAnd(0C0C").hash32());
-    ASSERT_EQ(0x449a297fu, ImmutableString("atomicOr(0D0D").hash32());
-    ASSERT_EQ(0x797c3e57u, ImmutableString("atomicOr(0C0C").hash32());
-    ASSERT_EQ(0xe0d1d797u, ImmutableString("atomicXor(0D0D").hash32());
-    ASSERT_EQ(0x16f120efu, ImmutableString("atomicXor(0C0C").hash32());
-    ASSERT_EQ(0x32d4301fu, ImmutableString("atomicExchange(0D0D").hash32());
-    ASSERT_EQ(0x68f37977u, ImmutableString("atomicExchange(0C0C").hash32());
-    ASSERT_EQ(0x529504a4u, ImmutableString("atomicCompSwap(0D0D0D").hash32());
-    ASSERT_EQ(0x0fab9dd9u, ImmutableString("atomicCompSwap(0C0C0C").hash32());
-    ASSERT_EQ(0xb32c4610u, ImmutableString("imageSize(0c").hash32());
-    ASSERT_EQ(0xba2c5115u, ImmutableString("imageSize(0d").hash32());
-    ASSERT_EQ(0xb92c4f82u, ImmutableString("imageSize(0e").hash32());
-    ASSERT_EQ(0xb82c4defu, ImmutableString("imageSize(0f").hash32());
-    ASSERT_EQ(0xb72c4c5cu, ImmutableString("imageSize(0g").hash32());
-    ASSERT_EQ(0xbe2c5761u, ImmutableString("imageSize(0h").hash32());
-    ASSERT_EQ(0xbd2c55ceu, ImmutableString("imageSize(0i").hash32());
-    ASSERT_EQ(0xbc2c543bu, ImmutableString("imageSize(0j").hash32());
-    ASSERT_EQ(0xbb2c52a8u, ImmutableString("imageSize(0k").hash32());
-    ASSERT_EQ(0xc22c5dadu, ImmutableString("imageSize(0l").hash32());
-    ASSERT_EQ(0xc12c5c1au, ImmutableString("imageSize(0m").hash32());
-    ASSERT_EQ(0xc02c5a87u, ImmutableString("imageSize(0n").hash32());
-    ASSERT_EQ(0x6c195e87u, ImmutableString("imageLoad(0c1C").hash32());
-    ASSERT_EQ(0x753e7136u, ImmutableString("imageLoad(0d1C").hash32());
-    ASSERT_EQ(0xa9d0e5b5u, ImmutableString("imageLoad(0e1C").hash32());
-    ASSERT_EQ(0x9ad4e7a3u, ImmutableString("imageLoad(0f2C").hash32());
-    ASSERT_EQ(0x00a05f04u, ImmutableString("imageLoad(0g2C").hash32());
-    ASSERT_EQ(0x11c8ccddu, ImmutableString("imageLoad(0h2C").hash32());
-    ASSERT_EQ(0xa7a68486u, ImmutableString("imageLoad(0i2C").hash32());
-    ASSERT_EQ(0x28a31a5fu, ImmutableString("imageLoad(0j2C").hash32());
-    ASSERT_EQ(0x8d315d40u, ImmutableString("imageLoad(0k2C").hash32());
-    ASSERT_EQ(0xce50b7e9u, ImmutableString("imageLoad(0l2C").hash32());
-    ASSERT_EQ(0x62f2ce12u, ImmutableString("imageLoad(0m2C").hash32());
-    ASSERT_EQ(0x243de78bu, ImmutableString("imageLoad(0n2C").hash32());
-    ASSERT_EQ(0xaf6251f9u, ImmutableString("imageStore(0c1C3B").hash32());
-    ASSERT_EQ(0x5ba8f703u, ImmutableString("imageStore(0d1C3C").hash32());
-    ASSERT_EQ(0xe495b7e1u, ImmutableString("imageStore(0e1C3D").hash32());
-    ASSERT_EQ(0x886bdcd5u, ImmutableString("imageStore(0f2C3B").hash32());
-    ASSERT_EQ(0xb0002869u, ImmutableString("imageStore(0g2C3C").hash32());
-    ASSERT_EQ(0xf0cb4011u, ImmutableString("imageStore(0h2C3D").hash32());
-    ASSERT_EQ(0xfa7d2618u, ImmutableString("imageStore(0i2C3B").hash32());
-    ASSERT_EQ(0xcf4a9cdeu, ImmutableString("imageStore(0j2C3C").hash32());
-    ASSERT_EQ(0x008583a0u, ImmutableString("imageStore(0k2C3D").hash32());
-    ASSERT_EQ(0xbaead883u, ImmutableString("imageStore(0l2C3B").hash32());
-    ASSERT_EQ(0xc4d9f177u, ImmutableString("imageStore(0m2C3C").hash32());
-    ASSERT_EQ(0xd8dff3cbu, ImmutableString("imageStore(0n2C3D").hash32());
-    ASSERT_EQ(0xa7570267u, ImmutableString("memoryBarrier(").hash32());
-    ASSERT_EQ(0xd8373034u, ImmutableString("memoryBarrierAtomicCounter(").hash32());
-    ASSERT_EQ(0xff425859u, ImmutableString("memoryBarrierBuffer(").hash32());
-    ASSERT_EQ(0xcd7ff8a6u, ImmutableString("memoryBarrierImage(").hash32());
-    ASSERT_EQ(0x34af0318u, ImmutableString("barrier(").hash32());
-    ASSERT_EQ(0x9a984c24u, ImmutableString("memoryBarrierShared(").hash32());
-    ASSERT_EQ(0xdf09d132u, ImmutableString("groupMemoryBarrier(").hash32());
-    ASSERT_EQ(0xab932950u, ImmutableString("EmitVertex(").hash32());
-    ASSERT_EQ(0xfa01fdedu, ImmutableString("EndPrimitive(").hash32());
-    ASSERT_EQ(0xa30cdef4u, ImmutableString("frexp").hash32());
-    ASSERT_EQ(0x8c63f160u, ImmutableString("ldexp").hash32());
-    ASSERT_EQ(0xae0f4e53u, ImmutableString("packUnorm4x8").hash32());
-    ASSERT_EQ(0x4d4a19b5u, ImmutableString("packSnorm4x8").hash32());
-    ASSERT_EQ(0x33b8cbf8u, ImmutableString("unpackUnorm4x8").hash32());
-    ASSERT_EQ(0x7c07f1eeu, ImmutableString("unpackSnorm4x8").hash32());
-    ASSERT_EQ(0xf50788fdu, ImmutableString("bitfieldExtract").hash32());
-    ASSERT_EQ(0xf81301b9u, ImmutableString("bitfieldInsert").hash32());
-    ASSERT_EQ(0xe5c5029au, ImmutableString("bitfieldReverse").hash32());
-    ASSERT_EQ(0x2568837fu, ImmutableString("bitCount").hash32());
-    ASSERT_EQ(0x310cbdf3u, ImmutableString("findLSB").hash32());
-    ASSERT_EQ(0x7ba9e270u, ImmutableString("findMSB").hash32());
-    ASSERT_EQ(0xca0f40eeu, ImmutableString("uaddCarry").hash32());
-    ASSERT_EQ(0xb82cbfe3u, ImmutableString("usubBorrow").hash32());
-    ASSERT_EQ(0xebfef903u, ImmutableString("umulExtended").hash32());
-    ASSERT_EQ(0x55fde64fu, ImmutableString("imulExtended").hash32());
-    ASSERT_EQ(0x44a612d1u, ImmutableString("texelFetch").hash32());
-    ASSERT_EQ(0xa3a03233u, ImmutableString("textureGather").hash32());
-    ASSERT_EQ(0xb24338c0u, ImmutableString("textureGatherOffset").hash32());
-    ASSERT_EQ(0xc1e02fa4u, ImmutableString("atomicCounter").hash32());
-    ASSERT_EQ(0x666490f9u, ImmutableString("atomicCounterIncrement").hash32());
-    ASSERT_EQ(0xd651bc5du, ImmutableString("atomicCounterDecrement").hash32());
-    ASSERT_EQ(0x026813a3u, ImmutableString("atomicAdd").hash32());
-    ASSERT_EQ(0x23647d3cu, ImmutableString("atomicMin").hash32());
-    ASSERT_EQ(0x1150d92eu, ImmutableString("atomicMax").hash32());
-    ASSERT_EQ(0xe676f219u, ImmutableString("atomicAnd").hash32());
-    ASSERT_EQ(0xd2b1c53du, ImmutableString("atomicOr").hash32());
-    ASSERT_EQ(0xbfd854b5u, ImmutableString("atomicXor").hash32());
-    ASSERT_EQ(0xb94d85ddu, ImmutableString("atomicExchange").hash32());
-    ASSERT_EQ(0xf3bd9210u, ImmutableString("atomicCompSwap").hash32());
-    ASSERT_EQ(0x6ef2b1c3u, ImmutableString("imageSize").hash32());
-    ASSERT_EQ(0x493c8c52u, ImmutableString("imageLoad").hash32());
-    ASSERT_EQ(0x4f0e8e9bu, ImmutableString("imageStore").hash32());
-    ASSERT_EQ(0x3815d075u, ImmutableString("memoryBarrier").hash32());
-    ASSERT_EQ(0xb5e7ff54u, ImmutableString("memoryBarrierAtomicCounter").hash32());
-    ASSERT_EQ(0x6fdf21cbu, ImmutableString("memoryBarrierBuffer").hash32());
-    ASSERT_EQ(0x4dafa4aau, ImmutableString("memoryBarrierImage").hash32());
-    ASSERT_EQ(0x3d693fa0u, ImmutableString("barrier").hash32());
-    ASSERT_EQ(0xe85fa9e4u, ImmutableString("memoryBarrierShared").hash32());
-    ASSERT_EQ(0x7afaf16eu, ImmutableString("groupMemoryBarrier").hash32());
-    ASSERT_EQ(0xb5d34358u, ImmutableString("EmitVertex").hash32());
-    ASSERT_EQ(0xb413b257u, ImmutableString("EndPrimitive").hash32());
-    ASSERT_EQ(0x10d2583fu, ImmutableString("sinh").hash32());
-    ASSERT_EQ(0xf45c461cu, ImmutableString("cosh").hash32());
-    ASSERT_EQ(0x092855d0u, ImmutableString("tanh").hash32());
-    ASSERT_EQ(0xbab19e4au, ImmutableString("asinh").hash32());
-    ASSERT_EQ(0xedf2c855u, ImmutableString("acosh").hash32());
-    ASSERT_EQ(0x07275075u, ImmutableString("atanh").hash32());
-    ASSERT_EQ(0x2a48023bu, ImmutableString("abs").hash32());
-    ASSERT_EQ(0x0cbc8ba4u, ImmutableString("sign").hash32());
-    ASSERT_EQ(0xd55e61e5u, ImmutableString("trunc").hash32());
-    ASSERT_EQ(0x4f0be23bu, ImmutableString("round").hash32());
-    ASSERT_EQ(0xa4639127u, ImmutableString("roundEven").hash32());
-    ASSERT_EQ(0xc98f4557u, ImmutableString("min").hash32());
-    ASSERT_EQ(0xd7a2e319u, ImmutableString("max").hash32());
-    ASSERT_EQ(0xa82efcbcu, ImmutableString("clamp").hash32());
-    ASSERT_EQ(0xd78f5b61u, ImmutableString("mix").hash32());
-    ASSERT_EQ(0xeb6ede7fu, ImmutableString("modf").hash32());
-    ASSERT_EQ(0xb1b3c06au, ImmutableString("isnan").hash32());
-    ASSERT_EQ(0x26ac11d8u, ImmutableString("isinf").hash32());
-    ASSERT_EQ(0xb15a3cc9u, ImmutableString("floatBitsToInt").hash32());
-    ASSERT_EQ(0xc8575388u, ImmutableString("floatBitsToUint").hash32());
-    ASSERT_EQ(0xfc501e17u, ImmutableString("intBitsToFloat").hash32());
-    ASSERT_EQ(0xc29ffa7eu, ImmutableString("uintBitsToFloat").hash32());
-    ASSERT_EQ(0x4326f80au, ImmutableString("packSnorm2x16").hash32());
-    ASSERT_EQ(0x6ff78d04u, ImmutableString("packUnorm2x16").hash32());
-    ASSERT_EQ(0x5bd36438u, ImmutableString("packHalf2x16").hash32());
-    ASSERT_EQ(0x6e02ba1bu, ImmutableString("unpackSnorm2x16").hash32());
-    ASSERT_EQ(0x25680679u, ImmutableString("unpackUnorm2x16").hash32());
-    ASSERT_EQ(0x28cedbc3u, ImmutableString("unpackHalf2x16").hash32());
-    ASSERT_EQ(0xd5f05125u, ImmutableString("matrixCompMult").hash32());
-    ASSERT_EQ(0x8f8617abu, ImmutableString("outerProduct").hash32());
-    ASSERT_EQ(0xc03183c0u, ImmutableString("transpose").hash32());
-    ASSERT_EQ(0x767e36c0u, ImmutableString("determinant").hash32());
-    ASSERT_EQ(0xb201f283u, ImmutableString("inverse").hash32());
-    ASSERT_EQ(0x05fc75c3u, ImmutableString("lessThan").hash32());
-    ASSERT_EQ(0x0491f109u, ImmutableString("lessThanEqual").hash32());
-    ASSERT_EQ(0x04644cdeu, ImmutableString("greaterThan").hash32());
-    ASSERT_EQ(0xed7dc722u, ImmutableString("greaterThanEqual").hash32());
-    ASSERT_EQ(0x2f7508efu, ImmutableString("equal").hash32());
-    ASSERT_EQ(0x2485bbbeu, ImmutableString("notEqual").hash32());
-    ASSERT_EQ(0x3c6468f4u, ImmutableString("texture").hash32());
-    ASSERT_EQ(0x94b08f7fu, ImmutableString("textureProj").hash32());
-    ASSERT_EQ(0x023feff3u, ImmutableString("textureLod").hash32());
-    ASSERT_EQ(0xc73e788du, ImmutableString("textureSize").hash32());
-    ASSERT_EQ(0xb755b482u, ImmutableString("textureProjLod").hash32());
-    ASSERT_EQ(0x33a56e6cu, ImmutableString("textureGrad").hash32());
-    ASSERT_EQ(0x7bf8de3bu, ImmutableString("textureProjGrad").hash32());
-    ASSERT_EQ(0x88c917cfu, ImmutableString("textureOffset").hash32());
-    ASSERT_EQ(0xa5212424u, ImmutableString("textureProjOffset").hash32());
-    ASSERT_EQ(0x39d34980u, ImmutableString("textureLodOffset").hash32());
-    ASSERT_EQ(0x1535b7a5u, ImmutableString("textureProjLodOffset").hash32());
-    ASSERT_EQ(0x12b2640eu, ImmutableString("texelFetchOffset").hash32());
-    ASSERT_EQ(0x6b0ca057u, ImmutableString("textureGradOffset").hash32());
-    ASSERT_EQ(0x8b45ed38u, ImmutableString("textureProjGradOffset").hash32());
-    ASSERT_EQ(0xa6789406u, ImmutableString("rgb_2_yuv").hash32());
-    ASSERT_EQ(0xc7818fa2u, ImmutableString("yuv_2_rgb").hash32());
-    ASSERT_EQ(0xc8859a8bu, ImmutableString("dFdx").hash32());
-    ASSERT_EQ(0xc78598f8u, ImmutableString("dFdy").hash32());
-    ASSERT_EQ(0x4b6e55d3u, ImmutableString("fwidth").hash32());
-    ASSERT_EQ(0x18a9c042u, ImmutableString("texture2D").hash32());
-    ASSERT_EQ(0xc7cb8969u, ImmutableString("texture2DProj").hash32());
-    ASSERT_EQ(0xfece2a39u, ImmutableString("textureCube").hash32());
-    ASSERT_EQ(0x3d4abf10u, ImmutableString("texture2DRect").hash32());
-    ASSERT_EQ(0x6dc0e8e3u, ImmutableString("texture2DRectProj").hash32());
-    ASSERT_EQ(0xd1836639u, ImmutableString("texture2DGradEXT").hash32());
-    ASSERT_EQ(0x4040698cu, ImmutableString("texture2DProjGradEXT").hash32());
-    ASSERT_EQ(0x1d18f29cu, ImmutableString("textureCubeGradEXT").hash32());
-    ASSERT_EQ(0x7150ceb8u, ImmutableString("texture2DLodEXT").hash32());
-    ASSERT_EQ(0xbacaedf7u, ImmutableString("texture2DProjLodEXT").hash32());
-    ASSERT_EQ(0x7309b987u, ImmutableString("textureCubeLodEXT").hash32());
-    ASSERT_EQ(0xfa79f401u, ImmutableString("texture2DLod").hash32());
-    ASSERT_EQ(0x30ed9cfcu, ImmutableString("texture2DProjLod").hash32());
-    ASSERT_EQ(0xb35e342cu, ImmutableString("textureCubeLod").hash32());
-    ASSERT_EQ(0x856a57e1u, ImmutableString("radians").hash32());
-    ASSERT_EQ(0xaf5442eeu, ImmutableString("degrees").hash32());
-    ASSERT_EQ(0xe0302a4du, ImmutableString("sin").hash32());
-    ASSERT_EQ(0xfb8de29cu, ImmutableString("cos").hash32());
-    ASSERT_EQ(0x9cf73498u, ImmutableString("tan").hash32());
-    ASSERT_EQ(0xfeae7ea6u, ImmutableString("asin").hash32());
-    ASSERT_EQ(0x3c01df1fu, ImmutableString("acos").hash32());
-    ASSERT_EQ(0x0678cabfu, ImmutableString("atan").hash32());
-    ASSERT_EQ(0x58336ad5u, ImmutableString("pow").hash32());
-    ASSERT_EQ(0x72a68728u, ImmutableString("exp").hash32());
-    ASSERT_EQ(0x3f515151u, ImmutableString("log").hash32());
-    ASSERT_EQ(0x9626adeeu, ImmutableString("exp2").hash32());
-    ASSERT_EQ(0x10031ed9u, ImmutableString("log2").hash32());
-    ASSERT_EQ(0x7dee3bcfu, ImmutableString("sqrt").hash32());
-    ASSERT_EQ(0xe8b548a5u, ImmutableString("inversesqrt").hash32());
-    ASSERT_EQ(0xb8e70c1du, ImmutableString("floor").hash32());
-    ASSERT_EQ(0x62e4e208u, ImmutableString("ceil").hash32());
-    ASSERT_EQ(0xeef29a67u, ImmutableString("fract").hash32());
-    ASSERT_EQ(0xdf9e7283u, ImmutableString("mod").hash32());
-    ASSERT_EQ(0xc7441a0fu, ImmutableString("step").hash32());
-    ASSERT_EQ(0x95964e7du, ImmutableString("smoothstep").hash32());
-    ASSERT_EQ(0x83d03615u, ImmutableString("length").hash32());
-    ASSERT_EQ(0x2eb31462u, ImmutableString("distance").hash32());
-    ASSERT_EQ(0xd3689f20u, ImmutableString("dot").hash32());
-    ASSERT_EQ(0x29f5189bu, ImmutableString("cross").hash32());
-    ASSERT_EQ(0xce79296cu, ImmutableString("normalize").hash32());
-    ASSERT_EQ(0x5fd55fe1u, ImmutableString("faceforward").hash32());
-    ASSERT_EQ(0x92c778aau, ImmutableString("reflect").hash32());
-    ASSERT_EQ(0x066c705cu, ImmutableString("refract").hash32());
-    ASSERT_EQ(0x2c29f04du, ImmutableString("any").hash32());
-    ASSERT_EQ(0x13254bc4u, ImmutableString("all").hash32());
-    ASSERT_EQ(0x29b19c8au, ImmutableString("not").hash32());
-    ASSERT_EQ(0x2c4d0487u, ImmutableString("gl_MaxImageUnits").hash32());
-    ASSERT_EQ(0xeacd9c77u, ImmutableString("gl_MaxVertexImageUniforms").hash32());
-    ASSERT_EQ(0xe9637851u, ImmutableString("gl_MaxFragmentImageUniforms").hash32());
-    ASSERT_EQ(0x551515f4u, ImmutableString("gl_MaxComputeImageUniforms").hash32());
-    ASSERT_EQ(0x37f0f1d0u, ImmutableString("gl_MaxCombinedImageUniforms").hash32());
-    ASSERT_EQ(0x8dd1ae75u, ImmutableString("gl_MaxCombinedShaderOutputResources").hash32());
-    ASSERT_EQ(0xd54f2797u, ImmutableString("gl_MaxComputeWorkGroupCount").hash32());
-    ASSERT_EQ(0xec875d49u, ImmutableString("gl_MaxComputeWorkGroupSize").hash32());
-    ASSERT_EQ(0x6c3a75d8u, ImmutableString("gl_MaxComputeUniformComponents").hash32());
-    ASSERT_EQ(0x029d3b2bu, ImmutableString("gl_MaxComputeTextureImageUnits").hash32());
-    ASSERT_EQ(0xc3a870f0u, ImmutableString("gl_MaxComputeAtomicCounters").hash32());
-    ASSERT_EQ(0xacde249eu, ImmutableString("gl_MaxComputeAtomicCounterBuffers").hash32());
-    ASSERT_EQ(0x4cbd309du, ImmutableString("gl_MaxVertexAtomicCounters").hash32());
-    ASSERT_EQ(0x4591b147u, ImmutableString("gl_MaxFragmentAtomicCounters").hash32());
-    ASSERT_EQ(0x82903444u, ImmutableString("gl_MaxCombinedAtomicCounters").hash32());
-    ASSERT_EQ(0x5aeafb40u, ImmutableString("gl_MaxAtomicCounterBindings").hash32());
-    ASSERT_EQ(0x107540dfu, ImmutableString("gl_MaxVertexAtomicCounterBuffers").hash32());
-    ASSERT_EQ(0xf6212c11u, ImmutableString("gl_MaxFragmentAtomicCounterBuffers").hash32());
-    ASSERT_EQ(0x3d856f72u, ImmutableString("gl_MaxCombinedAtomicCounterBuffers").hash32());
-    ASSERT_EQ(0x98a09aa9u, ImmutableString("gl_MaxAtomicCounterBufferSize").hash32());
-    ASSERT_EQ(0x8539932du, ImmutableString("gl_MaxGeometryInputComponents").hash32());
-    ASSERT_EQ(0xd26bc9eau, ImmutableString("gl_MaxGeometryOutputComponents").hash32());
-    ASSERT_EQ(0x3dc1da39u, ImmutableString("gl_MaxGeometryImageUniforms").hash32());
-    ASSERT_EQ(0x361fe182u, ImmutableString("gl_MaxGeometryTextureImageUnits").hash32());
-    ASSERT_EQ(0x3620853du, ImmutableString("gl_MaxGeometryOutputVertices").hash32());
-    ASSERT_EQ(0x9923396au, ImmutableString("gl_MaxGeometryTotalOutputComponents").hash32());
-    ASSERT_EQ(0xc0ec9f01u, ImmutableString("gl_MaxGeometryUniformComponents").hash32());
-    ASSERT_EQ(0xd96c18afu, ImmutableString("gl_MaxGeometryAtomicCounters").hash32());
-    ASSERT_EQ(0xe353b519u, ImmutableString("gl_MaxGeometryAtomicCounterBuffers").hash32());
-    ASSERT_EQ(0x7dab4220u, ImmutableString("gl_in").hash32());
-    ASSERT_EQ(0x56624254u, ImmutableString("gl_NumWorkGroups").hash32());
-    ASSERT_EQ(0x121ffe70u, ImmutableString("gl_WorkGroupSize").hash32());
-    ASSERT_EQ(0x6fced514u, ImmutableString("gl_WorkGroupID").hash32());
-    ASSERT_EQ(0x4bbe0c1du, ImmutableString("gl_LocalInvocationID").hash32());
-    ASSERT_EQ(0xa34369b3u, ImmutableString("gl_GlobalInvocationID").hash32());
-    ASSERT_EQ(0x99f53c3cu, ImmutableString("gl_LocalInvocationIndex").hash32());
-    ASSERT_EQ(0xc91ada96u, ImmutableString("gl_PrimitiveIDIn").hash32());
-    ASSERT_EQ(0xfc2907ccu, ImmutableString("gl_InvocationID").hash32());
-    ASSERT_EQ(0x863d719du, ImmutableString("gl_PrimitiveID").hash32());
-    ASSERT_EQ(0x02731c1cu, ImmutableString("gl_Layer").hash32());
-    ASSERT_EQ(0xe29142f0u, ImmutableString("gl_PerVertex").hash32());
-    ASSERT_EQ(0x02c4bde0u, ImmutableString("gl_Position").hash32());
-    ASSERT_EQ(0x19b1fbf8u, ImmutableString("gl_MaxVertexOutputVectors").hash32());
-    ASSERT_EQ(0x348a8ebfu, ImmutableString("gl_MaxFragmentInputVectors").hash32());
-    ASSERT_EQ(0x7b08fc96u, ImmutableString("gl_MinProgramTexelOffset").hash32());
-    ASSERT_EQ(0x206d8524u, ImmutableString("gl_MaxProgramTexelOffset").hash32());
-    ASSERT_EQ(0x88103c08u, ImmutableString("gl_FragDepth").hash32());
-    ASSERT_EQ(0x7e8a502du, ImmutableString("gl_InstanceID").hash32());
-    ASSERT_EQ(0xf39cf560u, ImmutableString("gl_VertexID").hash32());
-    ASSERT_EQ(0xec388c2du, ImmutableString("gl_ViewID_OVR").hash32());
-    ASSERT_EQ(0xd87bae2bu, ImmutableString("gl_MaxVaryingVectors").hash32());
-    ASSERT_EQ(0x4153e697u, ImmutableString("gl_FragData").hash32());
-    ASSERT_EQ(0x9dae09f6u, ImmutableString("gl_SecondaryFragDataEXT").hash32());
-    ASSERT_EQ(0x86a48dcbu, ImmutableString("gl_FragDepthEXT").hash32());
-    ASSERT_EQ(0x1af4d39eu, ImmutableString("gl_FragColor").hash32());
-    ASSERT_EQ(0xae48fef9u, ImmutableString("gl_SecondaryFragColorEXT").hash32());
-    ASSERT_EQ(0x2ca6b5f7u, ImmutableString("gl_LastFragData").hash32());
-    ASSERT_EQ(0x048d047eu, ImmutableString("gl_LastFragColor").hash32());
-    ASSERT_EQ(0xe1ad07e0u, ImmutableString("gl_LastFragColorARM").hash32());
-    ASSERT_EQ(0xdcd239f5u, ImmutableString("gl_DepthRangeParameters").hash32());
-    ASSERT_EQ(0x5c63b321u, ImmutableString("gl_DepthRange").hash32());
-    ASSERT_EQ(0x5a89e3d6u, ImmutableString("gl_MaxVertexAttribs").hash32());
-    ASSERT_EQ(0x6b620a41u, ImmutableString("gl_MaxVertexUniformVectors").hash32());
-    ASSERT_EQ(0x42355230u, ImmutableString("gl_MaxVertexTextureImageUnits").hash32());
-    ASSERT_EQ(0x081f826fu, ImmutableString("gl_MaxCombinedTextureImageUnits").hash32());
-    ASSERT_EQ(0x5625f9cau, ImmutableString("gl_MaxTextureImageUnits").hash32());
-    ASSERT_EQ(0x89745003u, ImmutableString("gl_MaxFragmentUniformVectors").hash32());
-    ASSERT_EQ(0x55895c64u, ImmutableString("gl_MaxDrawBuffers").hash32());
-    ASSERT_EQ(0x3de18904u, ImmutableString("gl_MaxDualSourceDrawBuffersEXT").hash32());
-    ASSERT_EQ(0x99ac8d74u, ImmutableString("gl_FragCoord").hash32());
-    ASSERT_EQ(0x6024403cu, ImmutableString("gl_FrontFacing").hash32());
-    ASSERT_EQ(0x86d91640u, ImmutableString("gl_PointCoord").hash32());
-    ASSERT_EQ(0x70b0d69au, ImmutableString("gl_PointSize").hash32());
+    ASSERT_EQ(0x1ca5f5cau, ImmutableString("radians(0B").mangledNameHash());
+    ASSERT_EQ(0x1cab5cdcu, ImmutableString("radians(1B").mangledNameHash());
+    ASSERT_EQ(0x1ca8f62bu, ImmutableString("radians(2B").mangledNameHash());
+    ASSERT_EQ(0x1ca6dbf7u, ImmutableString("radians(3B").mangledNameHash());
+    ASSERT_EQ(0x1ca5733au, ImmutableString("degrees(0B").mangledNameHash());
+    ASSERT_EQ(0x1ca81c5eu, ImmutableString("degrees(1B").mangledNameHash());
+    ASSERT_EQ(0x1ca0fdeeu, ImmutableString("degrees(2B").mangledNameHash());
+    ASSERT_EQ(0x1ca3192cu, ImmutableString("degrees(3B").mangledNameHash());
+    ASSERT_EQ(0x0c68a536u, ImmutableString("sin(0B").mangledNameHash());
+    ASSERT_EQ(0x0c6604cbu, ImmutableString("sin(1B").mangledNameHash());
+    ASSERT_EQ(0x0c6ba397u, ImmutableString("sin(2B").mangledNameHash());
+    ASSERT_EQ(0x0c698f82u, ImmutableString("sin(3B").mangledNameHash());
+    ASSERT_EQ(0x0c6cfa67u, ImmutableString("cos(0B").mangledNameHash());
+    ASSERT_EQ(0x0c6f1633u, ImmutableString("cos(1B").mangledNameHash());
+    ASSERT_EQ(0x0c617c1cu, ImmutableString("cos(2B").mangledNameHash());
+    ASSERT_EQ(0x0c641ba1u, ImmutableString("cos(3B").mangledNameHash());
+    ASSERT_EQ(0x0c6eec2au, ImmutableString("tan(0B").mangledNameHash());
+    ASSERT_EQ(0x0c610070u, ImmutableString("tan(1B").mangledNameHash());
+    ASSERT_EQ(0x0c6b658bu, ImmutableString("tan(2B").mangledNameHash());
+    ASSERT_EQ(0x0c6e046eu, ImmutableString("tan(3B").mangledNameHash());
+    ASSERT_EQ(0x1079530au, ImmutableString("asin(0B").mangledNameHash());
+    ASSERT_EQ(0x107bf08fu, ImmutableString("asin(1B").mangledNameHash());
+    ASSERT_EQ(0x107cde72u, ImmutableString("asin(2B").mangledNameHash());
+    ASSERT_EQ(0x107ef228u, ImmutableString("asin(3B").mangledNameHash());
+    ASSERT_EQ(0x1075f159u, ImmutableString("acos(0B").mangledNameHash());
+    ASSERT_EQ(0x1073dcdcu, ImmutableString("acos(1B").mangledNameHash());
+    ASSERT_EQ(0x1072f084u, ImmutableString("acos(2B").mangledNameHash());
+    ASSERT_EQ(0x10705009u, ImmutableString("acos(3B").mangledNameHash());
+    ASSERT_EQ(0x10982a8bu, ImmutableString("atan(0B0B").mangledNameHash());
+    ASSERT_EQ(0x10954d55u, ImmutableString("atan(1B1B").mangledNameHash());
+    ASSERT_EQ(0x109de66cu, ImmutableString("atan(2B2B").mangledNameHash());
+    ASSERT_EQ(0x109056cfu, ImmutableString("atan(3B3B").mangledNameHash());
+    ASSERT_EQ(0x1078e07eu, ImmutableString("atan(0B").mangledNameHash());
+    ASSERT_EQ(0x1076cc3bu, ImmutableString("atan(1B").mangledNameHash());
+    ASSERT_EQ(0x1075ec70u, ImmutableString("atan(2B").mangledNameHash());
+    ASSERT_EQ(0x107b4a10u, ImmutableString("atan(3B").mangledNameHash());
+    ASSERT_EQ(0x10755e8fu, ImmutableString("sinh(0B").mangledNameHash());
+    ASSERT_EQ(0x1073328bu, ImmutableString("sinh(1B").mangledNameHash());
+    ASSERT_EQ(0x10725bc1u, ImmutableString("sinh(2B").mangledNameHash());
+    ASSERT_EQ(0x1077b440u, ImmutableString("sinh(3B").mangledNameHash());
+    ASSERT_EQ(0x1076845du, ImmutableString("cosh(0B").mangledNameHash());
+    ASSERT_EQ(0x1078bfd9u, ImmutableString("cosh(1B").mangledNameHash());
+    ASSERT_EQ(0x107b1a06u, ImmutableString("cosh(2B").mangledNameHash());
+    ASSERT_EQ(0x107dba8bu, ImmutableString("cosh(3B").mangledNameHash());
+    ASSERT_EQ(0x1071119bu, ImmutableString("tanh(0B").mangledNameHash());
+    ASSERT_EQ(0x10733497u, ImmutableString("tanh(1B").mangledNameHash());
+    ASSERT_EQ(0x10759e30u, ImmutableString("tanh(2B").mangledNameHash());
+    ASSERT_EQ(0x10703776u, ImmutableString("tanh(3B").mangledNameHash());
+    ASSERT_EQ(0x148cac27u, ImmutableString("asinh(0B").mangledNameHash());
+    ASSERT_EQ(0x148f4dfau, ImmutableString("asinh(1B").mangledNameHash());
+    ASSERT_EQ(0x1480271fu, ImmutableString("asinh(2B").mangledNameHash());
+    ASSERT_EQ(0x1482431bu, ImmutableString("asinh(3B").mangledNameHash());
+    ASSERT_EQ(0x148c14feu, ImmutableString("acosh(0B").mangledNameHash());
+    ASSERT_EQ(0x14897423u, ImmutableString("acosh(1B").mangledNameHash());
+    ASSERT_EQ(0x148f151fu, ImmutableString("acosh(2B").mangledNameHash());
+    ASSERT_EQ(0x148cff1au, ImmutableString("acosh(3B").mangledNameHash());
+    ASSERT_EQ(0x148b1badu, ImmutableString("atanh(0B").mangledNameHash());
+    ASSERT_EQ(0x148878f0u, ImmutableString("atanh(1B").mangledNameHash());
+    ASSERT_EQ(0x14861f9fu, ImmutableString("atanh(2B").mangledNameHash());
+    ASSERT_EQ(0x148bf514u, ImmutableString("atanh(3B").mangledNameHash());
+    ASSERT_EQ(0x0c8d484cu, ImmutableString("pow(0B0B").mangledNameHash());
+    ASSERT_EQ(0x0c87043eu, ImmutableString("pow(1B1B").mangledNameHash());
+    ASSERT_EQ(0x0c860330u, ImmutableString("pow(2B2B").mangledNameHash());
+    ASSERT_EQ(0x0c831999u, ImmutableString("pow(3B3B").mangledNameHash());
+    ASSERT_EQ(0x0c6b32c8u, ImmutableString("exp(0B").mangledNameHash());
+    ASSERT_EQ(0x0c6d5636u, ImmutableString("exp(1B").mangledNameHash());
+    ASSERT_EQ(0x0c6fbdb1u, ImmutableString("exp(2B").mangledNameHash());
+    ASSERT_EQ(0x0c6a5499u, ImmutableString("exp(3B").mangledNameHash());
+    ASSERT_EQ(0x0c60bd37u, ImmutableString("log(0B").mangledNameHash());
+    ASSERT_EQ(0x0c66131eu, ImmutableString("log(1B").mangledNameHash());
+    ASSERT_EQ(0x0c63b949u, ImmutableString("log(2B").mangledNameHash());
+    ASSERT_EQ(0x0c6194f5u, ImmutableString("log(3B").mangledNameHash());
+    ASSERT_EQ(0x1073acd0u, ImmutableString("exp2(0B").mangledNameHash());
+    ASSERT_EQ(0x10764dc5u, ImmutableString("exp2(1B").mangledNameHash());
+    ASSERT_EQ(0x107f298bu, ImmutableString("exp2(2B").mangledNameHash());
+    ASSERT_EQ(0x10714a97u, ImmutableString("exp2(3B").mangledNameHash());
+    ASSERT_EQ(0x107eba44u, ImmutableString("log2(0B").mangledNameHash());
+    ASSERT_EQ(0x107c1ab1u, ImmutableString("log2(1B").mangledNameHash());
+    ASSERT_EQ(0x1079b7b6u, ImmutableString("log2(2B").mangledNameHash());
+    ASSERT_EQ(0x107f9207u, ImmutableString("log2(3B").mangledNameHash());
+    ASSERT_EQ(0x1071adbbu, ImmutableString("sqrt(0B").mangledNameHash());
+    ASSERT_EQ(0x10778fc2u, ImmutableString("sqrt(1B").mangledNameHash());
+    ASSERT_EQ(0x1076a689u, ImmutableString("sqrt(2B").mangledNameHash());
+    ASSERT_EQ(0x10740614u, ImmutableString("sqrt(3B").mangledNameHash());
+    ASSERT_EQ(0x2cee53ddu, ImmutableString("inversesqrt(0B").mangledNameHash());
+    ASSERT_EQ(0x2ce3bb6cu, ImmutableString("inversesqrt(1B").mangledNameHash());
+    ASSERT_EQ(0x2ce151f2u, ImmutableString("inversesqrt(2B").mangledNameHash());
+    ASSERT_EQ(0x2cef3d27u, ImmutableString("inversesqrt(3B").mangledNameHash());
+    ASSERT_EQ(0x0c6118f2u, ImmutableString("abs(0B").mangledNameHash());
+    ASSERT_EQ(0x0c6efc3cu, ImmutableString("abs(1B").mangledNameHash());
+    ASSERT_EQ(0x0c6e1694u, ImmutableString("abs(2B").mangledNameHash());
+    ASSERT_EQ(0x0c637d95u, ImmutableString("abs(3B").mangledNameHash());
+    ASSERT_EQ(0x0c610961u, ImmutableString("abs(0C").mangledNameHash());
+    ASSERT_EQ(0x0c6f0a53u, ImmutableString("abs(1C").mangledNameHash());
+    ASSERT_EQ(0x0c6e080au, ImmutableString("abs(2C").mangledNameHash());
+    ASSERT_EQ(0x0c638c06u, ImmutableString("abs(3C").mangledNameHash());
+    ASSERT_EQ(0x107ba052u, ImmutableString("sign(0B").mangledNameHash());
+    ASSERT_EQ(0x1075c6d4u, ImmutableString("sign(1B").mangledNameHash());
+    ASSERT_EQ(0x10782b2au, ImmutableString("sign(2B").mangledNameHash());
+    ASSERT_EQ(0x107aca67u, ImmutableString("sign(3B").mangledNameHash());
+    ASSERT_EQ(0x107bbfe5u, ImmutableString("sign(0C").mangledNameHash());
+    ASSERT_EQ(0x1075b747u, ImmutableString("sign(1C").mangledNameHash());
+    ASSERT_EQ(0x10783ab9u, ImmutableString("sign(2C").mangledNameHash());
+    ASSERT_EQ(0x107abcf0u, ImmutableString("sign(3C").mangledNameHash());
+    ASSERT_EQ(0x148688dbu, ImmutableString("floor(0B").mangledNameHash());
+    ASSERT_EQ(0x148be379u, ImmutableString("floor(1B").mangledNameHash());
+    ASSERT_EQ(0x14898596u, ImmutableString("floor(2B").mangledNameHash());
+    ASSERT_EQ(0x148761a0u, ImmutableString("floor(3B").mangledNameHash());
+    ASSERT_EQ(0x14826e42u, ImmutableString("trunc(0B").mangledNameHash());
+    ASSERT_EQ(0x1487c3c2u, ImmutableString("trunc(1B").mangledNameHash());
+    ASSERT_EQ(0x1485660du, ImmutableString("trunc(2B").mangledNameHash());
+    ASSERT_EQ(0x14834209u, ImmutableString("trunc(3B").mangledNameHash());
+    ASSERT_EQ(0x1480c808u, ImmutableString("round(0B").mangledNameHash());
+    ASSERT_EQ(0x148eac12u, ImmutableString("round(1B").mangledNameHash());
+    ASSERT_EQ(0x148dc6eeu, ImmutableString("round(2B").mangledNameHash());
+    ASSERT_EQ(0x14832dbfu, ImmutableString("round(3B").mangledNameHash());
+    ASSERT_EQ(0x24cdb8acu, ImmutableString("roundEven(0B").mangledNameHash());
+    ASSERT_EQ(0x24cb958eu, ImmutableString("roundEven(1B").mangledNameHash());
+    ASSERT_EQ(0x24c2b5deu, ImmutableString("roundEven(2B").mangledNameHash());
+    ASSERT_EQ(0x24c016b3u, ImmutableString("roundEven(3B").mangledNameHash());
+    ASSERT_EQ(0x1074db1fu, ImmutableString("ceil(0B").mangledNameHash());
+    ASSERT_EQ(0x107ef88eu, ImmutableString("ceil(1B").mangledNameHash());
+    ASSERT_EQ(0x107153b8u, ImmutableString("ceil(2B").mangledNameHash());
+    ASSERT_EQ(0x1073f35du, ImmutableString("ceil(3B").mangledNameHash());
+    ASSERT_EQ(0x14806be8u, ImmutableString("fract(0B").mangledNameHash());
+    ASSERT_EQ(0x148e47b2u, ImmutableString("fract(1B").mangledNameHash());
+    ASSERT_EQ(0x1485649au, ImmutableString("fract(2B").mangledNameHash());
+    ASSERT_EQ(0x1482c577u, ImmutableString("fract(3B").mangledNameHash());
+    ASSERT_EQ(0x0c8ed10eu, ImmutableString("mod(0B0B").mangledNameHash());
+    ASSERT_EQ(0x0c8133bdu, ImmutableString("mod(1B0B").mangledNameHash());
+    ASSERT_EQ(0x0c804dbau, ImmutableString("mod(2B0B").mangledNameHash());
+    ASSERT_EQ(0x0c8bcf1bu, ImmutableString("mod(3B0B").mangledNameHash());
+    ASSERT_EQ(0x0c83d010u, ImmutableString("mod(1B1B").mangledNameHash());
+    ASSERT_EQ(0x0c8540c8u, ImmutableString("mod(2B2B").mangledNameHash());
+    ASSERT_EQ(0x0c8ae761u, ImmutableString("mod(3B3B").mangledNameHash());
+    ASSERT_EQ(0x0c83ba4au, ImmutableString("min(0B0B").mangledNameHash());
+    ASSERT_EQ(0x0c82396bu, ImmutableString("min(1B0B").mangledNameHash());
+    ASSERT_EQ(0x0c8c7030u, ImmutableString("min(2B0B").mangledNameHash());
+    ASSERT_EQ(0x0c8cc54du, ImmutableString("min(3B0B").mangledNameHash());
+    ASSERT_EQ(0x0c84da0eu, ImmutableString("min(1B1B").mangledNameHash());
+    ASSERT_EQ(0x0c8175a2u, ImmutableString("min(2B2B").mangledNameHash());
+    ASSERT_EQ(0x0c8bed0fu, ImmutableString("min(3B3B").mangledNameHash());
+    ASSERT_EQ(0x0c8bd2a5u, ImmutableString("min(0C0C").mangledNameHash());
+    ASSERT_EQ(0x0c880c7au, ImmutableString("min(1C1C").mangledNameHash());
+    ASSERT_EQ(0x0c88171cu, ImmutableString("min(2C2C").mangledNameHash());
+    ASSERT_EQ(0x0c859e3eu, ImmutableString("min(3C3C").mangledNameHash());
+    ASSERT_EQ(0x0c8a0c9au, ImmutableString("min(1C0C").mangledNameHash());
+    ASSERT_EQ(0x0c849cbeu, ImmutableString("min(2C0C").mangledNameHash());
+    ASSERT_EQ(0x0c84903fu, ImmutableString("min(3C0C").mangledNameHash());
+    ASSERT_EQ(0x0c840c87u, ImmutableString("min(0D0D").mangledNameHash());
+    ASSERT_EQ(0x0c895321u, ImmutableString("min(1D1D").mangledNameHash());
+    ASSERT_EQ(0x0c8470b5u, ImmutableString("min(2D2D").mangledNameHash());
+    ASSERT_EQ(0x0c86138du, ImmutableString("min(3D3D").mangledNameHash());
+    ASSERT_EQ(0x0c86f921u, ImmutableString("min(1D0D").mangledNameHash());
+    ASSERT_EQ(0x0c813da4u, ImmutableString("min(2D0D").mangledNameHash());
+    ASSERT_EQ(0x0c87fdd9u, ImmutableString("min(3D0D").mangledNameHash());
+    ASSERT_EQ(0x0c8e7928u, ImmutableString("max(0B0B").mangledNameHash());
+    ASSERT_EQ(0x0c8a02a9u, ImmutableString("max(1B0B").mangledNameHash());
+    ASSERT_EQ(0x0c8d02a1u, ImmutableString("max(2B0B").mangledNameHash());
+    ASSERT_EQ(0x0c86a229u, ImmutableString("max(3B0B").mangledNameHash());
+    ASSERT_EQ(0x0c8c26cdu, ImmutableString("max(1B1B").mangledNameHash());
+    ASSERT_EQ(0x0c800f27u, ImmutableString("max(2B2B").mangledNameHash());
+    ASSERT_EQ(0x0c844fb5u, ImmutableString("max(3B3B").mangledNameHash());
+    ASSERT_EQ(0x0c8aaf96u, ImmutableString("max(0C0C").mangledNameHash());
+    ASSERT_EQ(0x0c8f6447u, ImmutableString("max(1C1C").mangledNameHash());
+    ASSERT_EQ(0x0c89b596u, ImmutableString("max(2C2C").mangledNameHash());
+    ASSERT_EQ(0x0c8912a9u, ImmutableString("max(3C3C").mangledNameHash());
+    ASSERT_EQ(0x0c81f92eu, ImmutableString("max(1C0C").mangledNameHash());
+    ASSERT_EQ(0x0c8536c3u, ImmutableString("max(2C0C").mangledNameHash());
+    ASSERT_EQ(0x0c8e9eabu, ImmutableString("max(3C0C").mangledNameHash());
+    ASSERT_EQ(0x0c8e4658u, ImmutableString("max(0D0D").mangledNameHash());
+    ASSERT_EQ(0x0c8c2b46u, ImmutableString("max(1D1D").mangledNameHash());
+    ASSERT_EQ(0x0c850224u, ImmutableString("max(2D2D").mangledNameHash());
+    ASSERT_EQ(0x0c85921fu, ImmutableString("max(3D3D").mangledNameHash());
+    ASSERT_EQ(0x0c8a492cu, ImmutableString("max(1D0D").mangledNameHash());
+    ASSERT_EQ(0x0c884c7au, ImmutableString("max(2D0D").mangledNameHash());
+    ASSERT_EQ(0x0c8e71adu, ImmutableString("max(3D0D").mangledNameHash());
+    ASSERT_EQ(0x14cbe76eu, ImmutableString("clamp(0B0B0B").mangledNameHash());
+    ASSERT_EQ(0x14c5e296u, ImmutableString("clamp(1B0B0B").mangledNameHash());
+    ASSERT_EQ(0x14cccae5u, ImmutableString("clamp(2B0B0B").mangledNameHash());
+    ASSERT_EQ(0x14cb1025u, ImmutableString("clamp(3B0B0B").mangledNameHash());
+    ASSERT_EQ(0x14c6b919u, ImmutableString("clamp(1B1B1B").mangledNameHash());
+    ASSERT_EQ(0x14cf0779u, ImmutableString("clamp(2B2B2B").mangledNameHash());
+    ASSERT_EQ(0x14c33da1u, ImmutableString("clamp(3B3B3B").mangledNameHash());
+    ASSERT_EQ(0x14c404a0u, ImmutableString("clamp(0C0C0C").mangledNameHash());
+    ASSERT_EQ(0x14c1bf46u, ImmutableString("clamp(1C0C0C").mangledNameHash());
+    ASSERT_EQ(0x14cc2e9au, ImmutableString("clamp(2C0C0C").mangledNameHash());
+    ASSERT_EQ(0x14c4b865u, ImmutableString("clamp(3C0C0C").mangledNameHash());
+    ASSERT_EQ(0x14c57085u, ImmutableString("clamp(1C1C1C").mangledNameHash());
+    ASSERT_EQ(0x14c00d68u, ImmutableString("clamp(2C2C2C").mangledNameHash());
+    ASSERT_EQ(0x14cae813u, ImmutableString("clamp(3C3C3C").mangledNameHash());
+    ASSERT_EQ(0x14cc3941u, ImmutableString("clamp(0D0D0D").mangledNameHash());
+    ASSERT_EQ(0x14c0acb1u, ImmutableString("clamp(1D0D0D").mangledNameHash());
+    ASSERT_EQ(0x14c4515bu, ImmutableString("clamp(2D0D0D").mangledNameHash());
+    ASSERT_EQ(0x14cb6e76u, ImmutableString("clamp(3D0D0D").mangledNameHash());
+    ASSERT_EQ(0x14c61344u, ImmutableString("clamp(1D1D1D").mangledNameHash());
+    ASSERT_EQ(0x14c9dd99u, ImmutableString("clamp(2D2D2D").mangledNameHash());
+    ASSERT_EQ(0x14ceb43eu, ImmutableString("clamp(3D3D3D").mangledNameHash());
+    ASSERT_EQ(0x0cab5c44u, ImmutableString("mix(0B0B0B").mangledNameHash());
+    ASSERT_EQ(0x0ca1f57du, ImmutableString("mix(1B1B0B").mangledNameHash());
+    ASSERT_EQ(0x0ca60671u, ImmutableString("mix(2B2B0B").mangledNameHash());
+    ASSERT_EQ(0x0cac3e9fu, ImmutableString("mix(3B3B0B").mangledNameHash());
+    ASSERT_EQ(0x0caf5440u, ImmutableString("mix(1B1B1B").mangledNameHash());
+    ASSERT_EQ(0x0ca9009eu, ImmutableString("mix(2B2B2B").mangledNameHash());
+    ASSERT_EQ(0x0cad187au, ImmutableString("mix(3B3B3B").mangledNameHash());
+    ASSERT_EQ(0x0cab6df1u, ImmutableString("mix(0B0B0E").mangledNameHash());
+    ASSERT_EQ(0x0cafcf44u, ImmutableString("mix(1B1B1E").mangledNameHash());
+    ASSERT_EQ(0x0ca9587fu, ImmutableString("mix(2B2B2E").mangledNameHash());
+    ASSERT_EQ(0x0cacc094u, ImmutableString("mix(3B3B3E").mangledNameHash());
+    ASSERT_EQ(0x109cc0c6u, ImmutableString("step(0B0B").mangledNameHash());
+    ASSERT_EQ(0x10992111u, ImmutableString("step(1B1B").mangledNameHash());
+    ASSERT_EQ(0x10935054u, ImmutableString("step(2B2B").mangledNameHash());
+    ASSERT_EQ(0x109cf7f1u, ImmutableString("step(3B3B").mangledNameHash());
+    ASSERT_EQ(0x10922878u, ImmutableString("step(0B1B").mangledNameHash());
+    ASSERT_EQ(0x109fc6e7u, ImmutableString("step(0B2B").mangledNameHash());
+    ASSERT_EQ(0x109daa13u, ImmutableString("step(0B3B").mangledNameHash());
+    ASSERT_EQ(0x291bdbcdu, ImmutableString("smoothstep(0B0B0B").mangledNameHash());
+    ASSERT_EQ(0x29129286u, ImmutableString("smoothstep(1B1B1B").mangledNameHash());
+    ASSERT_EQ(0x29145112u, ImmutableString("smoothstep(2B2B2B").mangledNameHash());
+    ASSERT_EQ(0x29137486u, ImmutableString("smoothstep(3B3B3B").mangledNameHash());
+    ASSERT_EQ(0x29113c5du, ImmutableString("smoothstep(0B0B1B").mangledNameHash());
+    ASSERT_EQ(0x291ed9f2u, ImmutableString("smoothstep(0B0B2B").mangledNameHash());
+    ASSERT_EQ(0x291cba04u, ImmutableString("smoothstep(0B0B3B").mangledNameHash());
+    ASSERT_EQ(0x1097fab5u, ImmutableString("modf(0B0B").mangledNameHash());
+    ASSERT_EQ(0x10951ffeu, ImmutableString("modf(1B1B").mangledNameHash());
+    ASSERT_EQ(0x109f44f5u, ImmutableString("modf(2B2B").mangledNameHash());
+    ASSERT_EQ(0x10901551u, ImmutableString("modf(3B3B").mangledNameHash());
+    ASSERT_EQ(0x148d4956u, ImmutableString("isnan(0B").mangledNameHash());
+    ASSERT_EQ(0x148fe84bu, ImmutableString("isnan(1B").mangledNameHash());
+    ASSERT_EQ(0x1480c6aeu, ImmutableString("isnan(2B").mangledNameHash());
+    ASSERT_EQ(0x148ae3f8u, ImmutableString("isnan(3B").mangledNameHash());
+    ASSERT_EQ(0x14884407u, ImmutableString("isinf(0B").mangledNameHash());
+    ASSERT_EQ(0x148a680au, ImmutableString("isinf(1B").mangledNameHash());
+    ASSERT_EQ(0x1484c8c8u, ImmutableString("isinf(2B").mangledNameHash());
+    ASSERT_EQ(0x148769adu, ImmutableString("isinf(3B").mangledNameHash());
+    ASSERT_EQ(0x3915f628u, ImmutableString("floatBitsToInt(0B").mangledNameHash());
+    ASSERT_EQ(0x3913568du, ImmutableString("floatBitsToInt(1B").mangledNameHash());
+    ASSERT_EQ(0x3910f8b9u, ImmutableString("floatBitsToInt(2B").mangledNameHash());
+    ASSERT_EQ(0x391ed774u, ImmutableString("floatBitsToInt(3B").mangledNameHash());
+    ASSERT_EQ(0x3d204dd3u, ImmutableString("floatBitsToUint(0B").mangledNameHash());
+    ASSERT_EQ(0x3d2a6fcau, ImmutableString("floatBitsToUint(1B").mangledNameHash());
+    ASSERT_EQ(0x3d2cc57cu, ImmutableString("floatBitsToUint(2B").mangledNameHash());
+    ASSERT_EQ(0x3d2f6a98u, ImmutableString("floatBitsToUint(3B").mangledNameHash());
+    ASSERT_EQ(0x3913c3f6u, ImmutableString("intBitsToFloat(0C").mangledNameHash());
+    ASSERT_EQ(0x3911c106u, ImmutableString("intBitsToFloat(1C").mangledNameHash());
+    ASSERT_EQ(0x3910c5d7u, ImmutableString("intBitsToFloat(2C").mangledNameHash());
+    ASSERT_EQ(0x39164139u, ImmutableString("intBitsToFloat(3C").mangledNameHash());
+    ASSERT_EQ(0x3d27a145u, ImmutableString("uintBitsToFloat(0D").mangledNameHash());
+    ASSERT_EQ(0x3d2a886cu, ImmutableString("uintBitsToFloat(1D").mangledNameHash());
+    ASSERT_EQ(0x3d2b50abu, ImmutableString("uintBitsToFloat(2D").mangledNameHash());
+    ASSERT_EQ(0x3d25c369u, ImmutableString("uintBitsToFloat(3D").mangledNameHash());
+    ASSERT_EQ(0x14af3af7u, ImmutableString("frexp(0B0C").mangledNameHash());
+    ASSERT_EQ(0x14aa386au, ImmutableString("frexp(1B1C").mangledNameHash());
+    ASSERT_EQ(0x14a1711cu, ImmutableString("frexp(2B2C").mangledNameHash());
+    ASSERT_EQ(0x14a7dfddu, ImmutableString("frexp(3B3C").mangledNameHash());
+    ASSERT_EQ(0x14a5788fu, ImmutableString("ldexp(0B0C").mangledNameHash());
+    ASSERT_EQ(0x14a125a4u, ImmutableString("ldexp(1B1C").mangledNameHash());
+    ASSERT_EQ(0x14a941e1u, ImmutableString("ldexp(2B2C").mangledNameHash());
+    ASSERT_EQ(0x14afab5au, ImmutableString("ldexp(3B3C").mangledNameHash());
+    ASSERT_EQ(0x3509e2f1u, ImmutableString("packSnorm2x16(1B").mangledNameHash());
+    ASSERT_EQ(0x350e7c49u, ImmutableString("packUnorm2x16(1B").mangledNameHash());
+    ASSERT_EQ(0x30fbf415u, ImmutableString("packHalf2x16(1B").mangledNameHash());
+    ASSERT_EQ(0x3d2abf41u, ImmutableString("unpackSnorm2x16(0D").mangledNameHash());
+    ASSERT_EQ(0x3d2e13e6u, ImmutableString("unpackUnorm2x16(0D").mangledNameHash());
+    ASSERT_EQ(0x391bbc13u, ImmutableString("unpackHalf2x16(0D").mangledNameHash());
+    ASSERT_EQ(0x30f8217au, ImmutableString("packUnorm4x8(3B").mangledNameHash());
+    ASSERT_EQ(0x30f6d757u, ImmutableString("packSnorm4x8(3B").mangledNameHash());
+    ASSERT_EQ(0x3917e321u, ImmutableString("unpackUnorm4x8(0D").mangledNameHash());
+    ASSERT_EQ(0x3912bd2du, ImmutableString("unpackSnorm4x8(0D").mangledNameHash());
+    ASSERT_EQ(0x1891756bu, ImmutableString("length(0B").mangledNameHash());
+    ASSERT_EQ(0x189ed736u, ImmutableString("length(1B").mangledNameHash());
+    ASSERT_EQ(0x18947315u, ImmutableString("length(2B").mangledNameHash());
+    ASSERT_EQ(0x18925f20u, ImmutableString("length(3B").mangledNameHash());
+    ASSERT_EQ(0x20d979cdu, ImmutableString("distance(0B0B").mangledNameHash());
+    ASSERT_EQ(0x20dfd70fu, ImmutableString("distance(1B1B").mangledNameHash());
+    ASSERT_EQ(0x20d1a6f5u, ImmutableString("distance(2B2B").mangledNameHash());
+    ASSERT_EQ(0x20d08e18u, ImmutableString("distance(3B3B").mangledNameHash());
+    ASSERT_EQ(0x0c8a0e3eu, ImmutableString("dot(0B0B").mangledNameHash());
+    ASSERT_EQ(0x0c8412a7u, ImmutableString("dot(1B1B").mangledNameHash());
+    ASSERT_EQ(0x0c8c41a3u, ImmutableString("dot(2B2B").mangledNameHash());
+    ASSERT_EQ(0x0c82ace0u, ImmutableString("dot(3B3B").mangledNameHash());
+    ASSERT_EQ(0x14a4c07au, ImmutableString("cross(2B2B").mangledNameHash());
+    ASSERT_EQ(0x24ca2b81u, ImmutableString("normalize(0B").mangledNameHash());
+    ASSERT_EQ(0x24c44c28u, ImmutableString("normalize(1B").mangledNameHash());
+    ASSERT_EQ(0x24c6a3d6u, ImmutableString("normalize(2B").mangledNameHash());
+    ASSERT_EQ(0x24c942bbu, ImmutableString("normalize(3B").mangledNameHash());
+    ASSERT_EQ(0x2d2fa1bau, ImmutableString("faceforward(0B0B0B").mangledNameHash());
+    ASSERT_EQ(0x2d23a287u, ImmutableString("faceforward(1B1B1B").mangledNameHash());
+    ASSERT_EQ(0x2d2d4250u, ImmutableString("faceforward(2B2B2B").mangledNameHash());
+    ASSERT_EQ(0x2d216fbcu, ImmutableString("faceforward(3B3B3B").mangledNameHash());
+    ASSERT_EQ(0x1cc64487u, ImmutableString("reflect(0B0B").mangledNameHash());
+    ASSERT_EQ(0x1ccca9c8u, ImmutableString("reflect(1B1B").mangledNameHash());
+    ASSERT_EQ(0x1cc408dau, ImmutableString("reflect(2B2B").mangledNameHash());
+    ASSERT_EQ(0x1cc6193fu, ImmutableString("reflect(3B3B").mangledNameHash());
+    ASSERT_EQ(0x1ce7660eu, ImmutableString("refract(0B0B0B").mangledNameHash());
+    ASSERT_EQ(0x1ce0c06au, ImmutableString("refract(1B1B0B").mangledNameHash());
+    ASSERT_EQ(0x1ce342a6u, ImmutableString("refract(2B2B0B").mangledNameHash());
+    ASSERT_EQ(0x1ce34099u, ImmutableString("refract(3B3B0B").mangledNameHash());
+    ASSERT_EQ(0x39325152u, ImmutableString("matrixCompMult(5B5B").mangledNameHash());
+    ASSERT_EQ(0x393ce233u, ImmutableString("matrixCompMult(ABAB").mangledNameHash());
+    ASSERT_EQ(0x393640c0u, ImmutableString("matrixCompMult(FBFB").mangledNameHash());
+    ASSERT_EQ(0x3930f22du, ImmutableString("matrixCompMult(9B9B").mangledNameHash());
+    ASSERT_EQ(0x39393016u, ImmutableString("matrixCompMult(6B6B").mangledNameHash());
+    ASSERT_EQ(0x393d70dau, ImmutableString("matrixCompMult(DBDB").mangledNameHash());
+    ASSERT_EQ(0x39334a4du, ImmutableString("matrixCompMult(7B7B").mangledNameHash());
+    ASSERT_EQ(0x393f69ceu, ImmutableString("matrixCompMult(EBEB").mangledNameHash());
+    ASSERT_EQ(0x3939896du, ImmutableString("matrixCompMult(BBBB").mangledNameHash());
+    ASSERT_EQ(0x311128b0u, ImmutableString("outerProduct(1B1B").mangledNameHash());
+    ASSERT_EQ(0x311b6bbfu, ImmutableString("outerProduct(2B2B").mangledNameHash());
+    ASSERT_EQ(0x311c3faau, ImmutableString("outerProduct(3B3B").mangledNameHash());
+    ASSERT_EQ(0x311c4162u, ImmutableString("outerProduct(2B1B").mangledNameHash());
+    ASSERT_EQ(0x31120e21u, ImmutableString("outerProduct(1B2B").mangledNameHash());
+    ASSERT_EQ(0x311f3234u, ImmutableString("outerProduct(3B1B").mangledNameHash());
+    ASSERT_EQ(0x31142a15u, ImmutableString("outerProduct(1B3B").mangledNameHash());
+    ASSERT_EQ(0x311199aau, ImmutableString("outerProduct(3B2B").mangledNameHash());
+    ASSERT_EQ(0x3110c06fu, ImmutableString("outerProduct(2B3B").mangledNameHash());
+    ASSERT_EQ(0x24cfb971u, ImmutableString("transpose(5B").mangledNameHash());
+    ASSERT_EQ(0x24c04563u, ImmutableString("transpose(AB").mangledNameHash());
+    ASSERT_EQ(0x24cc2056u, ImmutableString("transpose(FB").mangledNameHash());
+    ASSERT_EQ(0x24ca150au, ImmutableString("transpose(6B").mangledNameHash());
+    ASSERT_EQ(0x24cb384cu, ImmutableString("transpose(9B").mangledNameHash());
+    ASSERT_EQ(0x24ccb677u, ImmutableString("transpose(7B").mangledNameHash());
+    ASSERT_EQ(0x24cfa59eu, ImmutableString("transpose(DB").mangledNameHash());
+    ASSERT_EQ(0x24caa0a8u, ImmutableString("transpose(BB").mangledNameHash());
+    ASSERT_EQ(0x24c9ce28u, ImmutableString("transpose(EB").mangledNameHash());
+    ASSERT_EQ(0x2ced705au, ImmutableString("determinant(5B").mangledNameHash());
+    ASSERT_EQ(0x2cee0c54u, ImmutableString("determinant(AB").mangledNameHash());
+    ASSERT_EQ(0x2ce9e97du, ImmutableString("determinant(FB").mangledNameHash());
+    ASSERT_EQ(0x1ca06416u, ImmutableString("inverse(5B").mangledNameHash());
+    ASSERT_EQ(0x1ca0f080u, ImmutableString("inverse(AB").mangledNameHash());
+    ASSERT_EQ(0x1ca198d9u, ImmutableString("inverse(FB").mangledNameHash());
+    ASSERT_EQ(0x20d3517eu, ImmutableString("lessThan(1B1B").mangledNameHash());
+    ASSERT_EQ(0x20d4c66eu, ImmutableString("lessThan(2B2B").mangledNameHash());
+    ASSERT_EQ(0x20da61d4u, ImmutableString("lessThan(3B3B").mangledNameHash());
+    ASSERT_EQ(0x20d69913u, ImmutableString("lessThan(1C1C").mangledNameHash());
+    ASSERT_EQ(0x20df72aau, ImmutableString("lessThan(2C2C").mangledNameHash());
+    ASSERT_EQ(0x20d42037u, ImmutableString("lessThan(3C3C").mangledNameHash());
+    ASSERT_EQ(0x20dae9e7u, ImmutableString("lessThan(1D1D").mangledNameHash());
+    ASSERT_EQ(0x20d2c382u, ImmutableString("lessThan(2D2D").mangledNameHash());
+    ASSERT_EQ(0x20d0bc8cu, ImmutableString("lessThan(3D3D").mangledNameHash());
+    ASSERT_EQ(0x352bbb54u, ImmutableString("lessThanEqual(1B1B").mangledNameHash());
+    ASSERT_EQ(0x352f913eu, ImmutableString("lessThanEqual(2B2B").mangledNameHash());
+    ASSERT_EQ(0x352cacb6u, ImmutableString("lessThanEqual(3B3B").mangledNameHash());
+    ASSERT_EQ(0x352eff39u, ImmutableString("lessThanEqual(1C1C").mangledNameHash());
+    ASSERT_EQ(0x352938d0u, ImmutableString("lessThanEqual(2C2C").mangledNameHash());
+    ASSERT_EQ(0x35296680u, ImmutableString("lessThanEqual(3C3C").mangledNameHash());
+    ASSERT_EQ(0x352bc93du, ImmutableString("lessThanEqual(1D1D").mangledNameHash());
+    ASSERT_EQ(0x35248d4eu, ImmutableString("lessThanEqual(2D2D").mangledNameHash());
+    ASSERT_EQ(0x352df7d8u, ImmutableString("lessThanEqual(3D3D").mangledNameHash());
+    ASSERT_EQ(0x2d02eb78u, ImmutableString("greaterThan(1B1B").mangledNameHash());
+    ASSERT_EQ(0x2d0a449bu, ImmutableString("greaterThan(2B2B").mangledNameHash());
+    ASSERT_EQ(0x2d052a50u, ImmutableString("greaterThan(3B3B").mangledNameHash());
+    ASSERT_EQ(0x2d0b99c3u, ImmutableString("greaterThan(1C1C").mangledNameHash());
+    ASSERT_EQ(0x2d0ba1a0u, ImmutableString("greaterThan(2C2C").mangledNameHash());
+    ASSERT_EQ(0x2d0362a4u, ImmutableString("greaterThan(3C3C").mangledNameHash());
+    ASSERT_EQ(0x2d02d8e9u, ImmutableString("greaterThan(1D1D").mangledNameHash());
+    ASSERT_EQ(0x2d03b1f6u, ImmutableString("greaterThan(2D2D").mangledNameHash());
+    ASSERT_EQ(0x2d026f5fu, ImmutableString("greaterThan(3D3D").mangledNameHash());
+    ASSERT_EQ(0x41598af3u, ImmutableString("greaterThanEqual(1B1B").mangledNameHash());
+    ASSERT_EQ(0x415cecbdu, ImmutableString("greaterThanEqual(2B2B").mangledNameHash());
+    ASSERT_EQ(0x415bc9cbu, ImmutableString("greaterThanEqual(3B3B").mangledNameHash());
+    ASSERT_EQ(0x415e3912u, ImmutableString("greaterThanEqual(1C1C").mangledNameHash());
+    ASSERT_EQ(0x41563f06u, ImmutableString("greaterThanEqual(2C2C").mangledNameHash());
+    ASSERT_EQ(0x415a0237u, ImmutableString("greaterThanEqual(3C3C").mangledNameHash());
+    ASSERT_EQ(0x415d84abu, ImmutableString("greaterThanEqual(1D1D").mangledNameHash());
+    ASSERT_EQ(0x415269b7u, ImmutableString("greaterThanEqual(2D2D").mangledNameHash());
+    ASSERT_EQ(0x415d18d9u, ImmutableString("greaterThanEqual(3D3D").mangledNameHash());
+    ASSERT_EQ(0x14af6410u, ImmutableString("equal(1B1B").mangledNameHash());
+    ASSERT_EQ(0x14a99557u, ImmutableString("equal(2B2B").mangledNameHash());
+    ASSERT_EQ(0x14a344cau, ImmutableString("equal(3B3B").mangledNameHash());
+    ASSERT_EQ(0x14aabf32u, ImmutableString("equal(1C1C").mangledNameHash());
+    ASSERT_EQ(0x14a841f7u, ImmutableString("equal(2C2C").mangledNameHash());
+    ASSERT_EQ(0x14ad02bdu, ImmutableString("equal(3C3C").mangledNameHash());
+    ASSERT_EQ(0x14ac0278u, ImmutableString("equal(1D1D").mangledNameHash());
+    ASSERT_EQ(0x14a4b126u, ImmutableString("equal(2D2D").mangledNameHash());
+    ASSERT_EQ(0x14ad7597u, ImmutableString("equal(3D3D").mangledNameHash());
+    ASSERT_EQ(0x14aeb3fau, ImmutableString("equal(1E1E").mangledNameHash());
+    ASSERT_EQ(0x14adc97au, ImmutableString("equal(2E2E").mangledNameHash());
+    ASSERT_EQ(0x14a24982u, ImmutableString("equal(3E3E").mangledNameHash());
+    ASSERT_EQ(0x20d58403u, ImmutableString("notEqual(1B1B").mangledNameHash());
+    ASSERT_EQ(0x20db5cc6u, ImmutableString("notEqual(2B2B").mangledNameHash());
+    ASSERT_EQ(0x20d71eb8u, ImmutableString("notEqual(3B3B").mangledNameHash());
+    ASSERT_EQ(0x20d6513cu, ImmutableString("notEqual(1C1C").mangledNameHash());
+    ASSERT_EQ(0x20d4c7eeu, ImmutableString("notEqual(2C2C").mangledNameHash());
+    ASSERT_EQ(0x20dd5e88u, ImmutableString("notEqual(3C3C").mangledNameHash());
+    ASSERT_EQ(0x20d59f47u, ImmutableString("notEqual(1D1D").mangledNameHash());
+    ASSERT_EQ(0x20dcebb4u, ImmutableString("notEqual(2D2D").mangledNameHash());
+    ASSERT_EQ(0x20dc53d0u, ImmutableString("notEqual(3D3D").mangledNameHash());
+    ASSERT_EQ(0x20d1d723u, ImmutableString("notEqual(1E1E").mangledNameHash());
+    ASSERT_EQ(0x20d2b884u, ImmutableString("notEqual(2E2E").mangledNameHash());
+    ASSERT_EQ(0x20d7839eu, ImmutableString("notEqual(3E3E").mangledNameHash());
+    ASSERT_EQ(0x0c632bd9u, ImmutableString("any(1E").mangledNameHash());
+    ASSERT_EQ(0x0c682adeu, ImmutableString("any(2E").mangledNameHash());
+    ASSERT_EQ(0x0c65e3b3u, ImmutableString("any(3E").mangledNameHash());
+    ASSERT_EQ(0x0c60fbdau, ImmutableString("all(1E").mangledNameHash());
+    ASSERT_EQ(0x0c6bff3cu, ImmutableString("all(2E").mangledNameHash());
+    ASSERT_EQ(0x0c6db950u, ImmutableString("all(3E").mangledNameHash());
+    ASSERT_EQ(0x0c6ded4fu, ImmutableString("not(1E").mangledNameHash());
+    ASSERT_EQ(0x0c6ee660u, ImmutableString("not(2E").mangledNameHash());
+    ASSERT_EQ(0x0c612efdu, ImmutableString("not(3E").mangledNameHash());
+    ASSERT_EQ(0x3d62ca0du, ImmutableString("bitfieldExtract(0C0C0C").mangledNameHash());
+    ASSERT_EQ(0x3d630b44u, ImmutableString("bitfieldExtract(1C0C0C").mangledNameHash());
+    ASSERT_EQ(0x3d61b403u, ImmutableString("bitfieldExtract(2C0C0C").mangledNameHash());
+    ASSERT_EQ(0x3d62ec45u, ImmutableString("bitfieldExtract(3C0C0C").mangledNameHash());
+    ASSERT_EQ(0x3d61e101u, ImmutableString("bitfieldExtract(0D0C0C").mangledNameHash());
+    ASSERT_EQ(0x3d6bea76u, ImmutableString("bitfieldExtract(1D0C0C").mangledNameHash());
+    ASSERT_EQ(0x3d650769u, ImmutableString("bitfieldExtract(2D0C0C").mangledNameHash());
+    ASSERT_EQ(0x3d62667bu, ImmutableString("bitfieldExtract(3D0C0C").mangledNameHash());
+    ASSERT_EQ(0x397bc0a4u, ImmutableString("bitfieldInsert(0C0C0C0C").mangledNameHash());
+    ASSERT_EQ(0x39722ea4u, ImmutableString("bitfieldInsert(1C1C0C0C").mangledNameHash());
+    ASSERT_EQ(0x397f475fu, ImmutableString("bitfieldInsert(2C2C0C0C").mangledNameHash());
+    ASSERT_EQ(0x3971001fu, ImmutableString("bitfieldInsert(3C3C0C0C").mangledNameHash());
+    ASSERT_EQ(0x3976b0a6u, ImmutableString("bitfieldInsert(0D0D0C0C").mangledNameHash());
+    ASSERT_EQ(0x3973d7eau, ImmutableString("bitfieldInsert(1D1D0C0C").mangledNameHash());
+    ASSERT_EQ(0x3977057au, ImmutableString("bitfieldInsert(2D2D0C0C").mangledNameHash());
+    ASSERT_EQ(0x3970aafcu, ImmutableString("bitfieldInsert(3D3D0C0C").mangledNameHash());
+    ASSERT_EQ(0x3d2386cdu, ImmutableString("bitfieldReverse(0C").mangledNameHash());
+    ASSERT_EQ(0x3d2e0c10u, ImmutableString("bitfieldReverse(1C").mangledNameHash());
+    ASSERT_EQ(0x3d2f0702u, ImmutableString("bitfieldReverse(2C").mangledNameHash());
+    ASSERT_EQ(0x3d210852u, ImmutableString("bitfieldReverse(3C").mangledNameHash());
+    ASSERT_EQ(0x3d23deecu, ImmutableString("bitfieldReverse(0D").mangledNameHash());
+    ASSERT_EQ(0x3d2db471u, ImmutableString("bitfieldReverse(1D").mangledNameHash());
+    ASSERT_EQ(0x3d2e9c06u, ImmutableString("bitfieldReverse(2D").mangledNameHash());
+    ASSERT_EQ(0x3d20f7c7u, ImmutableString("bitfieldReverse(3D").mangledNameHash());
+    ASSERT_EQ(0x20b389afu, ImmutableString("bitCount(0C").mangledNameHash());
+    ASSERT_EQ(0x20b18889u, ImmutableString("bitCount(1C").mangledNameHash());
+    ASSERT_EQ(0x20b08fccu, ImmutableString("bitCount(2C").mangledNameHash());
+    ASSERT_EQ(0x20b60bc0u, ImmutableString("bitCount(3C").mangledNameHash());
+    ASSERT_EQ(0x20b3783au, ImmutableString("bitCount(0D").mangledNameHash());
+    ASSERT_EQ(0x20b11d8bu, ImmutableString("bitCount(1D").mangledNameHash());
+    ASSERT_EQ(0x20b0372du, ImmutableString("bitCount(2D").mangledNameHash());
+    ASSERT_EQ(0x20b653e6u, ImmutableString("bitCount(3D").mangledNameHash());
+    ASSERT_EQ(0x1cac1124u, ImmutableString("findLSB(0C").mangledNameHash());
+    ASSERT_EQ(0x1caa1274u, ImmutableString("findLSB(1C").mangledNameHash());
+    ASSERT_EQ(0x1ca9155eu, ImmutableString("findLSB(2C").mangledNameHash());
+    ASSERT_EQ(0x1cae9c83u, ImmutableString("findLSB(3C").mangledNameHash());
+    ASSERT_EQ(0x1cac8e20u, ImmutableString("findLSB(0D").mangledNameHash());
+    ASSERT_EQ(0x1caa21e1u, ImmutableString("findLSB(1D").mangledNameHash());
+    ASSERT_EQ(0x1ca94816u, ImmutableString("findLSB(2D").mangledNameHash());
+    ASSERT_EQ(0x1cae685au, ImmutableString("findLSB(3D").mangledNameHash());
+    ASSERT_EQ(0x1ca12df2u, ImmutableString("findMSB(0C").mangledNameHash());
+    ASSERT_EQ(0x1ca32cc2u, ImmutableString("findMSB(1C").mangledNameHash());
+    ASSERT_EQ(0x1cada0b2u, ImmutableString("findMSB(2C").mangledNameHash());
+    ASSERT_EQ(0x1ca02eebu, ImmutableString("findMSB(3C").mangledNameHash());
+    ASSERT_EQ(0x1ca13f87u, ImmutableString("findMSB(0D").mangledNameHash());
+    ASSERT_EQ(0x1ca399c6u, ImmutableString("findMSB(1D").mangledNameHash());
+    ASSERT_EQ(0x1cad7c7bu, ImmutableString("findMSB(2D").mangledNameHash());
+    ASSERT_EQ(0x1ca05552u, ImmutableString("findMSB(3D").mangledNameHash());
+    ASSERT_EQ(0x25076120u, ImmutableString("uaddCarry(0D0D0D").mangledNameHash());
+    ASSERT_EQ(0x25086989u, ImmutableString("uaddCarry(1D1D1D").mangledNameHash());
+    ASSERT_EQ(0x2508354bu, ImmutableString("uaddCarry(2D2D2D").mangledNameHash());
+    ASSERT_EQ(0x250850e3u, ImmutableString("uaddCarry(3D3D3D").mangledNameHash());
+    ASSERT_EQ(0x291eef4cu, ImmutableString("usubBorrow(0D0D0D").mangledNameHash());
+    ASSERT_EQ(0x29156a3eu, ImmutableString("usubBorrow(1D1D1D").mangledNameHash());
+    ASSERT_EQ(0x2912da4du, ImmutableString("usubBorrow(2D2D2D").mangledNameHash());
+    ASSERT_EQ(0x2911ee24u, ImmutableString("usubBorrow(3D3D3D").mangledNameHash());
+    ASSERT_EQ(0x3152664bu, ImmutableString("umulExtended(0D0D0D0D").mangledNameHash());
+    ASSERT_EQ(0x3156b43eu, ImmutableString("umulExtended(1D1D1D1D").mangledNameHash());
+    ASSERT_EQ(0x3154dbceu, ImmutableString("umulExtended(2D2D2D2D").mangledNameHash());
+    ASSERT_EQ(0x31528895u, ImmutableString("umulExtended(3D3D3D3D").mangledNameHash());
+    ASSERT_EQ(0x31584c20u, ImmutableString("imulExtended(0C0C0C0C").mangledNameHash());
+    ASSERT_EQ(0x315ccad6u, ImmutableString("imulExtended(1C1C1C1C").mangledNameHash());
+    ASSERT_EQ(0x3150a6a9u, ImmutableString("imulExtended(2C2C2C2C").mangledNameHash());
+    ASSERT_EQ(0x31582937u, ImmutableString("imulExtended(3C3C3C3C").mangledNameHash());
+    ASSERT_EQ(0x24e2c4e7u, ImmutableString("texture2D(0H1B").mangledNameHash());
+    ASSERT_EQ(0x352d6339u, ImmutableString("texture2DProj(0H2B").mangledNameHash());
+    ASSERT_EQ(0x352b4775u, ImmutableString("texture2DProj(0H3B").mangledNameHash());
+    ASSERT_EQ(0x2d011380u, ImmutableString("textureCube(0J2B").mangledNameHash());
+    ASSERT_EQ(0x24ee7b56u, ImmutableString("texture2D(0L1B").mangledNameHash());
+    ASSERT_EQ(0x3525221bu, ImmutableString("texture2DProj(0L2B").mangledNameHash());
+    ASSERT_EQ(0x352b0152u, ImmutableString("texture2DProj(0L3B").mangledNameHash());
+    ASSERT_EQ(0x352056b3u, ImmutableString("texture2DRect(0N1B").mangledNameHash());
+    ASSERT_EQ(0x456c9272u, ImmutableString("texture2DRectProj(0N2B").mangledNameHash());
+    ASSERT_EQ(0x456a76c4u, ImmutableString("texture2DRectProj(0N3B").mangledNameHash());
+    ASSERT_EQ(0x1ccc5cd8u, ImmutableString("texture(0N1B").mangledNameHash());
+    ASSERT_EQ(0x2d0d917du, ImmutableString("textureProj(0N2B").mangledNameHash());
+    ASSERT_EQ(0x2d0b7d30u, ImmutableString("textureProj(0N3B").mangledNameHash());
+    ASSERT_EQ(0x41972dabu, ImmutableString("texture2DGradEXT(0H1B1B1B").mangledNameHash());
+    ASSERT_EQ(0x51dab294u, ImmutableString("texture2DProjGradEXT(0H2B1B1B").mangledNameHash());
+    ASSERT_EQ(0x51d33b0du, ImmutableString("texture2DProjGradEXT(0H3B1B1B").mangledNameHash());
+    ASSERT_EQ(0x49b79cd7u, ImmutableString("textureCubeGradEXT(0J2B2B2B").mangledNameHash());
+    ASSERT_EQ(0x2508e2a4u, ImmutableString("texture2D(0H1B0B").mangledNameHash());
+    ASSERT_EQ(0x35488931u, ImmutableString("texture2DProj(0H2B0B").mangledNameHash());
+    ASSERT_EQ(0x35430cdfu, ImmutableString("texture2DProj(0H3B0B").mangledNameHash());
+    ASSERT_EQ(0x2d2d65c4u, ImmutableString("textureCube(0J2B0B").mangledNameHash());
+    ASSERT_EQ(0x1073030fu, ImmutableString("dFdx(0B").mangledNameHash());
+    ASSERT_EQ(0x1078ecffu, ImmutableString("dFdx(1B").mangledNameHash());
+    ASSERT_EQ(0x1078043du, ImmutableString("dFdx(2B").mangledNameHash());
+    ASSERT_EQ(0x10756758u, ImmutableString("dFdx(3B").mangledNameHash());
+    ASSERT_EQ(0x1072a9fbu, ImmutableString("dFdy(0B").mangledNameHash());
+    ASSERT_EQ(0x1074c546u, ImmutableString("dFdy(1B").mangledNameHash());
+    ASSERT_EQ(0x10772880u, ImmutableString("dFdy(2B").mangledNameHash());
+    ASSERT_EQ(0x1079c835u, ImmutableString("dFdy(3B").mangledNameHash());
+    ASSERT_EQ(0x189a6fa9u, ImmutableString("fwidth(0B").mangledNameHash());
+    ASSERT_EQ(0x189044e9u, ImmutableString("fwidth(1B").mangledNameHash());
+    ASSERT_EQ(0x189f6338u, ImmutableString("fwidth(2B").mangledNameHash());
+    ASSERT_EQ(0x189cc19du, ImmutableString("fwidth(3B").mangledNameHash());
+    ASSERT_EQ(0x3d686753u, ImmutableString("texture2DLodEXT(0H1B0B").mangledNameHash());
+    ASSERT_EQ(0x4dac1445u, ImmutableString("texture2DProjLodEXT(0H2B0B").mangledNameHash());
+    ASSERT_EQ(0x4da39b8fu, ImmutableString("texture2DProjLodEXT(0H3B0B").mangledNameHash());
+    ASSERT_EQ(0x458436e4u, ImmutableString("textureCubeLodEXT(0J2B0B").mangledNameHash());
+    ASSERT_EQ(0x3130c76au, ImmutableString("texture2DLod(0H1B0B").mangledNameHash());
+    ASSERT_EQ(0x4178ec55u, ImmutableString("texture2DProjLod(0H2B0B").mangledNameHash());
+    ASSERT_EQ(0x41715cefu, ImmutableString("texture2DProjLod(0H3B0B").mangledNameHash());
+    ASSERT_EQ(0x39582d02u, ImmutableString("textureCubeLod(0J2B0B").mangledNameHash());
+    ASSERT_EQ(0x1ccbe1e6u, ImmutableString("texture(0H1B").mangledNameHash());
+    ASSERT_EQ(0x1cce4cd6u, ImmutableString("texture(0P1B").mangledNameHash());
+    ASSERT_EQ(0x1ccdb695u, ImmutableString("texture(0U1B").mangledNameHash());
+    ASSERT_EQ(0x1cc4bc63u, ImmutableString("texture(0I2B").mangledNameHash());
+    ASSERT_EQ(0x1cc71e2fu, ImmutableString("texture(0Q2B").mangledNameHash());
+    ASSERT_EQ(0x1cc39501u, ImmutableString("texture(0V2B").mangledNameHash());
+    ASSERT_EQ(0x1cc8e9a8u, ImmutableString("texture(0J2B").mangledNameHash());
+    ASSERT_EQ(0x1ccf4520u, ImmutableString("texture(0R2B").mangledNameHash());
+    ASSERT_EQ(0x1cc8f192u, ImmutableString("texture(0W2B").mangledNameHash());
+    ASSERT_EQ(0x1cc25663u, ImmutableString("texture(0K2B").mangledNameHash());
+    ASSERT_EQ(0x1cc0bf9eu, ImmutableString("texture(0S2B").mangledNameHash());
+    ASSERT_EQ(0x1cc931d1u, ImmutableString("texture(0X2B").mangledNameHash());
+    ASSERT_EQ(0x2d02de80u, ImmutableString("textureProj(0H2B").mangledNameHash());
+    ASSERT_EQ(0x2d037c4cu, ImmutableString("textureProj(0P2B").mangledNameHash());
+    ASSERT_EQ(0x2d0e3593u, ImmutableString("textureProj(0U2B").mangledNameHash());
+    ASSERT_EQ(0x2d0836b9u, ImmutableString("textureProj(0H3B").mangledNameHash());
+    ASSERT_EQ(0x2d00dc41u, ImmutableString("textureProj(0P3B").mangledNameHash());
+    ASSERT_EQ(0x2d005187u, ImmutableString("textureProj(0U3B").mangledNameHash());
+    ASSERT_EQ(0x2d0b9377u, ImmutableString("textureProj(0I3B").mangledNameHash());
+    ASSERT_EQ(0x2d0c211cu, ImmutableString("textureProj(0Q3B").mangledNameHash());
+    ASSERT_EQ(0x2d03fc9du, ImmutableString("textureProj(0V3B").mangledNameHash());
+    ASSERT_EQ(0x29166bccu, ImmutableString("textureLod(0H1B0B").mangledNameHash());
+    ASSERT_EQ(0x291f9c5du, ImmutableString("textureLod(0P1B0B").mangledNameHash());
+    ASSERT_EQ(0x291eee75u, ImmutableString("textureLod(0U1B0B").mangledNameHash());
+    ASSERT_EQ(0x291a77ccu, ImmutableString("textureLod(0I2B0B").mangledNameHash());
+    ASSERT_EQ(0x29112a03u, ImmutableString("textureLod(0Q2B0B").mangledNameHash());
+    ASSERT_EQ(0x29133cc9u, ImmutableString("textureLod(0V2B0B").mangledNameHash());
+    ASSERT_EQ(0x2916234cu, ImmutableString("textureLod(0J2B0B").mangledNameHash());
+    ASSERT_EQ(0x2919999du, ImmutableString("textureLod(0R2B0B").mangledNameHash());
+    ASSERT_EQ(0x291a6956u, ImmutableString("textureLod(0W2B0B").mangledNameHash());
+    ASSERT_EQ(0x291d8e21u, ImmutableString("textureLod(0K2B0B").mangledNameHash());
+    ASSERT_EQ(0x2914cd7au, ImmutableString("textureLod(0S2B0B").mangledNameHash());
+    ASSERT_EQ(0x2910700au, ImmutableString("textureLod(0X2B0B").mangledNameHash());
+    ASSERT_EQ(0x1cc3d380u, ImmutableString("texture(0Z2B").mangledNameHash());
+    ASSERT_EQ(0x1ccc3b2fu, ImmutableString("texture(0a3B").mangledNameHash());
+    ASSERT_EQ(0x1cc8b086u, ImmutableString("texture(0b3B").mangledNameHash());
+    ASSERT_EQ(0x2d084eecu, ImmutableString("textureProj(0Z3B").mangledNameHash());
+    ASSERT_EQ(0x291fc149u, ImmutableString("textureLod(0Z2B0B").mangledNameHash());
+    ASSERT_EQ(0x2d085b63u, ImmutableString("textureSize(0H0C").mangledNameHash());
+    ASSERT_EQ(0x2d0cd4ecu, ImmutableString("textureSize(0P0C").mangledNameHash());
+    ASSERT_EQ(0x2d015791u, ImmutableString("textureSize(0U0C").mangledNameHash());
+    ASSERT_EQ(0x2d007125u, ImmutableString("textureSize(0I0C").mangledNameHash());
+    ASSERT_EQ(0x2d0d00f6u, ImmutableString("textureSize(0Q0C").mangledNameHash());
+    ASSERT_EQ(0x2d04b5f4u, ImmutableString("textureSize(0V0C").mangledNameHash());
+    ASSERT_EQ(0x2d03e3dau, ImmutableString("textureSize(0J0C").mangledNameHash());
+    ASSERT_EQ(0x2d0c7922u, ImmutableString("textureSize(0R0C").mangledNameHash());
+    ASSERT_EQ(0x2d08e824u, ImmutableString("textureSize(0W0C").mangledNameHash());
+    ASSERT_EQ(0x2d0c1458u, ImmutableString("textureSize(0K0C").mangledNameHash());
+    ASSERT_EQ(0x2d04bd90u, ImmutableString("textureSize(0S0C").mangledNameHash());
+    ASSERT_EQ(0x2d0d65fbu, ImmutableString("textureSize(0X0C").mangledNameHash());
+    ASSERT_EQ(0x2d0908bdu, ImmutableString("textureSize(0Z0C").mangledNameHash());
+    ASSERT_EQ(0x2d0db21du, ImmutableString("textureSize(0a0C").mangledNameHash());
+    ASSERT_EQ(0x2d05209au, ImmutableString("textureSize(0b0C").mangledNameHash());
+    ASSERT_EQ(0x2ce7c017u, ImmutableString("textureSize(0O").mangledNameHash());
+    ASSERT_EQ(0x2ce73febu, ImmutableString("textureSize(0T").mangledNameHash());
+    ASSERT_EQ(0x2ce6e60cu, ImmutableString("textureSize(0Y").mangledNameHash());
+    ASSERT_EQ(0x3954274au, ImmutableString("textureProjLod(0H2B0B").mangledNameHash());
+    ASSERT_EQ(0x39516b09u, ImmutableString("textureProjLod(0P2B0B").mangledNameHash());
+    ASSERT_EQ(0x395794afu, ImmutableString("textureProjLod(0U2B0B").mangledNameHash());
+    ASSERT_EQ(0x3951bcdau, ImmutableString("textureProjLod(0H3B0B").mangledNameHash());
+    ASSERT_EQ(0x395bbd87u, ImmutableString("textureProjLod(0P3B0B").mangledNameHash());
+    ASSERT_EQ(0x39564b1cu, ImmutableString("textureProjLod(0U3B0B").mangledNameHash());
+    ASSERT_EQ(0x395f01e1u, ImmutableString("textureProjLod(0I3B0B").mangledNameHash());
+    ASSERT_EQ(0x39509c5du, ImmutableString("textureProjLod(0Q3B0B").mangledNameHash());
+    ASSERT_EQ(0x395b06aau, ImmutableString("textureProjLod(0V3B0B").mangledNameHash());
+    ASSERT_EQ(0x395dfaedu, ImmutableString("textureProjLod(0Z3B0B").mangledNameHash());
+    ASSERT_EQ(0x291fb96au, ImmutableString("texelFetch(0H1C0C").mangledNameHash());
+    ASSERT_EQ(0x29128f3eu, ImmutableString("texelFetch(0P1C0C").mangledNameHash());
+    ASSERT_EQ(0x291da4e1u, ImmutableString("texelFetch(0U1C0C").mangledNameHash());
+    ASSERT_EQ(0x291771ddu, ImmutableString("texelFetch(0I2C0C").mangledNameHash());
+    ASSERT_EQ(0x2911720eu, ImmutableString("texelFetch(0Q2C0C").mangledNameHash());
+    ASSERT_EQ(0x29102cb2u, ImmutableString("texelFetch(0V2C0C").mangledNameHash());
+    ASSERT_EQ(0x291a3c8bu, ImmutableString("texelFetch(0K2C0C").mangledNameHash());
+    ASSERT_EQ(0x29144470u, ImmutableString("texelFetch(0S2C0C").mangledNameHash());
+    ASSERT_EQ(0x291c010eu, ImmutableString("texelFetch(0X2C0C").mangledNameHash());
+    ASSERT_EQ(0x2d4319eeu, ImmutableString("textureGrad(0H1B1B1B").mangledNameHash());
+    ASSERT_EQ(0x2d48f0f3u, ImmutableString("textureGrad(0P1B1B1B").mangledNameHash());
+    ASSERT_EQ(0x2d4e721cu, ImmutableString("textureGrad(0U1B1B1B").mangledNameHash());
+    ASSERT_EQ(0x2d401271u, ImmutableString("textureGrad(0I2B2B2B").mangledNameHash());
+    ASSERT_EQ(0x2d432b01u, ImmutableString("textureGrad(0Q2B2B2B").mangledNameHash());
+    ASSERT_EQ(0x2d4fefbbu, ImmutableString("textureGrad(0V2B2B2B").mangledNameHash());
+    ASSERT_EQ(0x2d43ef75u, ImmutableString("textureGrad(0J2B2B2B").mangledNameHash());
+    ASSERT_EQ(0x2d468d96u, ImmutableString("textureGrad(0R2B2B2B").mangledNameHash());
+    ASSERT_EQ(0x2d423ef7u, ImmutableString("textureGrad(0W2B2B2B").mangledNameHash());
+    ASSERT_EQ(0x2d4d40c2u, ImmutableString("textureGrad(0Z2B1B1B").mangledNameHash());
+    ASSERT_EQ(0x2d42a4a7u, ImmutableString("textureGrad(0a3B2B2B").mangledNameHash());
+    ASSERT_EQ(0x2d4e1d2au, ImmutableString("textureGrad(0K2B1B1B").mangledNameHash());
+    ASSERT_EQ(0x2d4add22u, ImmutableString("textureGrad(0S2B1B1B").mangledNameHash());
+    ASSERT_EQ(0x2d447047u, ImmutableString("textureGrad(0X2B1B1B").mangledNameHash());
+    ASSERT_EQ(0x2d4a4f6au, ImmutableString("textureGrad(0b3B1B1B").mangledNameHash());
+    ASSERT_EQ(0x3d8b645cu, ImmutableString("textureProjGrad(0H2B1B1B").mangledNameHash());
+    ASSERT_EQ(0x3d86f397u, ImmutableString("textureProjGrad(0P2B1B1B").mangledNameHash());
+    ASSERT_EQ(0x3d8e064fu, ImmutableString("textureProjGrad(0U2B1B1B").mangledNameHash());
+    ASSERT_EQ(0x3d865b2au, ImmutableString("textureProjGrad(0H3B1B1B").mangledNameHash());
+    ASSERT_EQ(0x3d8a0862u, ImmutableString("textureProjGrad(0P3B1B1B").mangledNameHash());
+    ASSERT_EQ(0x3d896556u, ImmutableString("textureProjGrad(0U3B1B1B").mangledNameHash());
+    ASSERT_EQ(0x3d87ff0au, ImmutableString("textureProjGrad(0I3B2B2B").mangledNameHash());
+    ASSERT_EQ(0x3d83cc77u, ImmutableString("textureProjGrad(0Q3B2B2B").mangledNameHash());
+    ASSERT_EQ(0x3d832970u, ImmutableString("textureProjGrad(0V3B2B2B").mangledNameHash());
+    ASSERT_EQ(0x3d8ca0b7u, ImmutableString("textureProjGrad(0Z3B1B1B").mangledNameHash());
+    ASSERT_EQ(0x35422c30u, ImmutableString("textureOffset(0H1B1C").mangledNameHash());
+    ASSERT_EQ(0x354102f7u, ImmutableString("textureOffset(0P1B1C").mangledNameHash());
+    ASSERT_EQ(0x3543944fu, ImmutableString("textureOffset(0U1B1C").mangledNameHash());
+    ASSERT_EQ(0x354cbe1cu, ImmutableString("textureOffset(0I2B2C").mangledNameHash());
+    ASSERT_EQ(0x35478003u, ImmutableString("textureOffset(0Q2B2C").mangledNameHash());
+    ASSERT_EQ(0x35413eedu, ImmutableString("textureOffset(0V2B2C").mangledNameHash());
+    ASSERT_EQ(0x35473958u, ImmutableString("textureOffset(0Z2B1C").mangledNameHash());
+    ASSERT_EQ(0x354801adu, ImmutableString("textureOffset(0K2B1C").mangledNameHash());
+    ASSERT_EQ(0x35459cf8u, ImmutableString("textureOffset(0S2B1C").mangledNameHash());
+    ASSERT_EQ(0x354706eau, ImmutableString("textureOffset(0X2B1C").mangledNameHash());
+    ASSERT_EQ(0x458150bau, ImmutableString("textureProjOffset(0H2B1C").mangledNameHash());
+    ASSERT_EQ(0x4589a875u, ImmutableString("textureProjOffset(0P2B1C").mangledNameHash());
+    ASSERT_EQ(0x4580712au, ImmutableString("textureProjOffset(0U2B1C").mangledNameHash());
+    ASSERT_EQ(0x4585bb13u, ImmutableString("textureProjOffset(0H3B1C").mangledNameHash());
+    ASSERT_EQ(0x458df23bu, ImmutableString("textureProjOffset(0P3B1C").mangledNameHash());
+    ASSERT_EQ(0x45801598u, ImmutableString("textureProjOffset(0U3B1C").mangledNameHash());
+    ASSERT_EQ(0x45889762u, ImmutableString("textureProjOffset(0I3B2C").mangledNameHash());
+    ASSERT_EQ(0x45859c54u, ImmutableString("textureProjOffset(0Q3B2C").mangledNameHash());
+    ASSERT_EQ(0x458a50a0u, ImmutableString("textureProjOffset(0V3B2C").mangledNameHash());
+    ASSERT_EQ(0x458be8b2u, ImmutableString("textureProjOffset(0Z3B1C").mangledNameHash());
+    ASSERT_EQ(0x41992585u, ImmutableString("textureLodOffset(0H1B0B1C").mangledNameHash());
+    ASSERT_EQ(0x41979f66u, ImmutableString("textureLodOffset(0P1B0B1C").mangledNameHash());
+    ASSERT_EQ(0x419f4e4du, ImmutableString("textureLodOffset(0U1B0B1C").mangledNameHash());
+    ASSERT_EQ(0x419bdc72u, ImmutableString("textureLodOffset(0I2B0B2C").mangledNameHash());
+    ASSERT_EQ(0x41990c42u, ImmutableString("textureLodOffset(0Q2B0B2C").mangledNameHash());
+    ASSERT_EQ(0x4194ea77u, ImmutableString("textureLodOffset(0V2B0B2C").mangledNameHash());
+    ASSERT_EQ(0x4194ae35u, ImmutableString("textureLodOffset(0Z2B0B1C").mangledNameHash());
+    ASSERT_EQ(0x419a009fu, ImmutableString("textureLodOffset(0K2B0B1C").mangledNameHash());
+    ASSERT_EQ(0x41958afau, ImmutableString("textureLodOffset(0S2B0B1C").mangledNameHash());
+    ASSERT_EQ(0x4192d547u, ImmutableString("textureLodOffset(0X2B0B1C").mangledNameHash());
+    ASSERT_EQ(0x51d55102u, ImmutableString("textureProjLodOffset(0H2B0B1C").mangledNameHash());
+    ASSERT_EQ(0x51ddd932u, ImmutableString("textureProjLodOffset(0P2B0B1C").mangledNameHash());
+    ASSERT_EQ(0x51ded012u, ImmutableString("textureProjLodOffset(0U2B0B1C").mangledNameHash());
+    ASSERT_EQ(0x51d7ccd1u, ImmutableString("textureProjLodOffset(0H3B0B1C").mangledNameHash());
+    ASSERT_EQ(0x51dabe62u, ImmutableString("textureProjLodOffset(0P3B0B1C").mangledNameHash());
+    ASSERT_EQ(0x51dfb7dcu, ImmutableString("textureProjLodOffset(0U3B0B1C").mangledNameHash());
+    ASSERT_EQ(0x51d72007u, ImmutableString("textureProjLodOffset(0I3B0B2C").mangledNameHash());
+    ASSERT_EQ(0x51d5cc8cu, ImmutableString("textureProjLodOffset(0Q3B0B2C").mangledNameHash());
+    ASSERT_EQ(0x51d731fau, ImmutableString("textureProjLodOffset(0V3B0B2C").mangledNameHash());
+    ASSERT_EQ(0x51d1a62du, ImmutableString("textureProjLodOffset(0Z3B0B1C").mangledNameHash());
+    ASSERT_EQ(0x419641e4u, ImmutableString("texelFetchOffset(0H1C0C1C").mangledNameHash());
+    ASSERT_EQ(0x41938a11u, ImmutableString("texelFetchOffset(0P1C0C1C").mangledNameHash());
+    ASSERT_EQ(0x4198f5c0u, ImmutableString("texelFetchOffset(0U1C0C1C").mangledNameHash());
+    ASSERT_EQ(0x4191cb81u, ImmutableString("texelFetchOffset(0I2C0C2C").mangledNameHash());
+    ASSERT_EQ(0x419b1491u, ImmutableString("texelFetchOffset(0Q2C0C2C").mangledNameHash());
+    ASSERT_EQ(0x419c6bc9u, ImmutableString("texelFetchOffset(0V2C0C2C").mangledNameHash());
+    ASSERT_EQ(0x4195953fu, ImmutableString("texelFetchOffset(0K2C0C1C").mangledNameHash());
+    ASSERT_EQ(0x419224bdu, ImmutableString("texelFetchOffset(0S2C0C1C").mangledNameHash());
+    ASSERT_EQ(0x4190d486u, ImmutableString("texelFetchOffset(0X2C0C1C").mangledNameHash());
+    ASSERT_EQ(0x45ce0193u, ImmutableString("textureGradOffset(0H1B1B1B1C").mangledNameHash());
+    ASSERT_EQ(0x45ce7db4u, ImmutableString("textureGradOffset(0P1B1B1B1C").mangledNameHash());
+    ASSERT_EQ(0x45c09d88u, ImmutableString("textureGradOffset(0U1B1B1B1C").mangledNameHash());
+    ASSERT_EQ(0x45c7de83u, ImmutableString("textureGradOffset(0I2B2B2B2C").mangledNameHash());
+    ASSERT_EQ(0x45cafdcbu, ImmutableString("textureGradOffset(0Q2B2B2B2C").mangledNameHash());
+    ASSERT_EQ(0x45cc5a72u, ImmutableString("textureGradOffset(0V2B2B2B2C").mangledNameHash());
+    ASSERT_EQ(0x45cd0417u, ImmutableString("textureGradOffset(0Z2B1B1B1C").mangledNameHash());
+    ASSERT_EQ(0x45c2f605u, ImmutableString("textureGradOffset(0K2B1B1B1C").mangledNameHash());
+    ASSERT_EQ(0x45ca81ceu, ImmutableString("textureGradOffset(0S2B1B1B1C").mangledNameHash());
+    ASSERT_EQ(0x45c47453u, ImmutableString("textureGradOffset(0X2B1B1B1C").mangledNameHash());
+    ASSERT_EQ(0x45c59fedu, ImmutableString("textureGradOffset(0b3B1B1B1C").mangledNameHash());
+    ASSERT_EQ(0x560efc8au, ImmutableString("textureProjGradOffset(0H2B1B1B1C").mangledNameHash());
+    ASSERT_EQ(0x56045ff7u, ImmutableString("textureProjGradOffset(0P2B1B1B1C").mangledNameHash());
+    ASSERT_EQ(0x56096070u, ImmutableString("textureProjGradOffset(0U2B1B1B1C").mangledNameHash());
+    ASSERT_EQ(0x5604692eu, ImmutableString("textureProjGradOffset(0H3B1B1B1C").mangledNameHash());
+    ASSERT_EQ(0x560cb2ebu, ImmutableString("textureProjGradOffset(0P3B1B1B1C").mangledNameHash());
+    ASSERT_EQ(0x560144aau, ImmutableString("textureProjGradOffset(0U3B1B1B1C").mangledNameHash());
+    ASSERT_EQ(0x56057148u, ImmutableString("textureProjGradOffset(0I3B2B2B2C").mangledNameHash());
+    ASSERT_EQ(0x56088480u, ImmutableString("textureProjGradOffset(0Q3B2B2B2C").mangledNameHash());
+    ASSERT_EQ(0x560187dbu, ImmutableString("textureProjGradOffset(0V3B2B2B2C").mangledNameHash());
+    ASSERT_EQ(0x5608e4edu, ImmutableString("textureProjGradOffset(0Z3B1B1B1C").mangledNameHash());
+    ASSERT_EQ(0x356ae2a8u, ImmutableString("textureOffset(0H1B1C0B").mangledNameHash());
+    ASSERT_EQ(0x356dff31u, ImmutableString("textureOffset(0P1B1C0B").mangledNameHash());
+    ASSERT_EQ(0x3565646au, ImmutableString("textureOffset(0U1B1C0B").mangledNameHash());
+    ASSERT_EQ(0x356b0f18u, ImmutableString("textureOffset(0I2B2C0B").mangledNameHash());
+    ASSERT_EQ(0x35611ec2u, ImmutableString("textureOffset(0Q2B2C0B").mangledNameHash());
+    ASSERT_EQ(0x35618a59u, ImmutableString("textureOffset(0V2B2C0B").mangledNameHash());
+    ASSERT_EQ(0x356524a3u, ImmutableString("textureOffset(0Z2B1C0B").mangledNameHash());
+    ASSERT_EQ(0x356c4537u, ImmutableString("textureOffset(0K2B1C0B").mangledNameHash());
+    ASSERT_EQ(0x356dd6bdu, ImmutableString("textureOffset(0S2B1C0B").mangledNameHash());
+    ASSERT_EQ(0x35630e76u, ImmutableString("textureOffset(0X2B1C0B").mangledNameHash());
+    ASSERT_EQ(0x45adf315u, ImmutableString("textureProjOffset(0H2B1C0B").mangledNameHash());
+    ASSERT_EQ(0x45aec1dcu, ImmutableString("textureProjOffset(0P2B1C0B").mangledNameHash());
+    ASSERT_EQ(0x45aca531u, ImmutableString("textureProjOffset(0U2B1C0B").mangledNameHash());
+    ASSERT_EQ(0x45ac482bu, ImmutableString("textureProjOffset(0H3B1C0B").mangledNameHash());
+    ASSERT_EQ(0x45a7bc78u, ImmutableString("textureProjOffset(0P3B1C0B").mangledNameHash());
+    ASSERT_EQ(0x45a5a09au, ImmutableString("textureProjOffset(0U3B1C0B").mangledNameHash());
+    ASSERT_EQ(0x45ad4b1cu, ImmutableString("textureProjOffset(0I3B2C0B").mangledNameHash());
+    ASSERT_EQ(0x45a7c263u, ImmutableString("textureProjOffset(0Q3B2C0B").mangledNameHash());
+    ASSERT_EQ(0x45a13c18u, ImmutableString("textureProjOffset(0V3B2C0B").mangledNameHash());
+    ASSERT_EQ(0x45ab195eu, ImmutableString("textureProjOffset(0Z3B1C0B").mangledNameHash());
+    ASSERT_EQ(0x1ccc3cbfu, ImmutableString("texture(0L1B").mangledNameHash());
+    ASSERT_EQ(0x2d0728a0u, ImmutableString("textureProj(0L2B").mangledNameHash());
+    ASSERT_EQ(0x2d0c82e1u, ImmutableString("textureProj(0L3B").mangledNameHash());
+    ASSERT_EQ(0x2d089a63u, ImmutableString("textureSize(0L0C").mangledNameHash());
+    ASSERT_EQ(0x291dc663u, ImmutableString("texelFetch(0L1C0C").mangledNameHash());
+    ASSERT_EQ(0x1cc75b2bu, ImmutableString("texture(0M1B").mangledNameHash());
+    ASSERT_EQ(0x2d05b26eu, ImmutableString("textureProj(0M2B").mangledNameHash());
+    ASSERT_EQ(0x2d07de2bu, ImmutableString("textureProj(0M3B").mangledNameHash());
+    ASSERT_EQ(0x24eb3ad6u, ImmutableString("rgb_2_yuv(2B0G").mangledNameHash());
+    ASSERT_EQ(0x24e7ca02u, ImmutableString("yuv_2_rgb(2B0G").mangledNameHash());
+    ASSERT_EQ(0x2d00b7aau, ImmutableString("textureSize(0M0C").mangledNameHash());
+    ASSERT_EQ(0x29140228u, ImmutableString("texelFetch(0M1C0C").mangledNameHash());
+    ASSERT_EQ(0x1cede054u, ImmutableString("texture(0H1B0B").mangledNameHash());
+    ASSERT_EQ(0x1ce386eeu, ImmutableString("texture(0P1B0B").mangledNameHash());
+    ASSERT_EQ(0x1ce04aabu, ImmutableString("texture(0U1B0B").mangledNameHash());
+    ASSERT_EQ(0x1cefb0f7u, ImmutableString("texture(0I2B0B").mangledNameHash());
+    ASSERT_EQ(0x1ce6cb20u, ImmutableString("texture(0Q2B0B").mangledNameHash());
+    ASSERT_EQ(0x1ce4390bu, ImmutableString("texture(0V2B0B").mangledNameHash());
+    ASSERT_EQ(0x1ceb9abfu, ImmutableString("texture(0J2B0B").mangledNameHash());
+    ASSERT_EQ(0x1cee54d8u, ImmutableString("texture(0R2B0B").mangledNameHash());
+    ASSERT_EQ(0x1ce7ffc3u, ImmutableString("texture(0W2B0B").mangledNameHash());
+    ASSERT_EQ(0x1ce87584u, ImmutableString("texture(0K2B0B").mangledNameHash());
+    ASSERT_EQ(0x1cea71adu, ImmutableString("texture(0S2B0B").mangledNameHash());
+    ASSERT_EQ(0x1ce1eb81u, ImmutableString("texture(0X2B0B").mangledNameHash());
+    ASSERT_EQ(0x2d2df52bu, ImmutableString("textureProj(0H2B0B").mangledNameHash());
+    ASSERT_EQ(0x2d2a8d3au, ImmutableString("textureProj(0P2B0B").mangledNameHash());
+    ASSERT_EQ(0x2d23ba38u, ImmutableString("textureProj(0U2B0B").mangledNameHash());
+    ASSERT_EQ(0x2d2ca6f8u, ImmutableString("textureProj(0H3B0B").mangledNameHash());
+    ASSERT_EQ(0x2d220503u, ImmutableString("textureProj(0P3B0B").mangledNameHash());
+    ASSERT_EQ(0x2d2534d7u, ImmutableString("textureProj(0U3B0B").mangledNameHash());
+    ASSERT_EQ(0x2d269d32u, ImmutableString("textureProj(0I3B0B").mangledNameHash());
+    ASSERT_EQ(0x2d24b561u, ImmutableString("textureProj(0Q3B0B").mangledNameHash());
+    ASSERT_EQ(0x2d2a9c1cu, ImmutableString("textureProj(0V3B0B").mangledNameHash());
+    ASSERT_EQ(0x1ce684a0u, ImmutableString("texture(0Z2B0B").mangledNameHash());
+    ASSERT_EQ(0x1cef758fu, ImmutableString("texture(0a3B0B").mangledNameHash());
+    ASSERT_EQ(0x2d2210bau, ImmutableString("textureProj(0Z3B0B").mangledNameHash());
+    ASSERT_EQ(0x1ce445b0u, ImmutableString("texture(0L1B0B").mangledNameHash());
+    ASSERT_EQ(0x2d2fc16fu, ImmutableString("textureProj(0L2B0B").mangledNameHash());
+    ASSERT_EQ(0x2d202f3fu, ImmutableString("textureProj(0L3B0B").mangledNameHash());
+    ASSERT_EQ(0x1ce319feu, ImmutableString("texture(0M1B0B").mangledNameHash());
+    ASSERT_EQ(0x2d23be17u, ImmutableString("textureProj(0M2B0B").mangledNameHash());
+    ASSERT_EQ(0x2d2141e1u, ImmutableString("textureProj(0M3B0B").mangledNameHash());
+    ASSERT_EQ(0x2912ed46u, ImmutableString("texelFetch(0O1C0C").mangledNameHash());
+    ASSERT_EQ(0x29183d18u, ImmutableString("texelFetch(0T1C0C").mangledNameHash());
+    ASSERT_EQ(0x291bb1d9u, ImmutableString("texelFetch(0Y1C0C").mangledNameHash());
+    ASSERT_EQ(0x35257bf7u, ImmutableString("textureGather(0H1B").mangledNameHash());
+    ASSERT_EQ(0x3520f548u, ImmutableString("textureGather(0P1B").mangledNameHash());
+    ASSERT_EQ(0x352183b6u, ImmutableString("textureGather(0U1B").mangledNameHash());
+    ASSERT_EQ(0x35498b6fu, ImmutableString("textureGather(0H1B0C").mangledNameHash());
+    ASSERT_EQ(0x35412442u, ImmutableString("textureGather(0P1B0C").mangledNameHash());
+    ASSERT_EQ(0x354047f2u, ImmutableString("textureGather(0U1B0C").mangledNameHash());
+    ASSERT_EQ(0x352889a7u, ImmutableString("textureGather(0K2B").mangledNameHash());
+    ASSERT_EQ(0x35280d85u, ImmutableString("textureGather(0S2B").mangledNameHash());
+    ASSERT_EQ(0x352776c1u, ImmutableString("textureGather(0X2B").mangledNameHash());
+    ASSERT_EQ(0x354f052bu, ImmutableString("textureGather(0K2B0C").mangledNameHash());
+    ASSERT_EQ(0x3547e2f2u, ImmutableString("textureGather(0S2B0C").mangledNameHash());
+    ASSERT_EQ(0x35436508u, ImmutableString("textureGather(0X2B0C").mangledNameHash());
+    ASSERT_EQ(0x352f0d8au, ImmutableString("textureGather(0J2B").mangledNameHash());
+    ASSERT_EQ(0x352e6efdu, ImmutableString("textureGather(0R2B").mangledNameHash());
+    ASSERT_EQ(0x3527b70eu, ImmutableString("textureGather(0W2B").mangledNameHash());
+    ASSERT_EQ(0x3549192du, ImmutableString("textureGather(0J2B0C").mangledNameHash());
+    ASSERT_EQ(0x354b0049u, ImmutableString("textureGather(0R2B0C").mangledNameHash());
+    ASSERT_EQ(0x354d8e0fu, ImmutableString("textureGather(0W2B0C").mangledNameHash());
+    ASSERT_EQ(0x352c3259u, ImmutableString("textureGather(0Z1B").mangledNameHash());
+    ASSERT_EQ(0x354bc853u, ImmutableString("textureGather(0Z1B0B").mangledNameHash());
+    ASSERT_EQ(0x352dc0eau, ImmutableString("textureGather(0b2B").mangledNameHash());
+    ASSERT_EQ(0x35436214u, ImmutableString("textureGather(0b2B0B").mangledNameHash());
+    ASSERT_EQ(0x3525e425u, ImmutableString("textureGather(0a2B").mangledNameHash());
+    ASSERT_EQ(0x354af264u, ImmutableString("textureGather(0a2B0B").mangledNameHash());
+    ASSERT_EQ(0x4dae3f95u, ImmutableString("textureGatherOffset(0H1B1C").mangledNameHash());
+    ASSERT_EQ(0x4da38e3eu, ImmutableString("textureGatherOffset(0P1B1C").mangledNameHash());
+    ASSERT_EQ(0x4daf95ffu, ImmutableString("textureGatherOffset(0U1B1C").mangledNameHash());
+    ASSERT_EQ(0x4dc8f1feu, ImmutableString("textureGatherOffset(0H1B1C0C").mangledNameHash());
+    ASSERT_EQ(0x4dcb704cu, ImmutableString("textureGatherOffset(0P1B1C0C").mangledNameHash());
+    ASSERT_EQ(0x4dc59589u, ImmutableString("textureGatherOffset(0U1B1C0C").mangledNameHash());
+    ASSERT_EQ(0x4da3f983u, ImmutableString("textureGatherOffset(0K2B1C").mangledNameHash());
+    ASSERT_EQ(0x4da50052u, ImmutableString("textureGatherOffset(0S2B1C").mangledNameHash());
+    ASSERT_EQ(0x4dae37ebu, ImmutableString("textureGatherOffset(0X2B1C").mangledNameHash());
+    ASSERT_EQ(0x4dc89c91u, ImmutableString("textureGatherOffset(0K2B1C0C").mangledNameHash());
+    ASSERT_EQ(0x4dc0120bu, ImmutableString("textureGatherOffset(0S2B1C0C").mangledNameHash());
+    ASSERT_EQ(0x4dc38636u, ImmutableString("textureGatherOffset(0X2B1C0C").mangledNameHash());
+    ASSERT_EQ(0x4dcb06fcu, ImmutableString("textureGatherOffset(0Z1B0B1C").mangledNameHash());
+    ASSERT_EQ(0x4dcd2cb2u, ImmutableString("textureGatherOffset(0b2B0B1C").mangledNameHash());
+    ASSERT_EQ(0x3500b5d6u, ImmutableString("atomicCounter(0F").mangledNameHash());
+    ASSERT_EQ(0x599f07cfu, ImmutableString("atomicCounterIncrement(0F").mangledNameHash());
+    ASSERT_EQ(0x599f5c0eu, ImmutableString("atomicCounterDecrement(0F").mangledNameHash());
+    ASSERT_EQ(0x24e48542u, ImmutableString("atomicAdd(0D0D").mangledNameHash());
+    ASSERT_EQ(0x24e17d9bu, ImmutableString("atomicAdd(0C0C").mangledNameHash());
+    ASSERT_EQ(0x24e7d770u, ImmutableString("atomicMin(0D0D").mangledNameHash());
+    ASSERT_EQ(0x24e2f67eu, ImmutableString("atomicMin(0C0C").mangledNameHash());
+    ASSERT_EQ(0x24e7ac0cu, ImmutableString("atomicMax(0D0D").mangledNameHash());
+    ASSERT_EQ(0x24ef375bu, ImmutableString("atomicMax(0C0C").mangledNameHash());
+    ASSERT_EQ(0x24ec9041u, ImmutableString("atomicAnd(0D0D").mangledNameHash());
+    ASSERT_EQ(0x24e8f7afu, ImmutableString("atomicAnd(0C0C").mangledNameHash());
+    ASSERT_EQ(0x20d440ddu, ImmutableString("atomicOr(0D0D").mangledNameHash());
+    ASSERT_EQ(0x20d79994u, ImmutableString("atomicOr(0C0C").mangledNameHash());
+    ASSERT_EQ(0x24ee0a8au, ImmutableString("atomicXor(0D0D").mangledNameHash());
+    ASSERT_EQ(0x24e16ffdu, ImmutableString("atomicXor(0C0C").mangledNameHash());
+    ASSERT_EQ(0x39332d5cu, ImmutableString("atomicExchange(0D0D").mangledNameHash());
+    ASSERT_EQ(0x39368640u, ImmutableString("atomicExchange(0C0C").mangledNameHash());
+    ASSERT_EQ(0x39552df4u, ImmutableString("atomicCompSwap(0D0D0D").mangledNameHash());
+    ASSERT_EQ(0x3950f760u, ImmutableString("atomicCompSwap(0C0C0C").mangledNameHash());
+    ASSERT_EQ(0x24cb34d4u, ImmutableString("imageSize(0c").mangledNameHash());
+    ASSERT_EQ(0x24cba3d0u, ImmutableString("imageSize(0d").mangledNameHash());
+    ASSERT_EQ(0x24cb9d46u, ImmutableString("imageSize(0e").mangledNameHash());
+    ASSERT_EQ(0x24cb8f2bu, ImmutableString("imageSize(0f").mangledNameHash());
+    ASSERT_EQ(0x24cb7e98u, ImmutableString("imageSize(0g").mangledNameHash());
+    ASSERT_EQ(0x24cbe5a4u, ImmutableString("imageSize(0h").mangledNameHash());
+    ASSERT_EQ(0x24cbd70bu, ImmutableString("imageSize(0i").mangledNameHash());
+    ASSERT_EQ(0x24cbc6feu, ImmutableString("imageSize(0j").mangledNameHash());
+    ASSERT_EQ(0x24cbb06du, ImmutableString("imageSize(0k").mangledNameHash());
+    ASSERT_EQ(0x24cc2f68u, ImmutableString("imageSize(0l").mangledNameHash());
+    ASSERT_EQ(0x24cc1edfu, ImmutableString("imageSize(0m").mangledNameHash());
+    ASSERT_EQ(0x24cc0842u, ImmutableString("imageSize(0n").mangledNameHash());
+    ASSERT_EQ(0x24e6cf12u, ImmutableString("imageLoad(0c1C").mangledNameHash());
+    ASSERT_EQ(0x24e752d1u, ImmutableString("imageLoad(0d1C").mangledNameHash());
+    ASSERT_EQ(0x24ea98bbu, ImmutableString("imageLoad(0e1C").mangledNameHash());
+    ASSERT_EQ(0x24e9aaedu, ImmutableString("imageLoad(0f2C").mangledNameHash());
+    ASSERT_EQ(0x24e00501u, ImmutableString("imageLoad(0g2C").mangledNameHash());
+    ASSERT_EQ(0x24e11051u, ImmutableString("imageLoad(0h2C").mangledNameHash());
+    ASSERT_EQ(0x24ea7eeeu, ImmutableString("imageLoad(0i2C").mangledNameHash());
+    ASSERT_EQ(0x24e2806eu, ImmutableString("imageLoad(0j2C").mangledNameHash());
+    ASSERT_EQ(0x24e8de55u, ImmutableString("imageLoad(0k2C").mangledNameHash());
+    ASSERT_EQ(0x24ece2e2u, ImmutableString("imageLoad(0l2C").mangledNameHash());
+    ASSERT_EQ(0x24e6213eu, ImmutableString("imageLoad(0m2C").mangledNameHash());
+    ASSERT_EQ(0x24e24455u, ImmutableString("imageLoad(0n2C").mangledNameHash());
+    ASSERT_EQ(0x291af7dcu, ImmutableString("imageStore(0c1C3B").mangledNameHash());
+    ASSERT_EQ(0x2915bd8cu, ImmutableString("imageStore(0d1C3C").mangledNameHash());
+    ASSERT_EQ(0x291e4ebau, ImmutableString("imageStore(0e1C3D").mangledNameHash());
+    ASSERT_EQ(0x29188a68u, ImmutableString("imageStore(0f2C3B").mangledNameHash());
+    ASSERT_EQ(0x291b086bu, ImmutableString("imageStore(0g2C3C").mangledNameHash());
+    ASSERT_EQ(0x291f0ca5u, ImmutableString("imageStore(0h2C3D").mangledNameHash());
+    ASSERT_EQ(0x291fa1cau, ImmutableString("imageStore(0i2C3B").mangledNameHash());
+    ASSERT_EQ(0x291cf877u, ImmutableString("imageStore(0j2C3C").mangledNameHash());
+    ASSERT_EQ(0x29100bf8u, ImmutableString("imageStore(0k2C3D").mangledNameHash());
+    ASSERT_EQ(0x291ba62eu, ImmutableString("imageStore(0l2C3B").mangledNameHash());
+    ASSERT_EQ(0x291c4ce8u, ImmutableString("imageStore(0m2C3C").mangledNameHash());
+    ASSERT_EQ(0x291d8e34u, ImmutableString("imageStore(0n2C3D").mangledNameHash());
+    ASSERT_EQ(0x34ea7717u, ImmutableString("memoryBarrier(").mangledNameHash());
+    ASSERT_EQ(0x69bd8347u, ImmutableString("memoryBarrierAtomicCounter(").mangledNameHash());
+    ASSERT_EQ(0x4d4ffc7cu, ImmutableString("memoryBarrierBuffer(").mangledNameHash());
+    ASSERT_EQ(0x493cdf59u, ImmutableString("memoryBarrierImage(").mangledNameHash());
+    ASSERT_EQ(0x1c8349e8u, ImmutableString("barrier(").mangledNameHash());
+    ASSERT_EQ(0x4d49a5a0u, ImmutableString("memoryBarrierShared(").mangledNameHash());
+    ASSERT_EQ(0x493df1afu, ImmutableString("groupMemoryBarrier(").mangledNameHash());
+    ASSERT_EQ(0x28bab062u, ImmutableString("EmitVertex(").mangledNameHash());
+    ASSERT_EQ(0x30dfadf2u, ImmutableString("EndPrimitive(").mangledNameHash());
+    ASSERT_EQ(0xfc5a3e39u, ImmutableString("frexp").mangledNameHash());
+    ASSERT_EQ(0xfc58c75fu, ImmutableString("ldexp").mangledNameHash());
+    ASSERT_EQ(0xfccaeea7u, ImmutableString("packUnorm4x8").mangledNameHash());
+    ASSERT_EQ(0xfcc4dd14u, ImmutableString("packSnorm4x8").mangledNameHash());
+    ASSERT_EQ(0xfce33074u, ImmutableString("unpackUnorm4x8").mangledNameHash());
+    ASSERT_EQ(0xfce7c191u, ImmutableString("unpackSnorm4x8").mangledNameHash());
+    ASSERT_EQ(0xfcff5885u, ImmutableString("bitfieldExtract").mangledNameHash());
+    ASSERT_EQ(0xfcef8089u, ImmutableString("bitfieldInsert").mangledNameHash());
+    ASSERT_EQ(0xfcfe5ecau, ImmutableString("bitfieldReverse").mangledNameHash());
+    ASSERT_EQ(0xfc8255f7u, ImmutableString("bitCount").mangledNameHash());
+    ASSERT_EQ(0xfc731d38u, ImmutableString("findLSB").mangledNameHash());
+    ASSERT_EQ(0xfc77b8eeu, ImmutableString("findMSB").mangledNameHash());
+    ASSERT_EQ(0xfc9ca01au, ImmutableString("uaddCarry").mangledNameHash());
+    ASSERT_EQ(0xfcab8d28u, ImmutableString("usubBorrow").mangledNameHash());
+    ASSERT_EQ(0xfcceb6ecu, ImmutableString("umulExtended").mangledNameHash());
+    ASSERT_EQ(0xfcc55991u, ImmutableString("imulExtended").mangledNameHash());
+    ASSERT_EQ(0xfca448b0u, ImmutableString("texelFetch").mangledNameHash());
+    ASSERT_EQ(0xfcda3830u, ImmutableString("textureGather").mangledNameHash());
+    ASSERT_EQ(0xfd3b2cf3u, ImmutableString("textureGatherOffset").mangledNameHash());
+    ASSERT_EQ(0xfcdc11a6u, ImmutableString("atomicCounter").mangledNameHash());
+    ASSERT_EQ(0xfd6666b0u, ImmutableString("atomicCounterIncrement").mangledNameHash());
+    ASSERT_EQ(0xfd6d6946u, ImmutableString("atomicCounterDecrement").mangledNameHash());
+    ASSERT_EQ(0xfc902522u, ImmutableString("atomicAdd").mangledNameHash());
+    ASSERT_EQ(0xfc923b7bu, ImmutableString("atomicMin").mangledNameHash());
+    ASSERT_EQ(0xfc911c23u, ImmutableString("atomicMax").mangledNameHash());
+    ASSERT_EQ(0xfc9e6576u, ImmutableString("atomicAnd").mangledNameHash());
+    ASSERT_EQ(0xfc8d2e21u, ImmutableString("atomicOr").mangledNameHash());
+    ASSERT_EQ(0xfc9bf930u, ImmutableString("atomicXor").mangledNameHash());
+    ASSERT_EQ(0xfceb9105u, ImmutableString("atomicExchange").mangledNameHash());
+    ASSERT_EQ(0xfcef39c9u, ImmutableString("atomicCompSwap").mangledNameHash());
+    ASSERT_EQ(0xfc96eee8u, ImmutableString("imageSize").mangledNameHash());
+    ASSERT_EQ(0xfc949f9au, ImmutableString("imageLoad").mangledNameHash());
+    ASSERT_EQ(0xfca4fe73u, ImmutableString("imageStore").mangledNameHash());
+    ASSERT_EQ(0xfcd38128u, ImmutableString("memoryBarrier").mangledNameHash());
+    ASSERT_EQ(0xfdab512bu, ImmutableString("memoryBarrierAtomicCounter").mangledNameHash());
+    ASSERT_EQ(0xfd36fc39u, ImmutableString("memoryBarrierBuffer").mangledNameHash());
+    ASSERT_EQ(0xfd24de50u, ImmutableString("memoryBarrierImage").mangledNameHash());
+    ASSERT_EQ(0xfc73d933u, ImmutableString("barrier").mangledNameHash());
+    ASSERT_EQ(0xfd3e8c1eu, ImmutableString("memoryBarrierShared").mangledNameHash());
+    ASSERT_EQ(0xfd27aec1u, ImmutableString("groupMemoryBarrier").mangledNameHash());
+    ASSERT_EQ(0xfcab5e6cu, ImmutableString("EmitVertex").mangledNameHash());
+    ASSERT_EQ(0xfccb436cu, ImmutableString("EndPrimitive").mangledNameHash());
+    ASSERT_EQ(0xfc41051au, ImmutableString("sinh").mangledNameHash());
+    ASSERT_EQ(0xfc4f43d8u, ImmutableString("cosh").mangledNameHash());
+    ASSERT_EQ(0xfc409755u, ImmutableString("tanh").mangledNameHash());
+    ASSERT_EQ(0xfc5ba553u, ImmutableString("asinh").mangledNameHash());
+    ASSERT_EQ(0xfc5ed779u, ImmutableString("acosh").mangledNameHash());
+    ASSERT_EQ(0xfc507200u, ImmutableString("atanh").mangledNameHash());
+    ASSERT_EQ(0xfc32a6bbu, ImmutableString("abs").mangledNameHash());
+    ASSERT_EQ(0xfc40c06cu, ImmutableString("sign").mangledNameHash());
+    ASSERT_EQ(0xfc5d5403u, ImmutableString("trunc").mangledNameHash());
+    ASSERT_EQ(0xfc54f285u, ImmutableString("round").mangledNameHash());
+    ASSERT_EQ(0xfc9a471eu, ImmutableString("roundEven").mangledNameHash());
+    ASSERT_EQ(0xfc3c9da3u, ImmutableString("min").mangledNameHash());
+    ASSERT_EQ(0xfc3d7937u, ImmutableString("max").mangledNameHash());
+    ASSERT_EQ(0xfc5a8e53u, ImmutableString("clamp").mangledNameHash());
+    ASSERT_EQ(0xfc3d7394u, ImmutableString("mix").mangledNameHash());
+    ASSERT_EQ(0xfc4eb892u, ImmutableString("modf").mangledNameHash());
+    ASSERT_EQ(0xfc5b1b56u, ImmutableString("isnan").mangledNameHash());
+    ASSERT_EQ(0xfc526b19u, ImmutableString("isinf").mangledNameHash());
+    ASSERT_EQ(0xfceb196au, ImmutableString("floatBitsToInt").mangledNameHash());
+    ASSERT_EQ(0xfcfc86fdu, ImmutableString("floatBitsToUint").mangledNameHash());
+    ASSERT_EQ(0xfcefcb16u, ImmutableString("intBitsToFloat").mangledNameHash());
+    ASSERT_EQ(0xfcfc2381u, ImmutableString("uintBitsToFloat").mangledNameHash());
+    ASSERT_EQ(0xfcd43a65u, ImmutableString("packSnorm2x16").mangledNameHash());
+    ASSERT_EQ(0xfcd6f27cu, ImmutableString("packUnorm2x16").mangledNameHash());
+    ASSERT_EQ(0xfcc5b90eu, ImmutableString("packHalf2x16").mangledNameHash());
+    ASSERT_EQ(0xfcf6ea30u, ImmutableString("unpackSnorm2x16").mangledNameHash());
+    ASSERT_EQ(0xfcf250f9u, ImmutableString("unpackUnorm2x16").mangledNameHash());
+    ASSERT_EQ(0xfce2872eu, ImmutableString("unpackHalf2x16").mangledNameHash());
+    ASSERT_EQ(0xfced5e20u, ImmutableString("matrixCompMult").mangledNameHash());
+    ASSERT_EQ(0xfcc8ffcau, ImmutableString("outerProduct").mangledNameHash());
+    ASSERT_EQ(0xfc9c00d8u, ImmutableString("transpose").mangledNameHash());
+    ASSERT_EQ(0xfcb76123u, ImmutableString("determinant").mangledNameHash());
+    ASSERT_EQ(0xfc7b229cu, ImmutableString("inverse").mangledNameHash());
+    ASSERT_EQ(0xfc805a04u, ImmutableString("lessThan").mangledNameHash());
+    ASSERT_EQ(0xfcd04816u, ImmutableString("lessThanEqual").mangledNameHash());
+    ASSERT_EQ(0xfcb04a9au, ImmutableString("greaterThan").mangledNameHash());
+    ASSERT_EQ(0xfd0ed0feu, ImmutableString("greaterThanEqual").mangledNameHash());
+    ASSERT_EQ(0xfc52ffbfu, ImmutableString("equal").mangledNameHash());
+    ASSERT_EQ(0xfc8243e5u, ImmutableString("notEqual").mangledNameHash());
+    ASSERT_EQ(0xfc73ceb2u, ImmutableString("texture").mangledNameHash());
+    ASSERT_EQ(0xfcb94477u, ImmutableString("textureProj").mangledNameHash());
+    ASSERT_EQ(0xfca02c0du, ImmutableString("textureLod").mangledNameHash());
+    ASSERT_EQ(0xfcbc7b6au, ImmutableString("textureSize").mangledNameHash());
+    ASSERT_EQ(0xfceb71d9u, ImmutableString("textureProjLod").mangledNameHash());
+    ASSERT_EQ(0xfcb3343au, ImmutableString("textureGrad").mangledNameHash());
+    ASSERT_EQ(0xfcf7b1b6u, ImmutableString("textureProjGrad").mangledNameHash());
+    ASSERT_EQ(0xfcd88b5eu, ImmutableString("textureOffset").mangledNameHash());
+    ASSERT_EQ(0xfd1a5636u, ImmutableString("textureProjOffset").mangledNameHash());
+    ASSERT_EQ(0xfd0394b4u, ImmutableString("textureLodOffset").mangledNameHash());
+    ASSERT_EQ(0xfd4154feu, ImmutableString("textureProjLodOffset").mangledNameHash());
+    ASSERT_EQ(0xfd012f28u, ImmutableString("texelFetchOffset").mangledNameHash());
+    ASSERT_EQ(0xfd16b09du, ImmutableString("textureGradOffset").mangledNameHash());
+    ASSERT_EQ(0xfd58b966u, ImmutableString("textureProjGradOffset").mangledNameHash());
+    ASSERT_EQ(0xfc9a638fu, ImmutableString("rgb_2_yuv").mangledNameHash());
+    ASSERT_EQ(0xfc9c77bau, ImmutableString("yuv_2_rgb").mangledNameHash());
+    ASSERT_EQ(0xfc4c82d2u, ImmutableString("dFdx").mangledNameHash());
+    ASSERT_EQ(0xfc4c70a1u, ImmutableString("dFdy").mangledNameHash());
+    ASSERT_EQ(0xfc64b336u, ImmutableString("fwidth").mangledNameHash());
+    ASSERT_EQ(0xfc918adeu, ImmutableString("texture2D").mangledNameHash());
+    ASSERT_EQ(0xfcdc75d1u, ImmutableString("texture2DProj").mangledNameHash());
+    ASSERT_EQ(0xfcbfe6dbu, ImmutableString("textureCube").mangledNameHash());
+    ASSERT_EQ(0xfcd3dbbbu, ImmutableString("texture2DRect").mangledNameHash());
+    ASSERT_EQ(0xfd16d4edu, ImmutableString("texture2DRectProj").mangledNameHash());
+    ASSERT_EQ(0xfd0d1e0fu, ImmutableString("texture2DGradEXT").mangledNameHash());
+    ASSERT_EQ(0xfd440d8au, ImmutableString("texture2DProjGradEXT").mangledNameHash());
+    ASSERT_EQ(0xfd21d313u, ImmutableString("textureCubeGradEXT").mangledNameHash());
+    ASSERT_EQ(0xfcf71bb4u, ImmutableString("texture2DLodEXT").mangledNameHash());
+    ASSERT_EQ(0xfd3ba159u, ImmutableString("texture2DProjLodEXT").mangledNameHash());
+    ASSERT_EQ(0xfd17391cu, ImmutableString("textureCubeLodEXT").mangledNameHash());
+    ASSERT_EQ(0xfccfa39eu, ImmutableString("texture2DLod").mangledNameHash());
+    ASSERT_EQ(0xfd030225u, ImmutableString("texture2DProjLod").mangledNameHash());
+    ASSERT_EQ(0xfceb31cfu, ImmutableString("textureCubeLod").mangledNameHash());
+    ASSERT_EQ(0xfc785144u, ImmutableString("radians").mangledNameHash());
+    ASSERT_EQ(0xfc7af7aau, ImmutableString("degrees").mangledNameHash());
+    ASSERT_EQ(0xfc3e094fu, ImmutableString("sin").mangledNameHash());
+    ASSERT_EQ(0xfc3fba42u, ImmutableString("cos").mangledNameHash());
+    ASSERT_EQ(0xfc39cbebu, ImmutableString("tan").mangledNameHash());
+    ASSERT_EQ(0xfc4fe441u, ImmutableString("asin").mangledNameHash());
+    ASSERT_EQ(0xfc43cf02u, ImmutableString("acos").mangledNameHash());
+    ASSERT_EQ(0xfc406d33u, ImmutableString("atan").mangledNameHash());
+    ASSERT_EQ(0xfc3589e3u, ImmutableString("pow").mangledNameHash());
+    ASSERT_EQ(0xfc372d40u, ImmutableString("exp").mangledNameHash());
+    ASSERT_EQ(0xfc33f444u, ImmutableString("log").mangledNameHash());
+    ASSERT_EQ(0xfc496f84u, ImmutableString("exp2").mangledNameHash());
+    ASSERT_EQ(0xfc410ee8u, ImmutableString("log2").mangledNameHash());
+    ASSERT_EQ(0xfc47d52cu, ImmutableString("sqrt").mangledNameHash());
+    ASSERT_EQ(0xfcbe83f1u, ImmutableString("inversesqrt").mangledNameHash());
+    ASSERT_EQ(0xfc5b826du, ImmutableString("floor").mangledNameHash());
+    ASSERT_EQ(0xfc462c46u, ImmutableString("ceil").mangledNameHash());
+    ASSERT_EQ(0xfc5ee54eu, ImmutableString("fract").mangledNameHash());
+    ASSERT_EQ(0xfc3dfb64u, ImmutableString("mod").mangledNameHash());
+    ASSERT_EQ(0xfc4c7e4eu, ImmutableString("step").mangledNameHash());
+    ASSERT_EQ(0xfca95719u, ImmutableString("smoothstep").mangledNameHash());
+    ASSERT_EQ(0xfc683b16u, ImmutableString("length").mangledNameHash());
+    ASSERT_EQ(0xfc82ef53u, ImmutableString("distance").mangledNameHash());
+    ASSERT_EQ(0xfc3d39a9u, ImmutableString("dot").mangledNameHash());
+    ASSERT_EQ(0xfc5297cau, ImmutableString("cross").mangledNameHash());
+    ASSERT_EQ(0xfc9ceefeu, ImmutableString("normalize").mangledNameHash());
+    ASSERT_EQ(0xfcb5f2b4u, ImmutableString("faceforward").mangledNameHash());
+    ASSERT_EQ(0xfc7924ddu, ImmutableString("reflect").mangledNameHash());
+    ASSERT_EQ(0xfc70669bu, ImmutableString("refract").mangledNameHash());
+    ASSERT_EQ(0xfc32c2d2u, ImmutableString("any").mangledNameHash());
+    ASSERT_EQ(0xfc313990u, ImmutableString("all").mangledNameHash());
+    ASSERT_EQ(0xfc329793u, ImmutableString("not").mangledNameHash());
+    ASSERT_EQ(0xfd02c057u, ImmutableString("gl_MaxImageUnits").mangledNameHash());
+    ASSERT_EQ(0xfd9ea0aeu, ImmutableString("gl_MaxVertexImageUniforms").mangledNameHash());
+    ASSERT_EQ(0xfdbe9e66u, ImmutableString("gl_MaxFragmentImageUniforms").mangledNameHash());
+    ASSERT_EQ(0xfda554a5u, ImmutableString("gl_MaxComputeImageUniforms").mangledNameHash());
+    ASSERT_EQ(0xfdb37edfu, ImmutableString("gl_MaxCombinedImageUniforms").mangledNameHash());
+    ASSERT_EQ(0xfe38d36fu,
+              ImmutableString("gl_MaxCombinedShaderOutputResources").mangledNameHash());
+    ASSERT_EQ(0xfdbd5365u, ImmutableString("gl_MaxComputeWorkGroupCount").mangledNameHash());
+    ASSERT_EQ(0xfdaec53cu, ImmutableString("gl_MaxComputeWorkGroupSize").mangledNameHash());
+    ASSERT_EQ(0xfde6c67fu, ImmutableString("gl_MaxComputeUniformComponents").mangledNameHash());
+    ASSERT_EQ(0xfde022f8u, ImmutableString("gl_MaxComputeTextureImageUnits").mangledNameHash());
+    ASSERT_EQ(0xfdbc3a77u, ImmutableString("gl_MaxComputeAtomicCounters").mangledNameHash());
+    ASSERT_EQ(0xfe1ac97cu, ImmutableString("gl_MaxComputeAtomicCounterBuffers").mangledNameHash());
+    ASSERT_EQ(0xfda4cb4eu, ImmutableString("gl_MaxVertexAtomicCounters").mangledNameHash());
+    ASSERT_EQ(0xfdc4585cu, ImmutableString("gl_MaxFragmentAtomicCounters").mangledNameHash());
+    ASSERT_EQ(0xfdc82d47u, ImmutableString("gl_MaxCombinedAtomicCounters").mangledNameHash());
+    ASSERT_EQ(0xfdb5a5efu, ImmutableString("gl_MaxAtomicCounterBindings").mangledNameHash());
+    ASSERT_EQ(0xfe01078bu, ImmutableString("gl_MaxVertexAtomicCounterBuffers").mangledNameHash());
+    ASSERT_EQ(0xfe2f6e03u, ImmutableString("gl_MaxFragmentAtomicCounterBuffers").mangledNameHash());
+    ASSERT_EQ(0xfe23d724u, ImmutableString("gl_MaxCombinedAtomicCounterBuffers").mangledNameHash());
+    ASSERT_EQ(0xfdd980a0u, ImmutableString("gl_MaxAtomicCounterBufferSize").mangledNameHash());
+    ASSERT_EQ(0xfdd850b4u, ImmutableString("gl_MaxGeometryInputComponents").mangledNameHash());
+    ASSERT_EQ(0xfded2f56u, ImmutableString("gl_MaxGeometryOutputComponents").mangledNameHash());
+    ASSERT_EQ(0xfdb3d624u, ImmutableString("gl_MaxGeometryImageUniforms").mangledNameHash());
+    ASSERT_EQ(0xfdf3607cu, ImmutableString("gl_MaxGeometryTextureImageUnits").mangledNameHash());
+    ASSERT_EQ(0xfdc36735u, ImmutableString("gl_MaxGeometryOutputVertices").mangledNameHash());
+    ASSERT_EQ(0xfe399b59u,
+              ImmutableString("gl_MaxGeometryTotalOutputComponents").mangledNameHash());
+    ASSERT_EQ(0xfdfc01c8u, ImmutableString("gl_MaxGeometryUniformComponents").mangledNameHash());
+    ASSERT_EQ(0xfdcd9e6eu, ImmutableString("gl_MaxGeometryAtomicCounters").mangledNameHash());
+    ASSERT_EQ(0xfe2e3022u, ImmutableString("gl_MaxGeometryAtomicCounterBuffers").mangledNameHash());
+    ASSERT_EQ(0xfc57d894u, ImmutableString("gl_in").mangledNameHash());
+    ASSERT_EQ(0xfd056470u, ImmutableString("gl_NumWorkGroups").mangledNameHash());
+    ASSERT_EQ(0xfd012f8fu, ImmutableString("gl_WorkGroupSize").mangledNameHash());
+    ASSERT_EQ(0xfce6f9f9u, ImmutableString("gl_WorkGroupID").mangledNameHash());
+    ASSERT_EQ(0xfd44b7fdu, ImmutableString("gl_LocalInvocationID").mangledNameHash());
+    ASSERT_EQ(0xfd5a3d85u, ImmutableString("gl_GlobalInvocationID").mangledNameHash());
+    ASSERT_EQ(0xfd79936fu, ImmutableString("gl_LocalInvocationIndex").mangledNameHash());
+    ASSERT_EQ(0xfd0c9b3bu, ImmutableString("gl_PrimitiveIDIn").mangledNameHash());
+    ASSERT_EQ(0xfcffc55cu, ImmutableString("gl_InvocationID").mangledNameHash());
+    ASSERT_EQ(0xfce8624au, ImmutableString("gl_PrimitiveID").mangledNameHash());
+    ASSERT_EQ(0xfc802b2du, ImmutableString("gl_Layer").mangledNameHash());
+    ASSERT_EQ(0xfcce2be4u, ImmutableString("gl_PerVertex").mangledNameHash());
+    ASSERT_EQ(0xfcb021abu, ImmutableString("gl_Position").mangledNameHash());
+    ASSERT_EQ(0xfd9190e7u, ImmutableString("gl_MaxVertexOutputVectors").mangledNameHash());
+    ASSERT_EQ(0xfda34617u, ImmutableString("gl_MaxFragmentInputVectors").mangledNameHash());
+    ASSERT_EQ(0xfd87bc19u, ImmutableString("gl_MinProgramTexelOffset").mangledNameHash());
+    ASSERT_EQ(0xfd8203fcu, ImmutableString("gl_MaxProgramTexelOffset").mangledNameHash());
+    ASSERT_EQ(0xfcc88d0bu, ImmutableString("gl_FragDepth").mangledNameHash());
+    ASSERT_EQ(0xfcd7e888u, ImmutableString("gl_InstanceID").mangledNameHash());
+    ASSERT_EQ(0xfcbf3cafu, ImmutableString("gl_VertexID").mangledNameHash());
+    ASSERT_EQ(0xfcdecfa5u, ImmutableString("gl_ViewID_OVR").mangledNameHash());
+    ASSERT_EQ(0xfd4d8991u, ImmutableString("gl_MaxVaryingVectors").mangledNameHash());
+    ASSERT_EQ(0xfcb413a9u, ImmutableString("gl_FragData").mangledNameHash());
+    ASSERT_EQ(0xfd79d316u, ImmutableString("gl_SecondaryFragDataEXT").mangledNameHash());
+    ASSERT_EQ(0xfcf86783u, ImmutableString("gl_FragDepthEXT").mangledNameHash());
+    ASSERT_EQ(0xfcc1acd3u, ImmutableString("gl_FragColor").mangledNameHash());
+    ASSERT_EQ(0xfd8aea76u, ImmutableString("gl_SecondaryFragColorEXT").mangledNameHash());
+    ASSERT_EQ(0xfcf2cf9cu, ImmutableString("gl_LastFragData").mangledNameHash());
+    ASSERT_EQ(0xfd004caeu, ImmutableString("gl_LastFragColor").mangledNameHash());
+    ASSERT_EQ(0xfd3e1d30u, ImmutableString("gl_LastFragColorARM").mangledNameHash());
+    ASSERT_EQ(0xfd7dc4d6u, ImmutableString("gl_DepthRangeParameters").mangledNameHash());
+    ASSERT_EQ(0xfcd5c51au, ImmutableString("gl_DepthRange").mangledNameHash());
+    ASSERT_EQ(0xfd35ab48u, ImmutableString("gl_MaxVertexAttribs").mangledNameHash());
+    ASSERT_EQ(0xfda6bc61u, ImmutableString("gl_MaxVertexUniformVectors").mangledNameHash());
+    ASSERT_EQ(0xfdd42165u, ImmutableString("gl_MaxVertexTextureImageUnits").mangledNameHash());
+    ASSERT_EQ(0xfdf08397u, ImmutableString("gl_MaxCombinedTextureImageUnits").mangledNameHash());
+    ASSERT_EQ(0xfd756b95u, ImmutableString("gl_MaxTextureImageUnits").mangledNameHash());
+    ASSERT_EQ(0xfdc89746u, ImmutableString("gl_MaxFragmentUniformVectors").mangledNameHash());
+    ASSERT_EQ(0xfd1554f1u, ImmutableString("gl_MaxDrawBuffers").mangledNameHash());
+    ASSERT_EQ(0xfde3d71cu, ImmutableString("gl_MaxDualSourceDrawBuffersEXT").mangledNameHash());
+    ASSERT_EQ(0xfcc997bcu, ImmutableString("gl_FragCoord").mangledNameHash());
+    ASSERT_EQ(0xfce60278u, ImmutableString("gl_FrontFacing").mangledNameHash());
+    ASSERT_EQ(0xfcd86bd1u, ImmutableString("gl_PointCoord").mangledNameHash());
+    ASSERT_EQ(0xfcc70d97u, ImmutableString("gl_PointSize").mangledNameHash());
 }
 
 }  // namespace sh