((function intBitsToFloat
   (signature float
     (parameters
       (declare (in) int arg))
     ((return (expression float bitcast_i2f (var_ref arg)))))

   (signature vec2
     (parameters
       (declare (in) ivec2 arg))
     ((return (expression vec2 bitcast_i2f (var_ref arg)))))

   (signature vec3
     (parameters
       (declare (in) ivec3 arg))
     ((return (expression vec3 bitcast_i2f (var_ref arg)))))

   (signature vec4
     (parameters
       (declare (in) ivec4 arg))
     ((return (expression vec4 bitcast_i2f (var_ref arg)))))
))
