1((function faceforward
2   (signature float
3     (parameters
4       (declare (in) float N)
5       (declare (in) float I)
6       (declare (in) float Nref))
7     ((if (expression bool < (expression float * (var_ref Nref) (var_ref I)) (constant float (0)))
8          ((return (var_ref N)))
9	  ((return (expression float neg (var_ref N)))))))
10
11   (signature vec2
12     (parameters
13       (declare (in) vec2 N)
14       (declare (in) vec2 I)
15       (declare (in) vec2 Nref))
16     ((if (expression bool < (expression float dot (var_ref Nref) (var_ref I)) (constant float (0)))
17          ((return (var_ref N)))
18	  ((return (expression vec2 neg (var_ref N)))))))
19
20   (signature vec3
21     (parameters
22       (declare (in) vec3 N)
23       (declare (in) vec3 I)
24       (declare (in) vec3 Nref))
25     ((if (expression bool < (expression float dot (var_ref Nref) (var_ref I)) (constant float (0)))
26          ((return (var_ref N)))
27	  ((return (expression vec3 neg (var_ref N)))))))
28
29   (signature vec4
30     (parameters
31       (declare (in) vec4 N)
32       (declare (in) vec4 I)
33       (declare (in) vec4 Nref))
34     ((if (expression bool < (expression float dot (var_ref Nref) (var_ref I)) (constant float (0)))
35          ((return (var_ref N)))
36	  ((return (expression vec4 neg (var_ref N)))))))
37))
38