builtins: Add asin().
diff --git a/builtin_function.cpp b/builtin_function.cpp
index 909329c..f9fdd485 100644
--- a/builtin_function.cpp
+++ b/builtin_function.cpp
@@ -107,6 +107,98 @@
    "))\n"
 };
 
+static const char *builtins_110_asin = {
+   "((function asin\n"
+   "   (signature float\n"
+   "     (parameters\n"
+   "       (declare (in) float x))\n"
+   "     ((return (expression float *\n"
+   "     	       (expression float -\n"
+   "	        (expression float *\n"
+   "		 (constant float (3.1415926))\n"
+   "		 (constant float (0.5)))\n"
+   "		(expression float sqrt\n"
+   "		 (expression float -\n"
+   "		  (constant float (1.0))\n"
+   "		  (expression float abs (var_ref x)))))\n"
+   "     	       (expression float +\n"
+   "     	        (constant float (1.5707288))\n"
+   "	        (expression float *\n"
+   "     	         (expression float abs (var_ref x))\n"
+   "     	         (expression float +\n"
+   "	          (constant float (-0.2121144))\n"
+   "     	          (expression float *\n"
+   "     	           (constant float (0.0742610))\n"
+   "	           (expression float abs (var_ref x))))))))))\n"
+   "\n"
+   "   (signature float\n"
+   "     (parameters\n"
+   "       (declare (in) vec2 x))\n"
+   "     ((return (expression vec2 *\n"
+   "     	       (expression vec2 -\n"
+   "	        (expression vec2 *\n"
+   "		 (constant float (3.1415926))\n"
+   "		 (constant float (0.5)))\n"
+   "		(expression vec2 sqrt\n"
+   "		 (expression vec2 -\n"
+   "		  (constant float (1.0))\n"
+   "		  (expression vec2 abs (var_ref x)))))\n"
+   "     	       (expression vec2 +\n"
+   "     	        (constant float (1.5707288))\n"
+   "	        (expression vec2 *\n"
+   "     	         (expression vec2 abs (var_ref x))\n"
+   "     	         (expression vec2 +\n"
+   "	          (constant float (-0.2121144))\n"
+   "     	          (expression vec2 *\n"
+   "     	           (constant float (0.0742610))\n"
+   "	           (expression vec2 abs (var_ref x))))))))))\n"
+   "\n"
+   "   (signature float\n"
+   "     (parameters\n"
+   "       (declare (in) vec3 x))\n"
+   "     ((return (expression vec3 *\n"
+   "     	       (expression vec3 -\n"
+   "	        (expression vec3 *\n"
+   "		 (constant float (3.1415926))\n"
+   "		 (constant float (0.5)))\n"
+   "		(expression vec3 sqrt\n"
+   "		 (expression vec3 -\n"
+   "		  (constant float (1.0))\n"
+   "		  (expression vec3 abs (var_ref x)))))\n"
+   "     	       (expression vec3 +\n"
+   "     	        (constant float (1.5707288))\n"
+   "	        (expression vec3 *\n"
+   "     	         (expression vec3 abs (var_ref x))\n"
+   "     	         (expression vec3 +\n"
+   "	          (constant float (-0.2121144))\n"
+   "     	          (expression vec3 *\n"
+   "     	           (constant float (0.0742610))\n"
+   "	           (expression vec3 abs (var_ref x))))))))))\n"
+   "\n"
+   "   (signature float\n"
+   "     (parameters\n"
+   "       (declare (in) vec4 x))\n"
+   "     ((return (expression vec4 *\n"
+   "     	       (expression vec4 -\n"
+   "	        (expression vec4 *\n"
+   "		 (constant float (3.1415926))\n"
+   "		 (constant float (0.5)))\n"
+   "		(expression vec4 sqrt\n"
+   "		 (expression vec4 -\n"
+   "		  (constant float (1.0))\n"
+   "		  (expression vec4 abs (var_ref x)))))\n"
+   "     	       (expression vec4 +\n"
+   "     	        (constant float (1.5707288))\n"
+   "	        (expression vec4 *\n"
+   "     	         (expression vec4 abs (var_ref x))\n"
+   "     	         (expression vec4 +\n"
+   "	          (constant float (-0.2121144))\n"
+   "     	          (expression vec4 *\n"
+   "     	           (constant float (0.0742610))\n"
+   "	           (expression vec4 abs (var_ref x))))))))))\n"
+   "))\n"
+};
+
 static const char *builtins_110_ceil = {
    "((function ceil\n"
    "   (signature float\n"
@@ -1470,6 +1562,7 @@
    builtins_110_abs,
    builtins_110_all,
    builtins_110_any,
+   builtins_110_asin,
    builtins_110_ceil,
    builtins_110_clamp,
    builtins_110_cos,