/* This file is automatically generated by mapi_abi.py.  Do not modify. */

#ifndef _GLAPI_TMP_H_
#define _GLAPI_TMP_H_
#ifdef USE_MGL_NAMESPACE
#define GLAPI_PREFIX(func)  mgl##func
#define GLAPI_PREFIX_STR(func)  "mgl"#func
#else
#define GLAPI_PREFIX(func)  gl##func
#define GLAPI_PREFIX_STR(func)  "gl"#func
#endif /* USE_MGL_NAMESPACE */

typedef int GLfixed;
typedef int GLclampx;
#endif /* _GLAPI_TMP_H_ */

#ifdef MAPI_TMP_DEFINES
#define GL_GLEXT_PROTOTYPES
#include "GL/gl.h"
#include "GL/glext.h"

GLAPI void APIENTRY GLAPI_PREFIX(NewList)(GLuint list, GLenum mode);
GLAPI void APIENTRY GLAPI_PREFIX(EndList)(void);
GLAPI void APIENTRY GLAPI_PREFIX(CallList)(GLuint list);
GLAPI void APIENTRY GLAPI_PREFIX(CallLists)(GLsizei n, GLenum type, const GLvoid *lists);
GLAPI void APIENTRY GLAPI_PREFIX(DeleteLists)(GLuint list, GLsizei range);
GLAPI GLuint APIENTRY GLAPI_PREFIX(GenLists)(GLsizei range);
GLAPI void APIENTRY GLAPI_PREFIX(ListBase)(GLuint base);
GLAPI void APIENTRY GLAPI_PREFIX(Begin)(GLenum mode);
GLAPI void APIENTRY GLAPI_PREFIX(Bitmap)(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap);
GLAPI void APIENTRY GLAPI_PREFIX(Color3b)(GLbyte red, GLbyte green, GLbyte blue);
GLAPI void APIENTRY GLAPI_PREFIX(Color3bv)(const GLbyte *v);
GLAPI void APIENTRY GLAPI_PREFIX(Color3d)(GLdouble red, GLdouble green, GLdouble blue);
GLAPI void APIENTRY GLAPI_PREFIX(Color3dv)(const GLdouble *v);
GLAPI void APIENTRY GLAPI_PREFIX(Color3f)(GLfloat red, GLfloat green, GLfloat blue);
GLAPI void APIENTRY GLAPI_PREFIX(Color3fv)(const GLfloat *v);
GLAPI void APIENTRY GLAPI_PREFIX(Color3i)(GLint red, GLint green, GLint blue);
GLAPI void APIENTRY GLAPI_PREFIX(Color3iv)(const GLint *v);
GLAPI void APIENTRY GLAPI_PREFIX(Color3s)(GLshort red, GLshort green, GLshort blue);
GLAPI void APIENTRY GLAPI_PREFIX(Color3sv)(const GLshort *v);
GLAPI void APIENTRY GLAPI_PREFIX(Color3ub)(GLubyte red, GLubyte green, GLubyte blue);
GLAPI void APIENTRY GLAPI_PREFIX(Color3ubv)(const GLubyte *v);
GLAPI void APIENTRY GLAPI_PREFIX(Color3ui)(GLuint red, GLuint green, GLuint blue);
GLAPI void APIENTRY GLAPI_PREFIX(Color3uiv)(const GLuint *v);
GLAPI void APIENTRY GLAPI_PREFIX(Color3us)(GLushort red, GLushort green, GLushort blue);
GLAPI void APIENTRY GLAPI_PREFIX(Color3usv)(const GLushort *v);
GLAPI void APIENTRY GLAPI_PREFIX(Color4b)(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha);
GLAPI void APIENTRY GLAPI_PREFIX(Color4bv)(const GLbyte *v);
GLAPI void APIENTRY GLAPI_PREFIX(Color4d)(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha);
GLAPI void APIENTRY GLAPI_PREFIX(Color4dv)(const GLdouble *v);
GLAPI void APIENTRY GLAPI_PREFIX(Color4f)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
GLAPI void APIENTRY GLAPI_PREFIX(Color4fv)(const GLfloat *v);
GLAPI void APIENTRY GLAPI_PREFIX(Color4i)(GLint red, GLint green, GLint blue, GLint alpha);
GLAPI void APIENTRY GLAPI_PREFIX(Color4iv)(const GLint *v);
GLAPI void APIENTRY GLAPI_PREFIX(Color4s)(GLshort red, GLshort green, GLshort blue, GLshort alpha);
GLAPI void APIENTRY GLAPI_PREFIX(Color4sv)(const GLshort *v);
GLAPI void APIENTRY GLAPI_PREFIX(Color4ub)(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha);
GLAPI void APIENTRY GLAPI_PREFIX(Color4ubv)(const GLubyte *v);
GLAPI void APIENTRY GLAPI_PREFIX(Color4ui)(GLuint red, GLuint green, GLuint blue, GLuint alpha);
GLAPI void APIENTRY GLAPI_PREFIX(Color4uiv)(const GLuint *v);
GLAPI void APIENTRY GLAPI_PREFIX(Color4us)(GLushort red, GLushort green, GLushort blue, GLushort alpha);
GLAPI void APIENTRY GLAPI_PREFIX(Color4usv)(const GLushort *v);
GLAPI void APIENTRY GLAPI_PREFIX(EdgeFlag)(GLboolean flag);
GLAPI void APIENTRY GLAPI_PREFIX(EdgeFlagv)(const GLboolean *flag);
GLAPI void APIENTRY GLAPI_PREFIX(End)(void);
GLAPI void APIENTRY GLAPI_PREFIX(Indexd)(GLdouble c);
GLAPI void APIENTRY GLAPI_PREFIX(Indexdv)(const GLdouble *c);
GLAPI void APIENTRY GLAPI_PREFIX(Indexf)(GLfloat c);
GLAPI void APIENTRY GLAPI_PREFIX(Indexfv)(const GLfloat *c);
GLAPI void APIENTRY GLAPI_PREFIX(Indexi)(GLint c);
GLAPI void APIENTRY GLAPI_PREFIX(Indexiv)(const GLint *c);
GLAPI void APIENTRY GLAPI_PREFIX(Indexs)(GLshort c);
GLAPI void APIENTRY GLAPI_PREFIX(Indexsv)(const GLshort *c);
GLAPI void APIENTRY GLAPI_PREFIX(Normal3b)(GLbyte nx, GLbyte ny, GLbyte nz);
GLAPI void APIENTRY GLAPI_PREFIX(Normal3bv)(const GLbyte *v);
GLAPI void APIENTRY GLAPI_PREFIX(Normal3d)(GLdouble nx, GLdouble ny, GLdouble nz);
GLAPI void APIENTRY GLAPI_PREFIX(Normal3dv)(const GLdouble *v);
GLAPI void APIENTRY GLAPI_PREFIX(Normal3f)(GLfloat nx, GLfloat ny, GLfloat nz);
GLAPI void APIENTRY GLAPI_PREFIX(Normal3fv)(const GLfloat *v);
GLAPI void APIENTRY GLAPI_PREFIX(Normal3i)(GLint nx, GLint ny, GLint nz);
GLAPI void APIENTRY GLAPI_PREFIX(Normal3iv)(const GLint *v);
GLAPI void APIENTRY GLAPI_PREFIX(Normal3s)(GLshort nx, GLshort ny, GLshort nz);
GLAPI void APIENTRY GLAPI_PREFIX(Normal3sv)(const GLshort *v);
GLAPI void APIENTRY GLAPI_PREFIX(RasterPos2d)(GLdouble x, GLdouble y);
GLAPI void APIENTRY GLAPI_PREFIX(RasterPos2dv)(const GLdouble *v);
GLAPI void APIENTRY GLAPI_PREFIX(RasterPos2f)(GLfloat x, GLfloat y);
GLAPI void APIENTRY GLAPI_PREFIX(RasterPos2fv)(const GLfloat *v);
GLAPI void APIENTRY GLAPI_PREFIX(RasterPos2i)(GLint x, GLint y);
GLAPI void APIENTRY GLAPI_PREFIX(RasterPos2iv)(const GLint *v);
GLAPI void APIENTRY GLAPI_PREFIX(RasterPos2s)(GLshort x, GLshort y);
GLAPI void APIENTRY GLAPI_PREFIX(RasterPos2sv)(const GLshort *v);
GLAPI void APIENTRY GLAPI_PREFIX(RasterPos3d)(GLdouble x, GLdouble y, GLdouble z);
GLAPI void APIENTRY GLAPI_PREFIX(RasterPos3dv)(const GLdouble *v);
GLAPI void APIENTRY GLAPI_PREFIX(RasterPos3f)(GLfloat x, GLfloat y, GLfloat z);
GLAPI void APIENTRY GLAPI_PREFIX(RasterPos3fv)(const GLfloat *v);
GLAPI void APIENTRY GLAPI_PREFIX(RasterPos3i)(GLint x, GLint y, GLint z);
GLAPI void APIENTRY GLAPI_PREFIX(RasterPos3iv)(const GLint *v);
GLAPI void APIENTRY GLAPI_PREFIX(RasterPos3s)(GLshort x, GLshort y, GLshort z);
GLAPI void APIENTRY GLAPI_PREFIX(RasterPos3sv)(const GLshort *v);
GLAPI void APIENTRY GLAPI_PREFIX(RasterPos4d)(GLdouble x, GLdouble y, GLdouble z, GLdouble w);
GLAPI void APIENTRY GLAPI_PREFIX(RasterPos4dv)(const GLdouble *v);
GLAPI void APIENTRY GLAPI_PREFIX(RasterPos4f)(GLfloat x, GLfloat y, GLfloat z, GLfloat w);
GLAPI void APIENTRY GLAPI_PREFIX(RasterPos4fv)(const GLfloat *v);
GLAPI void APIENTRY GLAPI_PREFIX(RasterPos4i)(GLint x, GLint y, GLint z, GLint w);
GLAPI void APIENTRY GLAPI_PREFIX(RasterPos4iv)(const GLint *v);
GLAPI void APIENTRY GLAPI_PREFIX(RasterPos4s)(GLshort x, GLshort y, GLshort z, GLshort w);
GLAPI void APIENTRY GLAPI_PREFIX(RasterPos4sv)(const GLshort *v);
GLAPI void APIENTRY GLAPI_PREFIX(Rectd)(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2);
GLAPI void APIENTRY GLAPI_PREFIX(Rectdv)(const GLdouble *v1, const GLdouble *v2);
GLAPI void APIENTRY GLAPI_PREFIX(Rectf)(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2);
GLAPI void APIENTRY GLAPI_PREFIX(Rectfv)(const GLfloat *v1, const GLfloat *v2);
GLAPI void APIENTRY GLAPI_PREFIX(Recti)(GLint x1, GLint y1, GLint x2, GLint y2);
GLAPI void APIENTRY GLAPI_PREFIX(Rectiv)(const GLint *v1, const GLint *v2);
GLAPI void APIENTRY GLAPI_PREFIX(Rects)(GLshort x1, GLshort y1, GLshort x2, GLshort y2);
GLAPI void APIENTRY GLAPI_PREFIX(Rectsv)(const GLshort *v1, const GLshort *v2);
GLAPI void APIENTRY GLAPI_PREFIX(TexCoord1d)(GLdouble s);
GLAPI void APIENTRY GLAPI_PREFIX(TexCoord1dv)(const GLdouble *v);
GLAPI void APIENTRY GLAPI_PREFIX(TexCoord1f)(GLfloat s);
GLAPI void APIENTRY GLAPI_PREFIX(TexCoord1fv)(const GLfloat *v);
GLAPI void APIENTRY GLAPI_PREFIX(TexCoord1i)(GLint s);
GLAPI void APIENTRY GLAPI_PREFIX(TexCoord1iv)(const GLint *v);
GLAPI void APIENTRY GLAPI_PREFIX(TexCoord1s)(GLshort s);
GLAPI void APIENTRY GLAPI_PREFIX(TexCoord1sv)(const GLshort *v);
GLAPI void APIENTRY GLAPI_PREFIX(TexCoord2d)(GLdouble s, GLdouble t);
GLAPI void APIENTRY GLAPI_PREFIX(TexCoord2dv)(const GLdouble *v);
GLAPI void APIENTRY GLAPI_PREFIX(TexCoord2f)(GLfloat s, GLfloat t);
GLAPI void APIENTRY GLAPI_PREFIX(TexCoord2fv)(const GLfloat *v);
GLAPI void APIENTRY GLAPI_PREFIX(TexCoord2i)(GLint s, GLint t);
GLAPI void APIENTRY GLAPI_PREFIX(TexCoord2iv)(const GLint *v);
GLAPI void APIENTRY GLAPI_PREFIX(TexCoord2s)(GLshort s, GLshort t);
GLAPI void APIENTRY GLAPI_PREFIX(TexCoord2sv)(const GLshort *v);
GLAPI void APIENTRY GLAPI_PREFIX(TexCoord3d)(GLdouble s, GLdouble t, GLdouble r);
GLAPI void APIENTRY GLAPI_PREFIX(TexCoord3dv)(const GLdouble *v);
GLAPI void APIENTRY GLAPI_PREFIX(TexCoord3f)(GLfloat s, GLfloat t, GLfloat r);
GLAPI void APIENTRY GLAPI_PREFIX(TexCoord3fv)(const GLfloat *v);
GLAPI void APIENTRY GLAPI_PREFIX(TexCoord3i)(GLint s, GLint t, GLint r);
GLAPI void APIENTRY GLAPI_PREFIX(TexCoord3iv)(const GLint *v);
GLAPI void APIENTRY GLAPI_PREFIX(TexCoord3s)(GLshort s, GLshort t, GLshort r);
GLAPI void APIENTRY GLAPI_PREFIX(TexCoord3sv)(const GLshort *v);
GLAPI void APIENTRY GLAPI_PREFIX(TexCoord4d)(GLdouble s, GLdouble t, GLdouble r, GLdouble q);
GLAPI void APIENTRY GLAPI_PREFIX(TexCoord4dv)(const GLdouble *v);
GLAPI void APIENTRY GLAPI_PREFIX(TexCoord4f)(GLfloat s, GLfloat t, GLfloat r, GLfloat q);
GLAPI void APIENTRY GLAPI_PREFIX(TexCoord4fv)(const GLfloat *v);
GLAPI void APIENTRY GLAPI_PREFIX(TexCoord4i)(GLint s, GLint t, GLint r, GLint q);
GLAPI void APIENTRY GLAPI_PREFIX(TexCoord4iv)(const GLint *v);
GLAPI void APIENTRY GLAPI_PREFIX(TexCoord4s)(GLshort s, GLshort t, GLshort r, GLshort q);
GLAPI void APIENTRY GLAPI_PREFIX(TexCoord4sv)(const GLshort *v);
GLAPI void APIENTRY GLAPI_PREFIX(Vertex2d)(GLdouble x, GLdouble y);
GLAPI void APIENTRY GLAPI_PREFIX(Vertex2dv)(const GLdouble *v);
GLAPI void APIENTRY GLAPI_PREFIX(Vertex2f)(GLfloat x, GLfloat y);
GLAPI void APIENTRY GLAPI_PREFIX(Vertex2fv)(const GLfloat *v);
GLAPI void APIENTRY GLAPI_PREFIX(Vertex2i)(GLint x, GLint y);
GLAPI void APIENTRY GLAPI_PREFIX(Vertex2iv)(const GLint *v);
GLAPI void APIENTRY GLAPI_PREFIX(Vertex2s)(GLshort x, GLshort y);
GLAPI void APIENTRY GLAPI_PREFIX(Vertex2sv)(const GLshort *v);
GLAPI void APIENTRY GLAPI_PREFIX(Vertex3d)(GLdouble x, GLdouble y, GLdouble z);
GLAPI void APIENTRY GLAPI_PREFIX(Vertex3dv)(const GLdouble *v);
GLAPI void APIENTRY GLAPI_PREFIX(Vertex3f)(GLfloat x, GLfloat y, GLfloat z);
GLAPI void APIENTRY GLAPI_PREFIX(Vertex3fv)(const GLfloat *v);
GLAPI void APIENTRY GLAPI_PREFIX(Vertex3i)(GLint x, GLint y, GLint z);
GLAPI void APIENTRY GLAPI_PREFIX(Vertex3iv)(const GLint *v);
GLAPI void APIENTRY GLAPI_PREFIX(Vertex3s)(GLshort x, GLshort y, GLshort z);
GLAPI void APIENTRY GLAPI_PREFIX(Vertex3sv)(const GLshort *v);
GLAPI void APIENTRY GLAPI_PREFIX(Vertex4d)(GLdouble x, GLdouble y, GLdouble z, GLdouble w);
GLAPI void APIENTRY GLAPI_PREFIX(Vertex4dv)(const GLdouble *v);
GLAPI void APIENTRY GLAPI_PREFIX(Vertex4f)(GLfloat x, GLfloat y, GLfloat z, GLfloat w);
GLAPI void APIENTRY GLAPI_PREFIX(Vertex4fv)(const GLfloat *v);
GLAPI void APIENTRY GLAPI_PREFIX(Vertex4i)(GLint x, GLint y, GLint z, GLint w);
GLAPI void APIENTRY GLAPI_PREFIX(Vertex4iv)(const GLint *v);
GLAPI void APIENTRY GLAPI_PREFIX(Vertex4s)(GLshort x, GLshort y, GLshort z, GLshort w);
GLAPI void APIENTRY GLAPI_PREFIX(Vertex4sv)(const GLshort *v);
GLAPI void APIENTRY GLAPI_PREFIX(ClipPlane)(GLenum plane, const GLdouble *equation);
GLAPI void APIENTRY GLAPI_PREFIX(ColorMaterial)(GLenum face, GLenum mode);
GLAPI void APIENTRY GLAPI_PREFIX(CullFace)(GLenum mode);
GLAPI void APIENTRY GLAPI_PREFIX(Fogf)(GLenum pname, GLfloat param);
GLAPI void APIENTRY GLAPI_PREFIX(Fogfv)(GLenum pname, const GLfloat *params);
GLAPI void APIENTRY GLAPI_PREFIX(Fogi)(GLenum pname, GLint param);
GLAPI void APIENTRY GLAPI_PREFIX(Fogiv)(GLenum pname, const GLint *params);
GLAPI void APIENTRY GLAPI_PREFIX(FrontFace)(GLenum mode);
GLAPI void APIENTRY GLAPI_PREFIX(Hint)(GLenum target, GLenum mode);
GLAPI void APIENTRY GLAPI_PREFIX(Lightf)(GLenum light, GLenum pname, GLfloat param);
GLAPI void APIENTRY GLAPI_PREFIX(Lightfv)(GLenum light, GLenum pname, const GLfloat *params);
GLAPI void APIENTRY GLAPI_PREFIX(Lighti)(GLenum light, GLenum pname, GLint param);
GLAPI void APIENTRY GLAPI_PREFIX(Lightiv)(GLenum light, GLenum pname, const GLint *params);
GLAPI void APIENTRY GLAPI_PREFIX(LightModelf)(GLenum pname, GLfloat param);
GLAPI void APIENTRY GLAPI_PREFIX(LightModelfv)(GLenum pname, const GLfloat *params);
GLAPI void APIENTRY GLAPI_PREFIX(LightModeli)(GLenum pname, GLint param);
GLAPI void APIENTRY GLAPI_PREFIX(LightModeliv)(GLenum pname, const GLint *params);
GLAPI void APIENTRY GLAPI_PREFIX(LineStipple)(GLint factor, GLushort pattern);
GLAPI void APIENTRY GLAPI_PREFIX(LineWidth)(GLfloat width);
GLAPI void APIENTRY GLAPI_PREFIX(Materialf)(GLenum face, GLenum pname, GLfloat param);
GLAPI void APIENTRY GLAPI_PREFIX(Materialfv)(GLenum face, GLenum pname, const GLfloat *params);
GLAPI void APIENTRY GLAPI_PREFIX(Materiali)(GLenum face, GLenum pname, GLint param);
GLAPI void APIENTRY GLAPI_PREFIX(Materialiv)(GLenum face, GLenum pname, const GLint *params);
GLAPI void APIENTRY GLAPI_PREFIX(PointSize)(GLfloat size);
GLAPI void APIENTRY GLAPI_PREFIX(PolygonMode)(GLenum face, GLenum mode);
GLAPI void APIENTRY GLAPI_PREFIX(PolygonStipple)(const GLubyte *mask);
GLAPI void APIENTRY GLAPI_PREFIX(Scissor)(GLint x, GLint y, GLsizei width, GLsizei height);
GLAPI void APIENTRY GLAPI_PREFIX(ShadeModel)(GLenum mode);
GLAPI void APIENTRY GLAPI_PREFIX(TexParameterf)(GLenum target, GLenum pname, GLfloat param);
GLAPI void APIENTRY GLAPI_PREFIX(TexParameterfv)(GLenum target, GLenum pname, const GLfloat *params);
GLAPI void APIENTRY GLAPI_PREFIX(TexParameteri)(GLenum target, GLenum pname, GLint param);
GLAPI void APIENTRY GLAPI_PREFIX(TexParameteriv)(GLenum target, GLenum pname, const GLint *params);
GLAPI void APIENTRY GLAPI_PREFIX(TexImage1D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
GLAPI void APIENTRY GLAPI_PREFIX(TexImage2D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
GLAPI void APIENTRY GLAPI_PREFIX(TexEnvf)(GLenum target, GLenum pname, GLfloat param);
GLAPI void APIENTRY GLAPI_PREFIX(TexEnvfv)(GLenum target, GLenum pname, const GLfloat *params);
GLAPI void APIENTRY GLAPI_PREFIX(TexEnvi)(GLenum target, GLenum pname, GLint param);
GLAPI void APIENTRY GLAPI_PREFIX(TexEnviv)(GLenum target, GLenum pname, const GLint *params);
GLAPI void APIENTRY GLAPI_PREFIX(TexGend)(GLenum coord, GLenum pname, GLdouble param);
GLAPI void APIENTRY GLAPI_PREFIX(TexGendv)(GLenum coord, GLenum pname, const GLdouble *params);
GLAPI void APIENTRY GLAPI_PREFIX(TexGenf)(GLenum coord, GLenum pname, GLfloat param);
GLAPI void APIENTRY GLAPI_PREFIX(TexGenfv)(GLenum coord, GLenum pname, const GLfloat *params);
GLAPI void APIENTRY GLAPI_PREFIX(TexGeni)(GLenum coord, GLenum pname, GLint param);
GLAPI void APIENTRY GLAPI_PREFIX(TexGeniv)(GLenum coord, GLenum pname, const GLint *params);
GLAPI void APIENTRY GLAPI_PREFIX(FeedbackBuffer)(GLsizei size, GLenum type, GLfloat *buffer);
GLAPI void APIENTRY GLAPI_PREFIX(SelectBuffer)(GLsizei size, GLuint *buffer);
GLAPI GLint APIENTRY GLAPI_PREFIX(RenderMode)(GLenum mode);
GLAPI void APIENTRY GLAPI_PREFIX(InitNames)(void);
GLAPI void APIENTRY GLAPI_PREFIX(LoadName)(GLuint name);
GLAPI void APIENTRY GLAPI_PREFIX(PassThrough)(GLfloat token);
GLAPI void APIENTRY GLAPI_PREFIX(PopName)(void);
GLAPI void APIENTRY GLAPI_PREFIX(PushName)(GLuint name);
GLAPI void APIENTRY GLAPI_PREFIX(DrawBuffer)(GLenum mode);
GLAPI void APIENTRY GLAPI_PREFIX(Clear)(GLbitfield mask);
GLAPI void APIENTRY GLAPI_PREFIX(ClearAccum)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
GLAPI void APIENTRY GLAPI_PREFIX(ClearIndex)(GLfloat c);
GLAPI void APIENTRY GLAPI_PREFIX(ClearColor)(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
GLAPI void APIENTRY GLAPI_PREFIX(ClearStencil)(GLint s);
GLAPI void APIENTRY GLAPI_PREFIX(ClearDepth)(GLclampd depth);
GLAPI void APIENTRY GLAPI_PREFIX(StencilMask)(GLuint mask);
GLAPI void APIENTRY GLAPI_PREFIX(ColorMask)(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
GLAPI void APIENTRY GLAPI_PREFIX(DepthMask)(GLboolean flag);
GLAPI void APIENTRY GLAPI_PREFIX(IndexMask)(GLuint mask);
GLAPI void APIENTRY GLAPI_PREFIX(Accum)(GLenum op, GLfloat value);
GLAPI void APIENTRY GLAPI_PREFIX(Disable)(GLenum cap);
GLAPI void APIENTRY GLAPI_PREFIX(Enable)(GLenum cap);
GLAPI void APIENTRY GLAPI_PREFIX(Finish)(void);
GLAPI void APIENTRY GLAPI_PREFIX(Flush)(void);
GLAPI void APIENTRY GLAPI_PREFIX(PopAttrib)(void);
GLAPI void APIENTRY GLAPI_PREFIX(PushAttrib)(GLbitfield mask);
GLAPI void APIENTRY GLAPI_PREFIX(Map1d)(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points);
GLAPI void APIENTRY GLAPI_PREFIX(Map1f)(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points);
GLAPI void APIENTRY GLAPI_PREFIX(Map2d)(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points);
GLAPI void APIENTRY GLAPI_PREFIX(Map2f)(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points);
GLAPI void APIENTRY GLAPI_PREFIX(MapGrid1d)(GLint un, GLdouble u1, GLdouble u2);
GLAPI void APIENTRY GLAPI_PREFIX(MapGrid1f)(GLint un, GLfloat u1, GLfloat u2);
GLAPI void APIENTRY GLAPI_PREFIX(MapGrid2d)(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2);
GLAPI void APIENTRY GLAPI_PREFIX(MapGrid2f)(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2);
GLAPI void APIENTRY GLAPI_PREFIX(EvalCoord1d)(GLdouble u);
GLAPI void APIENTRY GLAPI_PREFIX(EvalCoord1dv)(const GLdouble *u);
GLAPI void APIENTRY GLAPI_PREFIX(EvalCoord1f)(GLfloat u);
GLAPI void APIENTRY GLAPI_PREFIX(EvalCoord1fv)(const GLfloat *u);
GLAPI void APIENTRY GLAPI_PREFIX(EvalCoord2d)(GLdouble u, GLdouble v);
GLAPI void APIENTRY GLAPI_PREFIX(EvalCoord2dv)(const GLdouble *u);
GLAPI void APIENTRY GLAPI_PREFIX(EvalCoord2f)(GLfloat u, GLfloat v);
GLAPI void APIENTRY GLAPI_PREFIX(EvalCoord2fv)(const GLfloat *u);
GLAPI void APIENTRY GLAPI_PREFIX(EvalMesh1)(GLenum mode, GLint i1, GLint i2);
GLAPI void APIENTRY GLAPI_PREFIX(EvalPoint1)(GLint i);
GLAPI void APIENTRY GLAPI_PREFIX(EvalMesh2)(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2);
GLAPI void APIENTRY GLAPI_PREFIX(EvalPoint2)(GLint i, GLint j);
GLAPI void APIENTRY GLAPI_PREFIX(AlphaFunc)(GLenum func, GLclampf ref);
GLAPI void APIENTRY GLAPI_PREFIX(BlendFunc)(GLenum sfactor, GLenum dfactor);
GLAPI void APIENTRY GLAPI_PREFIX(LogicOp)(GLenum opcode);
GLAPI void APIENTRY GLAPI_PREFIX(StencilFunc)(GLenum func, GLint ref, GLuint mask);
GLAPI void APIENTRY GLAPI_PREFIX(StencilOp)(GLenum fail, GLenum zfail, GLenum zpass);
GLAPI void APIENTRY GLAPI_PREFIX(DepthFunc)(GLenum func);
GLAPI void APIENTRY GLAPI_PREFIX(PixelZoom)(GLfloat xfactor, GLfloat yfactor);
GLAPI void APIENTRY GLAPI_PREFIX(PixelTransferf)(GLenum pname, GLfloat param);
GLAPI void APIENTRY GLAPI_PREFIX(PixelTransferi)(GLenum pname, GLint param);
GLAPI void APIENTRY GLAPI_PREFIX(PixelStoref)(GLenum pname, GLfloat param);
GLAPI void APIENTRY GLAPI_PREFIX(PixelStorei)(GLenum pname, GLint param);
GLAPI void APIENTRY GLAPI_PREFIX(PixelMapfv)(GLenum map, GLsizei mapsize, const GLfloat *values);
GLAPI void APIENTRY GLAPI_PREFIX(PixelMapuiv)(GLenum map, GLsizei mapsize, const GLuint *values);
GLAPI void APIENTRY GLAPI_PREFIX(PixelMapusv)(GLenum map, GLsizei mapsize, const GLushort *values);
GLAPI void APIENTRY GLAPI_PREFIX(ReadBuffer)(GLenum mode);
GLAPI void APIENTRY GLAPI_PREFIX(ReadBufferNV)(GLenum mode);
GLAPI void APIENTRY GLAPI_PREFIX(CopyPixels)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type);
GLAPI void APIENTRY GLAPI_PREFIX(ReadPixels)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels);
GLAPI void APIENTRY GLAPI_PREFIX(DrawPixels)(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels);
GLAPI void APIENTRY GLAPI_PREFIX(GetBooleanv)(GLenum pname, GLboolean *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetClipPlane)(GLenum plane, GLdouble *equation);
GLAPI void APIENTRY GLAPI_PREFIX(GetDoublev)(GLenum pname, GLdouble *params);
GLAPI GLenum APIENTRY GLAPI_PREFIX(GetError)(void);
GLAPI void APIENTRY GLAPI_PREFIX(GetFloatv)(GLenum pname, GLfloat *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetIntegerv)(GLenum pname, GLint *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetLightfv)(GLenum light, GLenum pname, GLfloat *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetLightiv)(GLenum light, GLenum pname, GLint *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetMapdv)(GLenum target, GLenum query, GLdouble *v);
GLAPI void APIENTRY GLAPI_PREFIX(GetMapfv)(GLenum target, GLenum query, GLfloat *v);
GLAPI void APIENTRY GLAPI_PREFIX(GetMapiv)(GLenum target, GLenum query, GLint *v);
GLAPI void APIENTRY GLAPI_PREFIX(GetMaterialfv)(GLenum face, GLenum pname, GLfloat *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetMaterialiv)(GLenum face, GLenum pname, GLint *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetPixelMapfv)(GLenum map, GLfloat *values);
GLAPI void APIENTRY GLAPI_PREFIX(GetPixelMapuiv)(GLenum map, GLuint *values);
GLAPI void APIENTRY GLAPI_PREFIX(GetPixelMapusv)(GLenum map, GLushort *values);
GLAPI void APIENTRY GLAPI_PREFIX(GetPolygonStipple)(GLubyte *mask);
GLAPI const GLubyte * APIENTRY GLAPI_PREFIX(GetString)(GLenum name);
GLAPI void APIENTRY GLAPI_PREFIX(GetTexEnvfv)(GLenum target, GLenum pname, GLfloat *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetTexEnviv)(GLenum target, GLenum pname, GLint *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetTexGendv)(GLenum coord, GLenum pname, GLdouble *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetTexGenfv)(GLenum coord, GLenum pname, GLfloat *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetTexGeniv)(GLenum coord, GLenum pname, GLint *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetTexImage)(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels);
GLAPI void APIENTRY GLAPI_PREFIX(GetTexParameterfv)(GLenum target, GLenum pname, GLfloat *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetTexParameteriv)(GLenum target, GLenum pname, GLint *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetTexLevelParameterfv)(GLenum target, GLint level, GLenum pname, GLfloat *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetTexLevelParameteriv)(GLenum target, GLint level, GLenum pname, GLint *params);
GLAPI GLboolean APIENTRY GLAPI_PREFIX(IsEnabled)(GLenum cap);
GLAPI GLboolean APIENTRY GLAPI_PREFIX(IsList)(GLuint list);
GLAPI void APIENTRY GLAPI_PREFIX(DepthRange)(GLclampd zNear, GLclampd zFar);
GLAPI void APIENTRY GLAPI_PREFIX(Frustum)(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
GLAPI void APIENTRY GLAPI_PREFIX(LoadIdentity)(void);
GLAPI void APIENTRY GLAPI_PREFIX(LoadMatrixf)(const GLfloat *m);
GLAPI void APIENTRY GLAPI_PREFIX(LoadMatrixd)(const GLdouble *m);
GLAPI void APIENTRY GLAPI_PREFIX(MatrixMode)(GLenum mode);
GLAPI void APIENTRY GLAPI_PREFIX(MultMatrixf)(const GLfloat *m);
GLAPI void APIENTRY GLAPI_PREFIX(MultMatrixd)(const GLdouble *m);
GLAPI void APIENTRY GLAPI_PREFIX(Ortho)(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
GLAPI void APIENTRY GLAPI_PREFIX(PopMatrix)(void);
GLAPI void APIENTRY GLAPI_PREFIX(PushMatrix)(void);
GLAPI void APIENTRY GLAPI_PREFIX(Rotated)(GLdouble angle, GLdouble x, GLdouble y, GLdouble z);
GLAPI void APIENTRY GLAPI_PREFIX(Rotatef)(GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
GLAPI void APIENTRY GLAPI_PREFIX(Scaled)(GLdouble x, GLdouble y, GLdouble z);
GLAPI void APIENTRY GLAPI_PREFIX(Scalef)(GLfloat x, GLfloat y, GLfloat z);
GLAPI void APIENTRY GLAPI_PREFIX(Translated)(GLdouble x, GLdouble y, GLdouble z);
GLAPI void APIENTRY GLAPI_PREFIX(Translatef)(GLfloat x, GLfloat y, GLfloat z);
GLAPI void APIENTRY GLAPI_PREFIX(Viewport)(GLint x, GLint y, GLsizei width, GLsizei height);
GLAPI void APIENTRY GLAPI_PREFIX(ArrayElement)(GLint i);
GLAPI void APIENTRY GLAPI_PREFIX(ArrayElementEXT)(GLint i);
GLAPI void APIENTRY GLAPI_PREFIX(BindTexture)(GLenum target, GLuint texture);
GLAPI void APIENTRY GLAPI_PREFIX(BindTextureEXT)(GLenum target, GLuint texture);
GLAPI void APIENTRY GLAPI_PREFIX(ColorPointer)(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
GLAPI void APIENTRY GLAPI_PREFIX(DisableClientState)(GLenum array);
GLAPI void APIENTRY GLAPI_PREFIX(DrawArrays)(GLenum mode, GLint first, GLsizei count);
GLAPI void APIENTRY GLAPI_PREFIX(DrawArraysEXT)(GLenum mode, GLint first, GLsizei count);
GLAPI void APIENTRY GLAPI_PREFIX(DrawElements)(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices);
GLAPI void APIENTRY GLAPI_PREFIX(EdgeFlagPointer)(GLsizei stride, const GLvoid *pointer);
GLAPI void APIENTRY GLAPI_PREFIX(EnableClientState)(GLenum array);
GLAPI void APIENTRY GLAPI_PREFIX(IndexPointer)(GLenum type, GLsizei stride, const GLvoid *pointer);
GLAPI void APIENTRY GLAPI_PREFIX(Indexub)(GLubyte c);
GLAPI void APIENTRY GLAPI_PREFIX(Indexubv)(const GLubyte *c);
GLAPI void APIENTRY GLAPI_PREFIX(InterleavedArrays)(GLenum format, GLsizei stride, const GLvoid *pointer);
GLAPI void APIENTRY GLAPI_PREFIX(NormalPointer)(GLenum type, GLsizei stride, const GLvoid *pointer);
GLAPI void APIENTRY GLAPI_PREFIX(PolygonOffset)(GLfloat factor, GLfloat units);
GLAPI void APIENTRY GLAPI_PREFIX(TexCoordPointer)(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
GLAPI void APIENTRY GLAPI_PREFIX(VertexPointer)(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
GLAPI GLboolean APIENTRY GLAPI_PREFIX(AreTexturesResident)(GLsizei n, const GLuint *textures, GLboolean *residences);
GLAPI GLboolean APIENTRY GLAPI_PREFIX(AreTexturesResidentEXT)(GLsizei n, const GLuint *textures, GLboolean *residences);
GLAPI void APIENTRY GLAPI_PREFIX(CopyTexImage1D)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
GLAPI void APIENTRY GLAPI_PREFIX(CopyTexImage1DEXT)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
GLAPI void APIENTRY GLAPI_PREFIX(CopyTexImage2D)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
GLAPI void APIENTRY GLAPI_PREFIX(CopyTexImage2DEXT)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
GLAPI void APIENTRY GLAPI_PREFIX(CopyTexSubImage1D)(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
GLAPI void APIENTRY GLAPI_PREFIX(CopyTexSubImage1DEXT)(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
GLAPI void APIENTRY GLAPI_PREFIX(CopyTexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
GLAPI void APIENTRY GLAPI_PREFIX(CopyTexSubImage2DEXT)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
GLAPI void APIENTRY GLAPI_PREFIX(DeleteTextures)(GLsizei n, const GLuint *textures);
GLAPI void APIENTRY GLAPI_PREFIX(DeleteTexturesEXT)(GLsizei n, const GLuint *textures);
GLAPI void APIENTRY GLAPI_PREFIX(GenTextures)(GLsizei n, GLuint *textures);
GLAPI void APIENTRY GLAPI_PREFIX(GenTexturesEXT)(GLsizei n, GLuint *textures);
GLAPI void APIENTRY GLAPI_PREFIX(GetPointerv)(GLenum pname, GLvoid **params);
GLAPI void APIENTRY GLAPI_PREFIX(GetPointervEXT)(GLenum pname, GLvoid **params);
GLAPI GLboolean APIENTRY GLAPI_PREFIX(IsTexture)(GLuint texture);
GLAPI GLboolean APIENTRY GLAPI_PREFIX(IsTextureEXT)(GLuint texture);
GLAPI void APIENTRY GLAPI_PREFIX(PrioritizeTextures)(GLsizei n, const GLuint *textures, const GLclampf *priorities);
GLAPI void APIENTRY GLAPI_PREFIX(PrioritizeTexturesEXT)(GLsizei n, const GLuint *textures, const GLclampf *priorities);
GLAPI void APIENTRY GLAPI_PREFIX(TexSubImage1D)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels);
GLAPI void APIENTRY GLAPI_PREFIX(TexSubImage1DEXT)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels);
GLAPI void APIENTRY GLAPI_PREFIX(TexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels);
GLAPI void APIENTRY GLAPI_PREFIX(TexSubImage2DEXT)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels);
GLAPI void APIENTRY GLAPI_PREFIX(PopClientAttrib)(void);
GLAPI void APIENTRY GLAPI_PREFIX(PushClientAttrib)(GLbitfield mask);
GLAPI void APIENTRY GLAPI_PREFIX(BlendColor)(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
GLAPI void APIENTRY GLAPI_PREFIX(BlendColorEXT)(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
GLAPI void APIENTRY GLAPI_PREFIX(BlendEquation)(GLenum mode);
GLAPI void APIENTRY GLAPI_PREFIX(BlendEquationEXT)(GLenum mode);
GLAPI void APIENTRY GLAPI_PREFIX(DrawRangeElements)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices);
GLAPI void APIENTRY GLAPI_PREFIX(DrawRangeElementsEXT)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices);
GLAPI void APIENTRY GLAPI_PREFIX(ColorTable)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table);
GLAPI void APIENTRY GLAPI_PREFIX(ColorTableEXT)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table);
GLAPI void APIENTRY GLAPI_PREFIX(ColorTableParameterfv)(GLenum target, GLenum pname, const GLfloat *params);
GLAPI void APIENTRY GLAPI_PREFIX(ColorTableParameteriv)(GLenum target, GLenum pname, const GLint *params);
GLAPI void APIENTRY GLAPI_PREFIX(CopyColorTable)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
GLAPI void APIENTRY GLAPI_PREFIX(GetColorTable)(GLenum target, GLenum format, GLenum type, GLvoid *table);
GLAPI void APIENTRY GLAPI_PREFIX(GetColorTableEXT)(GLenum target, GLenum format, GLenum type, GLvoid *table);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_343)(GLenum target, GLenum format, GLenum type, GLvoid *table);
GLAPI void APIENTRY GLAPI_PREFIX(GetColorTableParameterfv)(GLenum target, GLenum pname, GLfloat *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetColorTableParameterfvEXT)(GLenum target, GLenum pname, GLfloat *params);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_344)(GLenum target, GLenum pname, GLfloat *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetColorTableParameteriv)(GLenum target, GLenum pname, GLint *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetColorTableParameterivEXT)(GLenum target, GLenum pname, GLint *params);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_345)(GLenum target, GLenum pname, GLint *params);
GLAPI void APIENTRY GLAPI_PREFIX(ColorSubTable)(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data);
GLAPI void APIENTRY GLAPI_PREFIX(CopyColorSubTable)(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width);
GLAPI void APIENTRY GLAPI_PREFIX(ConvolutionFilter1D)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image);
GLAPI void APIENTRY GLAPI_PREFIX(ConvolutionFilter2D)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image);
GLAPI void APIENTRY GLAPI_PREFIX(ConvolutionParameterf)(GLenum target, GLenum pname, GLfloat params);
GLAPI void APIENTRY GLAPI_PREFIX(ConvolutionParameterfv)(GLenum target, GLenum pname, const GLfloat *params);
GLAPI void APIENTRY GLAPI_PREFIX(ConvolutionParameteri)(GLenum target, GLenum pname, GLint params);
GLAPI void APIENTRY GLAPI_PREFIX(ConvolutionParameteriv)(GLenum target, GLenum pname, const GLint *params);
GLAPI void APIENTRY GLAPI_PREFIX(CopyConvolutionFilter1D)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
GLAPI void APIENTRY GLAPI_PREFIX(CopyConvolutionFilter2D)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height);
GLAPI void APIENTRY GLAPI_PREFIX(GetConvolutionFilter)(GLenum target, GLenum format, GLenum type, GLvoid *image);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_356)(GLenum target, GLenum format, GLenum type, GLvoid *image);
GLAPI void APIENTRY GLAPI_PREFIX(GetConvolutionParameterfv)(GLenum target, GLenum pname, GLfloat *params);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_357)(GLenum target, GLenum pname, GLfloat *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetConvolutionParameteriv)(GLenum target, GLenum pname, GLint *params);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_358)(GLenum target, GLenum pname, GLint *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetSeparableFilter)(GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_359)(GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span);
GLAPI void APIENTRY GLAPI_PREFIX(SeparableFilter2D)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column);
GLAPI void APIENTRY GLAPI_PREFIX(GetHistogram)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_361)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values);
GLAPI void APIENTRY GLAPI_PREFIX(GetHistogramParameterfv)(GLenum target, GLenum pname, GLfloat *params);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_362)(GLenum target, GLenum pname, GLfloat *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetHistogramParameteriv)(GLenum target, GLenum pname, GLint *params);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_363)(GLenum target, GLenum pname, GLint *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetMinmax)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_364)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values);
GLAPI void APIENTRY GLAPI_PREFIX(GetMinmaxParameterfv)(GLenum target, GLenum pname, GLfloat *params);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_365)(GLenum target, GLenum pname, GLfloat *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetMinmaxParameteriv)(GLenum target, GLenum pname, GLint *params);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_366)(GLenum target, GLenum pname, GLint *params);
GLAPI void APIENTRY GLAPI_PREFIX(Histogram)(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink);
GLAPI void APIENTRY GLAPI_PREFIX(Minmax)(GLenum target, GLenum internalformat, GLboolean sink);
GLAPI void APIENTRY GLAPI_PREFIX(ResetHistogram)(GLenum target);
GLAPI void APIENTRY GLAPI_PREFIX(ResetMinmax)(GLenum target);
GLAPI void APIENTRY GLAPI_PREFIX(TexImage3D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
GLAPI void APIENTRY GLAPI_PREFIX(TexImage3DEXT)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
GLAPI void APIENTRY GLAPI_PREFIX(TexSubImage3D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels);
GLAPI void APIENTRY GLAPI_PREFIX(TexSubImage3DEXT)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels);
GLAPI void APIENTRY GLAPI_PREFIX(CopyTexSubImage3D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
GLAPI void APIENTRY GLAPI_PREFIX(CopyTexSubImage3DEXT)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
GLAPI void APIENTRY GLAPI_PREFIX(ActiveTextureARB)(GLenum texture);
GLAPI void APIENTRY GLAPI_PREFIX(ActiveTexture)(GLenum texture);
GLAPI void APIENTRY GLAPI_PREFIX(ClientActiveTextureARB)(GLenum texture);
GLAPI void APIENTRY GLAPI_PREFIX(ClientActiveTexture)(GLenum texture);
GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord1dARB)(GLenum target, GLdouble s);
GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord1d)(GLenum target, GLdouble s);
GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord1dvARB)(GLenum target, const GLdouble *v);
GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord1dv)(GLenum target, const GLdouble *v);
GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord1fARB)(GLenum target, GLfloat s);
GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord1f)(GLenum target, GLfloat s);
GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord1fvARB)(GLenum target, const GLfloat *v);
GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord1fv)(GLenum target, const GLfloat *v);
GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord1iARB)(GLenum target, GLint s);
GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord1i)(GLenum target, GLint s);
GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord1ivARB)(GLenum target, const GLint *v);
GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord1iv)(GLenum target, const GLint *v);
GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord1sARB)(GLenum target, GLshort s);
GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord1s)(GLenum target, GLshort s);
GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord1svARB)(GLenum target, const GLshort *v);
GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord1sv)(GLenum target, const GLshort *v);
GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord2dARB)(GLenum target, GLdouble s, GLdouble t);
GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord2d)(GLenum target, GLdouble s, GLdouble t);
GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord2dvARB)(GLenum target, const GLdouble *v);
GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord2dv)(GLenum target, const GLdouble *v);
GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord2fARB)(GLenum target, GLfloat s, GLfloat t);
GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord2f)(GLenum target, GLfloat s, GLfloat t);
GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord2fvARB)(GLenum target, const GLfloat *v);
GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord2fv)(GLenum target, const GLfloat *v);
GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord2iARB)(GLenum target, GLint s, GLint t);
GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord2i)(GLenum target, GLint s, GLint t);
GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord2ivARB)(GLenum target, const GLint *v);
GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord2iv)(GLenum target, const GLint *v);
GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord2sARB)(GLenum target, GLshort s, GLshort t);
GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord2s)(GLenum target, GLshort s, GLshort t);
GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord2svARB)(GLenum target, const GLshort *v);
GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord2sv)(GLenum target, const GLshort *v);
GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord3dARB)(GLenum target, GLdouble s, GLdouble t, GLdouble r);
GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord3d)(GLenum target, GLdouble s, GLdouble t, GLdouble r);
GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord3dvARB)(GLenum target, const GLdouble *v);
GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord3dv)(GLenum target, const GLdouble *v);
GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord3fARB)(GLenum target, GLfloat s, GLfloat t, GLfloat r);
GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord3f)(GLenum target, GLfloat s, GLfloat t, GLfloat r);
GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord3fvARB)(GLenum target, const GLfloat *v);
GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord3fv)(GLenum target, const GLfloat *v);
GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord3iARB)(GLenum target, GLint s, GLint t, GLint r);
GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord3i)(GLenum target, GLint s, GLint t, GLint r);
GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord3ivARB)(GLenum target, const GLint *v);
GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord3iv)(GLenum target, const GLint *v);
GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord3sARB)(GLenum target, GLshort s, GLshort t, GLshort r);
GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord3s)(GLenum target, GLshort s, GLshort t, GLshort r);
GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord3svARB)(GLenum target, const GLshort *v);
GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord3sv)(GLenum target, const GLshort *v);
GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord4dARB)(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord4d)(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord4dvARB)(GLenum target, const GLdouble *v);
GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord4dv)(GLenum target, const GLdouble *v);
GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord4fARB)(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord4f)(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord4fvARB)(GLenum target, const GLfloat *v);
GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord4fv)(GLenum target, const GLfloat *v);
GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord4iARB)(GLenum target, GLint s, GLint t, GLint r, GLint q);
GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord4i)(GLenum target, GLint s, GLint t, GLint r, GLint q);
GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord4ivARB)(GLenum target, const GLint *v);
GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord4iv)(GLenum target, const GLint *v);
GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord4sARB)(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord4s)(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord4svARB)(GLenum target, const GLshort *v);
GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord4sv)(GLenum target, const GLshort *v);
GLAPI void APIENTRY GLAPI_PREFIX(AttachShader)(GLuint program, GLuint shader);
GLAPI GLuint APIENTRY GLAPI_PREFIX(CreateProgram)(void);
GLAPI GLuint APIENTRY GLAPI_PREFIX(CreateShader)(GLenum type);
GLAPI void APIENTRY GLAPI_PREFIX(DeleteProgram)(GLuint program);
GLAPI void APIENTRY GLAPI_PREFIX(DeleteShader)(GLuint program);
GLAPI void APIENTRY GLAPI_PREFIX(DetachShader)(GLuint program, GLuint shader);
GLAPI void APIENTRY GLAPI_PREFIX(GetAttachedShaders)(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj);
GLAPI void APIENTRY GLAPI_PREFIX(GetProgramInfoLog)(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
GLAPI void APIENTRY GLAPI_PREFIX(GetProgramiv)(GLuint program, GLenum pname, GLint *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetShaderInfoLog)(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
GLAPI void APIENTRY GLAPI_PREFIX(GetShaderiv)(GLuint shader, GLenum pname, GLint *params);
GLAPI GLboolean APIENTRY GLAPI_PREFIX(IsProgram)(GLuint program);
GLAPI GLboolean APIENTRY GLAPI_PREFIX(IsShader)(GLuint shader);
GLAPI void APIENTRY GLAPI_PREFIX(StencilFuncSeparate)(GLenum face, GLenum func, GLint ref, GLuint mask);
GLAPI void APIENTRY GLAPI_PREFIX(StencilMaskSeparate)(GLenum face, GLuint mask);
GLAPI void APIENTRY GLAPI_PREFIX(StencilOpSeparate)(GLenum face, GLenum sfail, GLenum zfail, GLenum zpass);
GLAPI void APIENTRY GLAPI_PREFIX(UniformMatrix2x3fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
GLAPI void APIENTRY GLAPI_PREFIX(UniformMatrix2x4fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
GLAPI void APIENTRY GLAPI_PREFIX(UniformMatrix3x2fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
GLAPI void APIENTRY GLAPI_PREFIX(UniformMatrix3x4fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
GLAPI void APIENTRY GLAPI_PREFIX(UniformMatrix4x2fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
GLAPI void APIENTRY GLAPI_PREFIX(UniformMatrix4x3fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
GLAPI void APIENTRY GLAPI_PREFIX(ClampColor)(GLenum target, GLenum clamp);
GLAPI void APIENTRY GLAPI_PREFIX(ClearBufferfi)(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);
GLAPI void APIENTRY GLAPI_PREFIX(ClearBufferfv)(GLenum buffer, GLint drawbuffer, const GLfloat *value);
GLAPI void APIENTRY GLAPI_PREFIX(ClearBufferiv)(GLenum buffer, GLint drawbuffer, const GLint *value);
GLAPI void APIENTRY GLAPI_PREFIX(ClearBufferuiv)(GLenum buffer, GLint drawbuffer, const GLuint *value);
GLAPI const GLubyte * APIENTRY GLAPI_PREFIX(GetStringi)(GLenum name, GLuint index);
GLAPI void APIENTRY GLAPI_PREFIX(FramebufferTexture)(GLenum target, GLenum attachment, GLuint texture, GLint level);
GLAPI void APIENTRY GLAPI_PREFIX(GetBufferParameteri64v)(GLenum target, GLenum pname, GLint64 *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetInteger64i_v)(GLenum cap, GLuint index, GLint64 *data);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribDivisor)(GLuint index, GLuint divisor);
GLAPI void APIENTRY GLAPI_PREFIX(LoadTransposeMatrixdARB)(const GLdouble *m);
GLAPI void APIENTRY GLAPI_PREFIX(LoadTransposeMatrixd)(const GLdouble *m);
GLAPI void APIENTRY GLAPI_PREFIX(LoadTransposeMatrixfARB)(const GLfloat *m);
GLAPI void APIENTRY GLAPI_PREFIX(LoadTransposeMatrixf)(const GLfloat *m);
GLAPI void APIENTRY GLAPI_PREFIX(MultTransposeMatrixdARB)(const GLdouble *m);
GLAPI void APIENTRY GLAPI_PREFIX(MultTransposeMatrixd)(const GLdouble *m);
GLAPI void APIENTRY GLAPI_PREFIX(MultTransposeMatrixfARB)(const GLfloat *m);
GLAPI void APIENTRY GLAPI_PREFIX(MultTransposeMatrixf)(const GLfloat *m);
GLAPI void APIENTRY GLAPI_PREFIX(SampleCoverageARB)(GLclampf value, GLboolean invert);
GLAPI void APIENTRY GLAPI_PREFIX(SampleCoverage)(GLclampf value, GLboolean invert);
GLAPI void APIENTRY GLAPI_PREFIX(CompressedTexImage1DARB)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data);
GLAPI void APIENTRY GLAPI_PREFIX(CompressedTexImage1D)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data);
GLAPI void APIENTRY GLAPI_PREFIX(CompressedTexImage2DARB)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data);
GLAPI void APIENTRY GLAPI_PREFIX(CompressedTexImage2D)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data);
GLAPI void APIENTRY GLAPI_PREFIX(CompressedTexImage3DARB)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data);
GLAPI void APIENTRY GLAPI_PREFIX(CompressedTexImage3D)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data);
GLAPI void APIENTRY GLAPI_PREFIX(CompressedTexSubImage1DARB)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data);
GLAPI void APIENTRY GLAPI_PREFIX(CompressedTexSubImage1D)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data);
GLAPI void APIENTRY GLAPI_PREFIX(CompressedTexSubImage2DARB)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data);
GLAPI void APIENTRY GLAPI_PREFIX(CompressedTexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data);
GLAPI void APIENTRY GLAPI_PREFIX(CompressedTexSubImage3DARB)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data);
GLAPI void APIENTRY GLAPI_PREFIX(CompressedTexSubImage3D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data);
GLAPI void APIENTRY GLAPI_PREFIX(GetCompressedTexImageARB)(GLenum target, GLint level, GLvoid *img);
GLAPI void APIENTRY GLAPI_PREFIX(GetCompressedTexImage)(GLenum target, GLint level, GLvoid *img);
GLAPI void APIENTRY GLAPI_PREFIX(DisableVertexAttribArrayARB)(GLuint index);
GLAPI void APIENTRY GLAPI_PREFIX(DisableVertexAttribArray)(GLuint index);
GLAPI void APIENTRY GLAPI_PREFIX(EnableVertexAttribArrayARB)(GLuint index);
GLAPI void APIENTRY GLAPI_PREFIX(EnableVertexAttribArray)(GLuint index);
GLAPI void APIENTRY GLAPI_PREFIX(GetProgramEnvParameterdvARB)(GLenum target, GLuint index, GLdouble *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetProgramEnvParameterfvARB)(GLenum target, GLuint index, GLfloat *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetProgramLocalParameterdvARB)(GLenum target, GLuint index, GLdouble *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetProgramLocalParameterfvARB)(GLenum target, GLuint index, GLfloat *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetProgramStringARB)(GLenum target, GLenum pname, GLvoid *string);
GLAPI void APIENTRY GLAPI_PREFIX(GetProgramivARB)(GLenum target, GLenum pname, GLint *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetVertexAttribdvARB)(GLuint index, GLenum pname, GLdouble *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetVertexAttribdv)(GLuint index, GLenum pname, GLdouble *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetVertexAttribfvARB)(GLuint index, GLenum pname, GLfloat *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetVertexAttribfv)(GLuint index, GLenum pname, GLfloat *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetVertexAttribivARB)(GLuint index, GLenum pname, GLint *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetVertexAttribiv)(GLuint index, GLenum pname, GLint *params);
GLAPI void APIENTRY GLAPI_PREFIX(ProgramEnvParameter4dARB)(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
GLAPI void APIENTRY GLAPI_PREFIX(ProgramParameter4dNV)(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
GLAPI void APIENTRY GLAPI_PREFIX(ProgramEnvParameter4dvARB)(GLenum target, GLuint index, const GLdouble *params);
GLAPI void APIENTRY GLAPI_PREFIX(ProgramParameter4dvNV)(GLenum target, GLuint index, const GLdouble *params);
GLAPI void APIENTRY GLAPI_PREFIX(ProgramEnvParameter4fARB)(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
GLAPI void APIENTRY GLAPI_PREFIX(ProgramParameter4fNV)(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
GLAPI void APIENTRY GLAPI_PREFIX(ProgramEnvParameter4fvARB)(GLenum target, GLuint index, const GLfloat *params);
GLAPI void APIENTRY GLAPI_PREFIX(ProgramParameter4fvNV)(GLenum target, GLuint index, const GLfloat *params);
GLAPI void APIENTRY GLAPI_PREFIX(ProgramLocalParameter4dARB)(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
GLAPI void APIENTRY GLAPI_PREFIX(ProgramLocalParameter4dvARB)(GLenum target, GLuint index, const GLdouble *params);
GLAPI void APIENTRY GLAPI_PREFIX(ProgramLocalParameter4fARB)(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
GLAPI void APIENTRY GLAPI_PREFIX(ProgramLocalParameter4fvARB)(GLenum target, GLuint index, const GLfloat *params);
GLAPI void APIENTRY GLAPI_PREFIX(ProgramStringARB)(GLenum target, GLenum format, GLsizei len, const GLvoid *string);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib1dARB)(GLuint index, GLdouble x);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib1d)(GLuint index, GLdouble x);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib1dvARB)(GLuint index, const GLdouble *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib1dv)(GLuint index, const GLdouble *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib1fARB)(GLuint index, GLfloat x);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib1f)(GLuint index, GLfloat x);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib1fvARB)(GLuint index, const GLfloat *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib1fv)(GLuint index, const GLfloat *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib1sARB)(GLuint index, GLshort x);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib1s)(GLuint index, GLshort x);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib1svARB)(GLuint index, const GLshort *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib1sv)(GLuint index, const GLshort *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib2dARB)(GLuint index, GLdouble x, GLdouble y);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib2d)(GLuint index, GLdouble x, GLdouble y);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib2dvARB)(GLuint index, const GLdouble *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib2dv)(GLuint index, const GLdouble *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib2fARB)(GLuint index, GLfloat x, GLfloat y);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib2f)(GLuint index, GLfloat x, GLfloat y);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib2fvARB)(GLuint index, const GLfloat *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib2fv)(GLuint index, const GLfloat *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib2sARB)(GLuint index, GLshort x, GLshort y);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib2s)(GLuint index, GLshort x, GLshort y);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib2svARB)(GLuint index, const GLshort *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib2sv)(GLuint index, const GLshort *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib3dARB)(GLuint index, GLdouble x, GLdouble y, GLdouble z);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib3d)(GLuint index, GLdouble x, GLdouble y, GLdouble z);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib3dvARB)(GLuint index, const GLdouble *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib3dv)(GLuint index, const GLdouble *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib3fARB)(GLuint index, GLfloat x, GLfloat y, GLfloat z);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib3f)(GLuint index, GLfloat x, GLfloat y, GLfloat z);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib3fvARB)(GLuint index, const GLfloat *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib3fv)(GLuint index, const GLfloat *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib3sARB)(GLuint index, GLshort x, GLshort y, GLshort z);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib3s)(GLuint index, GLshort x, GLshort y, GLshort z);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib3svARB)(GLuint index, const GLshort *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib3sv)(GLuint index, const GLshort *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4NbvARB)(GLuint index, const GLbyte *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4Nbv)(GLuint index, const GLbyte *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4NivARB)(GLuint index, const GLint *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4Niv)(GLuint index, const GLint *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4NsvARB)(GLuint index, const GLshort *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4Nsv)(GLuint index, const GLshort *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4NubARB)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4Nub)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4NubvARB)(GLuint index, const GLubyte *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4Nubv)(GLuint index, const GLubyte *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4NuivARB)(GLuint index, const GLuint *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4Nuiv)(GLuint index, const GLuint *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4NusvARB)(GLuint index, const GLushort *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4Nusv)(GLuint index, const GLushort *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4bvARB)(GLuint index, const GLbyte *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4bv)(GLuint index, const GLbyte *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4dARB)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4d)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4dvARB)(GLuint index, const GLdouble *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4dv)(GLuint index, const GLdouble *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4fARB)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4f)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4fvARB)(GLuint index, const GLfloat *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4fv)(GLuint index, const GLfloat *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4ivARB)(GLuint index, const GLint *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4iv)(GLuint index, const GLint *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4sARB)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4s)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4svARB)(GLuint index, const GLshort *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4sv)(GLuint index, const GLshort *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4ubvARB)(GLuint index, const GLubyte *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4ubv)(GLuint index, const GLubyte *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4uivARB)(GLuint index, const GLuint *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4uiv)(GLuint index, const GLuint *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4usvARB)(GLuint index, const GLushort *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4usv)(GLuint index, const GLushort *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribPointerARB)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribPointer)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer);
GLAPI void APIENTRY GLAPI_PREFIX(BindBufferARB)(GLenum target, GLuint buffer);
GLAPI void APIENTRY GLAPI_PREFIX(BindBuffer)(GLenum target, GLuint buffer);
GLAPI void APIENTRY GLAPI_PREFIX(BufferDataARB)(GLenum target, GLsizeiptrARB size, const GLvoid *data, GLenum usage);
GLAPI void APIENTRY GLAPI_PREFIX(BufferData)(GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage);
GLAPI void APIENTRY GLAPI_PREFIX(BufferSubDataARB)(GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid *data);
GLAPI void APIENTRY GLAPI_PREFIX(BufferSubData)(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data);
GLAPI void APIENTRY GLAPI_PREFIX(DeleteBuffersARB)(GLsizei n, const GLuint *buffer);
GLAPI void APIENTRY GLAPI_PREFIX(DeleteBuffers)(GLsizei n, const GLuint *buffer);
GLAPI void APIENTRY GLAPI_PREFIX(GenBuffersARB)(GLsizei n, GLuint *buffer);
GLAPI void APIENTRY GLAPI_PREFIX(GenBuffers)(GLsizei n, GLuint *buffer);
GLAPI void APIENTRY GLAPI_PREFIX(GetBufferParameterivARB)(GLenum target, GLenum pname, GLint *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetBufferParameteriv)(GLenum target, GLenum pname, GLint *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetBufferPointervARB)(GLenum target, GLenum pname, GLvoid **params);
GLAPI void APIENTRY GLAPI_PREFIX(GetBufferPointerv)(GLenum target, GLenum pname, GLvoid **params);
GLAPI void APIENTRY GLAPI_PREFIX(GetBufferSubDataARB)(GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid *data);
GLAPI void APIENTRY GLAPI_PREFIX(GetBufferSubData)(GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data);
GLAPI GLboolean APIENTRY GLAPI_PREFIX(IsBufferARB)(GLuint buffer);
GLAPI GLboolean APIENTRY GLAPI_PREFIX(IsBuffer)(GLuint buffer);
GLAPI GLvoid * APIENTRY GLAPI_PREFIX(MapBufferARB)(GLenum target, GLenum access);
GLAPI GLvoid * APIENTRY GLAPI_PREFIX(MapBuffer)(GLenum target, GLenum access);
GLAPI GLboolean APIENTRY GLAPI_PREFIX(UnmapBufferARB)(GLenum target);
GLAPI GLboolean APIENTRY GLAPI_PREFIX(UnmapBuffer)(GLenum target);
GLAPI void APIENTRY GLAPI_PREFIX(BeginQueryARB)(GLenum target, GLuint id);
GLAPI void APIENTRY GLAPI_PREFIX(BeginQuery)(GLenum target, GLuint id);
GLAPI void APIENTRY GLAPI_PREFIX(DeleteQueriesARB)(GLsizei n, const GLuint *ids);
GLAPI void APIENTRY GLAPI_PREFIX(DeleteQueries)(GLsizei n, const GLuint *ids);
GLAPI void APIENTRY GLAPI_PREFIX(EndQueryARB)(GLenum target);
GLAPI void APIENTRY GLAPI_PREFIX(EndQuery)(GLenum target);
GLAPI void APIENTRY GLAPI_PREFIX(GenQueriesARB)(GLsizei n, GLuint *ids);
GLAPI void APIENTRY GLAPI_PREFIX(GenQueries)(GLsizei n, GLuint *ids);
GLAPI void APIENTRY GLAPI_PREFIX(GetQueryObjectivARB)(GLuint id, GLenum pname, GLint *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetQueryObjectiv)(GLuint id, GLenum pname, GLint *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetQueryObjectuivARB)(GLuint id, GLenum pname, GLuint *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetQueryObjectuiv)(GLuint id, GLenum pname, GLuint *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetQueryivARB)(GLenum target, GLenum pname, GLint *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetQueryiv)(GLenum target, GLenum pname, GLint *params);
GLAPI GLboolean APIENTRY GLAPI_PREFIX(IsQueryARB)(GLuint id);
GLAPI GLboolean APIENTRY GLAPI_PREFIX(IsQuery)(GLuint id);
GLAPI void APIENTRY GLAPI_PREFIX(AttachObjectARB)(GLhandleARB containerObj, GLhandleARB obj);
GLAPI void APIENTRY GLAPI_PREFIX(CompileShaderARB)(GLhandleARB shader);
GLAPI void APIENTRY GLAPI_PREFIX(CompileShader)(GLuint shader);
GLAPI GLhandleARB APIENTRY GLAPI_PREFIX(CreateProgramObjectARB)(void);
GLAPI GLhandleARB APIENTRY GLAPI_PREFIX(CreateShaderObjectARB)(GLenum shaderType);
GLAPI void APIENTRY GLAPI_PREFIX(DeleteObjectARB)(GLhandleARB obj);
GLAPI void APIENTRY GLAPI_PREFIX(DetachObjectARB)(GLhandleARB containerObj, GLhandleARB attachedObj);
GLAPI void APIENTRY GLAPI_PREFIX(GetActiveUniformARB)(GLhandleARB program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name);
GLAPI void APIENTRY GLAPI_PREFIX(GetActiveUniform)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
GLAPI void APIENTRY GLAPI_PREFIX(GetAttachedObjectsARB)(GLhandleARB containerObj, GLsizei maxLength, GLsizei *length, GLhandleARB *infoLog);
GLAPI GLhandleARB APIENTRY GLAPI_PREFIX(GetHandleARB)(GLenum pname);
GLAPI void APIENTRY GLAPI_PREFIX(GetInfoLogARB)(GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *infoLog);
GLAPI void APIENTRY GLAPI_PREFIX(GetObjectParameterfvARB)(GLhandleARB obj, GLenum pname, GLfloat *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetObjectParameterivARB)(GLhandleARB obj, GLenum pname, GLint *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetShaderSourceARB)(GLhandleARB shader, GLsizei bufSize, GLsizei *length, GLcharARB *source);
GLAPI void APIENTRY GLAPI_PREFIX(GetShaderSource)(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source);
GLAPI GLint APIENTRY GLAPI_PREFIX(GetUniformLocationARB)(GLhandleARB program, const GLcharARB *name);
GLAPI GLint APIENTRY GLAPI_PREFIX(GetUniformLocation)(GLuint program, const GLchar *name);
GLAPI void APIENTRY GLAPI_PREFIX(GetUniformfvARB)(GLhandleARB program, GLint location, GLfloat *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetUniformfv)(GLuint program, GLint location, GLfloat *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetUniformivARB)(GLhandleARB program, GLint location, GLint *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetUniformiv)(GLuint program, GLint location, GLint *params);
GLAPI void APIENTRY GLAPI_PREFIX(LinkProgramARB)(GLhandleARB program);
GLAPI void APIENTRY GLAPI_PREFIX(LinkProgram)(GLuint program);
GLAPI void APIENTRY GLAPI_PREFIX(ShaderSourceARB)(GLhandleARB shader, GLsizei count, const GLcharARB **string, const GLint *length);
GLAPI void APIENTRY GLAPI_PREFIX(ShaderSource)(GLuint shader, GLsizei count, const GLchar * const *string, const GLint *length);
GLAPI void APIENTRY GLAPI_PREFIX(Uniform1fARB)(GLint location, GLfloat v0);
GLAPI void APIENTRY GLAPI_PREFIX(Uniform1f)(GLint location, GLfloat v0);
GLAPI void APIENTRY GLAPI_PREFIX(Uniform1fvARB)(GLint location, GLsizei count, const GLfloat *value);
GLAPI void APIENTRY GLAPI_PREFIX(Uniform1fv)(GLint location, GLsizei count, const GLfloat *value);
GLAPI void APIENTRY GLAPI_PREFIX(Uniform1iARB)(GLint location, GLint v0);
GLAPI void APIENTRY GLAPI_PREFIX(Uniform1i)(GLint location, GLint v0);
GLAPI void APIENTRY GLAPI_PREFIX(Uniform1ivARB)(GLint location, GLsizei count, const GLint *value);
GLAPI void APIENTRY GLAPI_PREFIX(Uniform1iv)(GLint location, GLsizei count, const GLint *value);
GLAPI void APIENTRY GLAPI_PREFIX(Uniform2fARB)(GLint location, GLfloat v0, GLfloat v1);
GLAPI void APIENTRY GLAPI_PREFIX(Uniform2f)(GLint location, GLfloat v0, GLfloat v1);
GLAPI void APIENTRY GLAPI_PREFIX(Uniform2fvARB)(GLint location, GLsizei count, const GLfloat *value);
GLAPI void APIENTRY GLAPI_PREFIX(Uniform2fv)(GLint location, GLsizei count, const GLfloat *value);
GLAPI void APIENTRY GLAPI_PREFIX(Uniform2iARB)(GLint location, GLint v0, GLint v1);
GLAPI void APIENTRY GLAPI_PREFIX(Uniform2i)(GLint location, GLint v0, GLint v1);
GLAPI void APIENTRY GLAPI_PREFIX(Uniform2ivARB)(GLint location, GLsizei count, const GLint *value);
GLAPI void APIENTRY GLAPI_PREFIX(Uniform2iv)(GLint location, GLsizei count, const GLint *value);
GLAPI void APIENTRY GLAPI_PREFIX(Uniform3fARB)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
GLAPI void APIENTRY GLAPI_PREFIX(Uniform3f)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
GLAPI void APIENTRY GLAPI_PREFIX(Uniform3fvARB)(GLint location, GLsizei count, const GLfloat *value);
GLAPI void APIENTRY GLAPI_PREFIX(Uniform3fv)(GLint location, GLsizei count, const GLfloat *value);
GLAPI void APIENTRY GLAPI_PREFIX(Uniform3iARB)(GLint location, GLint v0, GLint v1, GLint v2);
GLAPI void APIENTRY GLAPI_PREFIX(Uniform3i)(GLint location, GLint v0, GLint v1, GLint v2);
GLAPI void APIENTRY GLAPI_PREFIX(Uniform3ivARB)(GLint location, GLsizei count, const GLint *value);
GLAPI void APIENTRY GLAPI_PREFIX(Uniform3iv)(GLint location, GLsizei count, const GLint *value);
GLAPI void APIENTRY GLAPI_PREFIX(Uniform4fARB)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
GLAPI void APIENTRY GLAPI_PREFIX(Uniform4f)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
GLAPI void APIENTRY GLAPI_PREFIX(Uniform4fvARB)(GLint location, GLsizei count, const GLfloat *value);
GLAPI void APIENTRY GLAPI_PREFIX(Uniform4fv)(GLint location, GLsizei count, const GLfloat *value);
GLAPI void APIENTRY GLAPI_PREFIX(Uniform4iARB)(GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
GLAPI void APIENTRY GLAPI_PREFIX(Uniform4i)(GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
GLAPI void APIENTRY GLAPI_PREFIX(Uniform4ivARB)(GLint location, GLsizei count, const GLint *value);
GLAPI void APIENTRY GLAPI_PREFIX(Uniform4iv)(GLint location, GLsizei count, const GLint *value);
GLAPI void APIENTRY GLAPI_PREFIX(UniformMatrix2fvARB)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
GLAPI void APIENTRY GLAPI_PREFIX(UniformMatrix2fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
GLAPI void APIENTRY GLAPI_PREFIX(UniformMatrix3fvARB)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
GLAPI void APIENTRY GLAPI_PREFIX(UniformMatrix3fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
GLAPI void APIENTRY GLAPI_PREFIX(UniformMatrix4fvARB)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
GLAPI void APIENTRY GLAPI_PREFIX(UniformMatrix4fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
GLAPI void APIENTRY GLAPI_PREFIX(UseProgramObjectARB)(GLhandleARB program);
GLAPI void APIENTRY GLAPI_PREFIX(UseProgram)(GLuint program);
GLAPI void APIENTRY GLAPI_PREFIX(ValidateProgramARB)(GLhandleARB program);
GLAPI void APIENTRY GLAPI_PREFIX(ValidateProgram)(GLuint program);
GLAPI void APIENTRY GLAPI_PREFIX(BindAttribLocationARB)(GLhandleARB program, GLuint index, const GLcharARB *name);
GLAPI void APIENTRY GLAPI_PREFIX(BindAttribLocation)(GLuint program, GLuint index, const GLchar *name);
GLAPI void APIENTRY GLAPI_PREFIX(GetActiveAttribARB)(GLhandleARB program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name);
GLAPI void APIENTRY GLAPI_PREFIX(GetActiveAttrib)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
GLAPI GLint APIENTRY GLAPI_PREFIX(GetAttribLocationARB)(GLhandleARB program, const GLcharARB *name);
GLAPI GLint APIENTRY GLAPI_PREFIX(GetAttribLocation)(GLuint program, const GLchar *name);
GLAPI void APIENTRY GLAPI_PREFIX(DrawBuffersARB)(GLsizei n, const GLenum *bufs);
GLAPI void APIENTRY GLAPI_PREFIX(DrawBuffers)(GLsizei n, const GLenum *bufs);
GLAPI void APIENTRY GLAPI_PREFIX(DrawBuffersATI)(GLsizei n, const GLenum *bufs);
GLAPI void APIENTRY GLAPI_PREFIX(DrawBuffersNV)(GLsizei n, const GLenum *bufs);
GLAPI void APIENTRY GLAPI_PREFIX(ClampColorARB)(GLenum target, GLenum clamp);
GLAPI void APIENTRY GLAPI_PREFIX(DrawArraysInstancedARB)(GLenum mode, GLint first, GLsizei count, GLsizei primcount);
GLAPI void APIENTRY GLAPI_PREFIX(DrawArraysInstanced)(GLenum mode, GLint first, GLsizei count, GLsizei primcount);
GLAPI void APIENTRY GLAPI_PREFIX(DrawArraysInstancedEXT)(GLenum mode, GLint first, GLsizei count, GLsizei primcount);
GLAPI void APIENTRY GLAPI_PREFIX(DrawElementsInstancedARB)(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount);
GLAPI void APIENTRY GLAPI_PREFIX(DrawElementsInstanced)(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount);
GLAPI void APIENTRY GLAPI_PREFIX(DrawElementsInstancedEXT)(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount);
GLAPI void APIENTRY GLAPI_PREFIX(RenderbufferStorageMultisample)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
GLAPI void APIENTRY GLAPI_PREFIX(RenderbufferStorageMultisampleEXT)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
GLAPI void APIENTRY GLAPI_PREFIX(FramebufferTextureARB)(GLenum target, GLenum attachment, GLuint texture, GLint level);
GLAPI void APIENTRY GLAPI_PREFIX(FramebufferTextureFaceARB)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face);
GLAPI void APIENTRY GLAPI_PREFIX(ProgramParameteriARB)(GLuint program, GLenum pname, GLint value);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribDivisorARB)(GLuint index, GLuint divisor);
GLAPI void APIENTRY GLAPI_PREFIX(FlushMappedBufferRange)(GLenum target, GLintptr offset, GLsizeiptr length);
GLAPI GLvoid * APIENTRY GLAPI_PREFIX(MapBufferRange)(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
GLAPI void APIENTRY GLAPI_PREFIX(TexBufferARB)(GLenum target, GLenum internalFormat, GLuint buffer);
GLAPI void APIENTRY GLAPI_PREFIX(TexBuffer)(GLenum target, GLenum internalFormat, GLuint buffer);
GLAPI void APIENTRY GLAPI_PREFIX(BindVertexArray)(GLuint array);
GLAPI void APIENTRY GLAPI_PREFIX(BindVertexArrayOES)(GLuint array);
GLAPI void APIENTRY GLAPI_PREFIX(GenVertexArrays)(GLsizei n, GLuint *arrays);
GLAPI void APIENTRY GLAPI_PREFIX(GenVertexArraysOES)(GLsizei n, GLuint *arrays);
GLAPI void APIENTRY GLAPI_PREFIX(GetActiveUniformBlockName)(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName);
GLAPI void APIENTRY GLAPI_PREFIX(GetActiveUniformBlockiv)(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetActiveUniformName)(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName);
GLAPI void APIENTRY GLAPI_PREFIX(GetActiveUniformsiv)(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params);
GLAPI GLuint APIENTRY GLAPI_PREFIX(GetUniformBlockIndex)(GLuint program, const GLchar *uniformBlockName);
GLAPI void APIENTRY GLAPI_PREFIX(GetUniformIndices)(GLuint program, GLsizei uniformCount, const GLchar * const *uniformNames, GLuint *uniformIndices);
GLAPI void APIENTRY GLAPI_PREFIX(UniformBlockBinding)(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding);
GLAPI void APIENTRY GLAPI_PREFIX(CopyBufferSubData)(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
GLAPI GLenum APIENTRY GLAPI_PREFIX(ClientWaitSync)(GLsync sync, GLbitfield flags, GLuint64 timeout);
GLAPI void APIENTRY GLAPI_PREFIX(DeleteSync)(GLsync sync);
GLAPI GLsync APIENTRY GLAPI_PREFIX(FenceSync)(GLenum condition, GLbitfield flags);
GLAPI void APIENTRY GLAPI_PREFIX(GetInteger64v)(GLenum pname, GLint64 *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetSynciv)(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values);
GLAPI GLboolean APIENTRY GLAPI_PREFIX(IsSync)(GLsync sync);
GLAPI void APIENTRY GLAPI_PREFIX(WaitSync)(GLsync sync, GLbitfield flags, GLuint64 timeout);
GLAPI void APIENTRY GLAPI_PREFIX(DrawElementsBaseVertex)(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex);
GLAPI void APIENTRY GLAPI_PREFIX(DrawElementsInstancedBaseVertex)(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount, GLint basevertex);
GLAPI void APIENTRY GLAPI_PREFIX(DrawRangeElementsBaseVertex)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex);
GLAPI void APIENTRY GLAPI_PREFIX(MultiDrawElementsBaseVertex)(GLenum mode, const GLsizei *count, GLenum type, const GLvoid * const *indices, GLsizei primcount, const GLint *basevertex);
GLAPI void APIENTRY GLAPI_PREFIX(BlendEquationSeparateiARB)(GLuint buf, GLenum modeRGB, GLenum modeA);
GLAPI void APIENTRY GLAPI_PREFIX(BlendEquationSeparateIndexedAMD)(GLuint buf, GLenum modeRGB, GLenum modeA);
GLAPI void APIENTRY GLAPI_PREFIX(BlendEquationiARB)(GLuint buf, GLenum mode);
GLAPI void APIENTRY GLAPI_PREFIX(BlendEquationIndexedAMD)(GLuint buf, GLenum mode);
GLAPI void APIENTRY GLAPI_PREFIX(BlendFuncSeparateiARB)(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcA, GLenum dstA);
GLAPI void APIENTRY GLAPI_PREFIX(BlendFuncSeparateIndexedAMD)(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcA, GLenum dstA);
GLAPI void APIENTRY GLAPI_PREFIX(BlendFunciARB)(GLuint buf, GLenum src, GLenum dst);
GLAPI void APIENTRY GLAPI_PREFIX(BlendFuncIndexedAMD)(GLuint buf, GLenum src, GLenum dst);
GLAPI void APIENTRY GLAPI_PREFIX(BindFragDataLocationIndexed)(GLuint program, GLuint colorNumber, GLuint index, const GLchar *name);
GLAPI GLint APIENTRY GLAPI_PREFIX(GetFragDataIndex)(GLuint program, const GLchar *name);
GLAPI void APIENTRY GLAPI_PREFIX(BindSampler)(GLuint unit, GLuint sampler);
GLAPI void APIENTRY GLAPI_PREFIX(DeleteSamplers)(GLsizei count, const GLuint *samplers);
GLAPI void APIENTRY GLAPI_PREFIX(GenSamplers)(GLsizei count, GLuint *samplers);
GLAPI void APIENTRY GLAPI_PREFIX(GetSamplerParameterIiv)(GLuint sampler, GLenum pname, GLint *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetSamplerParameterIuiv)(GLuint sampler, GLenum pname, GLuint *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetSamplerParameterfv)(GLuint sampler, GLenum pname, GLfloat *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetSamplerParameteriv)(GLuint sampler, GLenum pname, GLint *params);
GLAPI GLboolean APIENTRY GLAPI_PREFIX(IsSampler)(GLuint sampler);
GLAPI void APIENTRY GLAPI_PREFIX(SamplerParameterIiv)(GLuint sampler, GLenum pname, const GLint *params);
GLAPI void APIENTRY GLAPI_PREFIX(SamplerParameterIuiv)(GLuint sampler, GLenum pname, const GLuint *params);
GLAPI void APIENTRY GLAPI_PREFIX(SamplerParameterf)(GLuint sampler, GLenum pname, GLfloat param);
GLAPI void APIENTRY GLAPI_PREFIX(SamplerParameterfv)(GLuint sampler, GLenum pname, const GLfloat *params);
GLAPI void APIENTRY GLAPI_PREFIX(SamplerParameteri)(GLuint sampler, GLenum pname, GLint param);
GLAPI void APIENTRY GLAPI_PREFIX(SamplerParameteriv)(GLuint sampler, GLenum pname, const GLint *params);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_623)(GLuint id, GLenum target);
GLAPI void APIENTRY GLAPI_PREFIX(ColorP3ui)(GLenum type, GLuint color);
GLAPI void APIENTRY GLAPI_PREFIX(ColorP3uiv)(GLenum type, const GLuint *color);
GLAPI void APIENTRY GLAPI_PREFIX(ColorP4ui)(GLenum type, GLuint color);
GLAPI void APIENTRY GLAPI_PREFIX(ColorP4uiv)(GLenum type, const GLuint *color);
GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoordP1ui)(GLenum texture, GLenum type, GLuint coords);
GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoordP1uiv)(GLenum texture, GLenum type, const GLuint *coords);
GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoordP2ui)(GLenum texture, GLenum type, GLuint coords);
GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoordP2uiv)(GLenum texture, GLenum type, const GLuint *coords);
GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoordP3ui)(GLenum texture, GLenum type, GLuint coords);
GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoordP3uiv)(GLenum texture, GLenum type, const GLuint *coords);
GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoordP4ui)(GLenum texture, GLenum type, GLuint coords);
GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoordP4uiv)(GLenum texture, GLenum type, const GLuint *coords);
GLAPI void APIENTRY GLAPI_PREFIX(NormalP3ui)(GLenum type, GLuint coords);
GLAPI void APIENTRY GLAPI_PREFIX(NormalP3uiv)(GLenum type, const GLuint *coords);
GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColorP3ui)(GLenum type, GLuint color);
GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColorP3uiv)(GLenum type, const GLuint *color);
GLAPI void APIENTRY GLAPI_PREFIX(TexCoordP1ui)(GLenum type, GLuint coords);
GLAPI void APIENTRY GLAPI_PREFIX(TexCoordP1uiv)(GLenum type, const GLuint *coords);
GLAPI void APIENTRY GLAPI_PREFIX(TexCoordP2ui)(GLenum type, GLuint coords);
GLAPI void APIENTRY GLAPI_PREFIX(TexCoordP2uiv)(GLenum type, const GLuint *coords);
GLAPI void APIENTRY GLAPI_PREFIX(TexCoordP3ui)(GLenum type, GLuint coords);
GLAPI void APIENTRY GLAPI_PREFIX(TexCoordP3uiv)(GLenum type, const GLuint *coords);
GLAPI void APIENTRY GLAPI_PREFIX(TexCoordP4ui)(GLenum type, GLuint coords);
GLAPI void APIENTRY GLAPI_PREFIX(TexCoordP4uiv)(GLenum type, const GLuint *coords);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribP1ui)(GLuint index, GLenum type, GLboolean normalized, GLuint value);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribP1uiv)(GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribP2ui)(GLuint index, GLenum type, GLboolean normalized, GLuint value);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribP2uiv)(GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribP3ui)(GLuint index, GLenum type, GLboolean normalized, GLuint value);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribP3uiv)(GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribP4ui)(GLuint index, GLenum type, GLboolean normalized, GLuint value);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribP4uiv)(GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
GLAPI void APIENTRY GLAPI_PREFIX(VertexP2ui)(GLenum type, GLuint value);
GLAPI void APIENTRY GLAPI_PREFIX(VertexP2uiv)(GLenum type, const GLuint *value);
GLAPI void APIENTRY GLAPI_PREFIX(VertexP3ui)(GLenum type, GLuint value);
GLAPI void APIENTRY GLAPI_PREFIX(VertexP3uiv)(GLenum type, const GLuint *value);
GLAPI void APIENTRY GLAPI_PREFIX(VertexP4ui)(GLenum type, GLuint value);
GLAPI void APIENTRY GLAPI_PREFIX(VertexP4uiv)(GLenum type, const GLuint *value);
GLAPI void APIENTRY GLAPI_PREFIX(BindTransformFeedback)(GLenum target, GLuint id);
GLAPI void APIENTRY GLAPI_PREFIX(DeleteTransformFeedbacks)(GLsizei n, const GLuint *ids);
GLAPI void APIENTRY GLAPI_PREFIX(DrawTransformFeedback)(GLenum mode, GLuint id);
GLAPI void APIENTRY GLAPI_PREFIX(GenTransformFeedbacks)(GLsizei n, GLuint *ids);
GLAPI GLboolean APIENTRY GLAPI_PREFIX(IsTransformFeedback)(GLuint id);
GLAPI void APIENTRY GLAPI_PREFIX(PauseTransformFeedback)(void);
GLAPI void APIENTRY GLAPI_PREFIX(ResumeTransformFeedback)(void);
GLAPI void APIENTRY GLAPI_PREFIX(BeginQueryIndexed)(GLenum target, GLuint index, GLuint id);
GLAPI void APIENTRY GLAPI_PREFIX(DrawTransformFeedbackStream)(GLenum mode, GLuint id, GLuint stream);
GLAPI void APIENTRY GLAPI_PREFIX(EndQueryIndexed)(GLenum target, GLuint index);
GLAPI void APIENTRY GLAPI_PREFIX(GetQueryIndexediv)(GLenum target, GLuint index, GLenum pname, GLint *params);
GLAPI void APIENTRY GLAPI_PREFIX(ClearDepthf)(GLclampf depth);
GLAPI void APIENTRY GLAPI_PREFIX(DepthRangef)(GLclampf zNear, GLclampf zFar);
GLAPI void APIENTRY GLAPI_PREFIX(GetShaderPrecisionFormat)(GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision);
GLAPI void APIENTRY GLAPI_PREFIX(ReleaseShaderCompiler)(void);
GLAPI void APIENTRY GLAPI_PREFIX(ShaderBinary)(GLsizei n, const GLuint *shaders, GLenum binaryformat, const GLvoid *binary, GLsizei length);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_678)(GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_679)(GLuint program, GLenum binaryFormat, const GLvoid *binary, GLsizei length);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_680)(GLuint program, GLenum pname, GLint value);
GLAPI void APIENTRY GLAPI_PREFIX(DebugMessageCallbackARB)(GLDEBUGPROCARB callback, const GLvoid *userParam);
GLAPI void APIENTRY GLAPI_PREFIX(DebugMessageControlARB)(GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);
GLAPI void APIENTRY GLAPI_PREFIX(DebugMessageInsertARB)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLcharARB *buf);
GLAPI GLuint APIENTRY GLAPI_PREFIX(GetDebugMessageLogARB)(GLuint count, GLsizei bufsize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLcharARB *messageLog);
GLAPI GLenum APIENTRY GLAPI_PREFIX(GetGraphicsResetStatusARB)(void);
GLAPI void APIENTRY GLAPI_PREFIX(GetnColorTableARB)(GLenum target, GLenum format, GLenum type, GLsizei bufSize, GLvoid *table);
GLAPI void APIENTRY GLAPI_PREFIX(GetnCompressedTexImageARB)(GLenum target, GLint lod, GLsizei bufSize, GLvoid *img);
GLAPI void APIENTRY GLAPI_PREFIX(GetnConvolutionFilterARB)(GLenum target, GLenum format, GLenum type, GLsizei bufSize, GLvoid *image);
GLAPI void APIENTRY GLAPI_PREFIX(GetnHistogramARB)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, GLvoid *values);
GLAPI void APIENTRY GLAPI_PREFIX(GetnMapdvARB)(GLenum target, GLenum query, GLsizei bufSize, GLdouble *v);
GLAPI void APIENTRY GLAPI_PREFIX(GetnMapfvARB)(GLenum target, GLenum query, GLsizei bufSize, GLfloat *v);
GLAPI void APIENTRY GLAPI_PREFIX(GetnMapivARB)(GLenum target, GLenum query, GLsizei bufSize, GLint *v);
GLAPI void APIENTRY GLAPI_PREFIX(GetnMinmaxARB)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, GLvoid *values);
GLAPI void APIENTRY GLAPI_PREFIX(GetnPixelMapfvARB)(GLenum map, GLsizei bufSize, GLfloat *values);
GLAPI void APIENTRY GLAPI_PREFIX(GetnPixelMapuivARB)(GLenum map, GLsizei bufSize, GLuint *values);
GLAPI void APIENTRY GLAPI_PREFIX(GetnPixelMapusvARB)(GLenum map, GLsizei bufSize, GLushort *values);
GLAPI void APIENTRY GLAPI_PREFIX(GetnPolygonStippleARB)(GLsizei bufSize, GLubyte *pattern);
GLAPI void APIENTRY GLAPI_PREFIX(GetnSeparableFilterARB)(GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, GLvoid *row, GLsizei columnBufSize, GLvoid *column, GLvoid *span);
GLAPI void APIENTRY GLAPI_PREFIX(GetnTexImageARB)(GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, GLvoid *img);
GLAPI void APIENTRY GLAPI_PREFIX(GetnUniformdvARB)(GLhandleARB program, GLint location, GLsizei bufSize, GLdouble *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetnUniformfvARB)(GLhandleARB program, GLint location, GLsizei bufSize, GLfloat *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetnUniformivARB)(GLhandleARB program, GLint location, GLsizei bufSize, GLint *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetnUniformuivARB)(GLhandleARB program, GLint location, GLsizei bufSize, GLuint *params);
GLAPI void APIENTRY GLAPI_PREFIX(ReadnPixelsARB)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, GLvoid *data);
GLAPI void APIENTRY GLAPI_PREFIX(DrawArraysInstancedBaseInstance)(GLenum mode, GLint first, GLsizei count, GLsizei primcount, GLuint baseinstance);
GLAPI void APIENTRY GLAPI_PREFIX(DrawElementsInstancedBaseInstance)(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount, GLuint baseinstance);
GLAPI void APIENTRY GLAPI_PREFIX(DrawElementsInstancedBaseVertexBaseInstance)(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount, GLint basevertex, GLuint baseinstance);
GLAPI void APIENTRY GLAPI_PREFIX(DrawTransformFeedbackInstanced)(GLenum mode, GLuint id, GLsizei primcount);
GLAPI void APIENTRY GLAPI_PREFIX(DrawTransformFeedbackStreamInstanced)(GLenum mode, GLuint id, GLuint stream, GLsizei primcount);
GLAPI void APIENTRY GLAPI_PREFIX(TexStorage1D)(GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width);
GLAPI void APIENTRY GLAPI_PREFIX(TexStorage2D)(GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height);
GLAPI void APIENTRY GLAPI_PREFIX(TexStorage3D)(GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth);
GLAPI void APIENTRY GLAPI_PREFIX(TextureStorage1DEXT)(GLuint texture, GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width);
GLAPI void APIENTRY GLAPI_PREFIX(TextureStorage2DEXT)(GLuint texture, GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height);
GLAPI void APIENTRY GLAPI_PREFIX(TextureStorage3DEXT)(GLuint texture, GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth);
GLAPI void APIENTRY GLAPI_PREFIX(InvalidateBufferData)(GLuint buffer);
GLAPI void APIENTRY GLAPI_PREFIX(InvalidateBufferSubData)(GLuint buffer, GLintptr offset, GLsizeiptr length);
GLAPI void APIENTRY GLAPI_PREFIX(InvalidateFramebuffer)(GLenum target, GLsizei numAttachments, const GLenum *attachments);
GLAPI void APIENTRY GLAPI_PREFIX(InvalidateSubFramebuffer)(GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height);
GLAPI void APIENTRY GLAPI_PREFIX(InvalidateTexImage)(GLuint texture, GLint level);
GLAPI void APIENTRY GLAPI_PREFIX(InvalidateTexSubImage)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth);
GLAPI void APIENTRY GLAPI_PREFIX(PolygonOffsetEXT)(GLfloat factor, GLfloat bias);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_723)(GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_724)(const GLfloat *coords);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_725)(GLint x, GLint y, GLint z, GLint width, GLint height);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_726)(const GLint *coords);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_727)(GLshort x, GLshort y, GLshort z, GLshort width, GLshort height);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_728)(const GLshort *coords);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_729)(GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_730)(const GLfixed *coords);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_731)(GLenum type, GLsizei stride, const GLvoid *pointer);
GLbitfield APIENTRY GLAPI_PREFIX(_dispatch_stub_732)(GLfixed *mantissa, GLint *exponent);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_733)(GLclampf value, GLboolean invert);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_734)(GLenum pattern);
GLAPI void APIENTRY GLAPI_PREFIX(ColorPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
GLAPI void APIENTRY GLAPI_PREFIX(EdgeFlagPointerEXT)(GLsizei stride, GLsizei count, const GLboolean *pointer);
GLAPI void APIENTRY GLAPI_PREFIX(IndexPointerEXT)(GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
GLAPI void APIENTRY GLAPI_PREFIX(NormalPointerEXT)(GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
GLAPI void APIENTRY GLAPI_PREFIX(TexCoordPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
GLAPI void APIENTRY GLAPI_PREFIX(VertexPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
GLAPI void APIENTRY GLAPI_PREFIX(PointParameterfEXT)(GLenum pname, GLfloat param);
GLAPI void APIENTRY GLAPI_PREFIX(PointParameterf)(GLenum pname, GLfloat param);
GLAPI void APIENTRY GLAPI_PREFIX(PointParameterfARB)(GLenum pname, GLfloat param);
GLAPI void APIENTRY GLAPI_PREFIX(PointParameterfvEXT)(GLenum pname, const GLfloat *params);
GLAPI void APIENTRY GLAPI_PREFIX(PointParameterfv)(GLenum pname, const GLfloat *params);
GLAPI void APIENTRY GLAPI_PREFIX(PointParameterfvARB)(GLenum pname, const GLfloat *params);
GLAPI void APIENTRY GLAPI_PREFIX(LockArraysEXT)(GLint first, GLsizei count);
GLAPI void APIENTRY GLAPI_PREFIX(UnlockArraysEXT)(void);
GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3bEXT)(GLbyte red, GLbyte green, GLbyte blue);
GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3b)(GLbyte red, GLbyte green, GLbyte blue);
GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3bvEXT)(const GLbyte *v);
GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3bv)(const GLbyte *v);
GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3dEXT)(GLdouble red, GLdouble green, GLdouble blue);
GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3d)(GLdouble red, GLdouble green, GLdouble blue);
GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3dvEXT)(const GLdouble *v);
GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3dv)(const GLdouble *v);
GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3fEXT)(GLfloat red, GLfloat green, GLfloat blue);
GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3f)(GLfloat red, GLfloat green, GLfloat blue);
GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3fvEXT)(const GLfloat *v);
GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3fv)(const GLfloat *v);
GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3iEXT)(GLint red, GLint green, GLint blue);
GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3i)(GLint red, GLint green, GLint blue);
GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3ivEXT)(const GLint *v);
GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3iv)(const GLint *v);
GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3sEXT)(GLshort red, GLshort green, GLshort blue);
GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3s)(GLshort red, GLshort green, GLshort blue);
GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3svEXT)(const GLshort *v);
GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3sv)(const GLshort *v);
GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3ubEXT)(GLubyte red, GLubyte green, GLubyte blue);
GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3ub)(GLubyte red, GLubyte green, GLubyte blue);
GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3ubvEXT)(const GLubyte *v);
GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3ubv)(const GLubyte *v);
GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3uiEXT)(GLuint red, GLuint green, GLuint blue);
GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3ui)(GLuint red, GLuint green, GLuint blue);
GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3uivEXT)(const GLuint *v);
GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3uiv)(const GLuint *v);
GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3usEXT)(GLushort red, GLushort green, GLushort blue);
GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3us)(GLushort red, GLushort green, GLushort blue);
GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3usvEXT)(const GLushort *v);
GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3usv)(const GLushort *v);
GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColorPointerEXT)(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColorPointer)(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
GLAPI void APIENTRY GLAPI_PREFIX(MultiDrawArraysEXT)(GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount);
GLAPI void APIENTRY GLAPI_PREFIX(MultiDrawArrays)(GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount);
GLAPI void APIENTRY GLAPI_PREFIX(MultiDrawElementsEXT)(GLenum mode, const GLsizei *count, GLenum type, const GLvoid **indices, GLsizei primcount);
GLAPI void APIENTRY GLAPI_PREFIX(MultiDrawElements)(GLenum mode, const GLsizei *count, GLenum type, const GLvoid * const *indices, GLsizei primcount);
GLAPI void APIENTRY GLAPI_PREFIX(FogCoordPointerEXT)(GLenum type, GLsizei stride, const GLvoid *pointer);
GLAPI void APIENTRY GLAPI_PREFIX(FogCoordPointer)(GLenum type, GLsizei stride, const GLvoid *pointer);
GLAPI void APIENTRY GLAPI_PREFIX(FogCoorddEXT)(GLdouble coord);
GLAPI void APIENTRY GLAPI_PREFIX(FogCoordd)(GLdouble coord);
GLAPI void APIENTRY GLAPI_PREFIX(FogCoorddvEXT)(const GLdouble *coord);
GLAPI void APIENTRY GLAPI_PREFIX(FogCoorddv)(const GLdouble *coord);
GLAPI void APIENTRY GLAPI_PREFIX(FogCoordfEXT)(GLfloat coord);
GLAPI void APIENTRY GLAPI_PREFIX(FogCoordf)(GLfloat coord);
GLAPI void APIENTRY GLAPI_PREFIX(FogCoordfvEXT)(const GLfloat *coord);
GLAPI void APIENTRY GLAPI_PREFIX(FogCoordfv)(const GLfloat *coord);
GLAPI void APIENTRY GLAPI_PREFIX(BlendFuncSeparateEXT)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
GLAPI void APIENTRY GLAPI_PREFIX(BlendFuncSeparate)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
GLAPI void APIENTRY GLAPI_PREFIX(ResizeBuffersMESA)(void);
GLAPI void APIENTRY GLAPI_PREFIX(WindowPos2dMESA)(GLdouble x, GLdouble y);
GLAPI void APIENTRY GLAPI_PREFIX(WindowPos2d)(GLdouble x, GLdouble y);
GLAPI void APIENTRY GLAPI_PREFIX(WindowPos2dARB)(GLdouble x, GLdouble y);
GLAPI void APIENTRY GLAPI_PREFIX(WindowPos2dvMESA)(const GLdouble *v);
GLAPI void APIENTRY GLAPI_PREFIX(WindowPos2dv)(const GLdouble *v);
GLAPI void APIENTRY GLAPI_PREFIX(WindowPos2dvARB)(const GLdouble *v);
GLAPI void APIENTRY GLAPI_PREFIX(WindowPos2fMESA)(GLfloat x, GLfloat y);
GLAPI void APIENTRY GLAPI_PREFIX(WindowPos2f)(GLfloat x, GLfloat y);
GLAPI void APIENTRY GLAPI_PREFIX(WindowPos2fARB)(GLfloat x, GLfloat y);
GLAPI void APIENTRY GLAPI_PREFIX(WindowPos2fvMESA)(const GLfloat *v);
GLAPI void APIENTRY GLAPI_PREFIX(WindowPos2fv)(const GLfloat *v);
GLAPI void APIENTRY GLAPI_PREFIX(WindowPos2fvARB)(const GLfloat *v);
GLAPI void APIENTRY GLAPI_PREFIX(WindowPos2iMESA)(GLint x, GLint y);
GLAPI void APIENTRY GLAPI_PREFIX(WindowPos2i)(GLint x, GLint y);
GLAPI void APIENTRY GLAPI_PREFIX(WindowPos2iARB)(GLint x, GLint y);
GLAPI void APIENTRY GLAPI_PREFIX(WindowPos2ivMESA)(const GLint *v);
GLAPI void APIENTRY GLAPI_PREFIX(WindowPos2iv)(const GLint *v);
GLAPI void APIENTRY GLAPI_PREFIX(WindowPos2ivARB)(const GLint *v);
GLAPI void APIENTRY GLAPI_PREFIX(WindowPos2sMESA)(GLshort x, GLshort y);
GLAPI void APIENTRY GLAPI_PREFIX(WindowPos2s)(GLshort x, GLshort y);
GLAPI void APIENTRY GLAPI_PREFIX(WindowPos2sARB)(GLshort x, GLshort y);
GLAPI void APIENTRY GLAPI_PREFIX(WindowPos2svMESA)(const GLshort *v);
GLAPI void APIENTRY GLAPI_PREFIX(WindowPos2sv)(const GLshort *v);
GLAPI void APIENTRY GLAPI_PREFIX(WindowPos2svARB)(const GLshort *v);
GLAPI void APIENTRY GLAPI_PREFIX(WindowPos3dMESA)(GLdouble x, GLdouble y, GLdouble z);
GLAPI void APIENTRY GLAPI_PREFIX(WindowPos3d)(GLdouble x, GLdouble y, GLdouble z);
GLAPI void APIENTRY GLAPI_PREFIX(WindowPos3dARB)(GLdouble x, GLdouble y, GLdouble z);
GLAPI void APIENTRY GLAPI_PREFIX(WindowPos3dvMESA)(const GLdouble *v);
GLAPI void APIENTRY GLAPI_PREFIX(WindowPos3dv)(const GLdouble *v);
GLAPI void APIENTRY GLAPI_PREFIX(WindowPos3dvARB)(const GLdouble *v);
GLAPI void APIENTRY GLAPI_PREFIX(WindowPos3fMESA)(GLfloat x, GLfloat y, GLfloat z);
GLAPI void APIENTRY GLAPI_PREFIX(WindowPos3f)(GLfloat x, GLfloat y, GLfloat z);
GLAPI void APIENTRY GLAPI_PREFIX(WindowPos3fARB)(GLfloat x, GLfloat y, GLfloat z);
GLAPI void APIENTRY GLAPI_PREFIX(WindowPos3fvMESA)(const GLfloat *v);
GLAPI void APIENTRY GLAPI_PREFIX(WindowPos3fv)(const GLfloat *v);
GLAPI void APIENTRY GLAPI_PREFIX(WindowPos3fvARB)(const GLfloat *v);
GLAPI void APIENTRY GLAPI_PREFIX(WindowPos3iMESA)(GLint x, GLint y, GLint z);
GLAPI void APIENTRY GLAPI_PREFIX(WindowPos3i)(GLint x, GLint y, GLint z);
GLAPI void APIENTRY GLAPI_PREFIX(WindowPos3iARB)(GLint x, GLint y, GLint z);
GLAPI void APIENTRY GLAPI_PREFIX(WindowPos3ivMESA)(const GLint *v);
GLAPI void APIENTRY GLAPI_PREFIX(WindowPos3iv)(const GLint *v);
GLAPI void APIENTRY GLAPI_PREFIX(WindowPos3ivARB)(const GLint *v);
GLAPI void APIENTRY GLAPI_PREFIX(WindowPos3sMESA)(GLshort x, GLshort y, GLshort z);
GLAPI void APIENTRY GLAPI_PREFIX(WindowPos3s)(GLshort x, GLshort y, GLshort z);
GLAPI void APIENTRY GLAPI_PREFIX(WindowPos3sARB)(GLshort x, GLshort y, GLshort z);
GLAPI void APIENTRY GLAPI_PREFIX(WindowPos3svMESA)(const GLshort *v);
GLAPI void APIENTRY GLAPI_PREFIX(WindowPos3sv)(const GLshort *v);
GLAPI void APIENTRY GLAPI_PREFIX(WindowPos3svARB)(const GLshort *v);
GLAPI void APIENTRY GLAPI_PREFIX(WindowPos4dMESA)(GLdouble x, GLdouble y, GLdouble z, GLdouble w);
GLAPI void APIENTRY GLAPI_PREFIX(WindowPos4dvMESA)(const GLdouble *v);
GLAPI void APIENTRY GLAPI_PREFIX(WindowPos4fMESA)(GLfloat x, GLfloat y, GLfloat z, GLfloat w);
GLAPI void APIENTRY GLAPI_PREFIX(WindowPos4fvMESA)(const GLfloat *v);
GLAPI void APIENTRY GLAPI_PREFIX(WindowPos4iMESA)(GLint x, GLint y, GLint z, GLint w);
GLAPI void APIENTRY GLAPI_PREFIX(WindowPos4ivMESA)(const GLint *v);
GLAPI void APIENTRY GLAPI_PREFIX(WindowPos4sMESA)(GLshort x, GLshort y, GLshort z, GLshort w);
GLAPI void APIENTRY GLAPI_PREFIX(WindowPos4svMESA)(const GLshort *v);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_795)(const GLenum *mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_796)(const GLenum *mode, const GLsizei *count, GLenum type, const GLvoid * const *indices, GLsizei primcount, GLint modestride);
GLAPI GLboolean APIENTRY GLAPI_PREFIX(AreProgramsResidentNV)(GLsizei n, const GLuint *ids, GLboolean *residences);
GLAPI void APIENTRY GLAPI_PREFIX(BindProgramNV)(GLenum target, GLuint program);
GLAPI void APIENTRY GLAPI_PREFIX(BindProgramARB)(GLenum target, GLuint program);
GLAPI void APIENTRY GLAPI_PREFIX(DeleteProgramsNV)(GLsizei n, const GLuint *programs);
GLAPI void APIENTRY GLAPI_PREFIX(DeleteProgramsARB)(GLsizei n, const GLuint *programs);
GLAPI void APIENTRY GLAPI_PREFIX(ExecuteProgramNV)(GLenum target, GLuint id, const GLfloat *params);
GLAPI void APIENTRY GLAPI_PREFIX(GenProgramsNV)(GLsizei n, GLuint *programs);
GLAPI void APIENTRY GLAPI_PREFIX(GenProgramsARB)(GLsizei n, GLuint *programs);
GLAPI void APIENTRY GLAPI_PREFIX(GetProgramParameterdvNV)(GLenum target, GLuint index, GLenum pname, GLdouble *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetProgramParameterfvNV)(GLenum target, GLuint index, GLenum pname, GLfloat *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetProgramStringNV)(GLuint id, GLenum pname, GLubyte *program);
GLAPI void APIENTRY GLAPI_PREFIX(GetProgramivNV)(GLuint id, GLenum pname, GLint *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetTrackMatrixivNV)(GLenum target, GLuint address, GLenum pname, GLint *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetVertexAttribPointervNV)(GLuint index, GLenum pname, GLvoid **pointer);
GLAPI void APIENTRY GLAPI_PREFIX(GetVertexAttribPointerv)(GLuint index, GLenum pname, GLvoid **pointer);
GLAPI void APIENTRY GLAPI_PREFIX(GetVertexAttribPointervARB)(GLuint index, GLenum pname, GLvoid **pointer);
GLAPI void APIENTRY GLAPI_PREFIX(GetVertexAttribdvNV)(GLuint index, GLenum pname, GLdouble *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetVertexAttribfvNV)(GLuint index, GLenum pname, GLfloat *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetVertexAttribivNV)(GLuint index, GLenum pname, GLint *params);
GLAPI GLboolean APIENTRY GLAPI_PREFIX(IsProgramNV)(GLuint program);
GLAPI GLboolean APIENTRY GLAPI_PREFIX(IsProgramARB)(GLuint program);
GLAPI void APIENTRY GLAPI_PREFIX(LoadProgramNV)(GLenum target, GLuint id, GLsizei len, const GLubyte *program);
GLAPI void APIENTRY GLAPI_PREFIX(ProgramParameters4dvNV)(GLenum target, GLuint index, GLsizei num, const GLdouble *params);
GLAPI void APIENTRY GLAPI_PREFIX(ProgramParameters4fvNV)(GLenum target, GLuint index, GLsizei num, const GLfloat *params);
GLAPI void APIENTRY GLAPI_PREFIX(RequestResidentProgramsNV)(GLsizei n, const GLuint *ids);
GLAPI void APIENTRY GLAPI_PREFIX(TrackMatrixNV)(GLenum target, GLuint address, GLenum matrix, GLenum transform);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib1dNV)(GLuint index, GLdouble x);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib1dvNV)(GLuint index, const GLdouble *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib1fNV)(GLuint index, GLfloat x);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib1fvNV)(GLuint index, const GLfloat *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib1sNV)(GLuint index, GLshort x);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib1svNV)(GLuint index, const GLshort *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib2dNV)(GLuint index, GLdouble x, GLdouble y);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib2dvNV)(GLuint index, const GLdouble *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib2fNV)(GLuint index, GLfloat x, GLfloat y);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib2fvNV)(GLuint index, const GLfloat *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib2sNV)(GLuint index, GLshort x, GLshort y);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib2svNV)(GLuint index, const GLshort *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib3dNV)(GLuint index, GLdouble x, GLdouble y, GLdouble z);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib3dvNV)(GLuint index, const GLdouble *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib3fNV)(GLuint index, GLfloat x, GLfloat y, GLfloat z);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib3fvNV)(GLuint index, const GLfloat *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib3sNV)(GLuint index, GLshort x, GLshort y, GLshort z);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib3svNV)(GLuint index, const GLshort *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4dNV)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4dvNV)(GLuint index, const GLdouble *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4fNV)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4fvNV)(GLuint index, const GLfloat *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4sNV)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4svNV)(GLuint index, const GLshort *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4ubNV)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4ubvNV)(GLuint index, const GLubyte *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribPointerNV)(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribs1dvNV)(GLuint index, GLsizei n, const GLdouble *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribs1fvNV)(GLuint index, GLsizei n, const GLfloat *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribs1svNV)(GLuint index, GLsizei n, const GLshort *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribs2dvNV)(GLuint index, GLsizei n, const GLdouble *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribs2fvNV)(GLuint index, GLsizei n, const GLfloat *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribs2svNV)(GLuint index, GLsizei n, const GLshort *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribs3dvNV)(GLuint index, GLsizei n, const GLdouble *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribs3fvNV)(GLuint index, GLsizei n, const GLfloat *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribs3svNV)(GLuint index, GLsizei n, const GLshort *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribs4dvNV)(GLuint index, GLsizei n, const GLdouble *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribs4fvNV)(GLuint index, GLsizei n, const GLfloat *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribs4svNV)(GLuint index, GLsizei n, const GLshort *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribs4ubvNV)(GLuint index, GLsizei n, const GLubyte *v);
GLAPI void APIENTRY GLAPI_PREFIX(GetTexBumpParameterfvATI)(GLenum pname, GLfloat *param);
GLAPI void APIENTRY GLAPI_PREFIX(GetTexBumpParameterivATI)(GLenum pname, GLint *param);
GLAPI void APIENTRY GLAPI_PREFIX(TexBumpParameterfvATI)(GLenum pname, const GLfloat *param);
GLAPI void APIENTRY GLAPI_PREFIX(TexBumpParameterivATI)(GLenum pname, const GLint *param);
GLAPI void APIENTRY GLAPI_PREFIX(AlphaFragmentOp1ATI)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod);
GLAPI void APIENTRY GLAPI_PREFIX(AlphaFragmentOp2ATI)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod);
GLAPI void APIENTRY GLAPI_PREFIX(AlphaFragmentOp3ATI)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod);
GLAPI void APIENTRY GLAPI_PREFIX(BeginFragmentShaderATI)(void);
GLAPI void APIENTRY GLAPI_PREFIX(BindFragmentShaderATI)(GLuint id);
GLAPI void APIENTRY GLAPI_PREFIX(ColorFragmentOp1ATI)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod);
GLAPI void APIENTRY GLAPI_PREFIX(ColorFragmentOp2ATI)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod);
GLAPI void APIENTRY GLAPI_PREFIX(ColorFragmentOp3ATI)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod);
GLAPI void APIENTRY GLAPI_PREFIX(DeleteFragmentShaderATI)(GLuint id);
GLAPI void APIENTRY GLAPI_PREFIX(EndFragmentShaderATI)(void);
GLAPI GLuint APIENTRY GLAPI_PREFIX(GenFragmentShadersATI)(GLuint range);
GLAPI void APIENTRY GLAPI_PREFIX(PassTexCoordATI)(GLuint dst, GLuint coord, GLenum swizzle);
GLAPI void APIENTRY GLAPI_PREFIX(SampleMapATI)(GLuint dst, GLuint interp, GLenum swizzle);
GLAPI void APIENTRY GLAPI_PREFIX(SetFragmentShaderConstantATI)(GLuint dst, const GLfloat *value);
GLAPI void APIENTRY GLAPI_PREFIX(PointParameteriNV)(GLenum pname, GLint param);
GLAPI void APIENTRY GLAPI_PREFIX(PointParameteri)(GLenum pname, GLint param);
GLAPI void APIENTRY GLAPI_PREFIX(PointParameterivNV)(GLenum pname, const GLint *params);
GLAPI void APIENTRY GLAPI_PREFIX(PointParameteriv)(GLenum pname, const GLint *params);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_877)(GLenum face);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_878)(GLuint array);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_879)(GLsizei n, const GLuint *arrays);
GLAPI void APIENTRY GLAPI_PREFIX(DeleteVertexArrays)(GLsizei n, const GLuint *arrays);
GLAPI void APIENTRY GLAPI_PREFIX(DeleteVertexArraysOES)(GLsizei n, const GLuint *arrays);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_880)(GLsizei n, GLuint *arrays);
GLboolean APIENTRY GLAPI_PREFIX(_dispatch_stub_881)(GLuint array);
GLAPI GLboolean APIENTRY GLAPI_PREFIX(IsVertexArray)(GLuint array);
GLAPI GLboolean APIENTRY GLAPI_PREFIX(IsVertexArrayOES)(GLuint array);
GLAPI void APIENTRY GLAPI_PREFIX(GetProgramNamedParameterdvNV)(GLuint id, GLsizei len, const GLubyte *name, GLdouble *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetProgramNamedParameterfvNV)(GLuint id, GLsizei len, const GLubyte *name, GLfloat *params);
GLAPI void APIENTRY GLAPI_PREFIX(ProgramNamedParameter4dNV)(GLuint id, GLsizei len, const GLubyte *name, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
GLAPI void APIENTRY GLAPI_PREFIX(ProgramNamedParameter4dvNV)(GLuint id, GLsizei len, const GLubyte *name, const GLdouble *v);
GLAPI void APIENTRY GLAPI_PREFIX(ProgramNamedParameter4fNV)(GLuint id, GLsizei len, const GLubyte *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
GLAPI void APIENTRY GLAPI_PREFIX(ProgramNamedParameter4fvNV)(GLuint id, GLsizei len, const GLubyte *name, const GLfloat *v);
GLAPI void APIENTRY GLAPI_PREFIX(PrimitiveRestartIndexNV)(GLuint index);
GLAPI void APIENTRY GLAPI_PREFIX(PrimitiveRestartIndex)(GLuint index);
GLAPI void APIENTRY GLAPI_PREFIX(PrimitiveRestartNV)(void);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_890)(GLenum func, GLclampx ref);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_891)(GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_892)(GLclampx depth);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_893)(GLenum plane, const GLfixed *equation);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_894)(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_895)(GLclampx zNear, GLclampx zFar);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_896)(GLenum pname, GLfixed param);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_897)(GLenum pname, const GLfixed *params);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_898)(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_899)(GLenum plane, GLfixed *equation);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_900)(GLenum pname, GLfixed *params);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_901)(GLenum light, GLenum pname, GLfixed *params);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_902)(GLenum face, GLenum pname, GLfixed *params);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_903)(GLenum target, GLenum pname, GLfixed *params);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_904)(GLenum coord, GLenum pname, GLfixed *params);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_905)(GLenum target, GLenum pname, GLfixed *params);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_906)(GLenum pname, GLfixed param);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_907)(GLenum pname, const GLfixed *params);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_908)(GLenum light, GLenum pname, GLfixed param);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_909)(GLenum light, GLenum pname, const GLfixed *params);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_910)(GLfixed width);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_911)(const GLfixed *m);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_912)(GLenum face, GLenum pname, GLfixed param);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_913)(GLenum face, GLenum pname, const GLfixed *params);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_914)(const GLfixed *m);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_915)(GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_916)(GLfixed nx, GLfixed ny, GLfixed nz);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_917)(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_918)(GLenum pname, GLfixed param);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_919)(GLenum pname, const GLfixed *params);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_920)(GLfixed size);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_921)(GLfixed factor, GLfixed units);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_922)(GLfixed angle, GLfixed x, GLfixed y, GLfixed z);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_923)(GLclampx value, GLboolean invert);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_924)(GLfixed x, GLfixed y, GLfixed z);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_925)(GLenum target, GLenum pname, GLfixed param);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_926)(GLenum target, GLenum pname, const GLfixed *params);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_927)(GLenum coord, GLenum pname, GLint param);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_928)(GLenum coord, GLenum pname, const GLfixed *params);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_929)(GLenum target, GLenum pname, GLfixed param);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_930)(GLenum target, GLenum pname, const GLfixed *params);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_931)(GLfixed x, GLfixed y, GLfixed z);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_932)(GLenum plane, const GLfloat *equation);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_933)(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_934)(GLenum plane, GLfloat *equation);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_935)(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_936)(GLclampd zmin, GLclampd zmax);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_937)(GLenum modeRGB, GLenum modeA);
GLAPI void APIENTRY GLAPI_PREFIX(BlendEquationSeparate)(GLenum modeRGB, GLenum modeA);
GLAPI void APIENTRY GLAPI_PREFIX(BindFramebufferEXT)(GLenum target, GLuint framebuffer);
GLAPI void APIENTRY GLAPI_PREFIX(BindFramebuffer)(GLenum target, GLuint framebuffer);
GLAPI void APIENTRY GLAPI_PREFIX(BindRenderbufferEXT)(GLenum target, GLuint renderbuffer);
GLAPI void APIENTRY GLAPI_PREFIX(BindRenderbuffer)(GLenum target, GLuint renderbuffer);
GLAPI GLenum APIENTRY GLAPI_PREFIX(CheckFramebufferStatusEXT)(GLenum target);
GLAPI GLenum APIENTRY GLAPI_PREFIX(CheckFramebufferStatus)(GLenum target);
GLAPI void APIENTRY GLAPI_PREFIX(DeleteFramebuffersEXT)(GLsizei n, const GLuint *framebuffers);
GLAPI void APIENTRY GLAPI_PREFIX(DeleteFramebuffers)(GLsizei n, const GLuint *framebuffers);
GLAPI void APIENTRY GLAPI_PREFIX(DeleteRenderbuffersEXT)(GLsizei n, const GLuint *renderbuffers);
GLAPI void APIENTRY GLAPI_PREFIX(DeleteRenderbuffers)(GLsizei n, const GLuint *renderbuffers);
GLAPI void APIENTRY GLAPI_PREFIX(FramebufferRenderbufferEXT)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
GLAPI void APIENTRY GLAPI_PREFIX(FramebufferRenderbuffer)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
GLAPI void APIENTRY GLAPI_PREFIX(FramebufferTexture1DEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
GLAPI void APIENTRY GLAPI_PREFIX(FramebufferTexture1D)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
GLAPI void APIENTRY GLAPI_PREFIX(FramebufferTexture2DEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
GLAPI void APIENTRY GLAPI_PREFIX(FramebufferTexture2D)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
GLAPI void APIENTRY GLAPI_PREFIX(FramebufferTexture3DEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
GLAPI void APIENTRY GLAPI_PREFIX(FramebufferTexture3D)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
GLAPI void APIENTRY GLAPI_PREFIX(GenFramebuffersEXT)(GLsizei n, GLuint *framebuffers);
GLAPI void APIENTRY GLAPI_PREFIX(GenFramebuffers)(GLsizei n, GLuint *framebuffers);
GLAPI void APIENTRY GLAPI_PREFIX(GenRenderbuffersEXT)(GLsizei n, GLuint *renderbuffers);
GLAPI void APIENTRY GLAPI_PREFIX(GenRenderbuffers)(GLsizei n, GLuint *renderbuffers);
GLAPI void APIENTRY GLAPI_PREFIX(GenerateMipmapEXT)(GLenum target);
GLAPI void APIENTRY GLAPI_PREFIX(GenerateMipmap)(GLenum target);
GLAPI void APIENTRY GLAPI_PREFIX(GetFramebufferAttachmentParameterivEXT)(GLenum target, GLenum attachment, GLenum pname, GLint *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetFramebufferAttachmentParameteriv)(GLenum target, GLenum attachment, GLenum pname, GLint *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetRenderbufferParameterivEXT)(GLenum target, GLenum pname, GLint *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetRenderbufferParameteriv)(GLenum target, GLenum pname, GLint *params);
GLAPI GLboolean APIENTRY GLAPI_PREFIX(IsFramebufferEXT)(GLuint framebuffer);
GLAPI GLboolean APIENTRY GLAPI_PREFIX(IsFramebuffer)(GLuint framebuffer);
GLAPI GLboolean APIENTRY GLAPI_PREFIX(IsRenderbufferEXT)(GLuint renderbuffer);
GLAPI GLboolean APIENTRY GLAPI_PREFIX(IsRenderbuffer)(GLuint renderbuffer);
GLAPI void APIENTRY GLAPI_PREFIX(RenderbufferStorageEXT)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
GLAPI void APIENTRY GLAPI_PREFIX(RenderbufferStorage)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_955)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
GLAPI void APIENTRY GLAPI_PREFIX(BlitFramebuffer)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_956)(GLenum target, GLenum pname, GLint param);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_957)(GLenum target, GLintptr offset, GLsizeiptr size);
GLAPI void APIENTRY GLAPI_PREFIX(BindFragDataLocationEXT)(GLuint program, GLuint colorNumber, const GLchar *name);
GLAPI void APIENTRY GLAPI_PREFIX(BindFragDataLocation)(GLuint program, GLuint colorNumber, const GLchar *name);
GLAPI GLint APIENTRY GLAPI_PREFIX(GetFragDataLocationEXT)(GLuint program, const GLchar *name);
GLAPI GLint APIENTRY GLAPI_PREFIX(GetFragDataLocation)(GLuint program, const GLchar *name);
GLAPI void APIENTRY GLAPI_PREFIX(GetUniformuivEXT)(GLuint program, GLint location, GLuint *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetUniformuiv)(GLuint program, GLint location, GLuint *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetVertexAttribIivEXT)(GLuint index, GLenum pname, GLint *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetVertexAttribIiv)(GLuint index, GLenum pname, GLint *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetVertexAttribIuivEXT)(GLuint index, GLenum pname, GLuint *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetVertexAttribIuiv)(GLuint index, GLenum pname, GLuint *params);
GLAPI void APIENTRY GLAPI_PREFIX(Uniform1uiEXT)(GLint location, GLuint x);
GLAPI void APIENTRY GLAPI_PREFIX(Uniform1ui)(GLint location, GLuint x);
GLAPI void APIENTRY GLAPI_PREFIX(Uniform1uivEXT)(GLint location, GLsizei count, const GLuint *value);
GLAPI void APIENTRY GLAPI_PREFIX(Uniform1uiv)(GLint location, GLsizei count, const GLuint *value);
GLAPI void APIENTRY GLAPI_PREFIX(Uniform2uiEXT)(GLint location, GLuint x, GLuint y);
GLAPI void APIENTRY GLAPI_PREFIX(Uniform2ui)(GLint location, GLuint x, GLuint y);
GLAPI void APIENTRY GLAPI_PREFIX(Uniform2uivEXT)(GLint location, GLsizei count, const GLuint *value);
GLAPI void APIENTRY GLAPI_PREFIX(Uniform2uiv)(GLint location, GLsizei count, const GLuint *value);
GLAPI void APIENTRY GLAPI_PREFIX(Uniform3uiEXT)(GLint location, GLuint x, GLuint y, GLuint z);
GLAPI void APIENTRY GLAPI_PREFIX(Uniform3ui)(GLint location, GLuint x, GLuint y, GLuint z);
GLAPI void APIENTRY GLAPI_PREFIX(Uniform3uivEXT)(GLint location, GLsizei count, const GLuint *value);
GLAPI void APIENTRY GLAPI_PREFIX(Uniform3uiv)(GLint location, GLsizei count, const GLuint *value);
GLAPI void APIENTRY GLAPI_PREFIX(Uniform4uiEXT)(GLint location, GLuint x, GLuint y, GLuint z, GLuint w);
GLAPI void APIENTRY GLAPI_PREFIX(Uniform4ui)(GLint location, GLuint x, GLuint y, GLuint z, GLuint w);
GLAPI void APIENTRY GLAPI_PREFIX(Uniform4uivEXT)(GLint location, GLsizei count, const GLuint *value);
GLAPI void APIENTRY GLAPI_PREFIX(Uniform4uiv)(GLint location, GLsizei count, const GLuint *value);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI1iEXT)(GLuint index, GLint x);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI1i)(GLuint index, GLint x);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI1ivEXT)(GLuint index, const GLint *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI1iv)(GLuint index, const GLint *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI1uiEXT)(GLuint index, GLuint x);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI1ui)(GLuint index, GLuint x);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI1uivEXT)(GLuint index, const GLuint *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI1uiv)(GLuint index, const GLuint *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI2iEXT)(GLuint index, GLint x, GLint y);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI2i)(GLuint index, GLint x, GLint y);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI2ivEXT)(GLuint index, const GLint *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI2iv)(GLuint index, const GLint *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI2uiEXT)(GLuint index, GLuint x, GLuint y);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI2ui)(GLuint index, GLuint x, GLuint y);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI2uivEXT)(GLuint index, const GLuint *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI2uiv)(GLuint index, const GLuint *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI3iEXT)(GLuint index, GLint x, GLint y, GLint z);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI3i)(GLuint index, GLint x, GLint y, GLint z);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI3ivEXT)(GLuint index, const GLint *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI3iv)(GLuint index, const GLint *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI3uiEXT)(GLuint index, GLuint x, GLuint y, GLuint z);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI3ui)(GLuint index, GLuint x, GLuint y, GLuint z);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI3uivEXT)(GLuint index, const GLuint *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI3uiv)(GLuint index, const GLuint *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI4bvEXT)(GLuint index, const GLbyte *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI4bv)(GLuint index, const GLbyte *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI4iEXT)(GLuint index, GLint x, GLint y, GLint z, GLint w);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI4i)(GLuint index, GLint x, GLint y, GLint z, GLint w);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI4ivEXT)(GLuint index, const GLint *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI4iv)(GLuint index, const GLint *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI4svEXT)(GLuint index, const GLshort *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI4sv)(GLuint index, const GLshort *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI4ubvEXT)(GLuint index, const GLubyte *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI4ubv)(GLuint index, const GLubyte *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI4uiEXT)(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI4ui)(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI4uivEXT)(GLuint index, const GLuint *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI4uiv)(GLuint index, const GLuint *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI4usvEXT)(GLuint index, const GLushort *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI4usv)(GLuint index, const GLushort *v);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribIPointerEXT)(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribIPointer)(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
GLAPI void APIENTRY GLAPI_PREFIX(FramebufferTextureLayerEXT)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
GLAPI void APIENTRY GLAPI_PREFIX(FramebufferTextureLayer)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
GLAPI void APIENTRY GLAPI_PREFIX(FramebufferTextureLayerARB)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
GLAPI void APIENTRY GLAPI_PREFIX(ColorMaskIndexedEXT)(GLuint buf, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
GLAPI void APIENTRY GLAPI_PREFIX(ColorMaski)(GLuint buf, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
GLAPI void APIENTRY GLAPI_PREFIX(DisableIndexedEXT)(GLenum target, GLuint index);
GLAPI void APIENTRY GLAPI_PREFIX(Disablei)(GLenum target, GLuint index);
GLAPI void APIENTRY GLAPI_PREFIX(EnableIndexedEXT)(GLenum target, GLuint index);
GLAPI void APIENTRY GLAPI_PREFIX(Enablei)(GLenum target, GLuint index);
GLAPI void APIENTRY GLAPI_PREFIX(GetBooleanIndexedvEXT)(GLenum value, GLuint index, GLboolean *data);
GLAPI void APIENTRY GLAPI_PREFIX(GetBooleani_v)(GLenum value, GLuint index, GLboolean *data);
GLAPI void APIENTRY GLAPI_PREFIX(GetIntegerIndexedvEXT)(GLenum value, GLuint index, GLint *data);
GLAPI void APIENTRY GLAPI_PREFIX(GetIntegeri_v)(GLenum value, GLuint index, GLint *data);
GLAPI GLboolean APIENTRY GLAPI_PREFIX(IsEnabledIndexedEXT)(GLenum target, GLuint index);
GLAPI GLboolean APIENTRY GLAPI_PREFIX(IsEnabledi)(GLenum target, GLuint index);
GLAPI void APIENTRY GLAPI_PREFIX(ClearColorIiEXT)(GLint r, GLint g, GLint b, GLint a);
GLAPI void APIENTRY GLAPI_PREFIX(ClearColorIuiEXT)(GLuint r, GLuint g, GLuint b, GLuint a);
GLAPI void APIENTRY GLAPI_PREFIX(GetTexParameterIivEXT)(GLenum target, GLenum pname, GLint *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetTexParameterIiv)(GLenum target, GLenum pname, GLint *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetTexParameterIuivEXT)(GLenum target, GLenum pname, GLuint *params);
GLAPI void APIENTRY GLAPI_PREFIX(GetTexParameterIuiv)(GLenum target, GLenum pname, GLuint *params);
GLAPI void APIENTRY GLAPI_PREFIX(TexParameterIivEXT)(GLenum target, GLenum pname, const GLint *params);
GLAPI void APIENTRY GLAPI_PREFIX(TexParameterIiv)(GLenum target, GLenum pname, const GLint *params);
GLAPI void APIENTRY GLAPI_PREFIX(TexParameterIuivEXT)(GLenum target, GLenum pname, const GLuint *params);
GLAPI void APIENTRY GLAPI_PREFIX(TexParameterIuiv)(GLenum target, GLenum pname, const GLuint *params);
GLAPI void APIENTRY GLAPI_PREFIX(BeginConditionalRenderNV)(GLuint query, GLenum mode);
GLAPI void APIENTRY GLAPI_PREFIX(BeginConditionalRender)(GLuint query, GLenum mode);
GLAPI void APIENTRY GLAPI_PREFIX(EndConditionalRenderNV)(void);
GLAPI void APIENTRY GLAPI_PREFIX(EndConditionalRender)(void);
GLAPI void APIENTRY GLAPI_PREFIX(BeginTransformFeedbackEXT)(GLenum mode);
GLAPI void APIENTRY GLAPI_PREFIX(BeginTransformFeedback)(GLenum mode);
GLAPI void APIENTRY GLAPI_PREFIX(BindBufferBaseEXT)(GLenum target, GLuint index, GLuint buffer);
GLAPI void APIENTRY GLAPI_PREFIX(BindBufferBase)(GLenum target, GLuint index, GLuint buffer);
GLAPI void APIENTRY GLAPI_PREFIX(BindBufferOffsetEXT)(GLenum target, GLuint index, GLuint buffer, GLintptr offset);
GLAPI void APIENTRY GLAPI_PREFIX(BindBufferRangeEXT)(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
GLAPI void APIENTRY GLAPI_PREFIX(BindBufferRange)(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
GLAPI void APIENTRY GLAPI_PREFIX(EndTransformFeedbackEXT)(void);
GLAPI void APIENTRY GLAPI_PREFIX(EndTransformFeedback)(void);
GLAPI void APIENTRY GLAPI_PREFIX(GetTransformFeedbackVaryingEXT)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
GLAPI void APIENTRY GLAPI_PREFIX(GetTransformFeedbackVarying)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
GLAPI void APIENTRY GLAPI_PREFIX(TransformFeedbackVaryingsEXT)(GLuint program, GLsizei count, const char **varyings, GLenum bufferMode);
GLAPI void APIENTRY GLAPI_PREFIX(TransformFeedbackVaryings)(GLuint program, GLsizei count, const GLchar * const *varyings, GLenum bufferMode);
GLAPI void APIENTRY GLAPI_PREFIX(ProvokingVertexEXT)(GLenum mode);
GLAPI void APIENTRY GLAPI_PREFIX(ProvokingVertex)(GLenum mode);
GLAPI void APIENTRY GLAPI_PREFIX(GetObjectParameterivAPPLE)(GLenum objectType, GLuint name, GLenum pname, GLint *value);
GLAPI GLenum APIENTRY GLAPI_PREFIX(ObjectPurgeableAPPLE)(GLenum objectType, GLuint name, GLenum option);
GLAPI GLenum APIENTRY GLAPI_PREFIX(ObjectUnpurgeableAPPLE)(GLenum objectType, GLuint name, GLenum option);
GLAPI void APIENTRY GLAPI_PREFIX(ActiveProgramEXT)(GLuint program);
GLAPI GLuint APIENTRY GLAPI_PREFIX(CreateShaderProgramEXT)(GLenum type, const GLchar *string);
GLAPI void APIENTRY GLAPI_PREFIX(UseShaderProgramEXT)(GLenum type, GLuint program);
GLAPI void APIENTRY GLAPI_PREFIX(TextureBarrierNV)(void);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_1022)(GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_1023)(GLenum target, GLuint index, GLsizei count, const GLfloat *params);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_1024)(GLenum target, GLuint index, GLsizei count, const GLfloat *params);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_1025)(GLuint id, GLenum pname, GLint64EXT *params);
void APIENTRY GLAPI_PREFIX(_dispatch_stub_1026)(GLuint id, GLenum pname, GLuint64EXT *params);
GLAPI void APIENTRY GLAPI_PREFIX(EGLImageTargetRenderbufferStorageOES)(GLenum target, GLvoid *writeOffset);
GLAPI void APIENTRY GLAPI_PREFIX(EGLImageTargetTexture2DOES)(GLenum target, GLvoid *writeOffset);
#undef MAPI_TMP_DEFINES
#endif /* MAPI_TMP_DEFINES */

#ifdef MAPI_TMP_PUBLIC_ENTRIES_NO_HIDDEN
GLAPI void APIENTRY GLAPI_PREFIX(NewList)(GLuint list, GLenum mode)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[0];
   ((void (APIENTRY *)(GLuint list, GLenum mode)) _func)(list, mode);
}

GLAPI void APIENTRY GLAPI_PREFIX(EndList)(void)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[1];
   ((void (APIENTRY *)(void)) _func)();
}

GLAPI void APIENTRY GLAPI_PREFIX(CallList)(GLuint list)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[2];
   ((void (APIENTRY *)(GLuint list)) _func)(list);
}

GLAPI void APIENTRY GLAPI_PREFIX(CallLists)(GLsizei n, GLenum type, const GLvoid *lists)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[3];
   ((void (APIENTRY *)(GLsizei n, GLenum type, const GLvoid *lists)) _func)(n, type, lists);
}

GLAPI void APIENTRY GLAPI_PREFIX(DeleteLists)(GLuint list, GLsizei range)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[4];
   ((void (APIENTRY *)(GLuint list, GLsizei range)) _func)(list, range);
}

GLAPI GLuint APIENTRY GLAPI_PREFIX(GenLists)(GLsizei range)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[5];
   return ((GLuint (APIENTRY *)(GLsizei range)) _func)(range);
}

GLAPI void APIENTRY GLAPI_PREFIX(ListBase)(GLuint base)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[6];
   ((void (APIENTRY *)(GLuint base)) _func)(base);
}

GLAPI void APIENTRY GLAPI_PREFIX(Begin)(GLenum mode)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[7];
   ((void (APIENTRY *)(GLenum mode)) _func)(mode);
}

GLAPI void APIENTRY GLAPI_PREFIX(Bitmap)(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[8];
   ((void (APIENTRY *)(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap)) _func)(width, height, xorig, yorig, xmove, ymove, bitmap);
}

GLAPI void APIENTRY GLAPI_PREFIX(Color3b)(GLbyte red, GLbyte green, GLbyte blue)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[9];
   ((void (APIENTRY *)(GLbyte red, GLbyte green, GLbyte blue)) _func)(red, green, blue);
}

GLAPI void APIENTRY GLAPI_PREFIX(Color3bv)(const GLbyte *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[10];
   ((void (APIENTRY *)(const GLbyte *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(Color3d)(GLdouble red, GLdouble green, GLdouble blue)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[11];
   ((void (APIENTRY *)(GLdouble red, GLdouble green, GLdouble blue)) _func)(red, green, blue);
}

GLAPI void APIENTRY GLAPI_PREFIX(Color3dv)(const GLdouble *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[12];
   ((void (APIENTRY *)(const GLdouble *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(Color3f)(GLfloat red, GLfloat green, GLfloat blue)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[13];
   ((void (APIENTRY *)(GLfloat red, GLfloat green, GLfloat blue)) _func)(red, green, blue);
}

GLAPI void APIENTRY GLAPI_PREFIX(Color3fv)(const GLfloat *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[14];
   ((void (APIENTRY *)(const GLfloat *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(Color3i)(GLint red, GLint green, GLint blue)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[15];
   ((void (APIENTRY *)(GLint red, GLint green, GLint blue)) _func)(red, green, blue);
}

GLAPI void APIENTRY GLAPI_PREFIX(Color3iv)(const GLint *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[16];
   ((void (APIENTRY *)(const GLint *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(Color3s)(GLshort red, GLshort green, GLshort blue)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[17];
   ((void (APIENTRY *)(GLshort red, GLshort green, GLshort blue)) _func)(red, green, blue);
}

GLAPI void APIENTRY GLAPI_PREFIX(Color3sv)(const GLshort *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[18];
   ((void (APIENTRY *)(const GLshort *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(Color3ub)(GLubyte red, GLubyte green, GLubyte blue)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[19];
   ((void (APIENTRY *)(GLubyte red, GLubyte green, GLubyte blue)) _func)(red, green, blue);
}

GLAPI void APIENTRY GLAPI_PREFIX(Color3ubv)(const GLubyte *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[20];
   ((void (APIENTRY *)(const GLubyte *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(Color3ui)(GLuint red, GLuint green, GLuint blue)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[21];
   ((void (APIENTRY *)(GLuint red, GLuint green, GLuint blue)) _func)(red, green, blue);
}

GLAPI void APIENTRY GLAPI_PREFIX(Color3uiv)(const GLuint *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[22];
   ((void (APIENTRY *)(const GLuint *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(Color3us)(GLushort red, GLushort green, GLushort blue)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[23];
   ((void (APIENTRY *)(GLushort red, GLushort green, GLushort blue)) _func)(red, green, blue);
}

GLAPI void APIENTRY GLAPI_PREFIX(Color3usv)(const GLushort *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[24];
   ((void (APIENTRY *)(const GLushort *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(Color4b)(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[25];
   ((void (APIENTRY *)(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha)) _func)(red, green, blue, alpha);
}

GLAPI void APIENTRY GLAPI_PREFIX(Color4bv)(const GLbyte *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[26];
   ((void (APIENTRY *)(const GLbyte *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(Color4d)(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[27];
   ((void (APIENTRY *)(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha)) _func)(red, green, blue, alpha);
}

GLAPI void APIENTRY GLAPI_PREFIX(Color4dv)(const GLdouble *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[28];
   ((void (APIENTRY *)(const GLdouble *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(Color4f)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[29];
   ((void (APIENTRY *)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)) _func)(red, green, blue, alpha);
}

GLAPI void APIENTRY GLAPI_PREFIX(Color4fv)(const GLfloat *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[30];
   ((void (APIENTRY *)(const GLfloat *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(Color4i)(GLint red, GLint green, GLint blue, GLint alpha)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[31];
   ((void (APIENTRY *)(GLint red, GLint green, GLint blue, GLint alpha)) _func)(red, green, blue, alpha);
}

GLAPI void APIENTRY GLAPI_PREFIX(Color4iv)(const GLint *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[32];
   ((void (APIENTRY *)(const GLint *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(Color4s)(GLshort red, GLshort green, GLshort blue, GLshort alpha)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[33];
   ((void (APIENTRY *)(GLshort red, GLshort green, GLshort blue, GLshort alpha)) _func)(red, green, blue, alpha);
}

GLAPI void APIENTRY GLAPI_PREFIX(Color4sv)(const GLshort *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[34];
   ((void (APIENTRY *)(const GLshort *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(Color4ub)(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[35];
   ((void (APIENTRY *)(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha)) _func)(red, green, blue, alpha);
}

GLAPI void APIENTRY GLAPI_PREFIX(Color4ubv)(const GLubyte *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[36];
   ((void (APIENTRY *)(const GLubyte *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(Color4ui)(GLuint red, GLuint green, GLuint blue, GLuint alpha)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[37];
   ((void (APIENTRY *)(GLuint red, GLuint green, GLuint blue, GLuint alpha)) _func)(red, green, blue, alpha);
}

GLAPI void APIENTRY GLAPI_PREFIX(Color4uiv)(const GLuint *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[38];
   ((void (APIENTRY *)(const GLuint *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(Color4us)(GLushort red, GLushort green, GLushort blue, GLushort alpha)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[39];
   ((void (APIENTRY *)(GLushort red, GLushort green, GLushort blue, GLushort alpha)) _func)(red, green, blue, alpha);
}

GLAPI void APIENTRY GLAPI_PREFIX(Color4usv)(const GLushort *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[40];
   ((void (APIENTRY *)(const GLushort *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(EdgeFlag)(GLboolean flag)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[41];
   ((void (APIENTRY *)(GLboolean flag)) _func)(flag);
}

GLAPI void APIENTRY GLAPI_PREFIX(EdgeFlagv)(const GLboolean *flag)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[42];
   ((void (APIENTRY *)(const GLboolean *flag)) _func)(flag);
}

GLAPI void APIENTRY GLAPI_PREFIX(End)(void)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[43];
   ((void (APIENTRY *)(void)) _func)();
}

GLAPI void APIENTRY GLAPI_PREFIX(Indexd)(GLdouble c)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[44];
   ((void (APIENTRY *)(GLdouble c)) _func)(c);
}

GLAPI void APIENTRY GLAPI_PREFIX(Indexdv)(const GLdouble *c)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[45];
   ((void (APIENTRY *)(const GLdouble *c)) _func)(c);
}

GLAPI void APIENTRY GLAPI_PREFIX(Indexf)(GLfloat c)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[46];
   ((void (APIENTRY *)(GLfloat c)) _func)(c);
}

GLAPI void APIENTRY GLAPI_PREFIX(Indexfv)(const GLfloat *c)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[47];
   ((void (APIENTRY *)(const GLfloat *c)) _func)(c);
}

GLAPI void APIENTRY GLAPI_PREFIX(Indexi)(GLint c)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[48];
   ((void (APIENTRY *)(GLint c)) _func)(c);
}

GLAPI void APIENTRY GLAPI_PREFIX(Indexiv)(const GLint *c)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[49];
   ((void (APIENTRY *)(const GLint *c)) _func)(c);
}

GLAPI void APIENTRY GLAPI_PREFIX(Indexs)(GLshort c)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[50];
   ((void (APIENTRY *)(GLshort c)) _func)(c);
}

GLAPI void APIENTRY GLAPI_PREFIX(Indexsv)(const GLshort *c)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[51];
   ((void (APIENTRY *)(const GLshort *c)) _func)(c);
}

GLAPI void APIENTRY GLAPI_PREFIX(Normal3b)(GLbyte nx, GLbyte ny, GLbyte nz)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[52];
   ((void (APIENTRY *)(GLbyte nx, GLbyte ny, GLbyte nz)) _func)(nx, ny, nz);
}

GLAPI void APIENTRY GLAPI_PREFIX(Normal3bv)(const GLbyte *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[53];
   ((void (APIENTRY *)(const GLbyte *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(Normal3d)(GLdouble nx, GLdouble ny, GLdouble nz)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[54];
   ((void (APIENTRY *)(GLdouble nx, GLdouble ny, GLdouble nz)) _func)(nx, ny, nz);
}

GLAPI void APIENTRY GLAPI_PREFIX(Normal3dv)(const GLdouble *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[55];
   ((void (APIENTRY *)(const GLdouble *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(Normal3f)(GLfloat nx, GLfloat ny, GLfloat nz)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[56];
   ((void (APIENTRY *)(GLfloat nx, GLfloat ny, GLfloat nz)) _func)(nx, ny, nz);
}

GLAPI void APIENTRY GLAPI_PREFIX(Normal3fv)(const GLfloat *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[57];
   ((void (APIENTRY *)(const GLfloat *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(Normal3i)(GLint nx, GLint ny, GLint nz)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[58];
   ((void (APIENTRY *)(GLint nx, GLint ny, GLint nz)) _func)(nx, ny, nz);
}

GLAPI void APIENTRY GLAPI_PREFIX(Normal3iv)(const GLint *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[59];
   ((void (APIENTRY *)(const GLint *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(Normal3s)(GLshort nx, GLshort ny, GLshort nz)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[60];
   ((void (APIENTRY *)(GLshort nx, GLshort ny, GLshort nz)) _func)(nx, ny, nz);
}

GLAPI void APIENTRY GLAPI_PREFIX(Normal3sv)(const GLshort *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[61];
   ((void (APIENTRY *)(const GLshort *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(RasterPos2d)(GLdouble x, GLdouble y)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[62];
   ((void (APIENTRY *)(GLdouble x, GLdouble y)) _func)(x, y);
}

GLAPI void APIENTRY GLAPI_PREFIX(RasterPos2dv)(const GLdouble *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[63];
   ((void (APIENTRY *)(const GLdouble *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(RasterPos2f)(GLfloat x, GLfloat y)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[64];
   ((void (APIENTRY *)(GLfloat x, GLfloat y)) _func)(x, y);
}

GLAPI void APIENTRY GLAPI_PREFIX(RasterPos2fv)(const GLfloat *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[65];
   ((void (APIENTRY *)(const GLfloat *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(RasterPos2i)(GLint x, GLint y)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[66];
   ((void (APIENTRY *)(GLint x, GLint y)) _func)(x, y);
}

GLAPI void APIENTRY GLAPI_PREFIX(RasterPos2iv)(const GLint *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[67];
   ((void (APIENTRY *)(const GLint *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(RasterPos2s)(GLshort x, GLshort y)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[68];
   ((void (APIENTRY *)(GLshort x, GLshort y)) _func)(x, y);
}

GLAPI void APIENTRY GLAPI_PREFIX(RasterPos2sv)(const GLshort *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[69];
   ((void (APIENTRY *)(const GLshort *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(RasterPos3d)(GLdouble x, GLdouble y, GLdouble z)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[70];
   ((void (APIENTRY *)(GLdouble x, GLdouble y, GLdouble z)) _func)(x, y, z);
}

GLAPI void APIENTRY GLAPI_PREFIX(RasterPos3dv)(const GLdouble *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[71];
   ((void (APIENTRY *)(const GLdouble *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(RasterPos3f)(GLfloat x, GLfloat y, GLfloat z)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[72];
   ((void (APIENTRY *)(GLfloat x, GLfloat y, GLfloat z)) _func)(x, y, z);
}

GLAPI void APIENTRY GLAPI_PREFIX(RasterPos3fv)(const GLfloat *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[73];
   ((void (APIENTRY *)(const GLfloat *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(RasterPos3i)(GLint x, GLint y, GLint z)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[74];
   ((void (APIENTRY *)(GLint x, GLint y, GLint z)) _func)(x, y, z);
}

GLAPI void APIENTRY GLAPI_PREFIX(RasterPos3iv)(const GLint *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[75];
   ((void (APIENTRY *)(const GLint *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(RasterPos3s)(GLshort x, GLshort y, GLshort z)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[76];
   ((void (APIENTRY *)(GLshort x, GLshort y, GLshort z)) _func)(x, y, z);
}

GLAPI void APIENTRY GLAPI_PREFIX(RasterPos3sv)(const GLshort *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[77];
   ((void (APIENTRY *)(const GLshort *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(RasterPos4d)(GLdouble x, GLdouble y, GLdouble z, GLdouble w)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[78];
   ((void (APIENTRY *)(GLdouble x, GLdouble y, GLdouble z, GLdouble w)) _func)(x, y, z, w);
}

GLAPI void APIENTRY GLAPI_PREFIX(RasterPos4dv)(const GLdouble *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[79];
   ((void (APIENTRY *)(const GLdouble *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(RasterPos4f)(GLfloat x, GLfloat y, GLfloat z, GLfloat w)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[80];
   ((void (APIENTRY *)(GLfloat x, GLfloat y, GLfloat z, GLfloat w)) _func)(x, y, z, w);
}

GLAPI void APIENTRY GLAPI_PREFIX(RasterPos4fv)(const GLfloat *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[81];
   ((void (APIENTRY *)(const GLfloat *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(RasterPos4i)(GLint x, GLint y, GLint z, GLint w)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[82];
   ((void (APIENTRY *)(GLint x, GLint y, GLint z, GLint w)) _func)(x, y, z, w);
}

GLAPI void APIENTRY GLAPI_PREFIX(RasterPos4iv)(const GLint *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[83];
   ((void (APIENTRY *)(const GLint *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(RasterPos4s)(GLshort x, GLshort y, GLshort z, GLshort w)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[84];
   ((void (APIENTRY *)(GLshort x, GLshort y, GLshort z, GLshort w)) _func)(x, y, z, w);
}

GLAPI void APIENTRY GLAPI_PREFIX(RasterPos4sv)(const GLshort *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[85];
   ((void (APIENTRY *)(const GLshort *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(Rectd)(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[86];
   ((void (APIENTRY *)(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2)) _func)(x1, y1, x2, y2);
}

GLAPI void APIENTRY GLAPI_PREFIX(Rectdv)(const GLdouble *v1, const GLdouble *v2)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[87];
   ((void (APIENTRY *)(const GLdouble *v1, const GLdouble *v2)) _func)(v1, v2);
}

GLAPI void APIENTRY GLAPI_PREFIX(Rectf)(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[88];
   ((void (APIENTRY *)(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2)) _func)(x1, y1, x2, y2);
}

GLAPI void APIENTRY GLAPI_PREFIX(Rectfv)(const GLfloat *v1, const GLfloat *v2)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[89];
   ((void (APIENTRY *)(const GLfloat *v1, const GLfloat *v2)) _func)(v1, v2);
}

GLAPI void APIENTRY GLAPI_PREFIX(Recti)(GLint x1, GLint y1, GLint x2, GLint y2)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[90];
   ((void (APIENTRY *)(GLint x1, GLint y1, GLint x2, GLint y2)) _func)(x1, y1, x2, y2);
}

GLAPI void APIENTRY GLAPI_PREFIX(Rectiv)(const GLint *v1, const GLint *v2)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[91];
   ((void (APIENTRY *)(const GLint *v1, const GLint *v2)) _func)(v1, v2);
}

GLAPI void APIENTRY GLAPI_PREFIX(Rects)(GLshort x1, GLshort y1, GLshort x2, GLshort y2)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[92];
   ((void (APIENTRY *)(GLshort x1, GLshort y1, GLshort x2, GLshort y2)) _func)(x1, y1, x2, y2);
}

GLAPI void APIENTRY GLAPI_PREFIX(Rectsv)(const GLshort *v1, const GLshort *v2)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[93];
   ((void (APIENTRY *)(const GLshort *v1, const GLshort *v2)) _func)(v1, v2);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexCoord1d)(GLdouble s)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[94];
   ((void (APIENTRY *)(GLdouble s)) _func)(s);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexCoord1dv)(const GLdouble *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[95];
   ((void (APIENTRY *)(const GLdouble *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexCoord1f)(GLfloat s)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[96];
   ((void (APIENTRY *)(GLfloat s)) _func)(s);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexCoord1fv)(const GLfloat *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[97];
   ((void (APIENTRY *)(const GLfloat *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexCoord1i)(GLint s)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[98];
   ((void (APIENTRY *)(GLint s)) _func)(s);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexCoord1iv)(const GLint *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[99];
   ((void (APIENTRY *)(const GLint *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexCoord1s)(GLshort s)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[100];
   ((void (APIENTRY *)(GLshort s)) _func)(s);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexCoord1sv)(const GLshort *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[101];
   ((void (APIENTRY *)(const GLshort *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexCoord2d)(GLdouble s, GLdouble t)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[102];
   ((void (APIENTRY *)(GLdouble s, GLdouble t)) _func)(s, t);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexCoord2dv)(const GLdouble *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[103];
   ((void (APIENTRY *)(const GLdouble *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexCoord2f)(GLfloat s, GLfloat t)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[104];
   ((void (APIENTRY *)(GLfloat s, GLfloat t)) _func)(s, t);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexCoord2fv)(const GLfloat *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[105];
   ((void (APIENTRY *)(const GLfloat *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexCoord2i)(GLint s, GLint t)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[106];
   ((void (APIENTRY *)(GLint s, GLint t)) _func)(s, t);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexCoord2iv)(const GLint *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[107];
   ((void (APIENTRY *)(const GLint *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexCoord2s)(GLshort s, GLshort t)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[108];
   ((void (APIENTRY *)(GLshort s, GLshort t)) _func)(s, t);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexCoord2sv)(const GLshort *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[109];
   ((void (APIENTRY *)(const GLshort *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexCoord3d)(GLdouble s, GLdouble t, GLdouble r)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[110];
   ((void (APIENTRY *)(GLdouble s, GLdouble t, GLdouble r)) _func)(s, t, r);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexCoord3dv)(const GLdouble *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[111];
   ((void (APIENTRY *)(const GLdouble *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexCoord3f)(GLfloat s, GLfloat t, GLfloat r)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[112];
   ((void (APIENTRY *)(GLfloat s, GLfloat t, GLfloat r)) _func)(s, t, r);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexCoord3fv)(const GLfloat *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[113];
   ((void (APIENTRY *)(const GLfloat *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexCoord3i)(GLint s, GLint t, GLint r)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[114];
   ((void (APIENTRY *)(GLint s, GLint t, GLint r)) _func)(s, t, r);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexCoord3iv)(const GLint *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[115];
   ((void (APIENTRY *)(const GLint *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexCoord3s)(GLshort s, GLshort t, GLshort r)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[116];
   ((void (APIENTRY *)(GLshort s, GLshort t, GLshort r)) _func)(s, t, r);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexCoord3sv)(const GLshort *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[117];
   ((void (APIENTRY *)(const GLshort *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexCoord4d)(GLdouble s, GLdouble t, GLdouble r, GLdouble q)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[118];
   ((void (APIENTRY *)(GLdouble s, GLdouble t, GLdouble r, GLdouble q)) _func)(s, t, r, q);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexCoord4dv)(const GLdouble *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[119];
   ((void (APIENTRY *)(const GLdouble *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexCoord4f)(GLfloat s, GLfloat t, GLfloat r, GLfloat q)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[120];
   ((void (APIENTRY *)(GLfloat s, GLfloat t, GLfloat r, GLfloat q)) _func)(s, t, r, q);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexCoord4fv)(const GLfloat *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[121];
   ((void (APIENTRY *)(const GLfloat *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexCoord4i)(GLint s, GLint t, GLint r, GLint q)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[122];
   ((void (APIENTRY *)(GLint s, GLint t, GLint r, GLint q)) _func)(s, t, r, q);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexCoord4iv)(const GLint *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[123];
   ((void (APIENTRY *)(const GLint *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexCoord4s)(GLshort s, GLshort t, GLshort r, GLshort q)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[124];
   ((void (APIENTRY *)(GLshort s, GLshort t, GLshort r, GLshort q)) _func)(s, t, r, q);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexCoord4sv)(const GLshort *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[125];
   ((void (APIENTRY *)(const GLshort *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(Vertex2d)(GLdouble x, GLdouble y)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[126];
   ((void (APIENTRY *)(GLdouble x, GLdouble y)) _func)(x, y);
}

GLAPI void APIENTRY GLAPI_PREFIX(Vertex2dv)(const GLdouble *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[127];
   ((void (APIENTRY *)(const GLdouble *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(Vertex2f)(GLfloat x, GLfloat y)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[128];
   ((void (APIENTRY *)(GLfloat x, GLfloat y)) _func)(x, y);
}

GLAPI void APIENTRY GLAPI_PREFIX(Vertex2fv)(const GLfloat *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[129];
   ((void (APIENTRY *)(const GLfloat *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(Vertex2i)(GLint x, GLint y)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[130];
   ((void (APIENTRY *)(GLint x, GLint y)) _func)(x, y);
}

GLAPI void APIENTRY GLAPI_PREFIX(Vertex2iv)(const GLint *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[131];
   ((void (APIENTRY *)(const GLint *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(Vertex2s)(GLshort x, GLshort y)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[132];
   ((void (APIENTRY *)(GLshort x, GLshort y)) _func)(x, y);
}

GLAPI void APIENTRY GLAPI_PREFIX(Vertex2sv)(const GLshort *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[133];
   ((void (APIENTRY *)(const GLshort *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(Vertex3d)(GLdouble x, GLdouble y, GLdouble z)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[134];
   ((void (APIENTRY *)(GLdouble x, GLdouble y, GLdouble z)) _func)(x, y, z);
}

GLAPI void APIENTRY GLAPI_PREFIX(Vertex3dv)(const GLdouble *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[135];
   ((void (APIENTRY *)(const GLdouble *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(Vertex3f)(GLfloat x, GLfloat y, GLfloat z)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[136];
   ((void (APIENTRY *)(GLfloat x, GLfloat y, GLfloat z)) _func)(x, y, z);
}

GLAPI void APIENTRY GLAPI_PREFIX(Vertex3fv)(const GLfloat *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[137];
   ((void (APIENTRY *)(const GLfloat *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(Vertex3i)(GLint x, GLint y, GLint z)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[138];
   ((void (APIENTRY *)(GLint x, GLint y, GLint z)) _func)(x, y, z);
}

GLAPI void APIENTRY GLAPI_PREFIX(Vertex3iv)(const GLint *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[139];
   ((void (APIENTRY *)(const GLint *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(Vertex3s)(GLshort x, GLshort y, GLshort z)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[140];
   ((void (APIENTRY *)(GLshort x, GLshort y, GLshort z)) _func)(x, y, z);
}

GLAPI void APIENTRY GLAPI_PREFIX(Vertex3sv)(const GLshort *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[141];
   ((void (APIENTRY *)(const GLshort *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(Vertex4d)(GLdouble x, GLdouble y, GLdouble z, GLdouble w)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[142];
   ((void (APIENTRY *)(GLdouble x, GLdouble y, GLdouble z, GLdouble w)) _func)(x, y, z, w);
}

GLAPI void APIENTRY GLAPI_PREFIX(Vertex4dv)(const GLdouble *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[143];
   ((void (APIENTRY *)(const GLdouble *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(Vertex4f)(GLfloat x, GLfloat y, GLfloat z, GLfloat w)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[144];
   ((void (APIENTRY *)(GLfloat x, GLfloat y, GLfloat z, GLfloat w)) _func)(x, y, z, w);
}

GLAPI void APIENTRY GLAPI_PREFIX(Vertex4fv)(const GLfloat *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[145];
   ((void (APIENTRY *)(const GLfloat *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(Vertex4i)(GLint x, GLint y, GLint z, GLint w)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[146];
   ((void (APIENTRY *)(GLint x, GLint y, GLint z, GLint w)) _func)(x, y, z, w);
}

GLAPI void APIENTRY GLAPI_PREFIX(Vertex4iv)(const GLint *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[147];
   ((void (APIENTRY *)(const GLint *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(Vertex4s)(GLshort x, GLshort y, GLshort z, GLshort w)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[148];
   ((void (APIENTRY *)(GLshort x, GLshort y, GLshort z, GLshort w)) _func)(x, y, z, w);
}

GLAPI void APIENTRY GLAPI_PREFIX(Vertex4sv)(const GLshort *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[149];
   ((void (APIENTRY *)(const GLshort *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(ClipPlane)(GLenum plane, const GLdouble *equation)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[150];
   ((void (APIENTRY *)(GLenum plane, const GLdouble *equation)) _func)(plane, equation);
}

GLAPI void APIENTRY GLAPI_PREFIX(ColorMaterial)(GLenum face, GLenum mode)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[151];
   ((void (APIENTRY *)(GLenum face, GLenum mode)) _func)(face, mode);
}

GLAPI void APIENTRY GLAPI_PREFIX(CullFace)(GLenum mode)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[152];
   ((void (APIENTRY *)(GLenum mode)) _func)(mode);
}

GLAPI void APIENTRY GLAPI_PREFIX(Fogf)(GLenum pname, GLfloat param)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[153];
   ((void (APIENTRY *)(GLenum pname, GLfloat param)) _func)(pname, param);
}

GLAPI void APIENTRY GLAPI_PREFIX(Fogfv)(GLenum pname, const GLfloat *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[154];
   ((void (APIENTRY *)(GLenum pname, const GLfloat *params)) _func)(pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(Fogi)(GLenum pname, GLint param)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[155];
   ((void (APIENTRY *)(GLenum pname, GLint param)) _func)(pname, param);
}

GLAPI void APIENTRY GLAPI_PREFIX(Fogiv)(GLenum pname, const GLint *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[156];
   ((void (APIENTRY *)(GLenum pname, const GLint *params)) _func)(pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(FrontFace)(GLenum mode)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[157];
   ((void (APIENTRY *)(GLenum mode)) _func)(mode);
}

GLAPI void APIENTRY GLAPI_PREFIX(Hint)(GLenum target, GLenum mode)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[158];
   ((void (APIENTRY *)(GLenum target, GLenum mode)) _func)(target, mode);
}

GLAPI void APIENTRY GLAPI_PREFIX(Lightf)(GLenum light, GLenum pname, GLfloat param)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[159];
   ((void (APIENTRY *)(GLenum light, GLenum pname, GLfloat param)) _func)(light, pname, param);
}

GLAPI void APIENTRY GLAPI_PREFIX(Lightfv)(GLenum light, GLenum pname, const GLfloat *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[160];
   ((void (APIENTRY *)(GLenum light, GLenum pname, const GLfloat *params)) _func)(light, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(Lighti)(GLenum light, GLenum pname, GLint param)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[161];
   ((void (APIENTRY *)(GLenum light, GLenum pname, GLint param)) _func)(light, pname, param);
}

GLAPI void APIENTRY GLAPI_PREFIX(Lightiv)(GLenum light, GLenum pname, const GLint *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[162];
   ((void (APIENTRY *)(GLenum light, GLenum pname, const GLint *params)) _func)(light, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(LightModelf)(GLenum pname, GLfloat param)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[163];
   ((void (APIENTRY *)(GLenum pname, GLfloat param)) _func)(pname, param);
}

GLAPI void APIENTRY GLAPI_PREFIX(LightModelfv)(GLenum pname, const GLfloat *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[164];
   ((void (APIENTRY *)(GLenum pname, const GLfloat *params)) _func)(pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(LightModeli)(GLenum pname, GLint param)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[165];
   ((void (APIENTRY *)(GLenum pname, GLint param)) _func)(pname, param);
}

GLAPI void APIENTRY GLAPI_PREFIX(LightModeliv)(GLenum pname, const GLint *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[166];
   ((void (APIENTRY *)(GLenum pname, const GLint *params)) _func)(pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(LineStipple)(GLint factor, GLushort pattern)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[167];
   ((void (APIENTRY *)(GLint factor, GLushort pattern)) _func)(factor, pattern);
}

GLAPI void APIENTRY GLAPI_PREFIX(LineWidth)(GLfloat width)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[168];
   ((void (APIENTRY *)(GLfloat width)) _func)(width);
}

GLAPI void APIENTRY GLAPI_PREFIX(Materialf)(GLenum face, GLenum pname, GLfloat param)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[169];
   ((void (APIENTRY *)(GLenum face, GLenum pname, GLfloat param)) _func)(face, pname, param);
}

GLAPI void APIENTRY GLAPI_PREFIX(Materialfv)(GLenum face, GLenum pname, const GLfloat *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[170];
   ((void (APIENTRY *)(GLenum face, GLenum pname, const GLfloat *params)) _func)(face, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(Materiali)(GLenum face, GLenum pname, GLint param)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[171];
   ((void (APIENTRY *)(GLenum face, GLenum pname, GLint param)) _func)(face, pname, param);
}

GLAPI void APIENTRY GLAPI_PREFIX(Materialiv)(GLenum face, GLenum pname, const GLint *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[172];
   ((void (APIENTRY *)(GLenum face, GLenum pname, const GLint *params)) _func)(face, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(PointSize)(GLfloat size)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[173];
   ((void (APIENTRY *)(GLfloat size)) _func)(size);
}

GLAPI void APIENTRY GLAPI_PREFIX(PolygonMode)(GLenum face, GLenum mode)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[174];
   ((void (APIENTRY *)(GLenum face, GLenum mode)) _func)(face, mode);
}

GLAPI void APIENTRY GLAPI_PREFIX(PolygonStipple)(const GLubyte *mask)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[175];
   ((void (APIENTRY *)(const GLubyte *mask)) _func)(mask);
}

GLAPI void APIENTRY GLAPI_PREFIX(Scissor)(GLint x, GLint y, GLsizei width, GLsizei height)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[176];
   ((void (APIENTRY *)(GLint x, GLint y, GLsizei width, GLsizei height)) _func)(x, y, width, height);
}

GLAPI void APIENTRY GLAPI_PREFIX(ShadeModel)(GLenum mode)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[177];
   ((void (APIENTRY *)(GLenum mode)) _func)(mode);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexParameterf)(GLenum target, GLenum pname, GLfloat param)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[178];
   ((void (APIENTRY *)(GLenum target, GLenum pname, GLfloat param)) _func)(target, pname, param);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexParameterfv)(GLenum target, GLenum pname, const GLfloat *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[179];
   ((void (APIENTRY *)(GLenum target, GLenum pname, const GLfloat *params)) _func)(target, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexParameteri)(GLenum target, GLenum pname, GLint param)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[180];
   ((void (APIENTRY *)(GLenum target, GLenum pname, GLint param)) _func)(target, pname, param);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexParameteriv)(GLenum target, GLenum pname, const GLint *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[181];
   ((void (APIENTRY *)(GLenum target, GLenum pname, const GLint *params)) _func)(target, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexImage1D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[182];
   ((void (APIENTRY *)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels)) _func)(target, level, internalformat, width, border, format, type, pixels);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexImage2D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[183];
   ((void (APIENTRY *)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels)) _func)(target, level, internalformat, width, height, border, format, type, pixels);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexEnvf)(GLenum target, GLenum pname, GLfloat param)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[184];
   ((void (APIENTRY *)(GLenum target, GLenum pname, GLfloat param)) _func)(target, pname, param);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexEnvfv)(GLenum target, GLenum pname, const GLfloat *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[185];
   ((void (APIENTRY *)(GLenum target, GLenum pname, const GLfloat *params)) _func)(target, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexEnvi)(GLenum target, GLenum pname, GLint param)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[186];
   ((void (APIENTRY *)(GLenum target, GLenum pname, GLint param)) _func)(target, pname, param);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexEnviv)(GLenum target, GLenum pname, const GLint *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[187];
   ((void (APIENTRY *)(GLenum target, GLenum pname, const GLint *params)) _func)(target, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexGend)(GLenum coord, GLenum pname, GLdouble param)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[188];
   ((void (APIENTRY *)(GLenum coord, GLenum pname, GLdouble param)) _func)(coord, pname, param);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexGendv)(GLenum coord, GLenum pname, const GLdouble *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[189];
   ((void (APIENTRY *)(GLenum coord, GLenum pname, const GLdouble *params)) _func)(coord, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexGenf)(GLenum coord, GLenum pname, GLfloat param)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[190];
   ((void (APIENTRY *)(GLenum coord, GLenum pname, GLfloat param)) _func)(coord, pname, param);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexGenfv)(GLenum coord, GLenum pname, const GLfloat *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[191];
   ((void (APIENTRY *)(GLenum coord, GLenum pname, const GLfloat *params)) _func)(coord, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexGeni)(GLenum coord, GLenum pname, GLint param)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[192];
   ((void (APIENTRY *)(GLenum coord, GLenum pname, GLint param)) _func)(coord, pname, param);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexGeniv)(GLenum coord, GLenum pname, const GLint *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[193];
   ((void (APIENTRY *)(GLenum coord, GLenum pname, const GLint *params)) _func)(coord, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(FeedbackBuffer)(GLsizei size, GLenum type, GLfloat *buffer)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[194];
   ((void (APIENTRY *)(GLsizei size, GLenum type, GLfloat *buffer)) _func)(size, type, buffer);
}

GLAPI void APIENTRY GLAPI_PREFIX(SelectBuffer)(GLsizei size, GLuint *buffer)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[195];
   ((void (APIENTRY *)(GLsizei size, GLuint *buffer)) _func)(size, buffer);
}

GLAPI GLint APIENTRY GLAPI_PREFIX(RenderMode)(GLenum mode)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[196];
   return ((GLint (APIENTRY *)(GLenum mode)) _func)(mode);
}

GLAPI void APIENTRY GLAPI_PREFIX(InitNames)(void)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[197];
   ((void (APIENTRY *)(void)) _func)();
}

GLAPI void APIENTRY GLAPI_PREFIX(LoadName)(GLuint name)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[198];
   ((void (APIENTRY *)(GLuint name)) _func)(name);
}

GLAPI void APIENTRY GLAPI_PREFIX(PassThrough)(GLfloat token)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[199];
   ((void (APIENTRY *)(GLfloat token)) _func)(token);
}

GLAPI void APIENTRY GLAPI_PREFIX(PopName)(void)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[200];
   ((void (APIENTRY *)(void)) _func)();
}

GLAPI void APIENTRY GLAPI_PREFIX(PushName)(GLuint name)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[201];
   ((void (APIENTRY *)(GLuint name)) _func)(name);
}

GLAPI void APIENTRY GLAPI_PREFIX(DrawBuffer)(GLenum mode)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[202];
   ((void (APIENTRY *)(GLenum mode)) _func)(mode);
}

GLAPI void APIENTRY GLAPI_PREFIX(Clear)(GLbitfield mask)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[203];
   ((void (APIENTRY *)(GLbitfield mask)) _func)(mask);
}

GLAPI void APIENTRY GLAPI_PREFIX(ClearAccum)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[204];
   ((void (APIENTRY *)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)) _func)(red, green, blue, alpha);
}

GLAPI void APIENTRY GLAPI_PREFIX(ClearIndex)(GLfloat c)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[205];
   ((void (APIENTRY *)(GLfloat c)) _func)(c);
}

GLAPI void APIENTRY GLAPI_PREFIX(ClearColor)(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[206];
   ((void (APIENTRY *)(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)) _func)(red, green, blue, alpha);
}

GLAPI void APIENTRY GLAPI_PREFIX(ClearStencil)(GLint s)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[207];
   ((void (APIENTRY *)(GLint s)) _func)(s);
}

GLAPI void APIENTRY GLAPI_PREFIX(ClearDepth)(GLclampd depth)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[208];
   ((void (APIENTRY *)(GLclampd depth)) _func)(depth);
}

GLAPI void APIENTRY GLAPI_PREFIX(StencilMask)(GLuint mask)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[209];
   ((void (APIENTRY *)(GLuint mask)) _func)(mask);
}

GLAPI void APIENTRY GLAPI_PREFIX(ColorMask)(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[210];
   ((void (APIENTRY *)(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha)) _func)(red, green, blue, alpha);
}

GLAPI void APIENTRY GLAPI_PREFIX(DepthMask)(GLboolean flag)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[211];
   ((void (APIENTRY *)(GLboolean flag)) _func)(flag);
}

GLAPI void APIENTRY GLAPI_PREFIX(IndexMask)(GLuint mask)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[212];
   ((void (APIENTRY *)(GLuint mask)) _func)(mask);
}

GLAPI void APIENTRY GLAPI_PREFIX(Accum)(GLenum op, GLfloat value)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[213];
   ((void (APIENTRY *)(GLenum op, GLfloat value)) _func)(op, value);
}

GLAPI void APIENTRY GLAPI_PREFIX(Disable)(GLenum cap)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[214];
   ((void (APIENTRY *)(GLenum cap)) _func)(cap);
}

GLAPI void APIENTRY GLAPI_PREFIX(Enable)(GLenum cap)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[215];
   ((void (APIENTRY *)(GLenum cap)) _func)(cap);
}

GLAPI void APIENTRY GLAPI_PREFIX(Finish)(void)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[216];
   ((void (APIENTRY *)(void)) _func)();
}

GLAPI void APIENTRY GLAPI_PREFIX(Flush)(void)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[217];
   ((void (APIENTRY *)(void)) _func)();
}

GLAPI void APIENTRY GLAPI_PREFIX(PopAttrib)(void)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[218];
   ((void (APIENTRY *)(void)) _func)();
}

GLAPI void APIENTRY GLAPI_PREFIX(PushAttrib)(GLbitfield mask)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[219];
   ((void (APIENTRY *)(GLbitfield mask)) _func)(mask);
}

GLAPI void APIENTRY GLAPI_PREFIX(Map1d)(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[220];
   ((void (APIENTRY *)(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points)) _func)(target, u1, u2, stride, order, points);
}

GLAPI void APIENTRY GLAPI_PREFIX(Map1f)(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[221];
   ((void (APIENTRY *)(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points)) _func)(target, u1, u2, stride, order, points);
}

GLAPI void APIENTRY GLAPI_PREFIX(Map2d)(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[222];
   ((void (APIENTRY *)(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points)) _func)(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points);
}

GLAPI void APIENTRY GLAPI_PREFIX(Map2f)(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[223];
   ((void (APIENTRY *)(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points)) _func)(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points);
}

GLAPI void APIENTRY GLAPI_PREFIX(MapGrid1d)(GLint un, GLdouble u1, GLdouble u2)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[224];
   ((void (APIENTRY *)(GLint un, GLdouble u1, GLdouble u2)) _func)(un, u1, u2);
}

GLAPI void APIENTRY GLAPI_PREFIX(MapGrid1f)(GLint un, GLfloat u1, GLfloat u2)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[225];
   ((void (APIENTRY *)(GLint un, GLfloat u1, GLfloat u2)) _func)(un, u1, u2);
}

GLAPI void APIENTRY GLAPI_PREFIX(MapGrid2d)(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[226];
   ((void (APIENTRY *)(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2)) _func)(un, u1, u2, vn, v1, v2);
}

GLAPI void APIENTRY GLAPI_PREFIX(MapGrid2f)(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[227];
   ((void (APIENTRY *)(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2)) _func)(un, u1, u2, vn, v1, v2);
}

GLAPI void APIENTRY GLAPI_PREFIX(EvalCoord1d)(GLdouble u)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[228];
   ((void (APIENTRY *)(GLdouble u)) _func)(u);
}

GLAPI void APIENTRY GLAPI_PREFIX(EvalCoord1dv)(const GLdouble *u)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[229];
   ((void (APIENTRY *)(const GLdouble *u)) _func)(u);
}

GLAPI void APIENTRY GLAPI_PREFIX(EvalCoord1f)(GLfloat u)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[230];
   ((void (APIENTRY *)(GLfloat u)) _func)(u);
}

GLAPI void APIENTRY GLAPI_PREFIX(EvalCoord1fv)(const GLfloat *u)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[231];
   ((void (APIENTRY *)(const GLfloat *u)) _func)(u);
}

GLAPI void APIENTRY GLAPI_PREFIX(EvalCoord2d)(GLdouble u, GLdouble v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[232];
   ((void (APIENTRY *)(GLdouble u, GLdouble v)) _func)(u, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(EvalCoord2dv)(const GLdouble *u)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[233];
   ((void (APIENTRY *)(const GLdouble *u)) _func)(u);
}

GLAPI void APIENTRY GLAPI_PREFIX(EvalCoord2f)(GLfloat u, GLfloat v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[234];
   ((void (APIENTRY *)(GLfloat u, GLfloat v)) _func)(u, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(EvalCoord2fv)(const GLfloat *u)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[235];
   ((void (APIENTRY *)(const GLfloat *u)) _func)(u);
}

GLAPI void APIENTRY GLAPI_PREFIX(EvalMesh1)(GLenum mode, GLint i1, GLint i2)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[236];
   ((void (APIENTRY *)(GLenum mode, GLint i1, GLint i2)) _func)(mode, i1, i2);
}

GLAPI void APIENTRY GLAPI_PREFIX(EvalPoint1)(GLint i)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[237];
   ((void (APIENTRY *)(GLint i)) _func)(i);
}

GLAPI void APIENTRY GLAPI_PREFIX(EvalMesh2)(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[238];
   ((void (APIENTRY *)(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2)) _func)(mode, i1, i2, j1, j2);
}

GLAPI void APIENTRY GLAPI_PREFIX(EvalPoint2)(GLint i, GLint j)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[239];
   ((void (APIENTRY *)(GLint i, GLint j)) _func)(i, j);
}

GLAPI void APIENTRY GLAPI_PREFIX(AlphaFunc)(GLenum func, GLclampf ref)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[240];
   ((void (APIENTRY *)(GLenum func, GLclampf ref)) _func)(func, ref);
}

GLAPI void APIENTRY GLAPI_PREFIX(BlendFunc)(GLenum sfactor, GLenum dfactor)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[241];
   ((void (APIENTRY *)(GLenum sfactor, GLenum dfactor)) _func)(sfactor, dfactor);
}

GLAPI void APIENTRY GLAPI_PREFIX(LogicOp)(GLenum opcode)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[242];
   ((void (APIENTRY *)(GLenum opcode)) _func)(opcode);
}

GLAPI void APIENTRY GLAPI_PREFIX(StencilFunc)(GLenum func, GLint ref, GLuint mask)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[243];
   ((void (APIENTRY *)(GLenum func, GLint ref, GLuint mask)) _func)(func, ref, mask);
}

GLAPI void APIENTRY GLAPI_PREFIX(StencilOp)(GLenum fail, GLenum zfail, GLenum zpass)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[244];
   ((void (APIENTRY *)(GLenum fail, GLenum zfail, GLenum zpass)) _func)(fail, zfail, zpass);
}

GLAPI void APIENTRY GLAPI_PREFIX(DepthFunc)(GLenum func)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[245];
   ((void (APIENTRY *)(GLenum func)) _func)(func);
}

GLAPI void APIENTRY GLAPI_PREFIX(PixelZoom)(GLfloat xfactor, GLfloat yfactor)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[246];
   ((void (APIENTRY *)(GLfloat xfactor, GLfloat yfactor)) _func)(xfactor, yfactor);
}

GLAPI void APIENTRY GLAPI_PREFIX(PixelTransferf)(GLenum pname, GLfloat param)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[247];
   ((void (APIENTRY *)(GLenum pname, GLfloat param)) _func)(pname, param);
}

GLAPI void APIENTRY GLAPI_PREFIX(PixelTransferi)(GLenum pname, GLint param)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[248];
   ((void (APIENTRY *)(GLenum pname, GLint param)) _func)(pname, param);
}

GLAPI void APIENTRY GLAPI_PREFIX(PixelStoref)(GLenum pname, GLfloat param)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[249];
   ((void (APIENTRY *)(GLenum pname, GLfloat param)) _func)(pname, param);
}

GLAPI void APIENTRY GLAPI_PREFIX(PixelStorei)(GLenum pname, GLint param)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[250];
   ((void (APIENTRY *)(GLenum pname, GLint param)) _func)(pname, param);
}

GLAPI void APIENTRY GLAPI_PREFIX(PixelMapfv)(GLenum map, GLsizei mapsize, const GLfloat *values)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[251];
   ((void (APIENTRY *)(GLenum map, GLsizei mapsize, const GLfloat *values)) _func)(map, mapsize, values);
}

GLAPI void APIENTRY GLAPI_PREFIX(PixelMapuiv)(GLenum map, GLsizei mapsize, const GLuint *values)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[252];
   ((void (APIENTRY *)(GLenum map, GLsizei mapsize, const GLuint *values)) _func)(map, mapsize, values);
}

GLAPI void APIENTRY GLAPI_PREFIX(PixelMapusv)(GLenum map, GLsizei mapsize, const GLushort *values)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[253];
   ((void (APIENTRY *)(GLenum map, GLsizei mapsize, const GLushort *values)) _func)(map, mapsize, values);
}

GLAPI void APIENTRY GLAPI_PREFIX(ReadBuffer)(GLenum mode)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[254];
   ((void (APIENTRY *)(GLenum mode)) _func)(mode);
}

GLAPI void APIENTRY GLAPI_PREFIX(ReadBufferNV)(GLenum mode)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[254];
   ((void (APIENTRY *)(GLenum mode)) _func)(mode);
}

GLAPI void APIENTRY GLAPI_PREFIX(CopyPixels)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[255];
   ((void (APIENTRY *)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type)) _func)(x, y, width, height, type);
}

GLAPI void APIENTRY GLAPI_PREFIX(ReadPixels)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[256];
   ((void (APIENTRY *)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels)) _func)(x, y, width, height, format, type, pixels);
}

GLAPI void APIENTRY GLAPI_PREFIX(DrawPixels)(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[257];
   ((void (APIENTRY *)(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels)) _func)(width, height, format, type, pixels);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetBooleanv)(GLenum pname, GLboolean *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[258];
   ((void (APIENTRY *)(GLenum pname, GLboolean *params)) _func)(pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetClipPlane)(GLenum plane, GLdouble *equation)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[259];
   ((void (APIENTRY *)(GLenum plane, GLdouble *equation)) _func)(plane, equation);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetDoublev)(GLenum pname, GLdouble *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[260];
   ((void (APIENTRY *)(GLenum pname, GLdouble *params)) _func)(pname, params);
}

GLAPI GLenum APIENTRY GLAPI_PREFIX(GetError)(void)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[261];
   return ((GLenum (APIENTRY *)(void)) _func)();
}

GLAPI void APIENTRY GLAPI_PREFIX(GetFloatv)(GLenum pname, GLfloat *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[262];
   ((void (APIENTRY *)(GLenum pname, GLfloat *params)) _func)(pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetIntegerv)(GLenum pname, GLint *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[263];
   ((void (APIENTRY *)(GLenum pname, GLint *params)) _func)(pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetLightfv)(GLenum light, GLenum pname, GLfloat *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[264];
   ((void (APIENTRY *)(GLenum light, GLenum pname, GLfloat *params)) _func)(light, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetLightiv)(GLenum light, GLenum pname, GLint *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[265];
   ((void (APIENTRY *)(GLenum light, GLenum pname, GLint *params)) _func)(light, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetMapdv)(GLenum target, GLenum query, GLdouble *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[266];
   ((void (APIENTRY *)(GLenum target, GLenum query, GLdouble *v)) _func)(target, query, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetMapfv)(GLenum target, GLenum query, GLfloat *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[267];
   ((void (APIENTRY *)(GLenum target, GLenum query, GLfloat *v)) _func)(target, query, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetMapiv)(GLenum target, GLenum query, GLint *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[268];
   ((void (APIENTRY *)(GLenum target, GLenum query, GLint *v)) _func)(target, query, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetMaterialfv)(GLenum face, GLenum pname, GLfloat *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[269];
   ((void (APIENTRY *)(GLenum face, GLenum pname, GLfloat *params)) _func)(face, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetMaterialiv)(GLenum face, GLenum pname, GLint *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[270];
   ((void (APIENTRY *)(GLenum face, GLenum pname, GLint *params)) _func)(face, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetPixelMapfv)(GLenum map, GLfloat *values)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[271];
   ((void (APIENTRY *)(GLenum map, GLfloat *values)) _func)(map, values);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetPixelMapuiv)(GLenum map, GLuint *values)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[272];
   ((void (APIENTRY *)(GLenum map, GLuint *values)) _func)(map, values);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetPixelMapusv)(GLenum map, GLushort *values)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[273];
   ((void (APIENTRY *)(GLenum map, GLushort *values)) _func)(map, values);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetPolygonStipple)(GLubyte *mask)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[274];
   ((void (APIENTRY *)(GLubyte *mask)) _func)(mask);
}

GLAPI const GLubyte * APIENTRY GLAPI_PREFIX(GetString)(GLenum name)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[275];
   return ((const GLubyte * (APIENTRY *)(GLenum name)) _func)(name);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetTexEnvfv)(GLenum target, GLenum pname, GLfloat *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[276];
   ((void (APIENTRY *)(GLenum target, GLenum pname, GLfloat *params)) _func)(target, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetTexEnviv)(GLenum target, GLenum pname, GLint *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[277];
   ((void (APIENTRY *)(GLenum target, GLenum pname, GLint *params)) _func)(target, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetTexGendv)(GLenum coord, GLenum pname, GLdouble *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[278];
   ((void (APIENTRY *)(GLenum coord, GLenum pname, GLdouble *params)) _func)(coord, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetTexGenfv)(GLenum coord, GLenum pname, GLfloat *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[279];
   ((void (APIENTRY *)(GLenum coord, GLenum pname, GLfloat *params)) _func)(coord, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetTexGeniv)(GLenum coord, GLenum pname, GLint *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[280];
   ((void (APIENTRY *)(GLenum coord, GLenum pname, GLint *params)) _func)(coord, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetTexImage)(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[281];
   ((void (APIENTRY *)(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels)) _func)(target, level, format, type, pixels);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetTexParameterfv)(GLenum target, GLenum pname, GLfloat *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[282];
   ((void (APIENTRY *)(GLenum target, GLenum pname, GLfloat *params)) _func)(target, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetTexParameteriv)(GLenum target, GLenum pname, GLint *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[283];
   ((void (APIENTRY *)(GLenum target, GLenum pname, GLint *params)) _func)(target, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetTexLevelParameterfv)(GLenum target, GLint level, GLenum pname, GLfloat *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[284];
   ((void (APIENTRY *)(GLenum target, GLint level, GLenum pname, GLfloat *params)) _func)(target, level, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetTexLevelParameteriv)(GLenum target, GLint level, GLenum pname, GLint *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[285];
   ((void (APIENTRY *)(GLenum target, GLint level, GLenum pname, GLint *params)) _func)(target, level, pname, params);
}

GLAPI GLboolean APIENTRY GLAPI_PREFIX(IsEnabled)(GLenum cap)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[286];
   return ((GLboolean (APIENTRY *)(GLenum cap)) _func)(cap);
}

GLAPI GLboolean APIENTRY GLAPI_PREFIX(IsList)(GLuint list)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[287];
   return ((GLboolean (APIENTRY *)(GLuint list)) _func)(list);
}

GLAPI void APIENTRY GLAPI_PREFIX(DepthRange)(GLclampd zNear, GLclampd zFar)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[288];
   ((void (APIENTRY *)(GLclampd zNear, GLclampd zFar)) _func)(zNear, zFar);
}

GLAPI void APIENTRY GLAPI_PREFIX(Frustum)(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[289];
   ((void (APIENTRY *)(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar)) _func)(left, right, bottom, top, zNear, zFar);
}

GLAPI void APIENTRY GLAPI_PREFIX(LoadIdentity)(void)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[290];
   ((void (APIENTRY *)(void)) _func)();
}

GLAPI void APIENTRY GLAPI_PREFIX(LoadMatrixf)(const GLfloat *m)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[291];
   ((void (APIENTRY *)(const GLfloat *m)) _func)(m);
}

GLAPI void APIENTRY GLAPI_PREFIX(LoadMatrixd)(const GLdouble *m)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[292];
   ((void (APIENTRY *)(const GLdouble *m)) _func)(m);
}

GLAPI void APIENTRY GLAPI_PREFIX(MatrixMode)(GLenum mode)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[293];
   ((void (APIENTRY *)(GLenum mode)) _func)(mode);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultMatrixf)(const GLfloat *m)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[294];
   ((void (APIENTRY *)(const GLfloat *m)) _func)(m);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultMatrixd)(const GLdouble *m)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[295];
   ((void (APIENTRY *)(const GLdouble *m)) _func)(m);
}

GLAPI void APIENTRY GLAPI_PREFIX(Ortho)(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[296];
   ((void (APIENTRY *)(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar)) _func)(left, right, bottom, top, zNear, zFar);
}

GLAPI void APIENTRY GLAPI_PREFIX(PopMatrix)(void)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[297];
   ((void (APIENTRY *)(void)) _func)();
}

GLAPI void APIENTRY GLAPI_PREFIX(PushMatrix)(void)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[298];
   ((void (APIENTRY *)(void)) _func)();
}

GLAPI void APIENTRY GLAPI_PREFIX(Rotated)(GLdouble angle, GLdouble x, GLdouble y, GLdouble z)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[299];
   ((void (APIENTRY *)(GLdouble angle, GLdouble x, GLdouble y, GLdouble z)) _func)(angle, x, y, z);
}

GLAPI void APIENTRY GLAPI_PREFIX(Rotatef)(GLfloat angle, GLfloat x, GLfloat y, GLfloat z)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[300];
   ((void (APIENTRY *)(GLfloat angle, GLfloat x, GLfloat y, GLfloat z)) _func)(angle, x, y, z);
}

GLAPI void APIENTRY GLAPI_PREFIX(Scaled)(GLdouble x, GLdouble y, GLdouble z)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[301];
   ((void (APIENTRY *)(GLdouble x, GLdouble y, GLdouble z)) _func)(x, y, z);
}

GLAPI void APIENTRY GLAPI_PREFIX(Scalef)(GLfloat x, GLfloat y, GLfloat z)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[302];
   ((void (APIENTRY *)(GLfloat x, GLfloat y, GLfloat z)) _func)(x, y, z);
}

GLAPI void APIENTRY GLAPI_PREFIX(Translated)(GLdouble x, GLdouble y, GLdouble z)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[303];
   ((void (APIENTRY *)(GLdouble x, GLdouble y, GLdouble z)) _func)(x, y, z);
}

GLAPI void APIENTRY GLAPI_PREFIX(Translatef)(GLfloat x, GLfloat y, GLfloat z)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[304];
   ((void (APIENTRY *)(GLfloat x, GLfloat y, GLfloat z)) _func)(x, y, z);
}

GLAPI void APIENTRY GLAPI_PREFIX(Viewport)(GLint x, GLint y, GLsizei width, GLsizei height)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[305];
   ((void (APIENTRY *)(GLint x, GLint y, GLsizei width, GLsizei height)) _func)(x, y, width, height);
}

GLAPI void APIENTRY GLAPI_PREFIX(ArrayElement)(GLint i)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[306];
   ((void (APIENTRY *)(GLint i)) _func)(i);
}

GLAPI void APIENTRY GLAPI_PREFIX(ArrayElementEXT)(GLint i)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[306];
   ((void (APIENTRY *)(GLint i)) _func)(i);
}

GLAPI void APIENTRY GLAPI_PREFIX(BindTexture)(GLenum target, GLuint texture)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[307];
   ((void (APIENTRY *)(GLenum target, GLuint texture)) _func)(target, texture);
}

GLAPI void APIENTRY GLAPI_PREFIX(BindTextureEXT)(GLenum target, GLuint texture)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[307];
   ((void (APIENTRY *)(GLenum target, GLuint texture)) _func)(target, texture);
}

GLAPI void APIENTRY GLAPI_PREFIX(ColorPointer)(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[308];
   ((void (APIENTRY *)(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer)) _func)(size, type, stride, pointer);
}

GLAPI void APIENTRY GLAPI_PREFIX(DisableClientState)(GLenum array)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[309];
   ((void (APIENTRY *)(GLenum array)) _func)(array);
}

GLAPI void APIENTRY GLAPI_PREFIX(DrawArrays)(GLenum mode, GLint first, GLsizei count)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[310];
   ((void (APIENTRY *)(GLenum mode, GLint first, GLsizei count)) _func)(mode, first, count);
}

GLAPI void APIENTRY GLAPI_PREFIX(DrawArraysEXT)(GLenum mode, GLint first, GLsizei count)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[310];
   ((void (APIENTRY *)(GLenum mode, GLint first, GLsizei count)) _func)(mode, first, count);
}

GLAPI void APIENTRY GLAPI_PREFIX(DrawElements)(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[311];
   ((void (APIENTRY *)(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices)) _func)(mode, count, type, indices);
}

GLAPI void APIENTRY GLAPI_PREFIX(EdgeFlagPointer)(GLsizei stride, const GLvoid *pointer)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[312];
   ((void (APIENTRY *)(GLsizei stride, const GLvoid *pointer)) _func)(stride, pointer);
}

GLAPI void APIENTRY GLAPI_PREFIX(EnableClientState)(GLenum array)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[313];
   ((void (APIENTRY *)(GLenum array)) _func)(array);
}

GLAPI void APIENTRY GLAPI_PREFIX(IndexPointer)(GLenum type, GLsizei stride, const GLvoid *pointer)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[314];
   ((void (APIENTRY *)(GLenum type, GLsizei stride, const GLvoid *pointer)) _func)(type, stride, pointer);
}

GLAPI void APIENTRY GLAPI_PREFIX(Indexub)(GLubyte c)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[315];
   ((void (APIENTRY *)(GLubyte c)) _func)(c);
}

GLAPI void APIENTRY GLAPI_PREFIX(Indexubv)(const GLubyte *c)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[316];
   ((void (APIENTRY *)(const GLubyte *c)) _func)(c);
}

GLAPI void APIENTRY GLAPI_PREFIX(InterleavedArrays)(GLenum format, GLsizei stride, const GLvoid *pointer)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[317];
   ((void (APIENTRY *)(GLenum format, GLsizei stride, const GLvoid *pointer)) _func)(format, stride, pointer);
}

GLAPI void APIENTRY GLAPI_PREFIX(NormalPointer)(GLenum type, GLsizei stride, const GLvoid *pointer)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[318];
   ((void (APIENTRY *)(GLenum type, GLsizei stride, const GLvoid *pointer)) _func)(type, stride, pointer);
}

GLAPI void APIENTRY GLAPI_PREFIX(PolygonOffset)(GLfloat factor, GLfloat units)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[319];
   ((void (APIENTRY *)(GLfloat factor, GLfloat units)) _func)(factor, units);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexCoordPointer)(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[320];
   ((void (APIENTRY *)(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer)) _func)(size, type, stride, pointer);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexPointer)(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[321];
   ((void (APIENTRY *)(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer)) _func)(size, type, stride, pointer);
}

GLAPI GLboolean APIENTRY GLAPI_PREFIX(AreTexturesResident)(GLsizei n, const GLuint *textures, GLboolean *residences)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[322];
   return ((GLboolean (APIENTRY *)(GLsizei n, const GLuint *textures, GLboolean *residences)) _func)(n, textures, residences);
}

#if 0
GLAPI GLboolean APIENTRY GLAPI_PREFIX(AreTexturesResidentEXT)(GLsizei n, const GLuint *textures, GLboolean *residences)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[322];
   return ((GLboolean (APIENTRY *)(GLsizei n, const GLuint *textures, GLboolean *residences)) _func)(n, textures, residences);
}
#endif

GLAPI void APIENTRY GLAPI_PREFIX(CopyTexImage1D)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[323];
   ((void (APIENTRY *)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border)) _func)(target, level, internalformat, x, y, width, border);
}

GLAPI void APIENTRY GLAPI_PREFIX(CopyTexImage1DEXT)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[323];
   ((void (APIENTRY *)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border)) _func)(target, level, internalformat, x, y, width, border);
}

GLAPI void APIENTRY GLAPI_PREFIX(CopyTexImage2D)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[324];
   ((void (APIENTRY *)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)) _func)(target, level, internalformat, x, y, width, height, border);
}

GLAPI void APIENTRY GLAPI_PREFIX(CopyTexImage2DEXT)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[324];
   ((void (APIENTRY *)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)) _func)(target, level, internalformat, x, y, width, height, border);
}

GLAPI void APIENTRY GLAPI_PREFIX(CopyTexSubImage1D)(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[325];
   ((void (APIENTRY *)(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width)) _func)(target, level, xoffset, x, y, width);
}

GLAPI void APIENTRY GLAPI_PREFIX(CopyTexSubImage1DEXT)(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[325];
   ((void (APIENTRY *)(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width)) _func)(target, level, xoffset, x, y, width);
}

GLAPI void APIENTRY GLAPI_PREFIX(CopyTexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[326];
   ((void (APIENTRY *)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)) _func)(target, level, xoffset, yoffset, x, y, width, height);
}

GLAPI void APIENTRY GLAPI_PREFIX(CopyTexSubImage2DEXT)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[326];
   ((void (APIENTRY *)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)) _func)(target, level, xoffset, yoffset, x, y, width, height);
}

GLAPI void APIENTRY GLAPI_PREFIX(DeleteTextures)(GLsizei n, const GLuint *textures)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[327];
   ((void (APIENTRY *)(GLsizei n, const GLuint *textures)) _func)(n, textures);
}

#if 0
GLAPI void APIENTRY GLAPI_PREFIX(DeleteTexturesEXT)(GLsizei n, const GLuint *textures)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[327];
   ((void (APIENTRY *)(GLsizei n, const GLuint *textures)) _func)(n, textures);
}
#endif

GLAPI void APIENTRY GLAPI_PREFIX(GenTextures)(GLsizei n, GLuint *textures)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[328];
   ((void (APIENTRY *)(GLsizei n, GLuint *textures)) _func)(n, textures);
}

#if 0
GLAPI void APIENTRY GLAPI_PREFIX(GenTexturesEXT)(GLsizei n, GLuint *textures)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[328];
   ((void (APIENTRY *)(GLsizei n, GLuint *textures)) _func)(n, textures);
}
#endif

GLAPI void APIENTRY GLAPI_PREFIX(GetPointerv)(GLenum pname, GLvoid **params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[329];
   ((void (APIENTRY *)(GLenum pname, GLvoid **params)) _func)(pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetPointervEXT)(GLenum pname, GLvoid **params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[329];
   ((void (APIENTRY *)(GLenum pname, GLvoid **params)) _func)(pname, params);
}

GLAPI GLboolean APIENTRY GLAPI_PREFIX(IsTexture)(GLuint texture)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[330];
   return ((GLboolean (APIENTRY *)(GLuint texture)) _func)(texture);
}

#if 0
GLAPI GLboolean APIENTRY GLAPI_PREFIX(IsTextureEXT)(GLuint texture)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[330];
   return ((GLboolean (APIENTRY *)(GLuint texture)) _func)(texture);
}
#endif

GLAPI void APIENTRY GLAPI_PREFIX(PrioritizeTextures)(GLsizei n, const GLuint *textures, const GLclampf *priorities)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[331];
   ((void (APIENTRY *)(GLsizei n, const GLuint *textures, const GLclampf *priorities)) _func)(n, textures, priorities);
}

GLAPI void APIENTRY GLAPI_PREFIX(PrioritizeTexturesEXT)(GLsizei n, const GLuint *textures, const GLclampf *priorities)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[331];
   ((void (APIENTRY *)(GLsizei n, const GLuint *textures, const GLclampf *priorities)) _func)(n, textures, priorities);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexSubImage1D)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[332];
   ((void (APIENTRY *)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels)) _func)(target, level, xoffset, width, format, type, pixels);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexSubImage1DEXT)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[332];
   ((void (APIENTRY *)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels)) _func)(target, level, xoffset, width, format, type, pixels);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[333];
   ((void (APIENTRY *)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels)) _func)(target, level, xoffset, yoffset, width, height, format, type, pixels);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexSubImage2DEXT)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[333];
   ((void (APIENTRY *)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels)) _func)(target, level, xoffset, yoffset, width, height, format, type, pixels);
}

GLAPI void APIENTRY GLAPI_PREFIX(PopClientAttrib)(void)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[334];
   ((void (APIENTRY *)(void)) _func)();
}

GLAPI void APIENTRY GLAPI_PREFIX(PushClientAttrib)(GLbitfield mask)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[335];
   ((void (APIENTRY *)(GLbitfield mask)) _func)(mask);
}

GLAPI void APIENTRY GLAPI_PREFIX(BlendColor)(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[336];
   ((void (APIENTRY *)(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)) _func)(red, green, blue, alpha);
}

GLAPI void APIENTRY GLAPI_PREFIX(BlendColorEXT)(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[336];
   ((void (APIENTRY *)(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)) _func)(red, green, blue, alpha);
}

GLAPI void APIENTRY GLAPI_PREFIX(BlendEquation)(GLenum mode)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[337];
   ((void (APIENTRY *)(GLenum mode)) _func)(mode);
}

GLAPI void APIENTRY GLAPI_PREFIX(BlendEquationEXT)(GLenum mode)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[337];
   ((void (APIENTRY *)(GLenum mode)) _func)(mode);
}

GLAPI void APIENTRY GLAPI_PREFIX(DrawRangeElements)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[338];
   ((void (APIENTRY *)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices)) _func)(mode, start, end, count, type, indices);
}

GLAPI void APIENTRY GLAPI_PREFIX(DrawRangeElementsEXT)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[338];
   ((void (APIENTRY *)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices)) _func)(mode, start, end, count, type, indices);
}

GLAPI void APIENTRY GLAPI_PREFIX(ColorTable)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[339];
   ((void (APIENTRY *)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table)) _func)(target, internalformat, width, format, type, table);
}

GLAPI void APIENTRY GLAPI_PREFIX(ColorTableEXT)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[339];
   ((void (APIENTRY *)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table)) _func)(target, internalformat, width, format, type, table);
}

GLAPI void APIENTRY GLAPI_PREFIX(ColorTableParameterfv)(GLenum target, GLenum pname, const GLfloat *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[340];
   ((void (APIENTRY *)(GLenum target, GLenum pname, const GLfloat *params)) _func)(target, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(ColorTableParameteriv)(GLenum target, GLenum pname, const GLint *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[341];
   ((void (APIENTRY *)(GLenum target, GLenum pname, const GLint *params)) _func)(target, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(CopyColorTable)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[342];
   ((void (APIENTRY *)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width)) _func)(target, internalformat, x, y, width);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetColorTable)(GLenum target, GLenum format, GLenum type, GLvoid *table)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[343];
   ((void (APIENTRY *)(GLenum target, GLenum format, GLenum type, GLvoid *table)) _func)(target, format, type, table);
}

#if 0
GLAPI void APIENTRY GLAPI_PREFIX(GetColorTableEXT)(GLenum target, GLenum format, GLenum type, GLvoid *table)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[343];
   ((void (APIENTRY *)(GLenum target, GLenum format, GLenum type, GLvoid *table)) _func)(target, format, type, table);
}
#endif

GLAPI void APIENTRY GLAPI_PREFIX(GetColorTableParameterfv)(GLenum target, GLenum pname, GLfloat *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[344];
   ((void (APIENTRY *)(GLenum target, GLenum pname, GLfloat *params)) _func)(target, pname, params);
}

#if 0
GLAPI void APIENTRY GLAPI_PREFIX(GetColorTableParameterfvEXT)(GLenum target, GLenum pname, GLfloat *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[344];
   ((void (APIENTRY *)(GLenum target, GLenum pname, GLfloat *params)) _func)(target, pname, params);
}
#endif

GLAPI void APIENTRY GLAPI_PREFIX(GetColorTableParameteriv)(GLenum target, GLenum pname, GLint *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[345];
   ((void (APIENTRY *)(GLenum target, GLenum pname, GLint *params)) _func)(target, pname, params);
}

#if 0
GLAPI void APIENTRY GLAPI_PREFIX(GetColorTableParameterivEXT)(GLenum target, GLenum pname, GLint *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[345];
   ((void (APIENTRY *)(GLenum target, GLenum pname, GLint *params)) _func)(target, pname, params);
}
#endif

GLAPI void APIENTRY GLAPI_PREFIX(ColorSubTable)(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[346];
   ((void (APIENTRY *)(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data)) _func)(target, start, count, format, type, data);
}

GLAPI void APIENTRY GLAPI_PREFIX(CopyColorSubTable)(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[347];
   ((void (APIENTRY *)(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width)) _func)(target, start, x, y, width);
}

GLAPI void APIENTRY GLAPI_PREFIX(ConvolutionFilter1D)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[348];
   ((void (APIENTRY *)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image)) _func)(target, internalformat, width, format, type, image);
}

GLAPI void APIENTRY GLAPI_PREFIX(ConvolutionFilter2D)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[349];
   ((void (APIENTRY *)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image)) _func)(target, internalformat, width, height, format, type, image);
}

GLAPI void APIENTRY GLAPI_PREFIX(ConvolutionParameterf)(GLenum target, GLenum pname, GLfloat params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[350];
   ((void (APIENTRY *)(GLenum target, GLenum pname, GLfloat params)) _func)(target, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(ConvolutionParameterfv)(GLenum target, GLenum pname, const GLfloat *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[351];
   ((void (APIENTRY *)(GLenum target, GLenum pname, const GLfloat *params)) _func)(target, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(ConvolutionParameteri)(GLenum target, GLenum pname, GLint params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[352];
   ((void (APIENTRY *)(GLenum target, GLenum pname, GLint params)) _func)(target, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(ConvolutionParameteriv)(GLenum target, GLenum pname, const GLint *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[353];
   ((void (APIENTRY *)(GLenum target, GLenum pname, const GLint *params)) _func)(target, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(CopyConvolutionFilter1D)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[354];
   ((void (APIENTRY *)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width)) _func)(target, internalformat, x, y, width);
}

GLAPI void APIENTRY GLAPI_PREFIX(CopyConvolutionFilter2D)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[355];
   ((void (APIENTRY *)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height)) _func)(target, internalformat, x, y, width, height);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetConvolutionFilter)(GLenum target, GLenum format, GLenum type, GLvoid *image)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[356];
   ((void (APIENTRY *)(GLenum target, GLenum format, GLenum type, GLvoid *image)) _func)(target, format, type, image);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetConvolutionParameterfv)(GLenum target, GLenum pname, GLfloat *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[357];
   ((void (APIENTRY *)(GLenum target, GLenum pname, GLfloat *params)) _func)(target, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetConvolutionParameteriv)(GLenum target, GLenum pname, GLint *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[358];
   ((void (APIENTRY *)(GLenum target, GLenum pname, GLint *params)) _func)(target, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetSeparableFilter)(GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[359];
   ((void (APIENTRY *)(GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span)) _func)(target, format, type, row, column, span);
}

GLAPI void APIENTRY GLAPI_PREFIX(SeparableFilter2D)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[360];
   ((void (APIENTRY *)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column)) _func)(target, internalformat, width, height, format, type, row, column);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetHistogram)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[361];
   ((void (APIENTRY *)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values)) _func)(target, reset, format, type, values);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetHistogramParameterfv)(GLenum target, GLenum pname, GLfloat *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[362];
   ((void (APIENTRY *)(GLenum target, GLenum pname, GLfloat *params)) _func)(target, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetHistogramParameteriv)(GLenum target, GLenum pname, GLint *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[363];
   ((void (APIENTRY *)(GLenum target, GLenum pname, GLint *params)) _func)(target, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetMinmax)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[364];
   ((void (APIENTRY *)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values)) _func)(target, reset, format, type, values);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetMinmaxParameterfv)(GLenum target, GLenum pname, GLfloat *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[365];
   ((void (APIENTRY *)(GLenum target, GLenum pname, GLfloat *params)) _func)(target, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetMinmaxParameteriv)(GLenum target, GLenum pname, GLint *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[366];
   ((void (APIENTRY *)(GLenum target, GLenum pname, GLint *params)) _func)(target, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(Histogram)(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[367];
   ((void (APIENTRY *)(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink)) _func)(target, width, internalformat, sink);
}

GLAPI void APIENTRY GLAPI_PREFIX(Minmax)(GLenum target, GLenum internalformat, GLboolean sink)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[368];
   ((void (APIENTRY *)(GLenum target, GLenum internalformat, GLboolean sink)) _func)(target, internalformat, sink);
}

GLAPI void APIENTRY GLAPI_PREFIX(ResetHistogram)(GLenum target)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[369];
   ((void (APIENTRY *)(GLenum target)) _func)(target);
}

GLAPI void APIENTRY GLAPI_PREFIX(ResetMinmax)(GLenum target)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[370];
   ((void (APIENTRY *)(GLenum target)) _func)(target);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexImage3D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[371];
   ((void (APIENTRY *)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels)) _func)(target, level, internalformat, width, height, depth, border, format, type, pixels);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexImage3DEXT)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[371];
   ((void (APIENTRY *)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels)) _func)(target, level, internalformat, width, height, depth, border, format, type, pixels);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexSubImage3D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[372];
   ((void (APIENTRY *)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels)) _func)(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexSubImage3DEXT)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[372];
   ((void (APIENTRY *)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels)) _func)(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels);
}

GLAPI void APIENTRY GLAPI_PREFIX(CopyTexSubImage3D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[373];
   ((void (APIENTRY *)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)) _func)(target, level, xoffset, yoffset, zoffset, x, y, width, height);
}

GLAPI void APIENTRY GLAPI_PREFIX(CopyTexSubImage3DEXT)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[373];
   ((void (APIENTRY *)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)) _func)(target, level, xoffset, yoffset, zoffset, x, y, width, height);
}

GLAPI void APIENTRY GLAPI_PREFIX(ActiveTextureARB)(GLenum texture)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[374];
   ((void (APIENTRY *)(GLenum texture)) _func)(texture);
}

GLAPI void APIENTRY GLAPI_PREFIX(ActiveTexture)(GLenum texture)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[374];
   ((void (APIENTRY *)(GLenum texture)) _func)(texture);
}

GLAPI void APIENTRY GLAPI_PREFIX(ClientActiveTextureARB)(GLenum texture)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[375];
   ((void (APIENTRY *)(GLenum texture)) _func)(texture);
}

GLAPI void APIENTRY GLAPI_PREFIX(ClientActiveTexture)(GLenum texture)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[375];
   ((void (APIENTRY *)(GLenum texture)) _func)(texture);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord1dARB)(GLenum target, GLdouble s)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[376];
   ((void (APIENTRY *)(GLenum target, GLdouble s)) _func)(target, s);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord1d)(GLenum target, GLdouble s)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[376];
   ((void (APIENTRY *)(GLenum target, GLdouble s)) _func)(target, s);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord1dvARB)(GLenum target, const GLdouble *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[377];
   ((void (APIENTRY *)(GLenum target, const GLdouble *v)) _func)(target, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord1dv)(GLenum target, const GLdouble *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[377];
   ((void (APIENTRY *)(GLenum target, const GLdouble *v)) _func)(target, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord1fARB)(GLenum target, GLfloat s)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[378];
   ((void (APIENTRY *)(GLenum target, GLfloat s)) _func)(target, s);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord1f)(GLenum target, GLfloat s)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[378];
   ((void (APIENTRY *)(GLenum target, GLfloat s)) _func)(target, s);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord1fvARB)(GLenum target, const GLfloat *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[379];
   ((void (APIENTRY *)(GLenum target, const GLfloat *v)) _func)(target, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord1fv)(GLenum target, const GLfloat *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[379];
   ((void (APIENTRY *)(GLenum target, const GLfloat *v)) _func)(target, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord1iARB)(GLenum target, GLint s)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[380];
   ((void (APIENTRY *)(GLenum target, GLint s)) _func)(target, s);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord1i)(GLenum target, GLint s)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[380];
   ((void (APIENTRY *)(GLenum target, GLint s)) _func)(target, s);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord1ivARB)(GLenum target, const GLint *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[381];
   ((void (APIENTRY *)(GLenum target, const GLint *v)) _func)(target, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord1iv)(GLenum target, const GLint *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[381];
   ((void (APIENTRY *)(GLenum target, const GLint *v)) _func)(target, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord1sARB)(GLenum target, GLshort s)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[382];
   ((void (APIENTRY *)(GLenum target, GLshort s)) _func)(target, s);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord1s)(GLenum target, GLshort s)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[382];
   ((void (APIENTRY *)(GLenum target, GLshort s)) _func)(target, s);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord1svARB)(GLenum target, const GLshort *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[383];
   ((void (APIENTRY *)(GLenum target, const GLshort *v)) _func)(target, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord1sv)(GLenum target, const GLshort *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[383];
   ((void (APIENTRY *)(GLenum target, const GLshort *v)) _func)(target, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord2dARB)(GLenum target, GLdouble s, GLdouble t)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[384];
   ((void (APIENTRY *)(GLenum target, GLdouble s, GLdouble t)) _func)(target, s, t);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord2d)(GLenum target, GLdouble s, GLdouble t)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[384];
   ((void (APIENTRY *)(GLenum target, GLdouble s, GLdouble t)) _func)(target, s, t);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord2dvARB)(GLenum target, const GLdouble *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[385];
   ((void (APIENTRY *)(GLenum target, const GLdouble *v)) _func)(target, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord2dv)(GLenum target, const GLdouble *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[385];
   ((void (APIENTRY *)(GLenum target, const GLdouble *v)) _func)(target, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord2fARB)(GLenum target, GLfloat s, GLfloat t)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[386];
   ((void (APIENTRY *)(GLenum target, GLfloat s, GLfloat t)) _func)(target, s, t);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord2f)(GLenum target, GLfloat s, GLfloat t)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[386];
   ((void (APIENTRY *)(GLenum target, GLfloat s, GLfloat t)) _func)(target, s, t);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord2fvARB)(GLenum target, const GLfloat *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[387];
   ((void (APIENTRY *)(GLenum target, const GLfloat *v)) _func)(target, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord2fv)(GLenum target, const GLfloat *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[387];
   ((void (APIENTRY *)(GLenum target, const GLfloat *v)) _func)(target, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord2iARB)(GLenum target, GLint s, GLint t)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[388];
   ((void (APIENTRY *)(GLenum target, GLint s, GLint t)) _func)(target, s, t);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord2i)(GLenum target, GLint s, GLint t)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[388];
   ((void (APIENTRY *)(GLenum target, GLint s, GLint t)) _func)(target, s, t);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord2ivARB)(GLenum target, const GLint *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[389];
   ((void (APIENTRY *)(GLenum target, const GLint *v)) _func)(target, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord2iv)(GLenum target, const GLint *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[389];
   ((void (APIENTRY *)(GLenum target, const GLint *v)) _func)(target, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord2sARB)(GLenum target, GLshort s, GLshort t)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[390];
   ((void (APIENTRY *)(GLenum target, GLshort s, GLshort t)) _func)(target, s, t);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord2s)(GLenum target, GLshort s, GLshort t)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[390];
   ((void (APIENTRY *)(GLenum target, GLshort s, GLshort t)) _func)(target, s, t);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord2svARB)(GLenum target, const GLshort *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[391];
   ((void (APIENTRY *)(GLenum target, const GLshort *v)) _func)(target, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord2sv)(GLenum target, const GLshort *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[391];
   ((void (APIENTRY *)(GLenum target, const GLshort *v)) _func)(target, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord3dARB)(GLenum target, GLdouble s, GLdouble t, GLdouble r)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[392];
   ((void (APIENTRY *)(GLenum target, GLdouble s, GLdouble t, GLdouble r)) _func)(target, s, t, r);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord3d)(GLenum target, GLdouble s, GLdouble t, GLdouble r)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[392];
   ((void (APIENTRY *)(GLenum target, GLdouble s, GLdouble t, GLdouble r)) _func)(target, s, t, r);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord3dvARB)(GLenum target, const GLdouble *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[393];
   ((void (APIENTRY *)(GLenum target, const GLdouble *v)) _func)(target, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord3dv)(GLenum target, const GLdouble *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[393];
   ((void (APIENTRY *)(GLenum target, const GLdouble *v)) _func)(target, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord3fARB)(GLenum target, GLfloat s, GLfloat t, GLfloat r)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[394];
   ((void (APIENTRY *)(GLenum target, GLfloat s, GLfloat t, GLfloat r)) _func)(target, s, t, r);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord3f)(GLenum target, GLfloat s, GLfloat t, GLfloat r)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[394];
   ((void (APIENTRY *)(GLenum target, GLfloat s, GLfloat t, GLfloat r)) _func)(target, s, t, r);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord3fvARB)(GLenum target, const GLfloat *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[395];
   ((void (APIENTRY *)(GLenum target, const GLfloat *v)) _func)(target, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord3fv)(GLenum target, const GLfloat *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[395];
   ((void (APIENTRY *)(GLenum target, const GLfloat *v)) _func)(target, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord3iARB)(GLenum target, GLint s, GLint t, GLint r)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[396];
   ((void (APIENTRY *)(GLenum target, GLint s, GLint t, GLint r)) _func)(target, s, t, r);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord3i)(GLenum target, GLint s, GLint t, GLint r)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[396];
   ((void (APIENTRY *)(GLenum target, GLint s, GLint t, GLint r)) _func)(target, s, t, r);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord3ivARB)(GLenum target, const GLint *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[397];
   ((void (APIENTRY *)(GLenum target, const GLint *v)) _func)(target, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord3iv)(GLenum target, const GLint *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[397];
   ((void (APIENTRY *)(GLenum target, const GLint *v)) _func)(target, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord3sARB)(GLenum target, GLshort s, GLshort t, GLshort r)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[398];
   ((void (APIENTRY *)(GLenum target, GLshort s, GLshort t, GLshort r)) _func)(target, s, t, r);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord3s)(GLenum target, GLshort s, GLshort t, GLshort r)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[398];
   ((void (APIENTRY *)(GLenum target, GLshort s, GLshort t, GLshort r)) _func)(target, s, t, r);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord3svARB)(GLenum target, const GLshort *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[399];
   ((void (APIENTRY *)(GLenum target, const GLshort *v)) _func)(target, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord3sv)(GLenum target, const GLshort *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[399];
   ((void (APIENTRY *)(GLenum target, const GLshort *v)) _func)(target, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord4dARB)(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[400];
   ((void (APIENTRY *)(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q)) _func)(target, s, t, r, q);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord4d)(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[400];
   ((void (APIENTRY *)(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q)) _func)(target, s, t, r, q);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord4dvARB)(GLenum target, const GLdouble *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[401];
   ((void (APIENTRY *)(GLenum target, const GLdouble *v)) _func)(target, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord4dv)(GLenum target, const GLdouble *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[401];
   ((void (APIENTRY *)(GLenum target, const GLdouble *v)) _func)(target, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord4fARB)(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[402];
   ((void (APIENTRY *)(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q)) _func)(target, s, t, r, q);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord4f)(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[402];
   ((void (APIENTRY *)(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q)) _func)(target, s, t, r, q);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord4fvARB)(GLenum target, const GLfloat *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[403];
   ((void (APIENTRY *)(GLenum target, const GLfloat *v)) _func)(target, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord4fv)(GLenum target, const GLfloat *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[403];
   ((void (APIENTRY *)(GLenum target, const GLfloat *v)) _func)(target, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord4iARB)(GLenum target, GLint s, GLint t, GLint r, GLint q)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[404];
   ((void (APIENTRY *)(GLenum target, GLint s, GLint t, GLint r, GLint q)) _func)(target, s, t, r, q);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord4i)(GLenum target, GLint s, GLint t, GLint r, GLint q)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[404];
   ((void (APIENTRY *)(GLenum target, GLint s, GLint t, GLint r, GLint q)) _func)(target, s, t, r, q);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord4ivARB)(GLenum target, const GLint *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[405];
   ((void (APIENTRY *)(GLenum target, const GLint *v)) _func)(target, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord4iv)(GLenum target, const GLint *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[405];
   ((void (APIENTRY *)(GLenum target, const GLint *v)) _func)(target, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord4sARB)(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[406];
   ((void (APIENTRY *)(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q)) _func)(target, s, t, r, q);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord4s)(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[406];
   ((void (APIENTRY *)(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q)) _func)(target, s, t, r, q);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord4svARB)(GLenum target, const GLshort *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[407];
   ((void (APIENTRY *)(GLenum target, const GLshort *v)) _func)(target, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoord4sv)(GLenum target, const GLshort *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[407];
   ((void (APIENTRY *)(GLenum target, const GLshort *v)) _func)(target, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(AttachShader)(GLuint program, GLuint shader)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[408];
   ((void (APIENTRY *)(GLuint program, GLuint shader)) _func)(program, shader);
}

GLAPI GLuint APIENTRY GLAPI_PREFIX(CreateProgram)(void)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[409];
   return ((GLuint (APIENTRY *)(void)) _func)();
}

GLAPI GLuint APIENTRY GLAPI_PREFIX(CreateShader)(GLenum type)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[410];
   return ((GLuint (APIENTRY *)(GLenum type)) _func)(type);
}

GLAPI void APIENTRY GLAPI_PREFIX(DeleteProgram)(GLuint program)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[411];
   ((void (APIENTRY *)(GLuint program)) _func)(program);
}

GLAPI void APIENTRY GLAPI_PREFIX(DeleteShader)(GLuint program)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[412];
   ((void (APIENTRY *)(GLuint program)) _func)(program);
}

GLAPI void APIENTRY GLAPI_PREFIX(DetachShader)(GLuint program, GLuint shader)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[413];
   ((void (APIENTRY *)(GLuint program, GLuint shader)) _func)(program, shader);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetAttachedShaders)(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[414];
   ((void (APIENTRY *)(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj)) _func)(program, maxCount, count, obj);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetProgramInfoLog)(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[415];
   ((void (APIENTRY *)(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog)) _func)(program, bufSize, length, infoLog);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetProgramiv)(GLuint program, GLenum pname, GLint *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[416];
   ((void (APIENTRY *)(GLuint program, GLenum pname, GLint *params)) _func)(program, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetShaderInfoLog)(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[417];
   ((void (APIENTRY *)(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog)) _func)(shader, bufSize, length, infoLog);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetShaderiv)(GLuint shader, GLenum pname, GLint *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[418];
   ((void (APIENTRY *)(GLuint shader, GLenum pname, GLint *params)) _func)(shader, pname, params);
}

GLAPI GLboolean APIENTRY GLAPI_PREFIX(IsProgram)(GLuint program)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[419];
   return ((GLboolean (APIENTRY *)(GLuint program)) _func)(program);
}

GLAPI GLboolean APIENTRY GLAPI_PREFIX(IsShader)(GLuint shader)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[420];
   return ((GLboolean (APIENTRY *)(GLuint shader)) _func)(shader);
}

GLAPI void APIENTRY GLAPI_PREFIX(StencilFuncSeparate)(GLenum face, GLenum func, GLint ref, GLuint mask)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[421];
   ((void (APIENTRY *)(GLenum face, GLenum func, GLint ref, GLuint mask)) _func)(face, func, ref, mask);
}

GLAPI void APIENTRY GLAPI_PREFIX(StencilMaskSeparate)(GLenum face, GLuint mask)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[422];
   ((void (APIENTRY *)(GLenum face, GLuint mask)) _func)(face, mask);
}

GLAPI void APIENTRY GLAPI_PREFIX(StencilOpSeparate)(GLenum face, GLenum sfail, GLenum zfail, GLenum zpass)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[423];
   ((void (APIENTRY *)(GLenum face, GLenum sfail, GLenum zfail, GLenum zpass)) _func)(face, sfail, zfail, zpass);
}

GLAPI void APIENTRY GLAPI_PREFIX(UniformMatrix2x3fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[424];
   ((void (APIENTRY *)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) _func)(location, count, transpose, value);
}

GLAPI void APIENTRY GLAPI_PREFIX(UniformMatrix2x4fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[425];
   ((void (APIENTRY *)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) _func)(location, count, transpose, value);
}

GLAPI void APIENTRY GLAPI_PREFIX(UniformMatrix3x2fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[426];
   ((void (APIENTRY *)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) _func)(location, count, transpose, value);
}

GLAPI void APIENTRY GLAPI_PREFIX(UniformMatrix3x4fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[427];
   ((void (APIENTRY *)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) _func)(location, count, transpose, value);
}

GLAPI void APIENTRY GLAPI_PREFIX(UniformMatrix4x2fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[428];
   ((void (APIENTRY *)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) _func)(location, count, transpose, value);
}

GLAPI void APIENTRY GLAPI_PREFIX(UniformMatrix4x3fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[429];
   ((void (APIENTRY *)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) _func)(location, count, transpose, value);
}

GLAPI void APIENTRY GLAPI_PREFIX(ClampColor)(GLenum target, GLenum clamp)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[430];
   ((void (APIENTRY *)(GLenum target, GLenum clamp)) _func)(target, clamp);
}

GLAPI void APIENTRY GLAPI_PREFIX(ClearBufferfi)(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[431];
   ((void (APIENTRY *)(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil)) _func)(buffer, drawbuffer, depth, stencil);
}

GLAPI void APIENTRY GLAPI_PREFIX(ClearBufferfv)(GLenum buffer, GLint drawbuffer, const GLfloat *value)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[432];
   ((void (APIENTRY *)(GLenum buffer, GLint drawbuffer, const GLfloat *value)) _func)(buffer, drawbuffer, value);
}

GLAPI void APIENTRY GLAPI_PREFIX(ClearBufferiv)(GLenum buffer, GLint drawbuffer, const GLint *value)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[433];
   ((void (APIENTRY *)(GLenum buffer, GLint drawbuffer, const GLint *value)) _func)(buffer, drawbuffer, value);
}

GLAPI void APIENTRY GLAPI_PREFIX(ClearBufferuiv)(GLenum buffer, GLint drawbuffer, const GLuint *value)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[434];
   ((void (APIENTRY *)(GLenum buffer, GLint drawbuffer, const GLuint *value)) _func)(buffer, drawbuffer, value);
}

GLAPI const GLubyte * APIENTRY GLAPI_PREFIX(GetStringi)(GLenum name, GLuint index)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[435];
   return ((const GLubyte * (APIENTRY *)(GLenum name, GLuint index)) _func)(name, index);
}

GLAPI void APIENTRY GLAPI_PREFIX(FramebufferTexture)(GLenum target, GLenum attachment, GLuint texture, GLint level)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[436];
   ((void (APIENTRY *)(GLenum target, GLenum attachment, GLuint texture, GLint level)) _func)(target, attachment, texture, level);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetBufferParameteri64v)(GLenum target, GLenum pname, GLint64 *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[437];
   ((void (APIENTRY *)(GLenum target, GLenum pname, GLint64 *params)) _func)(target, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetInteger64i_v)(GLenum cap, GLuint index, GLint64 *data)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[438];
   ((void (APIENTRY *)(GLenum cap, GLuint index, GLint64 *data)) _func)(cap, index, data);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribDivisor)(GLuint index, GLuint divisor)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[439];
   ((void (APIENTRY *)(GLuint index, GLuint divisor)) _func)(index, divisor);
}

GLAPI void APIENTRY GLAPI_PREFIX(LoadTransposeMatrixdARB)(const GLdouble *m)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[440];
   ((void (APIENTRY *)(const GLdouble *m)) _func)(m);
}

GLAPI void APIENTRY GLAPI_PREFIX(LoadTransposeMatrixd)(const GLdouble *m)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[440];
   ((void (APIENTRY *)(const GLdouble *m)) _func)(m);
}

GLAPI void APIENTRY GLAPI_PREFIX(LoadTransposeMatrixfARB)(const GLfloat *m)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[441];
   ((void (APIENTRY *)(const GLfloat *m)) _func)(m);
}

GLAPI void APIENTRY GLAPI_PREFIX(LoadTransposeMatrixf)(const GLfloat *m)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[441];
   ((void (APIENTRY *)(const GLfloat *m)) _func)(m);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultTransposeMatrixdARB)(const GLdouble *m)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[442];
   ((void (APIENTRY *)(const GLdouble *m)) _func)(m);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultTransposeMatrixd)(const GLdouble *m)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[442];
   ((void (APIENTRY *)(const GLdouble *m)) _func)(m);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultTransposeMatrixfARB)(const GLfloat *m)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[443];
   ((void (APIENTRY *)(const GLfloat *m)) _func)(m);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultTransposeMatrixf)(const GLfloat *m)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[443];
   ((void (APIENTRY *)(const GLfloat *m)) _func)(m);
}

GLAPI void APIENTRY GLAPI_PREFIX(SampleCoverageARB)(GLclampf value, GLboolean invert)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[444];
   ((void (APIENTRY *)(GLclampf value, GLboolean invert)) _func)(value, invert);
}

GLAPI void APIENTRY GLAPI_PREFIX(SampleCoverage)(GLclampf value, GLboolean invert)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[444];
   ((void (APIENTRY *)(GLclampf value, GLboolean invert)) _func)(value, invert);
}

GLAPI void APIENTRY GLAPI_PREFIX(CompressedTexImage1DARB)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[445];
   ((void (APIENTRY *)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data)) _func)(target, level, internalformat, width, border, imageSize, data);
}

GLAPI void APIENTRY GLAPI_PREFIX(CompressedTexImage1D)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[445];
   ((void (APIENTRY *)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data)) _func)(target, level, internalformat, width, border, imageSize, data);
}

GLAPI void APIENTRY GLAPI_PREFIX(CompressedTexImage2DARB)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[446];
   ((void (APIENTRY *)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data)) _func)(target, level, internalformat, width, height, border, imageSize, data);
}

GLAPI void APIENTRY GLAPI_PREFIX(CompressedTexImage2D)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[446];
   ((void (APIENTRY *)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data)) _func)(target, level, internalformat, width, height, border, imageSize, data);
}

GLAPI void APIENTRY GLAPI_PREFIX(CompressedTexImage3DARB)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[447];
   ((void (APIENTRY *)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data)) _func)(target, level, internalformat, width, height, depth, border, imageSize, data);
}

GLAPI void APIENTRY GLAPI_PREFIX(CompressedTexImage3D)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[447];
   ((void (APIENTRY *)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data)) _func)(target, level, internalformat, width, height, depth, border, imageSize, data);
}

GLAPI void APIENTRY GLAPI_PREFIX(CompressedTexSubImage1DARB)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[448];
   ((void (APIENTRY *)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data)) _func)(target, level, xoffset, width, format, imageSize, data);
}

GLAPI void APIENTRY GLAPI_PREFIX(CompressedTexSubImage1D)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[448];
   ((void (APIENTRY *)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data)) _func)(target, level, xoffset, width, format, imageSize, data);
}

GLAPI void APIENTRY GLAPI_PREFIX(CompressedTexSubImage2DARB)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[449];
   ((void (APIENTRY *)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data)) _func)(target, level, xoffset, yoffset, width, height, format, imageSize, data);
}

GLAPI void APIENTRY GLAPI_PREFIX(CompressedTexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[449];
   ((void (APIENTRY *)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data)) _func)(target, level, xoffset, yoffset, width, height, format, imageSize, data);
}

GLAPI void APIENTRY GLAPI_PREFIX(CompressedTexSubImage3DARB)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[450];
   ((void (APIENTRY *)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data)) _func)(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data);
}

GLAPI void APIENTRY GLAPI_PREFIX(CompressedTexSubImage3D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[450];
   ((void (APIENTRY *)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data)) _func)(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetCompressedTexImageARB)(GLenum target, GLint level, GLvoid *img)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[451];
   ((void (APIENTRY *)(GLenum target, GLint level, GLvoid *img)) _func)(target, level, img);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetCompressedTexImage)(GLenum target, GLint level, GLvoid *img)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[451];
   ((void (APIENTRY *)(GLenum target, GLint level, GLvoid *img)) _func)(target, level, img);
}

GLAPI void APIENTRY GLAPI_PREFIX(DisableVertexAttribArrayARB)(GLuint index)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[452];
   ((void (APIENTRY *)(GLuint index)) _func)(index);
}

GLAPI void APIENTRY GLAPI_PREFIX(DisableVertexAttribArray)(GLuint index)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[452];
   ((void (APIENTRY *)(GLuint index)) _func)(index);
}

GLAPI void APIENTRY GLAPI_PREFIX(EnableVertexAttribArrayARB)(GLuint index)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[453];
   ((void (APIENTRY *)(GLuint index)) _func)(index);
}

GLAPI void APIENTRY GLAPI_PREFIX(EnableVertexAttribArray)(GLuint index)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[453];
   ((void (APIENTRY *)(GLuint index)) _func)(index);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetProgramEnvParameterdvARB)(GLenum target, GLuint index, GLdouble *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[454];
   ((void (APIENTRY *)(GLenum target, GLuint index, GLdouble *params)) _func)(target, index, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetProgramEnvParameterfvARB)(GLenum target, GLuint index, GLfloat *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[455];
   ((void (APIENTRY *)(GLenum target, GLuint index, GLfloat *params)) _func)(target, index, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetProgramLocalParameterdvARB)(GLenum target, GLuint index, GLdouble *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[456];
   ((void (APIENTRY *)(GLenum target, GLuint index, GLdouble *params)) _func)(target, index, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetProgramLocalParameterfvARB)(GLenum target, GLuint index, GLfloat *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[457];
   ((void (APIENTRY *)(GLenum target, GLuint index, GLfloat *params)) _func)(target, index, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetProgramStringARB)(GLenum target, GLenum pname, GLvoid *string)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[458];
   ((void (APIENTRY *)(GLenum target, GLenum pname, GLvoid *string)) _func)(target, pname, string);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetProgramivARB)(GLenum target, GLenum pname, GLint *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[459];
   ((void (APIENTRY *)(GLenum target, GLenum pname, GLint *params)) _func)(target, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetVertexAttribdvARB)(GLuint index, GLenum pname, GLdouble *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[460];
   ((void (APIENTRY *)(GLuint index, GLenum pname, GLdouble *params)) _func)(index, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetVertexAttribdv)(GLuint index, GLenum pname, GLdouble *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[460];
   ((void (APIENTRY *)(GLuint index, GLenum pname, GLdouble *params)) _func)(index, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetVertexAttribfvARB)(GLuint index, GLenum pname, GLfloat *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[461];
   ((void (APIENTRY *)(GLuint index, GLenum pname, GLfloat *params)) _func)(index, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetVertexAttribfv)(GLuint index, GLenum pname, GLfloat *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[461];
   ((void (APIENTRY *)(GLuint index, GLenum pname, GLfloat *params)) _func)(index, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetVertexAttribivARB)(GLuint index, GLenum pname, GLint *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[462];
   ((void (APIENTRY *)(GLuint index, GLenum pname, GLint *params)) _func)(index, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetVertexAttribiv)(GLuint index, GLenum pname, GLint *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[462];
   ((void (APIENTRY *)(GLuint index, GLenum pname, GLint *params)) _func)(index, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(ProgramEnvParameter4dARB)(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[463];
   ((void (APIENTRY *)(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)) _func)(target, index, x, y, z, w);
}

GLAPI void APIENTRY GLAPI_PREFIX(ProgramParameter4dNV)(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[463];
   ((void (APIENTRY *)(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)) _func)(target, index, x, y, z, w);
}

GLAPI void APIENTRY GLAPI_PREFIX(ProgramEnvParameter4dvARB)(GLenum target, GLuint index, const GLdouble *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[464];
   ((void (APIENTRY *)(GLenum target, GLuint index, const GLdouble *params)) _func)(target, index, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(ProgramParameter4dvNV)(GLenum target, GLuint index, const GLdouble *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[464];
   ((void (APIENTRY *)(GLenum target, GLuint index, const GLdouble *params)) _func)(target, index, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(ProgramEnvParameter4fARB)(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[465];
   ((void (APIENTRY *)(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)) _func)(target, index, x, y, z, w);
}

GLAPI void APIENTRY GLAPI_PREFIX(ProgramParameter4fNV)(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[465];
   ((void (APIENTRY *)(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)) _func)(target, index, x, y, z, w);
}

GLAPI void APIENTRY GLAPI_PREFIX(ProgramEnvParameter4fvARB)(GLenum target, GLuint index, const GLfloat *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[466];
   ((void (APIENTRY *)(GLenum target, GLuint index, const GLfloat *params)) _func)(target, index, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(ProgramParameter4fvNV)(GLenum target, GLuint index, const GLfloat *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[466];
   ((void (APIENTRY *)(GLenum target, GLuint index, const GLfloat *params)) _func)(target, index, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(ProgramLocalParameter4dARB)(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[467];
   ((void (APIENTRY *)(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)) _func)(target, index, x, y, z, w);
}

GLAPI void APIENTRY GLAPI_PREFIX(ProgramLocalParameter4dvARB)(GLenum target, GLuint index, const GLdouble *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[468];
   ((void (APIENTRY *)(GLenum target, GLuint index, const GLdouble *params)) _func)(target, index, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(ProgramLocalParameter4fARB)(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[469];
   ((void (APIENTRY *)(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)) _func)(target, index, x, y, z, w);
}

GLAPI void APIENTRY GLAPI_PREFIX(ProgramLocalParameter4fvARB)(GLenum target, GLuint index, const GLfloat *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[470];
   ((void (APIENTRY *)(GLenum target, GLuint index, const GLfloat *params)) _func)(target, index, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(ProgramStringARB)(GLenum target, GLenum format, GLsizei len, const GLvoid *string)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[471];
   ((void (APIENTRY *)(GLenum target, GLenum format, GLsizei len, const GLvoid *string)) _func)(target, format, len, string);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib1dARB)(GLuint index, GLdouble x)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[472];
   ((void (APIENTRY *)(GLuint index, GLdouble x)) _func)(index, x);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib1d)(GLuint index, GLdouble x)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[472];
   ((void (APIENTRY *)(GLuint index, GLdouble x)) _func)(index, x);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib1dvARB)(GLuint index, const GLdouble *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[473];
   ((void (APIENTRY *)(GLuint index, const GLdouble *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib1dv)(GLuint index, const GLdouble *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[473];
   ((void (APIENTRY *)(GLuint index, const GLdouble *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib1fARB)(GLuint index, GLfloat x)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[474];
   ((void (APIENTRY *)(GLuint index, GLfloat x)) _func)(index, x);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib1f)(GLuint index, GLfloat x)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[474];
   ((void (APIENTRY *)(GLuint index, GLfloat x)) _func)(index, x);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib1fvARB)(GLuint index, const GLfloat *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[475];
   ((void (APIENTRY *)(GLuint index, const GLfloat *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib1fv)(GLuint index, const GLfloat *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[475];
   ((void (APIENTRY *)(GLuint index, const GLfloat *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib1sARB)(GLuint index, GLshort x)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[476];
   ((void (APIENTRY *)(GLuint index, GLshort x)) _func)(index, x);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib1s)(GLuint index, GLshort x)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[476];
   ((void (APIENTRY *)(GLuint index, GLshort x)) _func)(index, x);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib1svARB)(GLuint index, const GLshort *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[477];
   ((void (APIENTRY *)(GLuint index, const GLshort *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib1sv)(GLuint index, const GLshort *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[477];
   ((void (APIENTRY *)(GLuint index, const GLshort *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib2dARB)(GLuint index, GLdouble x, GLdouble y)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[478];
   ((void (APIENTRY *)(GLuint index, GLdouble x, GLdouble y)) _func)(index, x, y);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib2d)(GLuint index, GLdouble x, GLdouble y)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[478];
   ((void (APIENTRY *)(GLuint index, GLdouble x, GLdouble y)) _func)(index, x, y);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib2dvARB)(GLuint index, const GLdouble *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[479];
   ((void (APIENTRY *)(GLuint index, const GLdouble *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib2dv)(GLuint index, const GLdouble *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[479];
   ((void (APIENTRY *)(GLuint index, const GLdouble *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib2fARB)(GLuint index, GLfloat x, GLfloat y)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[480];
   ((void (APIENTRY *)(GLuint index, GLfloat x, GLfloat y)) _func)(index, x, y);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib2f)(GLuint index, GLfloat x, GLfloat y)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[480];
   ((void (APIENTRY *)(GLuint index, GLfloat x, GLfloat y)) _func)(index, x, y);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib2fvARB)(GLuint index, const GLfloat *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[481];
   ((void (APIENTRY *)(GLuint index, const GLfloat *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib2fv)(GLuint index, const GLfloat *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[481];
   ((void (APIENTRY *)(GLuint index, const GLfloat *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib2sARB)(GLuint index, GLshort x, GLshort y)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[482];
   ((void (APIENTRY *)(GLuint index, GLshort x, GLshort y)) _func)(index, x, y);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib2s)(GLuint index, GLshort x, GLshort y)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[482];
   ((void (APIENTRY *)(GLuint index, GLshort x, GLshort y)) _func)(index, x, y);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib2svARB)(GLuint index, const GLshort *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[483];
   ((void (APIENTRY *)(GLuint index, const GLshort *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib2sv)(GLuint index, const GLshort *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[483];
   ((void (APIENTRY *)(GLuint index, const GLshort *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib3dARB)(GLuint index, GLdouble x, GLdouble y, GLdouble z)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[484];
   ((void (APIENTRY *)(GLuint index, GLdouble x, GLdouble y, GLdouble z)) _func)(index, x, y, z);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib3d)(GLuint index, GLdouble x, GLdouble y, GLdouble z)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[484];
   ((void (APIENTRY *)(GLuint index, GLdouble x, GLdouble y, GLdouble z)) _func)(index, x, y, z);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib3dvARB)(GLuint index, const GLdouble *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[485];
   ((void (APIENTRY *)(GLuint index, const GLdouble *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib3dv)(GLuint index, const GLdouble *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[485];
   ((void (APIENTRY *)(GLuint index, const GLdouble *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib3fARB)(GLuint index, GLfloat x, GLfloat y, GLfloat z)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[486];
   ((void (APIENTRY *)(GLuint index, GLfloat x, GLfloat y, GLfloat z)) _func)(index, x, y, z);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib3f)(GLuint index, GLfloat x, GLfloat y, GLfloat z)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[486];
   ((void (APIENTRY *)(GLuint index, GLfloat x, GLfloat y, GLfloat z)) _func)(index, x, y, z);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib3fvARB)(GLuint index, const GLfloat *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[487];
   ((void (APIENTRY *)(GLuint index, const GLfloat *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib3fv)(GLuint index, const GLfloat *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[487];
   ((void (APIENTRY *)(GLuint index, const GLfloat *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib3sARB)(GLuint index, GLshort x, GLshort y, GLshort z)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[488];
   ((void (APIENTRY *)(GLuint index, GLshort x, GLshort y, GLshort z)) _func)(index, x, y, z);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib3s)(GLuint index, GLshort x, GLshort y, GLshort z)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[488];
   ((void (APIENTRY *)(GLuint index, GLshort x, GLshort y, GLshort z)) _func)(index, x, y, z);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib3svARB)(GLuint index, const GLshort *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[489];
   ((void (APIENTRY *)(GLuint index, const GLshort *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib3sv)(GLuint index, const GLshort *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[489];
   ((void (APIENTRY *)(GLuint index, const GLshort *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4NbvARB)(GLuint index, const GLbyte *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[490];
   ((void (APIENTRY *)(GLuint index, const GLbyte *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4Nbv)(GLuint index, const GLbyte *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[490];
   ((void (APIENTRY *)(GLuint index, const GLbyte *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4NivARB)(GLuint index, const GLint *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[491];
   ((void (APIENTRY *)(GLuint index, const GLint *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4Niv)(GLuint index, const GLint *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[491];
   ((void (APIENTRY *)(GLuint index, const GLint *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4NsvARB)(GLuint index, const GLshort *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[492];
   ((void (APIENTRY *)(GLuint index, const GLshort *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4Nsv)(GLuint index, const GLshort *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[492];
   ((void (APIENTRY *)(GLuint index, const GLshort *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4NubARB)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[493];
   ((void (APIENTRY *)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w)) _func)(index, x, y, z, w);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4Nub)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[493];
   ((void (APIENTRY *)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w)) _func)(index, x, y, z, w);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4NubvARB)(GLuint index, const GLubyte *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[494];
   ((void (APIENTRY *)(GLuint index, const GLubyte *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4Nubv)(GLuint index, const GLubyte *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[494];
   ((void (APIENTRY *)(GLuint index, const GLubyte *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4NuivARB)(GLuint index, const GLuint *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[495];
   ((void (APIENTRY *)(GLuint index, const GLuint *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4Nuiv)(GLuint index, const GLuint *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[495];
   ((void (APIENTRY *)(GLuint index, const GLuint *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4NusvARB)(GLuint index, const GLushort *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[496];
   ((void (APIENTRY *)(GLuint index, const GLushort *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4Nusv)(GLuint index, const GLushort *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[496];
   ((void (APIENTRY *)(GLuint index, const GLushort *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4bvARB)(GLuint index, const GLbyte *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[497];
   ((void (APIENTRY *)(GLuint index, const GLbyte *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4bv)(GLuint index, const GLbyte *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[497];
   ((void (APIENTRY *)(GLuint index, const GLbyte *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4dARB)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[498];
   ((void (APIENTRY *)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)) _func)(index, x, y, z, w);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4d)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[498];
   ((void (APIENTRY *)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)) _func)(index, x, y, z, w);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4dvARB)(GLuint index, const GLdouble *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[499];
   ((void (APIENTRY *)(GLuint index, const GLdouble *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4dv)(GLuint index, const GLdouble *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[499];
   ((void (APIENTRY *)(GLuint index, const GLdouble *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4fARB)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[500];
   ((void (APIENTRY *)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)) _func)(index, x, y, z, w);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4f)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[500];
   ((void (APIENTRY *)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)) _func)(index, x, y, z, w);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4fvARB)(GLuint index, const GLfloat *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[501];
   ((void (APIENTRY *)(GLuint index, const GLfloat *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4fv)(GLuint index, const GLfloat *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[501];
   ((void (APIENTRY *)(GLuint index, const GLfloat *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4ivARB)(GLuint index, const GLint *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[502];
   ((void (APIENTRY *)(GLuint index, const GLint *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4iv)(GLuint index, const GLint *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[502];
   ((void (APIENTRY *)(GLuint index, const GLint *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4sARB)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[503];
   ((void (APIENTRY *)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w)) _func)(index, x, y, z, w);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4s)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[503];
   ((void (APIENTRY *)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w)) _func)(index, x, y, z, w);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4svARB)(GLuint index, const GLshort *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[504];
   ((void (APIENTRY *)(GLuint index, const GLshort *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4sv)(GLuint index, const GLshort *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[504];
   ((void (APIENTRY *)(GLuint index, const GLshort *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4ubvARB)(GLuint index, const GLubyte *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[505];
   ((void (APIENTRY *)(GLuint index, const GLubyte *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4ubv)(GLuint index, const GLubyte *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[505];
   ((void (APIENTRY *)(GLuint index, const GLubyte *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4uivARB)(GLuint index, const GLuint *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[506];
   ((void (APIENTRY *)(GLuint index, const GLuint *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4uiv)(GLuint index, const GLuint *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[506];
   ((void (APIENTRY *)(GLuint index, const GLuint *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4usvARB)(GLuint index, const GLushort *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[507];
   ((void (APIENTRY *)(GLuint index, const GLushort *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4usv)(GLuint index, const GLushort *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[507];
   ((void (APIENTRY *)(GLuint index, const GLushort *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribPointerARB)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[508];
   ((void (APIENTRY *)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer)) _func)(index, size, type, normalized, stride, pointer);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribPointer)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[508];
   ((void (APIENTRY *)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer)) _func)(index, size, type, normalized, stride, pointer);
}

GLAPI void APIENTRY GLAPI_PREFIX(BindBufferARB)(GLenum target, GLuint buffer)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[509];
   ((void (APIENTRY *)(GLenum target, GLuint buffer)) _func)(target, buffer);
}

GLAPI void APIENTRY GLAPI_PREFIX(BindBuffer)(GLenum target, GLuint buffer)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[509];
   ((void (APIENTRY *)(GLenum target, GLuint buffer)) _func)(target, buffer);
}

GLAPI void APIENTRY GLAPI_PREFIX(BufferDataARB)(GLenum target, GLsizeiptrARB size, const GLvoid *data, GLenum usage)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[510];
   ((void (APIENTRY *)(GLenum target, GLsizeiptrARB size, const GLvoid *data, GLenum usage)) _func)(target, size, data, usage);
}

GLAPI void APIENTRY GLAPI_PREFIX(BufferData)(GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[510];
   ((void (APIENTRY *)(GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage)) _func)(target, size, data, usage);
}

GLAPI void APIENTRY GLAPI_PREFIX(BufferSubDataARB)(GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid *data)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[511];
   ((void (APIENTRY *)(GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid *data)) _func)(target, offset, size, data);
}

GLAPI void APIENTRY GLAPI_PREFIX(BufferSubData)(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[511];
   ((void (APIENTRY *)(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data)) _func)(target, offset, size, data);
}

GLAPI void APIENTRY GLAPI_PREFIX(DeleteBuffersARB)(GLsizei n, const GLuint *buffer)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[512];
   ((void (APIENTRY *)(GLsizei n, const GLuint *buffer)) _func)(n, buffer);
}

GLAPI void APIENTRY GLAPI_PREFIX(DeleteBuffers)(GLsizei n, const GLuint *buffer)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[512];
   ((void (APIENTRY *)(GLsizei n, const GLuint *buffer)) _func)(n, buffer);
}

GLAPI void APIENTRY GLAPI_PREFIX(GenBuffersARB)(GLsizei n, GLuint *buffer)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[513];
   ((void (APIENTRY *)(GLsizei n, GLuint *buffer)) _func)(n, buffer);
}

GLAPI void APIENTRY GLAPI_PREFIX(GenBuffers)(GLsizei n, GLuint *buffer)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[513];
   ((void (APIENTRY *)(GLsizei n, GLuint *buffer)) _func)(n, buffer);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetBufferParameterivARB)(GLenum target, GLenum pname, GLint *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[514];
   ((void (APIENTRY *)(GLenum target, GLenum pname, GLint *params)) _func)(target, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetBufferParameteriv)(GLenum target, GLenum pname, GLint *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[514];
   ((void (APIENTRY *)(GLenum target, GLenum pname, GLint *params)) _func)(target, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetBufferPointervARB)(GLenum target, GLenum pname, GLvoid **params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[515];
   ((void (APIENTRY *)(GLenum target, GLenum pname, GLvoid **params)) _func)(target, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetBufferPointerv)(GLenum target, GLenum pname, GLvoid **params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[515];
   ((void (APIENTRY *)(GLenum target, GLenum pname, GLvoid **params)) _func)(target, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetBufferSubDataARB)(GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid *data)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[516];
   ((void (APIENTRY *)(GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid *data)) _func)(target, offset, size, data);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetBufferSubData)(GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[516];
   ((void (APIENTRY *)(GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data)) _func)(target, offset, size, data);
}

GLAPI GLboolean APIENTRY GLAPI_PREFIX(IsBufferARB)(GLuint buffer)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[517];
   return ((GLboolean (APIENTRY *)(GLuint buffer)) _func)(buffer);
}

GLAPI GLboolean APIENTRY GLAPI_PREFIX(IsBuffer)(GLuint buffer)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[517];
   return ((GLboolean (APIENTRY *)(GLuint buffer)) _func)(buffer);
}

GLAPI GLvoid * APIENTRY GLAPI_PREFIX(MapBufferARB)(GLenum target, GLenum access)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[518];
   return ((GLvoid * (APIENTRY *)(GLenum target, GLenum access)) _func)(target, access);
}

GLAPI GLvoid * APIENTRY GLAPI_PREFIX(MapBuffer)(GLenum target, GLenum access)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[518];
   return ((GLvoid * (APIENTRY *)(GLenum target, GLenum access)) _func)(target, access);
}

GLAPI GLboolean APIENTRY GLAPI_PREFIX(UnmapBufferARB)(GLenum target)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[519];
   return ((GLboolean (APIENTRY *)(GLenum target)) _func)(target);
}

GLAPI GLboolean APIENTRY GLAPI_PREFIX(UnmapBuffer)(GLenum target)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[519];
   return ((GLboolean (APIENTRY *)(GLenum target)) _func)(target);
}

GLAPI void APIENTRY GLAPI_PREFIX(BeginQueryARB)(GLenum target, GLuint id)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[520];
   ((void (APIENTRY *)(GLenum target, GLuint id)) _func)(target, id);
}

GLAPI void APIENTRY GLAPI_PREFIX(BeginQuery)(GLenum target, GLuint id)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[520];
   ((void (APIENTRY *)(GLenum target, GLuint id)) _func)(target, id);
}

GLAPI void APIENTRY GLAPI_PREFIX(DeleteQueriesARB)(GLsizei n, const GLuint *ids)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[521];
   ((void (APIENTRY *)(GLsizei n, const GLuint *ids)) _func)(n, ids);
}

GLAPI void APIENTRY GLAPI_PREFIX(DeleteQueries)(GLsizei n, const GLuint *ids)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[521];
   ((void (APIENTRY *)(GLsizei n, const GLuint *ids)) _func)(n, ids);
}

GLAPI void APIENTRY GLAPI_PREFIX(EndQueryARB)(GLenum target)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[522];
   ((void (APIENTRY *)(GLenum target)) _func)(target);
}

GLAPI void APIENTRY GLAPI_PREFIX(EndQuery)(GLenum target)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[522];
   ((void (APIENTRY *)(GLenum target)) _func)(target);
}

GLAPI void APIENTRY GLAPI_PREFIX(GenQueriesARB)(GLsizei n, GLuint *ids)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[523];
   ((void (APIENTRY *)(GLsizei n, GLuint *ids)) _func)(n, ids);
}

GLAPI void APIENTRY GLAPI_PREFIX(GenQueries)(GLsizei n, GLuint *ids)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[523];
   ((void (APIENTRY *)(GLsizei n, GLuint *ids)) _func)(n, ids);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetQueryObjectivARB)(GLuint id, GLenum pname, GLint *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[524];
   ((void (APIENTRY *)(GLuint id, GLenum pname, GLint *params)) _func)(id, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetQueryObjectiv)(GLuint id, GLenum pname, GLint *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[524];
   ((void (APIENTRY *)(GLuint id, GLenum pname, GLint *params)) _func)(id, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetQueryObjectuivARB)(GLuint id, GLenum pname, GLuint *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[525];
   ((void (APIENTRY *)(GLuint id, GLenum pname, GLuint *params)) _func)(id, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetQueryObjectuiv)(GLuint id, GLenum pname, GLuint *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[525];
   ((void (APIENTRY *)(GLuint id, GLenum pname, GLuint *params)) _func)(id, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetQueryivARB)(GLenum target, GLenum pname, GLint *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[526];
   ((void (APIENTRY *)(GLenum target, GLenum pname, GLint *params)) _func)(target, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetQueryiv)(GLenum target, GLenum pname, GLint *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[526];
   ((void (APIENTRY *)(GLenum target, GLenum pname, GLint *params)) _func)(target, pname, params);
}

GLAPI GLboolean APIENTRY GLAPI_PREFIX(IsQueryARB)(GLuint id)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[527];
   return ((GLboolean (APIENTRY *)(GLuint id)) _func)(id);
}

GLAPI GLboolean APIENTRY GLAPI_PREFIX(IsQuery)(GLuint id)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[527];
   return ((GLboolean (APIENTRY *)(GLuint id)) _func)(id);
}

GLAPI void APIENTRY GLAPI_PREFIX(AttachObjectARB)(GLhandleARB containerObj, GLhandleARB obj)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[528];
   ((void (APIENTRY *)(GLhandleARB containerObj, GLhandleARB obj)) _func)(containerObj, obj);
}

GLAPI void APIENTRY GLAPI_PREFIX(CompileShaderARB)(GLhandleARB shader)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[529];
   ((void (APIENTRY *)(GLhandleARB shader)) _func)(shader);
}

GLAPI void APIENTRY GLAPI_PREFIX(CompileShader)(GLuint shader)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[529];
   ((void (APIENTRY *)(GLuint shader)) _func)(shader);
}

GLAPI GLhandleARB APIENTRY GLAPI_PREFIX(CreateProgramObjectARB)(void)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[530];
   return ((GLhandleARB (APIENTRY *)(void)) _func)();
}

GLAPI GLhandleARB APIENTRY GLAPI_PREFIX(CreateShaderObjectARB)(GLenum shaderType)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[531];
   return ((GLhandleARB (APIENTRY *)(GLenum shaderType)) _func)(shaderType);
}

GLAPI void APIENTRY GLAPI_PREFIX(DeleteObjectARB)(GLhandleARB obj)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[532];
   ((void (APIENTRY *)(GLhandleARB obj)) _func)(obj);
}

GLAPI void APIENTRY GLAPI_PREFIX(DetachObjectARB)(GLhandleARB containerObj, GLhandleARB attachedObj)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[533];
   ((void (APIENTRY *)(GLhandleARB containerObj, GLhandleARB attachedObj)) _func)(containerObj, attachedObj);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetActiveUniformARB)(GLhandleARB program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[534];
   ((void (APIENTRY *)(GLhandleARB program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name)) _func)(program, index, bufSize, length, size, type, name);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetActiveUniform)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[534];
   ((void (APIENTRY *)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name)) _func)(program, index, bufSize, length, size, type, name);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetAttachedObjectsARB)(GLhandleARB containerObj, GLsizei maxLength, GLsizei *length, GLhandleARB *infoLog)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[535];
   ((void (APIENTRY *)(GLhandleARB containerObj, GLsizei maxLength, GLsizei *length, GLhandleARB *infoLog)) _func)(containerObj, maxLength, length, infoLog);
}

GLAPI GLhandleARB APIENTRY GLAPI_PREFIX(GetHandleARB)(GLenum pname)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[536];
   return ((GLhandleARB (APIENTRY *)(GLenum pname)) _func)(pname);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetInfoLogARB)(GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *infoLog)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[537];
   ((void (APIENTRY *)(GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *infoLog)) _func)(obj, maxLength, length, infoLog);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetObjectParameterfvARB)(GLhandleARB obj, GLenum pname, GLfloat *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[538];
   ((void (APIENTRY *)(GLhandleARB obj, GLenum pname, GLfloat *params)) _func)(obj, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetObjectParameterivARB)(GLhandleARB obj, GLenum pname, GLint *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[539];
   ((void (APIENTRY *)(GLhandleARB obj, GLenum pname, GLint *params)) _func)(obj, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetShaderSourceARB)(GLhandleARB shader, GLsizei bufSize, GLsizei *length, GLcharARB *source)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[540];
   ((void (APIENTRY *)(GLhandleARB shader, GLsizei bufSize, GLsizei *length, GLcharARB *source)) _func)(shader, bufSize, length, source);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetShaderSource)(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[540];
   ((void (APIENTRY *)(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source)) _func)(shader, bufSize, length, source);
}

GLAPI GLint APIENTRY GLAPI_PREFIX(GetUniformLocationARB)(GLhandleARB program, const GLcharARB *name)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[541];
   return ((GLint (APIENTRY *)(GLhandleARB program, const GLcharARB *name)) _func)(program, name);
}

GLAPI GLint APIENTRY GLAPI_PREFIX(GetUniformLocation)(GLuint program, const GLchar *name)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[541];
   return ((GLint (APIENTRY *)(GLuint program, const GLchar *name)) _func)(program, name);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetUniformfvARB)(GLhandleARB program, GLint location, GLfloat *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[542];
   ((void (APIENTRY *)(GLhandleARB program, GLint location, GLfloat *params)) _func)(program, location, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetUniformfv)(GLuint program, GLint location, GLfloat *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[542];
   ((void (APIENTRY *)(GLuint program, GLint location, GLfloat *params)) _func)(program, location, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetUniformivARB)(GLhandleARB program, GLint location, GLint *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[543];
   ((void (APIENTRY *)(GLhandleARB program, GLint location, GLint *params)) _func)(program, location, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetUniformiv)(GLuint program, GLint location, GLint *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[543];
   ((void (APIENTRY *)(GLuint program, GLint location, GLint *params)) _func)(program, location, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(LinkProgramARB)(GLhandleARB program)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[544];
   ((void (APIENTRY *)(GLhandleARB program)) _func)(program);
}

GLAPI void APIENTRY GLAPI_PREFIX(LinkProgram)(GLuint program)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[544];
   ((void (APIENTRY *)(GLuint program)) _func)(program);
}

GLAPI void APIENTRY GLAPI_PREFIX(ShaderSourceARB)(GLhandleARB shader, GLsizei count, const GLcharARB **string, const GLint *length)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[545];
   ((void (APIENTRY *)(GLhandleARB shader, GLsizei count, const GLcharARB **string, const GLint *length)) _func)(shader, count, string, length);
}

GLAPI void APIENTRY GLAPI_PREFIX(ShaderSource)(GLuint shader, GLsizei count, const GLchar * const *string, const GLint *length)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[545];
   ((void (APIENTRY *)(GLuint shader, GLsizei count, const GLchar * const *string, const GLint *length)) _func)(shader, count, string, length);
}

GLAPI void APIENTRY GLAPI_PREFIX(Uniform1fARB)(GLint location, GLfloat v0)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[546];
   ((void (APIENTRY *)(GLint location, GLfloat v0)) _func)(location, v0);
}

GLAPI void APIENTRY GLAPI_PREFIX(Uniform1f)(GLint location, GLfloat v0)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[546];
   ((void (APIENTRY *)(GLint location, GLfloat v0)) _func)(location, v0);
}

GLAPI void APIENTRY GLAPI_PREFIX(Uniform1fvARB)(GLint location, GLsizei count, const GLfloat *value)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[547];
   ((void (APIENTRY *)(GLint location, GLsizei count, const GLfloat *value)) _func)(location, count, value);
}

GLAPI void APIENTRY GLAPI_PREFIX(Uniform1fv)(GLint location, GLsizei count, const GLfloat *value)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[547];
   ((void (APIENTRY *)(GLint location, GLsizei count, const GLfloat *value)) _func)(location, count, value);
}

GLAPI void APIENTRY GLAPI_PREFIX(Uniform1iARB)(GLint location, GLint v0)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[548];
   ((void (APIENTRY *)(GLint location, GLint v0)) _func)(location, v0);
}

GLAPI void APIENTRY GLAPI_PREFIX(Uniform1i)(GLint location, GLint v0)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[548];
   ((void (APIENTRY *)(GLint location, GLint v0)) _func)(location, v0);
}

GLAPI void APIENTRY GLAPI_PREFIX(Uniform1ivARB)(GLint location, GLsizei count, const GLint *value)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[549];
   ((void (APIENTRY *)(GLint location, GLsizei count, const GLint *value)) _func)(location, count, value);
}

GLAPI void APIENTRY GLAPI_PREFIX(Uniform1iv)(GLint location, GLsizei count, const GLint *value)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[549];
   ((void (APIENTRY *)(GLint location, GLsizei count, const GLint *value)) _func)(location, count, value);
}

GLAPI void APIENTRY GLAPI_PREFIX(Uniform2fARB)(GLint location, GLfloat v0, GLfloat v1)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[550];
   ((void (APIENTRY *)(GLint location, GLfloat v0, GLfloat v1)) _func)(location, v0, v1);
}

GLAPI void APIENTRY GLAPI_PREFIX(Uniform2f)(GLint location, GLfloat v0, GLfloat v1)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[550];
   ((void (APIENTRY *)(GLint location, GLfloat v0, GLfloat v1)) _func)(location, v0, v1);
}

GLAPI void APIENTRY GLAPI_PREFIX(Uniform2fvARB)(GLint location, GLsizei count, const GLfloat *value)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[551];
   ((void (APIENTRY *)(GLint location, GLsizei count, const GLfloat *value)) _func)(location, count, value);
}

GLAPI void APIENTRY GLAPI_PREFIX(Uniform2fv)(GLint location, GLsizei count, const GLfloat *value)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[551];
   ((void (APIENTRY *)(GLint location, GLsizei count, const GLfloat *value)) _func)(location, count, value);
}

GLAPI void APIENTRY GLAPI_PREFIX(Uniform2iARB)(GLint location, GLint v0, GLint v1)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[552];
   ((void (APIENTRY *)(GLint location, GLint v0, GLint v1)) _func)(location, v0, v1);
}

GLAPI void APIENTRY GLAPI_PREFIX(Uniform2i)(GLint location, GLint v0, GLint v1)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[552];
   ((void (APIENTRY *)(GLint location, GLint v0, GLint v1)) _func)(location, v0, v1);
}

GLAPI void APIENTRY GLAPI_PREFIX(Uniform2ivARB)(GLint location, GLsizei count, const GLint *value)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[553];
   ((void (APIENTRY *)(GLint location, GLsizei count, const GLint *value)) _func)(location, count, value);
}

GLAPI void APIENTRY GLAPI_PREFIX(Uniform2iv)(GLint location, GLsizei count, const GLint *value)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[553];
   ((void (APIENTRY *)(GLint location, GLsizei count, const GLint *value)) _func)(location, count, value);
}

GLAPI void APIENTRY GLAPI_PREFIX(Uniform3fARB)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[554];
   ((void (APIENTRY *)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2)) _func)(location, v0, v1, v2);
}

GLAPI void APIENTRY GLAPI_PREFIX(Uniform3f)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[554];
   ((void (APIENTRY *)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2)) _func)(location, v0, v1, v2);
}

GLAPI void APIENTRY GLAPI_PREFIX(Uniform3fvARB)(GLint location, GLsizei count, const GLfloat *value)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[555];
   ((void (APIENTRY *)(GLint location, GLsizei count, const GLfloat *value)) _func)(location, count, value);
}

GLAPI void APIENTRY GLAPI_PREFIX(Uniform3fv)(GLint location, GLsizei count, const GLfloat *value)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[555];
   ((void (APIENTRY *)(GLint location, GLsizei count, const GLfloat *value)) _func)(location, count, value);
}

GLAPI void APIENTRY GLAPI_PREFIX(Uniform3iARB)(GLint location, GLint v0, GLint v1, GLint v2)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[556];
   ((void (APIENTRY *)(GLint location, GLint v0, GLint v1, GLint v2)) _func)(location, v0, v1, v2);
}

GLAPI void APIENTRY GLAPI_PREFIX(Uniform3i)(GLint location, GLint v0, GLint v1, GLint v2)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[556];
   ((void (APIENTRY *)(GLint location, GLint v0, GLint v1, GLint v2)) _func)(location, v0, v1, v2);
}

GLAPI void APIENTRY GLAPI_PREFIX(Uniform3ivARB)(GLint location, GLsizei count, const GLint *value)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[557];
   ((void (APIENTRY *)(GLint location, GLsizei count, const GLint *value)) _func)(location, count, value);
}

GLAPI void APIENTRY GLAPI_PREFIX(Uniform3iv)(GLint location, GLsizei count, const GLint *value)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[557];
   ((void (APIENTRY *)(GLint location, GLsizei count, const GLint *value)) _func)(location, count, value);
}

GLAPI void APIENTRY GLAPI_PREFIX(Uniform4fARB)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[558];
   ((void (APIENTRY *)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3)) _func)(location, v0, v1, v2, v3);
}

GLAPI void APIENTRY GLAPI_PREFIX(Uniform4f)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[558];
   ((void (APIENTRY *)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3)) _func)(location, v0, v1, v2, v3);
}

GLAPI void APIENTRY GLAPI_PREFIX(Uniform4fvARB)(GLint location, GLsizei count, const GLfloat *value)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[559];
   ((void (APIENTRY *)(GLint location, GLsizei count, const GLfloat *value)) _func)(location, count, value);
}

GLAPI void APIENTRY GLAPI_PREFIX(Uniform4fv)(GLint location, GLsizei count, const GLfloat *value)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[559];
   ((void (APIENTRY *)(GLint location, GLsizei count, const GLfloat *value)) _func)(location, count, value);
}

GLAPI void APIENTRY GLAPI_PREFIX(Uniform4iARB)(GLint location, GLint v0, GLint v1, GLint v2, GLint v3)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[560];
   ((void (APIENTRY *)(GLint location, GLint v0, GLint v1, GLint v2, GLint v3)) _func)(location, v0, v1, v2, v3);
}

GLAPI void APIENTRY GLAPI_PREFIX(Uniform4i)(GLint location, GLint v0, GLint v1, GLint v2, GLint v3)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[560];
   ((void (APIENTRY *)(GLint location, GLint v0, GLint v1, GLint v2, GLint v3)) _func)(location, v0, v1, v2, v3);
}

GLAPI void APIENTRY GLAPI_PREFIX(Uniform4ivARB)(GLint location, GLsizei count, const GLint *value)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[561];
   ((void (APIENTRY *)(GLint location, GLsizei count, const GLint *value)) _func)(location, count, value);
}

GLAPI void APIENTRY GLAPI_PREFIX(Uniform4iv)(GLint location, GLsizei count, const GLint *value)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[561];
   ((void (APIENTRY *)(GLint location, GLsizei count, const GLint *value)) _func)(location, count, value);
}

GLAPI void APIENTRY GLAPI_PREFIX(UniformMatrix2fvARB)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[562];
   ((void (APIENTRY *)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) _func)(location, count, transpose, value);
}

GLAPI void APIENTRY GLAPI_PREFIX(UniformMatrix2fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[562];
   ((void (APIENTRY *)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) _func)(location, count, transpose, value);
}

GLAPI void APIENTRY GLAPI_PREFIX(UniformMatrix3fvARB)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[563];
   ((void (APIENTRY *)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) _func)(location, count, transpose, value);
}

GLAPI void APIENTRY GLAPI_PREFIX(UniformMatrix3fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[563];
   ((void (APIENTRY *)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) _func)(location, count, transpose, value);
}

GLAPI void APIENTRY GLAPI_PREFIX(UniformMatrix4fvARB)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[564];
   ((void (APIENTRY *)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) _func)(location, count, transpose, value);
}

GLAPI void APIENTRY GLAPI_PREFIX(UniformMatrix4fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[564];
   ((void (APIENTRY *)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) _func)(location, count, transpose, value);
}

GLAPI void APIENTRY GLAPI_PREFIX(UseProgramObjectARB)(GLhandleARB program)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[565];
   ((void (APIENTRY *)(GLhandleARB program)) _func)(program);
}

GLAPI void APIENTRY GLAPI_PREFIX(UseProgram)(GLuint program)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[565];
   ((void (APIENTRY *)(GLuint program)) _func)(program);
}

GLAPI void APIENTRY GLAPI_PREFIX(ValidateProgramARB)(GLhandleARB program)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[566];
   ((void (APIENTRY *)(GLhandleARB program)) _func)(program);
}

GLAPI void APIENTRY GLAPI_PREFIX(ValidateProgram)(GLuint program)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[566];
   ((void (APIENTRY *)(GLuint program)) _func)(program);
}

GLAPI void APIENTRY GLAPI_PREFIX(BindAttribLocationARB)(GLhandleARB program, GLuint index, const GLcharARB *name)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[567];
   ((void (APIENTRY *)(GLhandleARB program, GLuint index, const GLcharARB *name)) _func)(program, index, name);
}

GLAPI void APIENTRY GLAPI_PREFIX(BindAttribLocation)(GLuint program, GLuint index, const GLchar *name)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[567];
   ((void (APIENTRY *)(GLuint program, GLuint index, const GLchar *name)) _func)(program, index, name);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetActiveAttribARB)(GLhandleARB program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[568];
   ((void (APIENTRY *)(GLhandleARB program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name)) _func)(program, index, bufSize, length, size, type, name);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetActiveAttrib)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[568];
   ((void (APIENTRY *)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name)) _func)(program, index, bufSize, length, size, type, name);
}

GLAPI GLint APIENTRY GLAPI_PREFIX(GetAttribLocationARB)(GLhandleARB program, const GLcharARB *name)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[569];
   return ((GLint (APIENTRY *)(GLhandleARB program, const GLcharARB *name)) _func)(program, name);
}

GLAPI GLint APIENTRY GLAPI_PREFIX(GetAttribLocation)(GLuint program, const GLchar *name)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[569];
   return ((GLint (APIENTRY *)(GLuint program, const GLchar *name)) _func)(program, name);
}

GLAPI void APIENTRY GLAPI_PREFIX(DrawBuffersARB)(GLsizei n, const GLenum *bufs)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[570];
   ((void (APIENTRY *)(GLsizei n, const GLenum *bufs)) _func)(n, bufs);
}

GLAPI void APIENTRY GLAPI_PREFIX(DrawBuffers)(GLsizei n, const GLenum *bufs)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[570];
   ((void (APIENTRY *)(GLsizei n, const GLenum *bufs)) _func)(n, bufs);
}

GLAPI void APIENTRY GLAPI_PREFIX(DrawBuffersATI)(GLsizei n, const GLenum *bufs)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[570];
   ((void (APIENTRY *)(GLsizei n, const GLenum *bufs)) _func)(n, bufs);
}

GLAPI void APIENTRY GLAPI_PREFIX(DrawBuffersNV)(GLsizei n, const GLenum *bufs)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[570];
   ((void (APIENTRY *)(GLsizei n, const GLenum *bufs)) _func)(n, bufs);
}

GLAPI void APIENTRY GLAPI_PREFIX(ClampColorARB)(GLenum target, GLenum clamp)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[571];
   ((void (APIENTRY *)(GLenum target, GLenum clamp)) _func)(target, clamp);
}

GLAPI void APIENTRY GLAPI_PREFIX(DrawArraysInstancedARB)(GLenum mode, GLint first, GLsizei count, GLsizei primcount)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[572];
   ((void (APIENTRY *)(GLenum mode, GLint first, GLsizei count, GLsizei primcount)) _func)(mode, first, count, primcount);
}

GLAPI void APIENTRY GLAPI_PREFIX(DrawArraysInstanced)(GLenum mode, GLint first, GLsizei count, GLsizei primcount)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[572];
   ((void (APIENTRY *)(GLenum mode, GLint first, GLsizei count, GLsizei primcount)) _func)(mode, first, count, primcount);
}

GLAPI void APIENTRY GLAPI_PREFIX(DrawArraysInstancedEXT)(GLenum mode, GLint first, GLsizei count, GLsizei primcount)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[572];
   ((void (APIENTRY *)(GLenum mode, GLint first, GLsizei count, GLsizei primcount)) _func)(mode, first, count, primcount);
}

GLAPI void APIENTRY GLAPI_PREFIX(DrawElementsInstancedARB)(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[573];
   ((void (APIENTRY *)(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount)) _func)(mode, count, type, indices, primcount);
}

GLAPI void APIENTRY GLAPI_PREFIX(DrawElementsInstanced)(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[573];
   ((void (APIENTRY *)(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount)) _func)(mode, count, type, indices, primcount);
}

GLAPI void APIENTRY GLAPI_PREFIX(DrawElementsInstancedEXT)(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[573];
   ((void (APIENTRY *)(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount)) _func)(mode, count, type, indices, primcount);
}

GLAPI void APIENTRY GLAPI_PREFIX(RenderbufferStorageMultisample)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[574];
   ((void (APIENTRY *)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)) _func)(target, samples, internalformat, width, height);
}

GLAPI void APIENTRY GLAPI_PREFIX(RenderbufferStorageMultisampleEXT)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[574];
   ((void (APIENTRY *)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)) _func)(target, samples, internalformat, width, height);
}

GLAPI void APIENTRY GLAPI_PREFIX(FramebufferTextureARB)(GLenum target, GLenum attachment, GLuint texture, GLint level)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[575];
   ((void (APIENTRY *)(GLenum target, GLenum attachment, GLuint texture, GLint level)) _func)(target, attachment, texture, level);
}

GLAPI void APIENTRY GLAPI_PREFIX(FramebufferTextureFaceARB)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[576];
   ((void (APIENTRY *)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face)) _func)(target, attachment, texture, level, face);
}

GLAPI void APIENTRY GLAPI_PREFIX(ProgramParameteriARB)(GLuint program, GLenum pname, GLint value)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[577];
   ((void (APIENTRY *)(GLuint program, GLenum pname, GLint value)) _func)(program, pname, value);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribDivisorARB)(GLuint index, GLuint divisor)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[578];
   ((void (APIENTRY *)(GLuint index, GLuint divisor)) _func)(index, divisor);
}

GLAPI void APIENTRY GLAPI_PREFIX(FlushMappedBufferRange)(GLenum target, GLintptr offset, GLsizeiptr length)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[579];
   ((void (APIENTRY *)(GLenum target, GLintptr offset, GLsizeiptr length)) _func)(target, offset, length);
}

GLAPI GLvoid * APIENTRY GLAPI_PREFIX(MapBufferRange)(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[580];
   return ((GLvoid * (APIENTRY *)(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access)) _func)(target, offset, length, access);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexBufferARB)(GLenum target, GLenum internalFormat, GLuint buffer)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[581];
   ((void (APIENTRY *)(GLenum target, GLenum internalFormat, GLuint buffer)) _func)(target, internalFormat, buffer);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexBuffer)(GLenum target, GLenum internalFormat, GLuint buffer)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[581];
   ((void (APIENTRY *)(GLenum target, GLenum internalFormat, GLuint buffer)) _func)(target, internalFormat, buffer);
}

GLAPI void APIENTRY GLAPI_PREFIX(BindVertexArray)(GLuint array)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[582];
   ((void (APIENTRY *)(GLuint array)) _func)(array);
}

GLAPI void APIENTRY GLAPI_PREFIX(BindVertexArrayOES)(GLuint array)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[582];
   ((void (APIENTRY *)(GLuint array)) _func)(array);
}

GLAPI void APIENTRY GLAPI_PREFIX(GenVertexArrays)(GLsizei n, GLuint *arrays)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[583];
   ((void (APIENTRY *)(GLsizei n, GLuint *arrays)) _func)(n, arrays);
}

GLAPI void APIENTRY GLAPI_PREFIX(GenVertexArraysOES)(GLsizei n, GLuint *arrays)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[583];
   ((void (APIENTRY *)(GLsizei n, GLuint *arrays)) _func)(n, arrays);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetActiveUniformBlockName)(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[584];
   ((void (APIENTRY *)(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName)) _func)(program, uniformBlockIndex, bufSize, length, uniformBlockName);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetActiveUniformBlockiv)(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[585];
   ((void (APIENTRY *)(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params)) _func)(program, uniformBlockIndex, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetActiveUniformName)(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[586];
   ((void (APIENTRY *)(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName)) _func)(program, uniformIndex, bufSize, length, uniformName);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetActiveUniformsiv)(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[587];
   ((void (APIENTRY *)(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params)) _func)(program, uniformCount, uniformIndices, pname, params);
}

GLAPI GLuint APIENTRY GLAPI_PREFIX(GetUniformBlockIndex)(GLuint program, const GLchar *uniformBlockName)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[588];
   return ((GLuint (APIENTRY *)(GLuint program, const GLchar *uniformBlockName)) _func)(program, uniformBlockName);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetUniformIndices)(GLuint program, GLsizei uniformCount, const GLchar * const *uniformNames, GLuint *uniformIndices)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[589];
   ((void (APIENTRY *)(GLuint program, GLsizei uniformCount, const GLchar * const *uniformNames, GLuint *uniformIndices)) _func)(program, uniformCount, uniformNames, uniformIndices);
}

GLAPI void APIENTRY GLAPI_PREFIX(UniformBlockBinding)(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[590];
   ((void (APIENTRY *)(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding)) _func)(program, uniformBlockIndex, uniformBlockBinding);
}

GLAPI void APIENTRY GLAPI_PREFIX(CopyBufferSubData)(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[591];
   ((void (APIENTRY *)(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size)) _func)(readTarget, writeTarget, readOffset, writeOffset, size);
}

GLAPI GLenum APIENTRY GLAPI_PREFIX(ClientWaitSync)(GLsync sync, GLbitfield flags, GLuint64 timeout)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[592];
   return ((GLenum (APIENTRY *)(GLsync sync, GLbitfield flags, GLuint64 timeout)) _func)(sync, flags, timeout);
}

GLAPI void APIENTRY GLAPI_PREFIX(DeleteSync)(GLsync sync)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[593];
   ((void (APIENTRY *)(GLsync sync)) _func)(sync);
}

GLAPI GLsync APIENTRY GLAPI_PREFIX(FenceSync)(GLenum condition, GLbitfield flags)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[594];
   return ((GLsync (APIENTRY *)(GLenum condition, GLbitfield flags)) _func)(condition, flags);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetInteger64v)(GLenum pname, GLint64 *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[595];
   ((void (APIENTRY *)(GLenum pname, GLint64 *params)) _func)(pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetSynciv)(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[596];
   ((void (APIENTRY *)(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values)) _func)(sync, pname, bufSize, length, values);
}

GLAPI GLboolean APIENTRY GLAPI_PREFIX(IsSync)(GLsync sync)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[597];
   return ((GLboolean (APIENTRY *)(GLsync sync)) _func)(sync);
}

GLAPI void APIENTRY GLAPI_PREFIX(WaitSync)(GLsync sync, GLbitfield flags, GLuint64 timeout)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[598];
   ((void (APIENTRY *)(GLsync sync, GLbitfield flags, GLuint64 timeout)) _func)(sync, flags, timeout);
}

GLAPI void APIENTRY GLAPI_PREFIX(DrawElementsBaseVertex)(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[599];
   ((void (APIENTRY *)(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex)) _func)(mode, count, type, indices, basevertex);
}

GLAPI void APIENTRY GLAPI_PREFIX(DrawElementsInstancedBaseVertex)(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount, GLint basevertex)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[600];
   ((void (APIENTRY *)(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount, GLint basevertex)) _func)(mode, count, type, indices, primcount, basevertex);
}

GLAPI void APIENTRY GLAPI_PREFIX(DrawRangeElementsBaseVertex)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[601];
   ((void (APIENTRY *)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex)) _func)(mode, start, end, count, type, indices, basevertex);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiDrawElementsBaseVertex)(GLenum mode, const GLsizei *count, GLenum type, const GLvoid * const *indices, GLsizei primcount, const GLint *basevertex)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[602];
   ((void (APIENTRY *)(GLenum mode, const GLsizei *count, GLenum type, const GLvoid * const *indices, GLsizei primcount, const GLint *basevertex)) _func)(mode, count, type, indices, primcount, basevertex);
}

GLAPI void APIENTRY GLAPI_PREFIX(BlendEquationSeparateiARB)(GLuint buf, GLenum modeRGB, GLenum modeA)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[603];
   ((void (APIENTRY *)(GLuint buf, GLenum modeRGB, GLenum modeA)) _func)(buf, modeRGB, modeA);
}

GLAPI void APIENTRY GLAPI_PREFIX(BlendEquationSeparateIndexedAMD)(GLuint buf, GLenum modeRGB, GLenum modeA)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[603];
   ((void (APIENTRY *)(GLuint buf, GLenum modeRGB, GLenum modeA)) _func)(buf, modeRGB, modeA);
}

GLAPI void APIENTRY GLAPI_PREFIX(BlendEquationiARB)(GLuint buf, GLenum mode)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[604];
   ((void (APIENTRY *)(GLuint buf, GLenum mode)) _func)(buf, mode);
}

GLAPI void APIENTRY GLAPI_PREFIX(BlendEquationIndexedAMD)(GLuint buf, GLenum mode)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[604];
   ((void (APIENTRY *)(GLuint buf, GLenum mode)) _func)(buf, mode);
}

GLAPI void APIENTRY GLAPI_PREFIX(BlendFuncSeparateiARB)(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcA, GLenum dstA)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[605];
   ((void (APIENTRY *)(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcA, GLenum dstA)) _func)(buf, srcRGB, dstRGB, srcA, dstA);
}

GLAPI void APIENTRY GLAPI_PREFIX(BlendFuncSeparateIndexedAMD)(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcA, GLenum dstA)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[605];
   ((void (APIENTRY *)(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcA, GLenum dstA)) _func)(buf, srcRGB, dstRGB, srcA, dstA);
}

GLAPI void APIENTRY GLAPI_PREFIX(BlendFunciARB)(GLuint buf, GLenum src, GLenum dst)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[606];
   ((void (APIENTRY *)(GLuint buf, GLenum src, GLenum dst)) _func)(buf, src, dst);
}

GLAPI void APIENTRY GLAPI_PREFIX(BlendFuncIndexedAMD)(GLuint buf, GLenum src, GLenum dst)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[606];
   ((void (APIENTRY *)(GLuint buf, GLenum src, GLenum dst)) _func)(buf, src, dst);
}

GLAPI void APIENTRY GLAPI_PREFIX(BindFragDataLocationIndexed)(GLuint program, GLuint colorNumber, GLuint index, const GLchar *name)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[607];
   ((void (APIENTRY *)(GLuint program, GLuint colorNumber, GLuint index, const GLchar *name)) _func)(program, colorNumber, index, name);
}

GLAPI GLint APIENTRY GLAPI_PREFIX(GetFragDataIndex)(GLuint program, const GLchar *name)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[608];
   return ((GLint (APIENTRY *)(GLuint program, const GLchar *name)) _func)(program, name);
}

GLAPI void APIENTRY GLAPI_PREFIX(BindSampler)(GLuint unit, GLuint sampler)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[609];
   ((void (APIENTRY *)(GLuint unit, GLuint sampler)) _func)(unit, sampler);
}

GLAPI void APIENTRY GLAPI_PREFIX(DeleteSamplers)(GLsizei count, const GLuint *samplers)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[610];
   ((void (APIENTRY *)(GLsizei count, const GLuint *samplers)) _func)(count, samplers);
}

GLAPI void APIENTRY GLAPI_PREFIX(GenSamplers)(GLsizei count, GLuint *samplers)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[611];
   ((void (APIENTRY *)(GLsizei count, GLuint *samplers)) _func)(count, samplers);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetSamplerParameterIiv)(GLuint sampler, GLenum pname, GLint *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[612];
   ((void (APIENTRY *)(GLuint sampler, GLenum pname, GLint *params)) _func)(sampler, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetSamplerParameterIuiv)(GLuint sampler, GLenum pname, GLuint *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[613];
   ((void (APIENTRY *)(GLuint sampler, GLenum pname, GLuint *params)) _func)(sampler, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetSamplerParameterfv)(GLuint sampler, GLenum pname, GLfloat *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[614];
   ((void (APIENTRY *)(GLuint sampler, GLenum pname, GLfloat *params)) _func)(sampler, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetSamplerParameteriv)(GLuint sampler, GLenum pname, GLint *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[615];
   ((void (APIENTRY *)(GLuint sampler, GLenum pname, GLint *params)) _func)(sampler, pname, params);
}

GLAPI GLboolean APIENTRY GLAPI_PREFIX(IsSampler)(GLuint sampler)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[616];
   return ((GLboolean (APIENTRY *)(GLuint sampler)) _func)(sampler);
}

GLAPI void APIENTRY GLAPI_PREFIX(SamplerParameterIiv)(GLuint sampler, GLenum pname, const GLint *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[617];
   ((void (APIENTRY *)(GLuint sampler, GLenum pname, const GLint *params)) _func)(sampler, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(SamplerParameterIuiv)(GLuint sampler, GLenum pname, const GLuint *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[618];
   ((void (APIENTRY *)(GLuint sampler, GLenum pname, const GLuint *params)) _func)(sampler, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(SamplerParameterf)(GLuint sampler, GLenum pname, GLfloat param)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[619];
   ((void (APIENTRY *)(GLuint sampler, GLenum pname, GLfloat param)) _func)(sampler, pname, param);
}

GLAPI void APIENTRY GLAPI_PREFIX(SamplerParameterfv)(GLuint sampler, GLenum pname, const GLfloat *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[620];
   ((void (APIENTRY *)(GLuint sampler, GLenum pname, const GLfloat *params)) _func)(sampler, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(SamplerParameteri)(GLuint sampler, GLenum pname, GLint param)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[621];
   ((void (APIENTRY *)(GLuint sampler, GLenum pname, GLint param)) _func)(sampler, pname, param);
}

GLAPI void APIENTRY GLAPI_PREFIX(SamplerParameteriv)(GLuint sampler, GLenum pname, const GLint *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[622];
   ((void (APIENTRY *)(GLuint sampler, GLenum pname, const GLint *params)) _func)(sampler, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(ColorP3ui)(GLenum type, GLuint color)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[624];
   ((void (APIENTRY *)(GLenum type, GLuint color)) _func)(type, color);
}

GLAPI void APIENTRY GLAPI_PREFIX(ColorP3uiv)(GLenum type, const GLuint *color)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[625];
   ((void (APIENTRY *)(GLenum type, const GLuint *color)) _func)(type, color);
}

GLAPI void APIENTRY GLAPI_PREFIX(ColorP4ui)(GLenum type, GLuint color)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[626];
   ((void (APIENTRY *)(GLenum type, GLuint color)) _func)(type, color);
}

GLAPI void APIENTRY GLAPI_PREFIX(ColorP4uiv)(GLenum type, const GLuint *color)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[627];
   ((void (APIENTRY *)(GLenum type, const GLuint *color)) _func)(type, color);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoordP1ui)(GLenum texture, GLenum type, GLuint coords)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[628];
   ((void (APIENTRY *)(GLenum texture, GLenum type, GLuint coords)) _func)(texture, type, coords);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoordP1uiv)(GLenum texture, GLenum type, const GLuint *coords)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[629];
   ((void (APIENTRY *)(GLenum texture, GLenum type, const GLuint *coords)) _func)(texture, type, coords);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoordP2ui)(GLenum texture, GLenum type, GLuint coords)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[630];
   ((void (APIENTRY *)(GLenum texture, GLenum type, GLuint coords)) _func)(texture, type, coords);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoordP2uiv)(GLenum texture, GLenum type, const GLuint *coords)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[631];
   ((void (APIENTRY *)(GLenum texture, GLenum type, const GLuint *coords)) _func)(texture, type, coords);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoordP3ui)(GLenum texture, GLenum type, GLuint coords)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[632];
   ((void (APIENTRY *)(GLenum texture, GLenum type, GLuint coords)) _func)(texture, type, coords);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoordP3uiv)(GLenum texture, GLenum type, const GLuint *coords)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[633];
   ((void (APIENTRY *)(GLenum texture, GLenum type, const GLuint *coords)) _func)(texture, type, coords);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoordP4ui)(GLenum texture, GLenum type, GLuint coords)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[634];
   ((void (APIENTRY *)(GLenum texture, GLenum type, GLuint coords)) _func)(texture, type, coords);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiTexCoordP4uiv)(GLenum texture, GLenum type, const GLuint *coords)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[635];
   ((void (APIENTRY *)(GLenum texture, GLenum type, const GLuint *coords)) _func)(texture, type, coords);
}

GLAPI void APIENTRY GLAPI_PREFIX(NormalP3ui)(GLenum type, GLuint coords)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[636];
   ((void (APIENTRY *)(GLenum type, GLuint coords)) _func)(type, coords);
}

GLAPI void APIENTRY GLAPI_PREFIX(NormalP3uiv)(GLenum type, const GLuint *coords)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[637];
   ((void (APIENTRY *)(GLenum type, const GLuint *coords)) _func)(type, coords);
}

GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColorP3ui)(GLenum type, GLuint color)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[638];
   ((void (APIENTRY *)(GLenum type, GLuint color)) _func)(type, color);
}

GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColorP3uiv)(GLenum type, const GLuint *color)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[639];
   ((void (APIENTRY *)(GLenum type, const GLuint *color)) _func)(type, color);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexCoordP1ui)(GLenum type, GLuint coords)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[640];
   ((void (APIENTRY *)(GLenum type, GLuint coords)) _func)(type, coords);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexCoordP1uiv)(GLenum type, const GLuint *coords)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[641];
   ((void (APIENTRY *)(GLenum type, const GLuint *coords)) _func)(type, coords);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexCoordP2ui)(GLenum type, GLuint coords)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[642];
   ((void (APIENTRY *)(GLenum type, GLuint coords)) _func)(type, coords);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexCoordP2uiv)(GLenum type, const GLuint *coords)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[643];
   ((void (APIENTRY *)(GLenum type, const GLuint *coords)) _func)(type, coords);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexCoordP3ui)(GLenum type, GLuint coords)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[644];
   ((void (APIENTRY *)(GLenum type, GLuint coords)) _func)(type, coords);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexCoordP3uiv)(GLenum type, const GLuint *coords)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[645];
   ((void (APIENTRY *)(GLenum type, const GLuint *coords)) _func)(type, coords);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexCoordP4ui)(GLenum type, GLuint coords)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[646];
   ((void (APIENTRY *)(GLenum type, GLuint coords)) _func)(type, coords);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexCoordP4uiv)(GLenum type, const GLuint *coords)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[647];
   ((void (APIENTRY *)(GLenum type, const GLuint *coords)) _func)(type, coords);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribP1ui)(GLuint index, GLenum type, GLboolean normalized, GLuint value)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[648];
   ((void (APIENTRY *)(GLuint index, GLenum type, GLboolean normalized, GLuint value)) _func)(index, type, normalized, value);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribP1uiv)(GLuint index, GLenum type, GLboolean normalized, const GLuint *value)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[649];
   ((void (APIENTRY *)(GLuint index, GLenum type, GLboolean normalized, const GLuint *value)) _func)(index, type, normalized, value);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribP2ui)(GLuint index, GLenum type, GLboolean normalized, GLuint value)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[650];
   ((void (APIENTRY *)(GLuint index, GLenum type, GLboolean normalized, GLuint value)) _func)(index, type, normalized, value);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribP2uiv)(GLuint index, GLenum type, GLboolean normalized, const GLuint *value)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[651];
   ((void (APIENTRY *)(GLuint index, GLenum type, GLboolean normalized, const GLuint *value)) _func)(index, type, normalized, value);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribP3ui)(GLuint index, GLenum type, GLboolean normalized, GLuint value)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[652];
   ((void (APIENTRY *)(GLuint index, GLenum type, GLboolean normalized, GLuint value)) _func)(index, type, normalized, value);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribP3uiv)(GLuint index, GLenum type, GLboolean normalized, const GLuint *value)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[653];
   ((void (APIENTRY *)(GLuint index, GLenum type, GLboolean normalized, const GLuint *value)) _func)(index, type, normalized, value);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribP4ui)(GLuint index, GLenum type, GLboolean normalized, GLuint value)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[654];
   ((void (APIENTRY *)(GLuint index, GLenum type, GLboolean normalized, GLuint value)) _func)(index, type, normalized, value);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribP4uiv)(GLuint index, GLenum type, GLboolean normalized, const GLuint *value)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[655];
   ((void (APIENTRY *)(GLuint index, GLenum type, GLboolean normalized, const GLuint *value)) _func)(index, type, normalized, value);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexP2ui)(GLenum type, GLuint value)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[656];
   ((void (APIENTRY *)(GLenum type, GLuint value)) _func)(type, value);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexP2uiv)(GLenum type, const GLuint *value)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[657];
   ((void (APIENTRY *)(GLenum type, const GLuint *value)) _func)(type, value);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexP3ui)(GLenum type, GLuint value)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[658];
   ((void (APIENTRY *)(GLenum type, GLuint value)) _func)(type, value);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexP3uiv)(GLenum type, const GLuint *value)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[659];
   ((void (APIENTRY *)(GLenum type, const GLuint *value)) _func)(type, value);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexP4ui)(GLenum type, GLuint value)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[660];
   ((void (APIENTRY *)(GLenum type, GLuint value)) _func)(type, value);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexP4uiv)(GLenum type, const GLuint *value)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[661];
   ((void (APIENTRY *)(GLenum type, const GLuint *value)) _func)(type, value);
}

GLAPI void APIENTRY GLAPI_PREFIX(BindTransformFeedback)(GLenum target, GLuint id)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[662];
   ((void (APIENTRY *)(GLenum target, GLuint id)) _func)(target, id);
}

GLAPI void APIENTRY GLAPI_PREFIX(DeleteTransformFeedbacks)(GLsizei n, const GLuint *ids)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[663];
   ((void (APIENTRY *)(GLsizei n, const GLuint *ids)) _func)(n, ids);
}

GLAPI void APIENTRY GLAPI_PREFIX(DrawTransformFeedback)(GLenum mode, GLuint id)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[664];
   ((void (APIENTRY *)(GLenum mode, GLuint id)) _func)(mode, id);
}

GLAPI void APIENTRY GLAPI_PREFIX(GenTransformFeedbacks)(GLsizei n, GLuint *ids)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[665];
   ((void (APIENTRY *)(GLsizei n, GLuint *ids)) _func)(n, ids);
}

GLAPI GLboolean APIENTRY GLAPI_PREFIX(IsTransformFeedback)(GLuint id)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[666];
   return ((GLboolean (APIENTRY *)(GLuint id)) _func)(id);
}

GLAPI void APIENTRY GLAPI_PREFIX(PauseTransformFeedback)(void)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[667];
   ((void (APIENTRY *)(void)) _func)();
}

GLAPI void APIENTRY GLAPI_PREFIX(ResumeTransformFeedback)(void)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[668];
   ((void (APIENTRY *)(void)) _func)();
}

GLAPI void APIENTRY GLAPI_PREFIX(BeginQueryIndexed)(GLenum target, GLuint index, GLuint id)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[669];
   ((void (APIENTRY *)(GLenum target, GLuint index, GLuint id)) _func)(target, index, id);
}

GLAPI void APIENTRY GLAPI_PREFIX(DrawTransformFeedbackStream)(GLenum mode, GLuint id, GLuint stream)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[670];
   ((void (APIENTRY *)(GLenum mode, GLuint id, GLuint stream)) _func)(mode, id, stream);
}

GLAPI void APIENTRY GLAPI_PREFIX(EndQueryIndexed)(GLenum target, GLuint index)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[671];
   ((void (APIENTRY *)(GLenum target, GLuint index)) _func)(target, index);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetQueryIndexediv)(GLenum target, GLuint index, GLenum pname, GLint *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[672];
   ((void (APIENTRY *)(GLenum target, GLuint index, GLenum pname, GLint *params)) _func)(target, index, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(ClearDepthf)(GLclampf depth)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[673];
   ((void (APIENTRY *)(GLclampf depth)) _func)(depth);
}

GLAPI void APIENTRY GLAPI_PREFIX(DepthRangef)(GLclampf zNear, GLclampf zFar)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[674];
   ((void (APIENTRY *)(GLclampf zNear, GLclampf zFar)) _func)(zNear, zFar);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetShaderPrecisionFormat)(GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[675];
   ((void (APIENTRY *)(GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision)) _func)(shadertype, precisiontype, range, precision);
}

GLAPI void APIENTRY GLAPI_PREFIX(ReleaseShaderCompiler)(void)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[676];
   ((void (APIENTRY *)(void)) _func)();
}

GLAPI void APIENTRY GLAPI_PREFIX(ShaderBinary)(GLsizei n, const GLuint *shaders, GLenum binaryformat, const GLvoid *binary, GLsizei length)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[677];
   ((void (APIENTRY *)(GLsizei n, const GLuint *shaders, GLenum binaryformat, const GLvoid *binary, GLsizei length)) _func)(n, shaders, binaryformat, binary, length);
}

GLAPI void APIENTRY GLAPI_PREFIX(DebugMessageCallbackARB)(GLDEBUGPROCARB callback, const GLvoid *userParam)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[681];
   ((void (APIENTRY *)(GLDEBUGPROCARB callback, const GLvoid *userParam)) _func)(callback, userParam);
}

GLAPI void APIENTRY GLAPI_PREFIX(DebugMessageControlARB)(GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[682];
   ((void (APIENTRY *)(GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled)) _func)(source, type, severity, count, ids, enabled);
}

GLAPI void APIENTRY GLAPI_PREFIX(DebugMessageInsertARB)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLcharARB *buf)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[683];
   ((void (APIENTRY *)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLcharARB *buf)) _func)(source, type, id, severity, length, buf);
}

GLAPI GLuint APIENTRY GLAPI_PREFIX(GetDebugMessageLogARB)(GLuint count, GLsizei bufsize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLcharARB *messageLog)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[684];
   return ((GLuint (APIENTRY *)(GLuint count, GLsizei bufsize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLcharARB *messageLog)) _func)(count, bufsize, sources, types, ids, severities, lengths, messageLog);
}

GLAPI GLenum APIENTRY GLAPI_PREFIX(GetGraphicsResetStatusARB)(void)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[685];
   return ((GLenum (APIENTRY *)(void)) _func)();
}

GLAPI void APIENTRY GLAPI_PREFIX(GetnColorTableARB)(GLenum target, GLenum format, GLenum type, GLsizei bufSize, GLvoid *table)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[686];
   ((void (APIENTRY *)(GLenum target, GLenum format, GLenum type, GLsizei bufSize, GLvoid *table)) _func)(target, format, type, bufSize, table);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetnCompressedTexImageARB)(GLenum target, GLint lod, GLsizei bufSize, GLvoid *img)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[687];
   ((void (APIENTRY *)(GLenum target, GLint lod, GLsizei bufSize, GLvoid *img)) _func)(target, lod, bufSize, img);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetnConvolutionFilterARB)(GLenum target, GLenum format, GLenum type, GLsizei bufSize, GLvoid *image)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[688];
   ((void (APIENTRY *)(GLenum target, GLenum format, GLenum type, GLsizei bufSize, GLvoid *image)) _func)(target, format, type, bufSize, image);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetnHistogramARB)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, GLvoid *values)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[689];
   ((void (APIENTRY *)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, GLvoid *values)) _func)(target, reset, format, type, bufSize, values);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetnMapdvARB)(GLenum target, GLenum query, GLsizei bufSize, GLdouble *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[690];
   ((void (APIENTRY *)(GLenum target, GLenum query, GLsizei bufSize, GLdouble *v)) _func)(target, query, bufSize, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetnMapfvARB)(GLenum target, GLenum query, GLsizei bufSize, GLfloat *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[691];
   ((void (APIENTRY *)(GLenum target, GLenum query, GLsizei bufSize, GLfloat *v)) _func)(target, query, bufSize, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetnMapivARB)(GLenum target, GLenum query, GLsizei bufSize, GLint *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[692];
   ((void (APIENTRY *)(GLenum target, GLenum query, GLsizei bufSize, GLint *v)) _func)(target, query, bufSize, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetnMinmaxARB)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, GLvoid *values)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[693];
   ((void (APIENTRY *)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, GLvoid *values)) _func)(target, reset, format, type, bufSize, values);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetnPixelMapfvARB)(GLenum map, GLsizei bufSize, GLfloat *values)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[694];
   ((void (APIENTRY *)(GLenum map, GLsizei bufSize, GLfloat *values)) _func)(map, bufSize, values);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetnPixelMapuivARB)(GLenum map, GLsizei bufSize, GLuint *values)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[695];
   ((void (APIENTRY *)(GLenum map, GLsizei bufSize, GLuint *values)) _func)(map, bufSize, values);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetnPixelMapusvARB)(GLenum map, GLsizei bufSize, GLushort *values)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[696];
   ((void (APIENTRY *)(GLenum map, GLsizei bufSize, GLushort *values)) _func)(map, bufSize, values);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetnPolygonStippleARB)(GLsizei bufSize, GLubyte *pattern)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[697];
   ((void (APIENTRY *)(GLsizei bufSize, GLubyte *pattern)) _func)(bufSize, pattern);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetnSeparableFilterARB)(GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, GLvoid *row, GLsizei columnBufSize, GLvoid *column, GLvoid *span)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[698];
   ((void (APIENTRY *)(GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, GLvoid *row, GLsizei columnBufSize, GLvoid *column, GLvoid *span)) _func)(target, format, type, rowBufSize, row, columnBufSize, column, span);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetnTexImageARB)(GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, GLvoid *img)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[699];
   ((void (APIENTRY *)(GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, GLvoid *img)) _func)(target, level, format, type, bufSize, img);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetnUniformdvARB)(GLhandleARB program, GLint location, GLsizei bufSize, GLdouble *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[700];
   ((void (APIENTRY *)(GLhandleARB program, GLint location, GLsizei bufSize, GLdouble *params)) _func)(program, location, bufSize, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetnUniformfvARB)(GLhandleARB program, GLint location, GLsizei bufSize, GLfloat *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[701];
   ((void (APIENTRY *)(GLhandleARB program, GLint location, GLsizei bufSize, GLfloat *params)) _func)(program, location, bufSize, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetnUniformivARB)(GLhandleARB program, GLint location, GLsizei bufSize, GLint *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[702];
   ((void (APIENTRY *)(GLhandleARB program, GLint location, GLsizei bufSize, GLint *params)) _func)(program, location, bufSize, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetnUniformuivARB)(GLhandleARB program, GLint location, GLsizei bufSize, GLuint *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[703];
   ((void (APIENTRY *)(GLhandleARB program, GLint location, GLsizei bufSize, GLuint *params)) _func)(program, location, bufSize, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(ReadnPixelsARB)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, GLvoid *data)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[704];
   ((void (APIENTRY *)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, GLvoid *data)) _func)(x, y, width, height, format, type, bufSize, data);
}

GLAPI void APIENTRY GLAPI_PREFIX(DrawArraysInstancedBaseInstance)(GLenum mode, GLint first, GLsizei count, GLsizei primcount, GLuint baseinstance)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[705];
   ((void (APIENTRY *)(GLenum mode, GLint first, GLsizei count, GLsizei primcount, GLuint baseinstance)) _func)(mode, first, count, primcount, baseinstance);
}

GLAPI void APIENTRY GLAPI_PREFIX(DrawElementsInstancedBaseInstance)(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount, GLuint baseinstance)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[706];
   ((void (APIENTRY *)(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount, GLuint baseinstance)) _func)(mode, count, type, indices, primcount, baseinstance);
}

GLAPI void APIENTRY GLAPI_PREFIX(DrawElementsInstancedBaseVertexBaseInstance)(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount, GLint basevertex, GLuint baseinstance)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[707];
   ((void (APIENTRY *)(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount, GLint basevertex, GLuint baseinstance)) _func)(mode, count, type, indices, primcount, basevertex, baseinstance);
}

GLAPI void APIENTRY GLAPI_PREFIX(DrawTransformFeedbackInstanced)(GLenum mode, GLuint id, GLsizei primcount)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[708];
   ((void (APIENTRY *)(GLenum mode, GLuint id, GLsizei primcount)) _func)(mode, id, primcount);
}

GLAPI void APIENTRY GLAPI_PREFIX(DrawTransformFeedbackStreamInstanced)(GLenum mode, GLuint id, GLuint stream, GLsizei primcount)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[709];
   ((void (APIENTRY *)(GLenum mode, GLuint id, GLuint stream, GLsizei primcount)) _func)(mode, id, stream, primcount);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexStorage1D)(GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[710];
   ((void (APIENTRY *)(GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width)) _func)(target, levels, internalFormat, width);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexStorage2D)(GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[711];
   ((void (APIENTRY *)(GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height)) _func)(target, levels, internalFormat, width, height);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexStorage3D)(GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[712];
   ((void (APIENTRY *)(GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth)) _func)(target, levels, internalFormat, width, height, depth);
}

GLAPI void APIENTRY GLAPI_PREFIX(TextureStorage1DEXT)(GLuint texture, GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[713];
   ((void (APIENTRY *)(GLuint texture, GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width)) _func)(texture, target, levels, internalFormat, width);
}

GLAPI void APIENTRY GLAPI_PREFIX(TextureStorage2DEXT)(GLuint texture, GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[714];
   ((void (APIENTRY *)(GLuint texture, GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height)) _func)(texture, target, levels, internalFormat, width, height);
}

GLAPI void APIENTRY GLAPI_PREFIX(TextureStorage3DEXT)(GLuint texture, GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[715];
   ((void (APIENTRY *)(GLuint texture, GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth)) _func)(texture, target, levels, internalFormat, width, height, depth);
}

GLAPI void APIENTRY GLAPI_PREFIX(InvalidateBufferData)(GLuint buffer)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[716];
   ((void (APIENTRY *)(GLuint buffer)) _func)(buffer);
}

GLAPI void APIENTRY GLAPI_PREFIX(InvalidateBufferSubData)(GLuint buffer, GLintptr offset, GLsizeiptr length)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[717];
   ((void (APIENTRY *)(GLuint buffer, GLintptr offset, GLsizeiptr length)) _func)(buffer, offset, length);
}

GLAPI void APIENTRY GLAPI_PREFIX(InvalidateFramebuffer)(GLenum target, GLsizei numAttachments, const GLenum *attachments)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[718];
   ((void (APIENTRY *)(GLenum target, GLsizei numAttachments, const GLenum *attachments)) _func)(target, numAttachments, attachments);
}

GLAPI void APIENTRY GLAPI_PREFIX(InvalidateSubFramebuffer)(GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[719];
   ((void (APIENTRY *)(GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height)) _func)(target, numAttachments, attachments, x, y, width, height);
}

GLAPI void APIENTRY GLAPI_PREFIX(InvalidateTexImage)(GLuint texture, GLint level)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[720];
   ((void (APIENTRY *)(GLuint texture, GLint level)) _func)(texture, level);
}

GLAPI void APIENTRY GLAPI_PREFIX(InvalidateTexSubImage)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[721];
   ((void (APIENTRY *)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth)) _func)(texture, level, xoffset, yoffset, zoffset, width, height, depth);
}

GLAPI void APIENTRY GLAPI_PREFIX(PolygonOffsetEXT)(GLfloat factor, GLfloat bias)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[722];
   ((void (APIENTRY *)(GLfloat factor, GLfloat bias)) _func)(factor, bias);
}

GLAPI void APIENTRY GLAPI_PREFIX(ColorPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[735];
   ((void (APIENTRY *)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer)) _func)(size, type, stride, count, pointer);
}

GLAPI void APIENTRY GLAPI_PREFIX(EdgeFlagPointerEXT)(GLsizei stride, GLsizei count, const GLboolean *pointer)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[736];
   ((void (APIENTRY *)(GLsizei stride, GLsizei count, const GLboolean *pointer)) _func)(stride, count, pointer);
}

GLAPI void APIENTRY GLAPI_PREFIX(IndexPointerEXT)(GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[737];
   ((void (APIENTRY *)(GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer)) _func)(type, stride, count, pointer);
}

GLAPI void APIENTRY GLAPI_PREFIX(NormalPointerEXT)(GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[738];
   ((void (APIENTRY *)(GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer)) _func)(type, stride, count, pointer);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexCoordPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[739];
   ((void (APIENTRY *)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer)) _func)(size, type, stride, count, pointer);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[740];
   ((void (APIENTRY *)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer)) _func)(size, type, stride, count, pointer);
}

GLAPI void APIENTRY GLAPI_PREFIX(PointParameterfEXT)(GLenum pname, GLfloat param)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[741];
   ((void (APIENTRY *)(GLenum pname, GLfloat param)) _func)(pname, param);
}

GLAPI void APIENTRY GLAPI_PREFIX(PointParameterf)(GLenum pname, GLfloat param)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[741];
   ((void (APIENTRY *)(GLenum pname, GLfloat param)) _func)(pname, param);
}

GLAPI void APIENTRY GLAPI_PREFIX(PointParameterfARB)(GLenum pname, GLfloat param)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[741];
   ((void (APIENTRY *)(GLenum pname, GLfloat param)) _func)(pname, param);
}

GLAPI void APIENTRY GLAPI_PREFIX(PointParameterfvEXT)(GLenum pname, const GLfloat *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[742];
   ((void (APIENTRY *)(GLenum pname, const GLfloat *params)) _func)(pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(PointParameterfv)(GLenum pname, const GLfloat *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[742];
   ((void (APIENTRY *)(GLenum pname, const GLfloat *params)) _func)(pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(PointParameterfvARB)(GLenum pname, const GLfloat *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[742];
   ((void (APIENTRY *)(GLenum pname, const GLfloat *params)) _func)(pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(LockArraysEXT)(GLint first, GLsizei count)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[743];
   ((void (APIENTRY *)(GLint first, GLsizei count)) _func)(first, count);
}

GLAPI void APIENTRY GLAPI_PREFIX(UnlockArraysEXT)(void)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[744];
   ((void (APIENTRY *)(void)) _func)();
}

GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3bEXT)(GLbyte red, GLbyte green, GLbyte blue)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[745];
   ((void (APIENTRY *)(GLbyte red, GLbyte green, GLbyte blue)) _func)(red, green, blue);
}

GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3b)(GLbyte red, GLbyte green, GLbyte blue)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[745];
   ((void (APIENTRY *)(GLbyte red, GLbyte green, GLbyte blue)) _func)(red, green, blue);
}

GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3bvEXT)(const GLbyte *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[746];
   ((void (APIENTRY *)(const GLbyte *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3bv)(const GLbyte *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[746];
   ((void (APIENTRY *)(const GLbyte *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3dEXT)(GLdouble red, GLdouble green, GLdouble blue)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[747];
   ((void (APIENTRY *)(GLdouble red, GLdouble green, GLdouble blue)) _func)(red, green, blue);
}

GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3d)(GLdouble red, GLdouble green, GLdouble blue)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[747];
   ((void (APIENTRY *)(GLdouble red, GLdouble green, GLdouble blue)) _func)(red, green, blue);
}

GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3dvEXT)(const GLdouble *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[748];
   ((void (APIENTRY *)(const GLdouble *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3dv)(const GLdouble *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[748];
   ((void (APIENTRY *)(const GLdouble *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3fEXT)(GLfloat red, GLfloat green, GLfloat blue)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[749];
   ((void (APIENTRY *)(GLfloat red, GLfloat green, GLfloat blue)) _func)(red, green, blue);
}

GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3f)(GLfloat red, GLfloat green, GLfloat blue)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[749];
   ((void (APIENTRY *)(GLfloat red, GLfloat green, GLfloat blue)) _func)(red, green, blue);
}

GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3fvEXT)(const GLfloat *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[750];
   ((void (APIENTRY *)(const GLfloat *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3fv)(const GLfloat *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[750];
   ((void (APIENTRY *)(const GLfloat *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3iEXT)(GLint red, GLint green, GLint blue)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[751];
   ((void (APIENTRY *)(GLint red, GLint green, GLint blue)) _func)(red, green, blue);
}

GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3i)(GLint red, GLint green, GLint blue)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[751];
   ((void (APIENTRY *)(GLint red, GLint green, GLint blue)) _func)(red, green, blue);
}

GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3ivEXT)(const GLint *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[752];
   ((void (APIENTRY *)(const GLint *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3iv)(const GLint *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[752];
   ((void (APIENTRY *)(const GLint *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3sEXT)(GLshort red, GLshort green, GLshort blue)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[753];
   ((void (APIENTRY *)(GLshort red, GLshort green, GLshort blue)) _func)(red, green, blue);
}

GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3s)(GLshort red, GLshort green, GLshort blue)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[753];
   ((void (APIENTRY *)(GLshort red, GLshort green, GLshort blue)) _func)(red, green, blue);
}

GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3svEXT)(const GLshort *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[754];
   ((void (APIENTRY *)(const GLshort *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3sv)(const GLshort *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[754];
   ((void (APIENTRY *)(const GLshort *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3ubEXT)(GLubyte red, GLubyte green, GLubyte blue)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[755];
   ((void (APIENTRY *)(GLubyte red, GLubyte green, GLubyte blue)) _func)(red, green, blue);
}

GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3ub)(GLubyte red, GLubyte green, GLubyte blue)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[755];
   ((void (APIENTRY *)(GLubyte red, GLubyte green, GLubyte blue)) _func)(red, green, blue);
}

GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3ubvEXT)(const GLubyte *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[756];
   ((void (APIENTRY *)(const GLubyte *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3ubv)(const GLubyte *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[756];
   ((void (APIENTRY *)(const GLubyte *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3uiEXT)(GLuint red, GLuint green, GLuint blue)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[757];
   ((void (APIENTRY *)(GLuint red, GLuint green, GLuint blue)) _func)(red, green, blue);
}

GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3ui)(GLuint red, GLuint green, GLuint blue)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[757];
   ((void (APIENTRY *)(GLuint red, GLuint green, GLuint blue)) _func)(red, green, blue);
}

GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3uivEXT)(const GLuint *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[758];
   ((void (APIENTRY *)(const GLuint *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3uiv)(const GLuint *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[758];
   ((void (APIENTRY *)(const GLuint *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3usEXT)(GLushort red, GLushort green, GLushort blue)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[759];
   ((void (APIENTRY *)(GLushort red, GLushort green, GLushort blue)) _func)(red, green, blue);
}

GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3us)(GLushort red, GLushort green, GLushort blue)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[759];
   ((void (APIENTRY *)(GLushort red, GLushort green, GLushort blue)) _func)(red, green, blue);
}

GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3usvEXT)(const GLushort *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[760];
   ((void (APIENTRY *)(const GLushort *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3usv)(const GLushort *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[760];
   ((void (APIENTRY *)(const GLushort *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColorPointerEXT)(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[761];
   ((void (APIENTRY *)(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer)) _func)(size, type, stride, pointer);
}

GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColorPointer)(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[761];
   ((void (APIENTRY *)(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer)) _func)(size, type, stride, pointer);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiDrawArraysEXT)(GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[762];
   ((void (APIENTRY *)(GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount)) _func)(mode, first, count, primcount);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiDrawArrays)(GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[762];
   ((void (APIENTRY *)(GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount)) _func)(mode, first, count, primcount);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiDrawElementsEXT)(GLenum mode, const GLsizei *count, GLenum type, const GLvoid **indices, GLsizei primcount)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[763];
   ((void (APIENTRY *)(GLenum mode, const GLsizei *count, GLenum type, const GLvoid **indices, GLsizei primcount)) _func)(mode, count, type, indices, primcount);
}

GLAPI void APIENTRY GLAPI_PREFIX(MultiDrawElements)(GLenum mode, const GLsizei *count, GLenum type, const GLvoid * const *indices, GLsizei primcount)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[763];
   ((void (APIENTRY *)(GLenum mode, const GLsizei *count, GLenum type, const GLvoid * const *indices, GLsizei primcount)) _func)(mode, count, type, indices, primcount);
}

GLAPI void APIENTRY GLAPI_PREFIX(FogCoordPointerEXT)(GLenum type, GLsizei stride, const GLvoid *pointer)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[764];
   ((void (APIENTRY *)(GLenum type, GLsizei stride, const GLvoid *pointer)) _func)(type, stride, pointer);
}

GLAPI void APIENTRY GLAPI_PREFIX(FogCoordPointer)(GLenum type, GLsizei stride, const GLvoid *pointer)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[764];
   ((void (APIENTRY *)(GLenum type, GLsizei stride, const GLvoid *pointer)) _func)(type, stride, pointer);
}

GLAPI void APIENTRY GLAPI_PREFIX(FogCoorddEXT)(GLdouble coord)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[765];
   ((void (APIENTRY *)(GLdouble coord)) _func)(coord);
}

GLAPI void APIENTRY GLAPI_PREFIX(FogCoordd)(GLdouble coord)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[765];
   ((void (APIENTRY *)(GLdouble coord)) _func)(coord);
}

GLAPI void APIENTRY GLAPI_PREFIX(FogCoorddvEXT)(const GLdouble *coord)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[766];
   ((void (APIENTRY *)(const GLdouble *coord)) _func)(coord);
}

GLAPI void APIENTRY GLAPI_PREFIX(FogCoorddv)(const GLdouble *coord)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[766];
   ((void (APIENTRY *)(const GLdouble *coord)) _func)(coord);
}

GLAPI void APIENTRY GLAPI_PREFIX(FogCoordfEXT)(GLfloat coord)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[767];
   ((void (APIENTRY *)(GLfloat coord)) _func)(coord);
}

GLAPI void APIENTRY GLAPI_PREFIX(FogCoordf)(GLfloat coord)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[767];
   ((void (APIENTRY *)(GLfloat coord)) _func)(coord);
}

GLAPI void APIENTRY GLAPI_PREFIX(FogCoordfvEXT)(const GLfloat *coord)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[768];
   ((void (APIENTRY *)(const GLfloat *coord)) _func)(coord);
}

GLAPI void APIENTRY GLAPI_PREFIX(FogCoordfv)(const GLfloat *coord)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[768];
   ((void (APIENTRY *)(const GLfloat *coord)) _func)(coord);
}

GLAPI void APIENTRY GLAPI_PREFIX(BlendFuncSeparateEXT)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[769];
   ((void (APIENTRY *)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha)) _func)(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha);
}

GLAPI void APIENTRY GLAPI_PREFIX(BlendFuncSeparate)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[769];
   ((void (APIENTRY *)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha)) _func)(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha);
}

GLAPI void APIENTRY GLAPI_PREFIX(ResizeBuffersMESA)(void)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[770];
   ((void (APIENTRY *)(void)) _func)();
}

GLAPI void APIENTRY GLAPI_PREFIX(WindowPos2dMESA)(GLdouble x, GLdouble y)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[771];
   ((void (APIENTRY *)(GLdouble x, GLdouble y)) _func)(x, y);
}

GLAPI void APIENTRY GLAPI_PREFIX(WindowPos2d)(GLdouble x, GLdouble y)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[771];
   ((void (APIENTRY *)(GLdouble x, GLdouble y)) _func)(x, y);
}

GLAPI void APIENTRY GLAPI_PREFIX(WindowPos2dARB)(GLdouble x, GLdouble y)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[771];
   ((void (APIENTRY *)(GLdouble x, GLdouble y)) _func)(x, y);
}

GLAPI void APIENTRY GLAPI_PREFIX(WindowPos2dvMESA)(const GLdouble *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[772];
   ((void (APIENTRY *)(const GLdouble *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(WindowPos2dv)(const GLdouble *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[772];
   ((void (APIENTRY *)(const GLdouble *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(WindowPos2dvARB)(const GLdouble *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[772];
   ((void (APIENTRY *)(const GLdouble *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(WindowPos2fMESA)(GLfloat x, GLfloat y)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[773];
   ((void (APIENTRY *)(GLfloat x, GLfloat y)) _func)(x, y);
}

GLAPI void APIENTRY GLAPI_PREFIX(WindowPos2f)(GLfloat x, GLfloat y)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[773];
   ((void (APIENTRY *)(GLfloat x, GLfloat y)) _func)(x, y);
}

GLAPI void APIENTRY GLAPI_PREFIX(WindowPos2fARB)(GLfloat x, GLfloat y)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[773];
   ((void (APIENTRY *)(GLfloat x, GLfloat y)) _func)(x, y);
}

GLAPI void APIENTRY GLAPI_PREFIX(WindowPos2fvMESA)(const GLfloat *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[774];
   ((void (APIENTRY *)(const GLfloat *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(WindowPos2fv)(const GLfloat *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[774];
   ((void (APIENTRY *)(const GLfloat *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(WindowPos2fvARB)(const GLfloat *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[774];
   ((void (APIENTRY *)(const GLfloat *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(WindowPos2iMESA)(GLint x, GLint y)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[775];
   ((void (APIENTRY *)(GLint x, GLint y)) _func)(x, y);
}

GLAPI void APIENTRY GLAPI_PREFIX(WindowPos2i)(GLint x, GLint y)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[775];
   ((void (APIENTRY *)(GLint x, GLint y)) _func)(x, y);
}

GLAPI void APIENTRY GLAPI_PREFIX(WindowPos2iARB)(GLint x, GLint y)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[775];
   ((void (APIENTRY *)(GLint x, GLint y)) _func)(x, y);
}

GLAPI void APIENTRY GLAPI_PREFIX(WindowPos2ivMESA)(const GLint *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[776];
   ((void (APIENTRY *)(const GLint *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(WindowPos2iv)(const GLint *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[776];
   ((void (APIENTRY *)(const GLint *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(WindowPos2ivARB)(const GLint *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[776];
   ((void (APIENTRY *)(const GLint *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(WindowPos2sMESA)(GLshort x, GLshort y)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[777];
   ((void (APIENTRY *)(GLshort x, GLshort y)) _func)(x, y);
}

GLAPI void APIENTRY GLAPI_PREFIX(WindowPos2s)(GLshort x, GLshort y)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[777];
   ((void (APIENTRY *)(GLshort x, GLshort y)) _func)(x, y);
}

GLAPI void APIENTRY GLAPI_PREFIX(WindowPos2sARB)(GLshort x, GLshort y)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[777];
   ((void (APIENTRY *)(GLshort x, GLshort y)) _func)(x, y);
}

GLAPI void APIENTRY GLAPI_PREFIX(WindowPos2svMESA)(const GLshort *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[778];
   ((void (APIENTRY *)(const GLshort *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(WindowPos2sv)(const GLshort *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[778];
   ((void (APIENTRY *)(const GLshort *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(WindowPos2svARB)(const GLshort *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[778];
   ((void (APIENTRY *)(const GLshort *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(WindowPos3dMESA)(GLdouble x, GLdouble y, GLdouble z)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[779];
   ((void (APIENTRY *)(GLdouble x, GLdouble y, GLdouble z)) _func)(x, y, z);
}

GLAPI void APIENTRY GLAPI_PREFIX(WindowPos3d)(GLdouble x, GLdouble y, GLdouble z)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[779];
   ((void (APIENTRY *)(GLdouble x, GLdouble y, GLdouble z)) _func)(x, y, z);
}

GLAPI void APIENTRY GLAPI_PREFIX(WindowPos3dARB)(GLdouble x, GLdouble y, GLdouble z)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[779];
   ((void (APIENTRY *)(GLdouble x, GLdouble y, GLdouble z)) _func)(x, y, z);
}

GLAPI void APIENTRY GLAPI_PREFIX(WindowPos3dvMESA)(const GLdouble *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[780];
   ((void (APIENTRY *)(const GLdouble *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(WindowPos3dv)(const GLdouble *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[780];
   ((void (APIENTRY *)(const GLdouble *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(WindowPos3dvARB)(const GLdouble *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[780];
   ((void (APIENTRY *)(const GLdouble *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(WindowPos3fMESA)(GLfloat x, GLfloat y, GLfloat z)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[781];
   ((void (APIENTRY *)(GLfloat x, GLfloat y, GLfloat z)) _func)(x, y, z);
}

GLAPI void APIENTRY GLAPI_PREFIX(WindowPos3f)(GLfloat x, GLfloat y, GLfloat z)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[781];
   ((void (APIENTRY *)(GLfloat x, GLfloat y, GLfloat z)) _func)(x, y, z);
}

GLAPI void APIENTRY GLAPI_PREFIX(WindowPos3fARB)(GLfloat x, GLfloat y, GLfloat z)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[781];
   ((void (APIENTRY *)(GLfloat x, GLfloat y, GLfloat z)) _func)(x, y, z);
}

GLAPI void APIENTRY GLAPI_PREFIX(WindowPos3fvMESA)(const GLfloat *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[782];
   ((void (APIENTRY *)(const GLfloat *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(WindowPos3fv)(const GLfloat *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[782];
   ((void (APIENTRY *)(const GLfloat *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(WindowPos3fvARB)(const GLfloat *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[782];
   ((void (APIENTRY *)(const GLfloat *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(WindowPos3iMESA)(GLint x, GLint y, GLint z)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[783];
   ((void (APIENTRY *)(GLint x, GLint y, GLint z)) _func)(x, y, z);
}

GLAPI void APIENTRY GLAPI_PREFIX(WindowPos3i)(GLint x, GLint y, GLint z)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[783];
   ((void (APIENTRY *)(GLint x, GLint y, GLint z)) _func)(x, y, z);
}

GLAPI void APIENTRY GLAPI_PREFIX(WindowPos3iARB)(GLint x, GLint y, GLint z)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[783];
   ((void (APIENTRY *)(GLint x, GLint y, GLint z)) _func)(x, y, z);
}

GLAPI void APIENTRY GLAPI_PREFIX(WindowPos3ivMESA)(const GLint *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[784];
   ((void (APIENTRY *)(const GLint *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(WindowPos3iv)(const GLint *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[784];
   ((void (APIENTRY *)(const GLint *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(WindowPos3ivARB)(const GLint *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[784];
   ((void (APIENTRY *)(const GLint *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(WindowPos3sMESA)(GLshort x, GLshort y, GLshort z)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[785];
   ((void (APIENTRY *)(GLshort x, GLshort y, GLshort z)) _func)(x, y, z);
}

GLAPI void APIENTRY GLAPI_PREFIX(WindowPos3s)(GLshort x, GLshort y, GLshort z)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[785];
   ((void (APIENTRY *)(GLshort x, GLshort y, GLshort z)) _func)(x, y, z);
}

GLAPI void APIENTRY GLAPI_PREFIX(WindowPos3sARB)(GLshort x, GLshort y, GLshort z)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[785];
   ((void (APIENTRY *)(GLshort x, GLshort y, GLshort z)) _func)(x, y, z);
}

GLAPI void APIENTRY GLAPI_PREFIX(WindowPos3svMESA)(const GLshort *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[786];
   ((void (APIENTRY *)(const GLshort *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(WindowPos3sv)(const GLshort *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[786];
   ((void (APIENTRY *)(const GLshort *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(WindowPos3svARB)(const GLshort *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[786];
   ((void (APIENTRY *)(const GLshort *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(WindowPos4dMESA)(GLdouble x, GLdouble y, GLdouble z, GLdouble w)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[787];
   ((void (APIENTRY *)(GLdouble x, GLdouble y, GLdouble z, GLdouble w)) _func)(x, y, z, w);
}

GLAPI void APIENTRY GLAPI_PREFIX(WindowPos4dvMESA)(const GLdouble *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[788];
   ((void (APIENTRY *)(const GLdouble *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(WindowPos4fMESA)(GLfloat x, GLfloat y, GLfloat z, GLfloat w)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[789];
   ((void (APIENTRY *)(GLfloat x, GLfloat y, GLfloat z, GLfloat w)) _func)(x, y, z, w);
}

GLAPI void APIENTRY GLAPI_PREFIX(WindowPos4fvMESA)(const GLfloat *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[790];
   ((void (APIENTRY *)(const GLfloat *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(WindowPos4iMESA)(GLint x, GLint y, GLint z, GLint w)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[791];
   ((void (APIENTRY *)(GLint x, GLint y, GLint z, GLint w)) _func)(x, y, z, w);
}

GLAPI void APIENTRY GLAPI_PREFIX(WindowPos4ivMESA)(const GLint *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[792];
   ((void (APIENTRY *)(const GLint *v)) _func)(v);
}

GLAPI void APIENTRY GLAPI_PREFIX(WindowPos4sMESA)(GLshort x, GLshort y, GLshort z, GLshort w)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[793];
   ((void (APIENTRY *)(GLshort x, GLshort y, GLshort z, GLshort w)) _func)(x, y, z, w);
}

GLAPI void APIENTRY GLAPI_PREFIX(WindowPos4svMESA)(const GLshort *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[794];
   ((void (APIENTRY *)(const GLshort *v)) _func)(v);
}

GLAPI GLboolean APIENTRY GLAPI_PREFIX(AreProgramsResidentNV)(GLsizei n, const GLuint *ids, GLboolean *residences)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[797];
   return ((GLboolean (APIENTRY *)(GLsizei n, const GLuint *ids, GLboolean *residences)) _func)(n, ids, residences);
}

GLAPI void APIENTRY GLAPI_PREFIX(BindProgramNV)(GLenum target, GLuint program)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[798];
   ((void (APIENTRY *)(GLenum target, GLuint program)) _func)(target, program);
}

GLAPI void APIENTRY GLAPI_PREFIX(BindProgramARB)(GLenum target, GLuint program)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[798];
   ((void (APIENTRY *)(GLenum target, GLuint program)) _func)(target, program);
}

GLAPI void APIENTRY GLAPI_PREFIX(DeleteProgramsNV)(GLsizei n, const GLuint *programs)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[799];
   ((void (APIENTRY *)(GLsizei n, const GLuint *programs)) _func)(n, programs);
}

GLAPI void APIENTRY GLAPI_PREFIX(DeleteProgramsARB)(GLsizei n, const GLuint *programs)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[799];
   ((void (APIENTRY *)(GLsizei n, const GLuint *programs)) _func)(n, programs);
}

GLAPI void APIENTRY GLAPI_PREFIX(ExecuteProgramNV)(GLenum target, GLuint id, const GLfloat *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[800];
   ((void (APIENTRY *)(GLenum target, GLuint id, const GLfloat *params)) _func)(target, id, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GenProgramsNV)(GLsizei n, GLuint *programs)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[801];
   ((void (APIENTRY *)(GLsizei n, GLuint *programs)) _func)(n, programs);
}

GLAPI void APIENTRY GLAPI_PREFIX(GenProgramsARB)(GLsizei n, GLuint *programs)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[801];
   ((void (APIENTRY *)(GLsizei n, GLuint *programs)) _func)(n, programs);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetProgramParameterdvNV)(GLenum target, GLuint index, GLenum pname, GLdouble *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[802];
   ((void (APIENTRY *)(GLenum target, GLuint index, GLenum pname, GLdouble *params)) _func)(target, index, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetProgramParameterfvNV)(GLenum target, GLuint index, GLenum pname, GLfloat *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[803];
   ((void (APIENTRY *)(GLenum target, GLuint index, GLenum pname, GLfloat *params)) _func)(target, index, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetProgramStringNV)(GLuint id, GLenum pname, GLubyte *program)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[804];
   ((void (APIENTRY *)(GLuint id, GLenum pname, GLubyte *program)) _func)(id, pname, program);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetProgramivNV)(GLuint id, GLenum pname, GLint *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[805];
   ((void (APIENTRY *)(GLuint id, GLenum pname, GLint *params)) _func)(id, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetTrackMatrixivNV)(GLenum target, GLuint address, GLenum pname, GLint *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[806];
   ((void (APIENTRY *)(GLenum target, GLuint address, GLenum pname, GLint *params)) _func)(target, address, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetVertexAttribPointervNV)(GLuint index, GLenum pname, GLvoid **pointer)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[807];
   ((void (APIENTRY *)(GLuint index, GLenum pname, GLvoid **pointer)) _func)(index, pname, pointer);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetVertexAttribPointerv)(GLuint index, GLenum pname, GLvoid **pointer)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[807];
   ((void (APIENTRY *)(GLuint index, GLenum pname, GLvoid **pointer)) _func)(index, pname, pointer);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetVertexAttribPointervARB)(GLuint index, GLenum pname, GLvoid **pointer)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[807];
   ((void (APIENTRY *)(GLuint index, GLenum pname, GLvoid **pointer)) _func)(index, pname, pointer);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetVertexAttribdvNV)(GLuint index, GLenum pname, GLdouble *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[808];
   ((void (APIENTRY *)(GLuint index, GLenum pname, GLdouble *params)) _func)(index, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetVertexAttribfvNV)(GLuint index, GLenum pname, GLfloat *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[809];
   ((void (APIENTRY *)(GLuint index, GLenum pname, GLfloat *params)) _func)(index, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetVertexAttribivNV)(GLuint index, GLenum pname, GLint *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[810];
   ((void (APIENTRY *)(GLuint index, GLenum pname, GLint *params)) _func)(index, pname, params);
}

GLAPI GLboolean APIENTRY GLAPI_PREFIX(IsProgramNV)(GLuint program)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[811];
   return ((GLboolean (APIENTRY *)(GLuint program)) _func)(program);
}

GLAPI GLboolean APIENTRY GLAPI_PREFIX(IsProgramARB)(GLuint program)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[811];
   return ((GLboolean (APIENTRY *)(GLuint program)) _func)(program);
}

GLAPI void APIENTRY GLAPI_PREFIX(LoadProgramNV)(GLenum target, GLuint id, GLsizei len, const GLubyte *program)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[812];
   ((void (APIENTRY *)(GLenum target, GLuint id, GLsizei len, const GLubyte *program)) _func)(target, id, len, program);
}

GLAPI void APIENTRY GLAPI_PREFIX(ProgramParameters4dvNV)(GLenum target, GLuint index, GLsizei num, const GLdouble *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[813];
   ((void (APIENTRY *)(GLenum target, GLuint index, GLsizei num, const GLdouble *params)) _func)(target, index, num, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(ProgramParameters4fvNV)(GLenum target, GLuint index, GLsizei num, const GLfloat *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[814];
   ((void (APIENTRY *)(GLenum target, GLuint index, GLsizei num, const GLfloat *params)) _func)(target, index, num, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(RequestResidentProgramsNV)(GLsizei n, const GLuint *ids)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[815];
   ((void (APIENTRY *)(GLsizei n, const GLuint *ids)) _func)(n, ids);
}

GLAPI void APIENTRY GLAPI_PREFIX(TrackMatrixNV)(GLenum target, GLuint address, GLenum matrix, GLenum transform)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[816];
   ((void (APIENTRY *)(GLenum target, GLuint address, GLenum matrix, GLenum transform)) _func)(target, address, matrix, transform);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib1dNV)(GLuint index, GLdouble x)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[817];
   ((void (APIENTRY *)(GLuint index, GLdouble x)) _func)(index, x);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib1dvNV)(GLuint index, const GLdouble *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[818];
   ((void (APIENTRY *)(GLuint index, const GLdouble *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib1fNV)(GLuint index, GLfloat x)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[819];
   ((void (APIENTRY *)(GLuint index, GLfloat x)) _func)(index, x);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib1fvNV)(GLuint index, const GLfloat *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[820];
   ((void (APIENTRY *)(GLuint index, const GLfloat *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib1sNV)(GLuint index, GLshort x)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[821];
   ((void (APIENTRY *)(GLuint index, GLshort x)) _func)(index, x);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib1svNV)(GLuint index, const GLshort *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[822];
   ((void (APIENTRY *)(GLuint index, const GLshort *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib2dNV)(GLuint index, GLdouble x, GLdouble y)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[823];
   ((void (APIENTRY *)(GLuint index, GLdouble x, GLdouble y)) _func)(index, x, y);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib2dvNV)(GLuint index, const GLdouble *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[824];
   ((void (APIENTRY *)(GLuint index, const GLdouble *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib2fNV)(GLuint index, GLfloat x, GLfloat y)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[825];
   ((void (APIENTRY *)(GLuint index, GLfloat x, GLfloat y)) _func)(index, x, y);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib2fvNV)(GLuint index, const GLfloat *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[826];
   ((void (APIENTRY *)(GLuint index, const GLfloat *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib2sNV)(GLuint index, GLshort x, GLshort y)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[827];
   ((void (APIENTRY *)(GLuint index, GLshort x, GLshort y)) _func)(index, x, y);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib2svNV)(GLuint index, const GLshort *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[828];
   ((void (APIENTRY *)(GLuint index, const GLshort *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib3dNV)(GLuint index, GLdouble x, GLdouble y, GLdouble z)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[829];
   ((void (APIENTRY *)(GLuint index, GLdouble x, GLdouble y, GLdouble z)) _func)(index, x, y, z);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib3dvNV)(GLuint index, const GLdouble *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[830];
   ((void (APIENTRY *)(GLuint index, const GLdouble *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib3fNV)(GLuint index, GLfloat x, GLfloat y, GLfloat z)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[831];
   ((void (APIENTRY *)(GLuint index, GLfloat x, GLfloat y, GLfloat z)) _func)(index, x, y, z);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib3fvNV)(GLuint index, const GLfloat *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[832];
   ((void (APIENTRY *)(GLuint index, const GLfloat *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib3sNV)(GLuint index, GLshort x, GLshort y, GLshort z)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[833];
   ((void (APIENTRY *)(GLuint index, GLshort x, GLshort y, GLshort z)) _func)(index, x, y, z);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib3svNV)(GLuint index, const GLshort *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[834];
   ((void (APIENTRY *)(GLuint index, const GLshort *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4dNV)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[835];
   ((void (APIENTRY *)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)) _func)(index, x, y, z, w);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4dvNV)(GLuint index, const GLdouble *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[836];
   ((void (APIENTRY *)(GLuint index, const GLdouble *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4fNV)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[837];
   ((void (APIENTRY *)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)) _func)(index, x, y, z, w);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4fvNV)(GLuint index, const GLfloat *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[838];
   ((void (APIENTRY *)(GLuint index, const GLfloat *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4sNV)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[839];
   ((void (APIENTRY *)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w)) _func)(index, x, y, z, w);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4svNV)(GLuint index, const GLshort *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[840];
   ((void (APIENTRY *)(GLuint index, const GLshort *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4ubNV)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[841];
   ((void (APIENTRY *)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w)) _func)(index, x, y, z, w);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4ubvNV)(GLuint index, const GLubyte *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[842];
   ((void (APIENTRY *)(GLuint index, const GLubyte *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribPointerNV)(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[843];
   ((void (APIENTRY *)(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer)) _func)(index, size, type, stride, pointer);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribs1dvNV)(GLuint index, GLsizei n, const GLdouble *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[844];
   ((void (APIENTRY *)(GLuint index, GLsizei n, const GLdouble *v)) _func)(index, n, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribs1fvNV)(GLuint index, GLsizei n, const GLfloat *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[845];
   ((void (APIENTRY *)(GLuint index, GLsizei n, const GLfloat *v)) _func)(index, n, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribs1svNV)(GLuint index, GLsizei n, const GLshort *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[846];
   ((void (APIENTRY *)(GLuint index, GLsizei n, const GLshort *v)) _func)(index, n, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribs2dvNV)(GLuint index, GLsizei n, const GLdouble *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[847];
   ((void (APIENTRY *)(GLuint index, GLsizei n, const GLdouble *v)) _func)(index, n, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribs2fvNV)(GLuint index, GLsizei n, const GLfloat *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[848];
   ((void (APIENTRY *)(GLuint index, GLsizei n, const GLfloat *v)) _func)(index, n, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribs2svNV)(GLuint index, GLsizei n, const GLshort *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[849];
   ((void (APIENTRY *)(GLuint index, GLsizei n, const GLshort *v)) _func)(index, n, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribs3dvNV)(GLuint index, GLsizei n, const GLdouble *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[850];
   ((void (APIENTRY *)(GLuint index, GLsizei n, const GLdouble *v)) _func)(index, n, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribs3fvNV)(GLuint index, GLsizei n, const GLfloat *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[851];
   ((void (APIENTRY *)(GLuint index, GLsizei n, const GLfloat *v)) _func)(index, n, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribs3svNV)(GLuint index, GLsizei n, const GLshort *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[852];
   ((void (APIENTRY *)(GLuint index, GLsizei n, const GLshort *v)) _func)(index, n, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribs4dvNV)(GLuint index, GLsizei n, const GLdouble *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[853];
   ((void (APIENTRY *)(GLuint index, GLsizei n, const GLdouble *v)) _func)(index, n, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribs4fvNV)(GLuint index, GLsizei n, const GLfloat *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[854];
   ((void (APIENTRY *)(GLuint index, GLsizei n, const GLfloat *v)) _func)(index, n, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribs4svNV)(GLuint index, GLsizei n, const GLshort *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[855];
   ((void (APIENTRY *)(GLuint index, GLsizei n, const GLshort *v)) _func)(index, n, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribs4ubvNV)(GLuint index, GLsizei n, const GLubyte *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[856];
   ((void (APIENTRY *)(GLuint index, GLsizei n, const GLubyte *v)) _func)(index, n, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetTexBumpParameterfvATI)(GLenum pname, GLfloat *param)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[857];
   ((void (APIENTRY *)(GLenum pname, GLfloat *param)) _func)(pname, param);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetTexBumpParameterivATI)(GLenum pname, GLint *param)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[858];
   ((void (APIENTRY *)(GLenum pname, GLint *param)) _func)(pname, param);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexBumpParameterfvATI)(GLenum pname, const GLfloat *param)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[859];
   ((void (APIENTRY *)(GLenum pname, const GLfloat *param)) _func)(pname, param);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexBumpParameterivATI)(GLenum pname, const GLint *param)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[860];
   ((void (APIENTRY *)(GLenum pname, const GLint *param)) _func)(pname, param);
}

GLAPI void APIENTRY GLAPI_PREFIX(AlphaFragmentOp1ATI)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[861];
   ((void (APIENTRY *)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod)) _func)(op, dst, dstMod, arg1, arg1Rep, arg1Mod);
}

GLAPI void APIENTRY GLAPI_PREFIX(AlphaFragmentOp2ATI)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[862];
   ((void (APIENTRY *)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod)) _func)(op, dst, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod);
}

GLAPI void APIENTRY GLAPI_PREFIX(AlphaFragmentOp3ATI)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[863];
   ((void (APIENTRY *)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod)) _func)(op, dst, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod, arg3, arg3Rep, arg3Mod);
}

GLAPI void APIENTRY GLAPI_PREFIX(BeginFragmentShaderATI)(void)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[864];
   ((void (APIENTRY *)(void)) _func)();
}

GLAPI void APIENTRY GLAPI_PREFIX(BindFragmentShaderATI)(GLuint id)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[865];
   ((void (APIENTRY *)(GLuint id)) _func)(id);
}

GLAPI void APIENTRY GLAPI_PREFIX(ColorFragmentOp1ATI)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[866];
   ((void (APIENTRY *)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod)) _func)(op, dst, dstMask, dstMod, arg1, arg1Rep, arg1Mod);
}

GLAPI void APIENTRY GLAPI_PREFIX(ColorFragmentOp2ATI)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[867];
   ((void (APIENTRY *)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod)) _func)(op, dst, dstMask, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod);
}

GLAPI void APIENTRY GLAPI_PREFIX(ColorFragmentOp3ATI)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[868];
   ((void (APIENTRY *)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod)) _func)(op, dst, dstMask, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod, arg3, arg3Rep, arg3Mod);
}

GLAPI void APIENTRY GLAPI_PREFIX(DeleteFragmentShaderATI)(GLuint id)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[869];
   ((void (APIENTRY *)(GLuint id)) _func)(id);
}

GLAPI void APIENTRY GLAPI_PREFIX(EndFragmentShaderATI)(void)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[870];
   ((void (APIENTRY *)(void)) _func)();
}

GLAPI GLuint APIENTRY GLAPI_PREFIX(GenFragmentShadersATI)(GLuint range)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[871];
   return ((GLuint (APIENTRY *)(GLuint range)) _func)(range);
}

GLAPI void APIENTRY GLAPI_PREFIX(PassTexCoordATI)(GLuint dst, GLuint coord, GLenum swizzle)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[872];
   ((void (APIENTRY *)(GLuint dst, GLuint coord, GLenum swizzle)) _func)(dst, coord, swizzle);
}

GLAPI void APIENTRY GLAPI_PREFIX(SampleMapATI)(GLuint dst, GLuint interp, GLenum swizzle)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[873];
   ((void (APIENTRY *)(GLuint dst, GLuint interp, GLenum swizzle)) _func)(dst, interp, swizzle);
}

GLAPI void APIENTRY GLAPI_PREFIX(SetFragmentShaderConstantATI)(GLuint dst, const GLfloat *value)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[874];
   ((void (APIENTRY *)(GLuint dst, const GLfloat *value)) _func)(dst, value);
}

GLAPI void APIENTRY GLAPI_PREFIX(PointParameteriNV)(GLenum pname, GLint param)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[875];
   ((void (APIENTRY *)(GLenum pname, GLint param)) _func)(pname, param);
}

GLAPI void APIENTRY GLAPI_PREFIX(PointParameteri)(GLenum pname, GLint param)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[875];
   ((void (APIENTRY *)(GLenum pname, GLint param)) _func)(pname, param);
}

GLAPI void APIENTRY GLAPI_PREFIX(PointParameterivNV)(GLenum pname, const GLint *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[876];
   ((void (APIENTRY *)(GLenum pname, const GLint *params)) _func)(pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(PointParameteriv)(GLenum pname, const GLint *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[876];
   ((void (APIENTRY *)(GLenum pname, const GLint *params)) _func)(pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(DeleteVertexArrays)(GLsizei n, const GLuint *arrays)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[879];
   ((void (APIENTRY *)(GLsizei n, const GLuint *arrays)) _func)(n, arrays);
}

GLAPI void APIENTRY GLAPI_PREFIX(DeleteVertexArraysOES)(GLsizei n, const GLuint *arrays)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[879];
   ((void (APIENTRY *)(GLsizei n, const GLuint *arrays)) _func)(n, arrays);
}

GLAPI GLboolean APIENTRY GLAPI_PREFIX(IsVertexArray)(GLuint array)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[881];
   return ((GLboolean (APIENTRY *)(GLuint array)) _func)(array);
}

GLAPI GLboolean APIENTRY GLAPI_PREFIX(IsVertexArrayOES)(GLuint array)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[881];
   return ((GLboolean (APIENTRY *)(GLuint array)) _func)(array);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetProgramNamedParameterdvNV)(GLuint id, GLsizei len, const GLubyte *name, GLdouble *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[882];
   ((void (APIENTRY *)(GLuint id, GLsizei len, const GLubyte *name, GLdouble *params)) _func)(id, len, name, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetProgramNamedParameterfvNV)(GLuint id, GLsizei len, const GLubyte *name, GLfloat *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[883];
   ((void (APIENTRY *)(GLuint id, GLsizei len, const GLubyte *name, GLfloat *params)) _func)(id, len, name, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(ProgramNamedParameter4dNV)(GLuint id, GLsizei len, const GLubyte *name, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[884];
   ((void (APIENTRY *)(GLuint id, GLsizei len, const GLubyte *name, GLdouble x, GLdouble y, GLdouble z, GLdouble w)) _func)(id, len, name, x, y, z, w);
}

GLAPI void APIENTRY GLAPI_PREFIX(ProgramNamedParameter4dvNV)(GLuint id, GLsizei len, const GLubyte *name, const GLdouble *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[885];
   ((void (APIENTRY *)(GLuint id, GLsizei len, const GLubyte *name, const GLdouble *v)) _func)(id, len, name, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(ProgramNamedParameter4fNV)(GLuint id, GLsizei len, const GLubyte *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[886];
   ((void (APIENTRY *)(GLuint id, GLsizei len, const GLubyte *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w)) _func)(id, len, name, x, y, z, w);
}

GLAPI void APIENTRY GLAPI_PREFIX(ProgramNamedParameter4fvNV)(GLuint id, GLsizei len, const GLubyte *name, const GLfloat *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[887];
   ((void (APIENTRY *)(GLuint id, GLsizei len, const GLubyte *name, const GLfloat *v)) _func)(id, len, name, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(PrimitiveRestartIndexNV)(GLuint index)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[888];
   ((void (APIENTRY *)(GLuint index)) _func)(index);
}

GLAPI void APIENTRY GLAPI_PREFIX(PrimitiveRestartIndex)(GLuint index)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[888];
   ((void (APIENTRY *)(GLuint index)) _func)(index);
}

GLAPI void APIENTRY GLAPI_PREFIX(PrimitiveRestartNV)(void)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[889];
   ((void (APIENTRY *)(void)) _func)();
}

GLAPI void APIENTRY GLAPI_PREFIX(BlendEquationSeparate)(GLenum modeRGB, GLenum modeA)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[937];
   ((void (APIENTRY *)(GLenum modeRGB, GLenum modeA)) _func)(modeRGB, modeA);
}

GLAPI void APIENTRY GLAPI_PREFIX(BindFramebufferEXT)(GLenum target, GLuint framebuffer)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[938];
   ((void (APIENTRY *)(GLenum target, GLuint framebuffer)) _func)(target, framebuffer);
}

GLAPI void APIENTRY GLAPI_PREFIX(BindFramebuffer)(GLenum target, GLuint framebuffer)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[938];
   ((void (APIENTRY *)(GLenum target, GLuint framebuffer)) _func)(target, framebuffer);
}

GLAPI void APIENTRY GLAPI_PREFIX(BindRenderbufferEXT)(GLenum target, GLuint renderbuffer)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[939];
   ((void (APIENTRY *)(GLenum target, GLuint renderbuffer)) _func)(target, renderbuffer);
}

GLAPI void APIENTRY GLAPI_PREFIX(BindRenderbuffer)(GLenum target, GLuint renderbuffer)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[939];
   ((void (APIENTRY *)(GLenum target, GLuint renderbuffer)) _func)(target, renderbuffer);
}

GLAPI GLenum APIENTRY GLAPI_PREFIX(CheckFramebufferStatusEXT)(GLenum target)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[940];
   return ((GLenum (APIENTRY *)(GLenum target)) _func)(target);
}

GLAPI GLenum APIENTRY GLAPI_PREFIX(CheckFramebufferStatus)(GLenum target)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[940];
   return ((GLenum (APIENTRY *)(GLenum target)) _func)(target);
}

GLAPI void APIENTRY GLAPI_PREFIX(DeleteFramebuffersEXT)(GLsizei n, const GLuint *framebuffers)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[941];
   ((void (APIENTRY *)(GLsizei n, const GLuint *framebuffers)) _func)(n, framebuffers);
}

GLAPI void APIENTRY GLAPI_PREFIX(DeleteFramebuffers)(GLsizei n, const GLuint *framebuffers)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[941];
   ((void (APIENTRY *)(GLsizei n, const GLuint *framebuffers)) _func)(n, framebuffers);
}

GLAPI void APIENTRY GLAPI_PREFIX(DeleteRenderbuffersEXT)(GLsizei n, const GLuint *renderbuffers)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[942];
   ((void (APIENTRY *)(GLsizei n, const GLuint *renderbuffers)) _func)(n, renderbuffers);
}

GLAPI void APIENTRY GLAPI_PREFIX(DeleteRenderbuffers)(GLsizei n, const GLuint *renderbuffers)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[942];
   ((void (APIENTRY *)(GLsizei n, const GLuint *renderbuffers)) _func)(n, renderbuffers);
}

GLAPI void APIENTRY GLAPI_PREFIX(FramebufferRenderbufferEXT)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[943];
   ((void (APIENTRY *)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)) _func)(target, attachment, renderbuffertarget, renderbuffer);
}

GLAPI void APIENTRY GLAPI_PREFIX(FramebufferRenderbuffer)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[943];
   ((void (APIENTRY *)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)) _func)(target, attachment, renderbuffertarget, renderbuffer);
}

GLAPI void APIENTRY GLAPI_PREFIX(FramebufferTexture1DEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[944];
   ((void (APIENTRY *)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)) _func)(target, attachment, textarget, texture, level);
}

GLAPI void APIENTRY GLAPI_PREFIX(FramebufferTexture1D)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[944];
   ((void (APIENTRY *)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)) _func)(target, attachment, textarget, texture, level);
}

GLAPI void APIENTRY GLAPI_PREFIX(FramebufferTexture2DEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[945];
   ((void (APIENTRY *)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)) _func)(target, attachment, textarget, texture, level);
}

GLAPI void APIENTRY GLAPI_PREFIX(FramebufferTexture2D)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[945];
   ((void (APIENTRY *)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)) _func)(target, attachment, textarget, texture, level);
}

GLAPI void APIENTRY GLAPI_PREFIX(FramebufferTexture3DEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[946];
   ((void (APIENTRY *)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset)) _func)(target, attachment, textarget, texture, level, zoffset);
}

GLAPI void APIENTRY GLAPI_PREFIX(FramebufferTexture3D)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[946];
   ((void (APIENTRY *)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset)) _func)(target, attachment, textarget, texture, level, zoffset);
}

GLAPI void APIENTRY GLAPI_PREFIX(GenFramebuffersEXT)(GLsizei n, GLuint *framebuffers)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[947];
   ((void (APIENTRY *)(GLsizei n, GLuint *framebuffers)) _func)(n, framebuffers);
}

GLAPI void APIENTRY GLAPI_PREFIX(GenFramebuffers)(GLsizei n, GLuint *framebuffers)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[947];
   ((void (APIENTRY *)(GLsizei n, GLuint *framebuffers)) _func)(n, framebuffers);
}

GLAPI void APIENTRY GLAPI_PREFIX(GenRenderbuffersEXT)(GLsizei n, GLuint *renderbuffers)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[948];
   ((void (APIENTRY *)(GLsizei n, GLuint *renderbuffers)) _func)(n, renderbuffers);
}

GLAPI void APIENTRY GLAPI_PREFIX(GenRenderbuffers)(GLsizei n, GLuint *renderbuffers)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[948];
   ((void (APIENTRY *)(GLsizei n, GLuint *renderbuffers)) _func)(n, renderbuffers);
}

GLAPI void APIENTRY GLAPI_PREFIX(GenerateMipmapEXT)(GLenum target)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[949];
   ((void (APIENTRY *)(GLenum target)) _func)(target);
}

GLAPI void APIENTRY GLAPI_PREFIX(GenerateMipmap)(GLenum target)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[949];
   ((void (APIENTRY *)(GLenum target)) _func)(target);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetFramebufferAttachmentParameterivEXT)(GLenum target, GLenum attachment, GLenum pname, GLint *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[950];
   ((void (APIENTRY *)(GLenum target, GLenum attachment, GLenum pname, GLint *params)) _func)(target, attachment, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetFramebufferAttachmentParameteriv)(GLenum target, GLenum attachment, GLenum pname, GLint *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[950];
   ((void (APIENTRY *)(GLenum target, GLenum attachment, GLenum pname, GLint *params)) _func)(target, attachment, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetRenderbufferParameterivEXT)(GLenum target, GLenum pname, GLint *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[951];
   ((void (APIENTRY *)(GLenum target, GLenum pname, GLint *params)) _func)(target, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetRenderbufferParameteriv)(GLenum target, GLenum pname, GLint *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[951];
   ((void (APIENTRY *)(GLenum target, GLenum pname, GLint *params)) _func)(target, pname, params);
}

GLAPI GLboolean APIENTRY GLAPI_PREFIX(IsFramebufferEXT)(GLuint framebuffer)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[952];
   return ((GLboolean (APIENTRY *)(GLuint framebuffer)) _func)(framebuffer);
}

GLAPI GLboolean APIENTRY GLAPI_PREFIX(IsFramebuffer)(GLuint framebuffer)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[952];
   return ((GLboolean (APIENTRY *)(GLuint framebuffer)) _func)(framebuffer);
}

GLAPI GLboolean APIENTRY GLAPI_PREFIX(IsRenderbufferEXT)(GLuint renderbuffer)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[953];
   return ((GLboolean (APIENTRY *)(GLuint renderbuffer)) _func)(renderbuffer);
}

GLAPI GLboolean APIENTRY GLAPI_PREFIX(IsRenderbuffer)(GLuint renderbuffer)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[953];
   return ((GLboolean (APIENTRY *)(GLuint renderbuffer)) _func)(renderbuffer);
}

GLAPI void APIENTRY GLAPI_PREFIX(RenderbufferStorageEXT)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[954];
   ((void (APIENTRY *)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height)) _func)(target, internalformat, width, height);
}

GLAPI void APIENTRY GLAPI_PREFIX(RenderbufferStorage)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[954];
   ((void (APIENTRY *)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height)) _func)(target, internalformat, width, height);
}

GLAPI void APIENTRY GLAPI_PREFIX(BlitFramebuffer)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[955];
   ((void (APIENTRY *)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)) _func)(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
}

GLAPI void APIENTRY GLAPI_PREFIX(BindFragDataLocationEXT)(GLuint program, GLuint colorNumber, const GLchar *name)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[958];
   ((void (APIENTRY *)(GLuint program, GLuint colorNumber, const GLchar *name)) _func)(program, colorNumber, name);
}

GLAPI void APIENTRY GLAPI_PREFIX(BindFragDataLocation)(GLuint program, GLuint colorNumber, const GLchar *name)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[958];
   ((void (APIENTRY *)(GLuint program, GLuint colorNumber, const GLchar *name)) _func)(program, colorNumber, name);
}

GLAPI GLint APIENTRY GLAPI_PREFIX(GetFragDataLocationEXT)(GLuint program, const GLchar *name)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[959];
   return ((GLint (APIENTRY *)(GLuint program, const GLchar *name)) _func)(program, name);
}

GLAPI GLint APIENTRY GLAPI_PREFIX(GetFragDataLocation)(GLuint program, const GLchar *name)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[959];
   return ((GLint (APIENTRY *)(GLuint program, const GLchar *name)) _func)(program, name);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetUniformuivEXT)(GLuint program, GLint location, GLuint *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[960];
   ((void (APIENTRY *)(GLuint program, GLint location, GLuint *params)) _func)(program, location, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetUniformuiv)(GLuint program, GLint location, GLuint *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[960];
   ((void (APIENTRY *)(GLuint program, GLint location, GLuint *params)) _func)(program, location, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetVertexAttribIivEXT)(GLuint index, GLenum pname, GLint *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[961];
   ((void (APIENTRY *)(GLuint index, GLenum pname, GLint *params)) _func)(index, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetVertexAttribIiv)(GLuint index, GLenum pname, GLint *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[961];
   ((void (APIENTRY *)(GLuint index, GLenum pname, GLint *params)) _func)(index, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetVertexAttribIuivEXT)(GLuint index, GLenum pname, GLuint *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[962];
   ((void (APIENTRY *)(GLuint index, GLenum pname, GLuint *params)) _func)(index, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetVertexAttribIuiv)(GLuint index, GLenum pname, GLuint *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[962];
   ((void (APIENTRY *)(GLuint index, GLenum pname, GLuint *params)) _func)(index, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(Uniform1uiEXT)(GLint location, GLuint x)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[963];
   ((void (APIENTRY *)(GLint location, GLuint x)) _func)(location, x);
}

GLAPI void APIENTRY GLAPI_PREFIX(Uniform1ui)(GLint location, GLuint x)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[963];
   ((void (APIENTRY *)(GLint location, GLuint x)) _func)(location, x);
}

GLAPI void APIENTRY GLAPI_PREFIX(Uniform1uivEXT)(GLint location, GLsizei count, const GLuint *value)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[964];
   ((void (APIENTRY *)(GLint location, GLsizei count, const GLuint *value)) _func)(location, count, value);
}

GLAPI void APIENTRY GLAPI_PREFIX(Uniform1uiv)(GLint location, GLsizei count, const GLuint *value)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[964];
   ((void (APIENTRY *)(GLint location, GLsizei count, const GLuint *value)) _func)(location, count, value);
}

GLAPI void APIENTRY GLAPI_PREFIX(Uniform2uiEXT)(GLint location, GLuint x, GLuint y)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[965];
   ((void (APIENTRY *)(GLint location, GLuint x, GLuint y)) _func)(location, x, y);
}

GLAPI void APIENTRY GLAPI_PREFIX(Uniform2ui)(GLint location, GLuint x, GLuint y)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[965];
   ((void (APIENTRY *)(GLint location, GLuint x, GLuint y)) _func)(location, x, y);
}

GLAPI void APIENTRY GLAPI_PREFIX(Uniform2uivEXT)(GLint location, GLsizei count, const GLuint *value)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[966];
   ((void (APIENTRY *)(GLint location, GLsizei count, const GLuint *value)) _func)(location, count, value);
}

GLAPI void APIENTRY GLAPI_PREFIX(Uniform2uiv)(GLint location, GLsizei count, const GLuint *value)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[966];
   ((void (APIENTRY *)(GLint location, GLsizei count, const GLuint *value)) _func)(location, count, value);
}

GLAPI void APIENTRY GLAPI_PREFIX(Uniform3uiEXT)(GLint location, GLuint x, GLuint y, GLuint z)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[967];
   ((void (APIENTRY *)(GLint location, GLuint x, GLuint y, GLuint z)) _func)(location, x, y, z);
}

GLAPI void APIENTRY GLAPI_PREFIX(Uniform3ui)(GLint location, GLuint x, GLuint y, GLuint z)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[967];
   ((void (APIENTRY *)(GLint location, GLuint x, GLuint y, GLuint z)) _func)(location, x, y, z);
}

GLAPI void APIENTRY GLAPI_PREFIX(Uniform3uivEXT)(GLint location, GLsizei count, const GLuint *value)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[968];
   ((void (APIENTRY *)(GLint location, GLsizei count, const GLuint *value)) _func)(location, count, value);
}

GLAPI void APIENTRY GLAPI_PREFIX(Uniform3uiv)(GLint location, GLsizei count, const GLuint *value)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[968];
   ((void (APIENTRY *)(GLint location, GLsizei count, const GLuint *value)) _func)(location, count, value);
}

GLAPI void APIENTRY GLAPI_PREFIX(Uniform4uiEXT)(GLint location, GLuint x, GLuint y, GLuint z, GLuint w)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[969];
   ((void (APIENTRY *)(GLint location, GLuint x, GLuint y, GLuint z, GLuint w)) _func)(location, x, y, z, w);
}

GLAPI void APIENTRY GLAPI_PREFIX(Uniform4ui)(GLint location, GLuint x, GLuint y, GLuint z, GLuint w)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[969];
   ((void (APIENTRY *)(GLint location, GLuint x, GLuint y, GLuint z, GLuint w)) _func)(location, x, y, z, w);
}

GLAPI void APIENTRY GLAPI_PREFIX(Uniform4uivEXT)(GLint location, GLsizei count, const GLuint *value)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[970];
   ((void (APIENTRY *)(GLint location, GLsizei count, const GLuint *value)) _func)(location, count, value);
}

GLAPI void APIENTRY GLAPI_PREFIX(Uniform4uiv)(GLint location, GLsizei count, const GLuint *value)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[970];
   ((void (APIENTRY *)(GLint location, GLsizei count, const GLuint *value)) _func)(location, count, value);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI1iEXT)(GLuint index, GLint x)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[971];
   ((void (APIENTRY *)(GLuint index, GLint x)) _func)(index, x);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI1i)(GLuint index, GLint x)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[971];
   ((void (APIENTRY *)(GLuint index, GLint x)) _func)(index, x);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI1ivEXT)(GLuint index, const GLint *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[972];
   ((void (APIENTRY *)(GLuint index, const GLint *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI1iv)(GLuint index, const GLint *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[972];
   ((void (APIENTRY *)(GLuint index, const GLint *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI1uiEXT)(GLuint index, GLuint x)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[973];
   ((void (APIENTRY *)(GLuint index, GLuint x)) _func)(index, x);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI1ui)(GLuint index, GLuint x)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[973];
   ((void (APIENTRY *)(GLuint index, GLuint x)) _func)(index, x);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI1uivEXT)(GLuint index, const GLuint *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[974];
   ((void (APIENTRY *)(GLuint index, const GLuint *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI1uiv)(GLuint index, const GLuint *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[974];
   ((void (APIENTRY *)(GLuint index, const GLuint *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI2iEXT)(GLuint index, GLint x, GLint y)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[975];
   ((void (APIENTRY *)(GLuint index, GLint x, GLint y)) _func)(index, x, y);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI2i)(GLuint index, GLint x, GLint y)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[975];
   ((void (APIENTRY *)(GLuint index, GLint x, GLint y)) _func)(index, x, y);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI2ivEXT)(GLuint index, const GLint *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[976];
   ((void (APIENTRY *)(GLuint index, const GLint *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI2iv)(GLuint index, const GLint *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[976];
   ((void (APIENTRY *)(GLuint index, const GLint *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI2uiEXT)(GLuint index, GLuint x, GLuint y)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[977];
   ((void (APIENTRY *)(GLuint index, GLuint x, GLuint y)) _func)(index, x, y);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI2ui)(GLuint index, GLuint x, GLuint y)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[977];
   ((void (APIENTRY *)(GLuint index, GLuint x, GLuint y)) _func)(index, x, y);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI2uivEXT)(GLuint index, const GLuint *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[978];
   ((void (APIENTRY *)(GLuint index, const GLuint *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI2uiv)(GLuint index, const GLuint *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[978];
   ((void (APIENTRY *)(GLuint index, const GLuint *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI3iEXT)(GLuint index, GLint x, GLint y, GLint z)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[979];
   ((void (APIENTRY *)(GLuint index, GLint x, GLint y, GLint z)) _func)(index, x, y, z);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI3i)(GLuint index, GLint x, GLint y, GLint z)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[979];
   ((void (APIENTRY *)(GLuint index, GLint x, GLint y, GLint z)) _func)(index, x, y, z);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI3ivEXT)(GLuint index, const GLint *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[980];
   ((void (APIENTRY *)(GLuint index, const GLint *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI3iv)(GLuint index, const GLint *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[980];
   ((void (APIENTRY *)(GLuint index, const GLint *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI3uiEXT)(GLuint index, GLuint x, GLuint y, GLuint z)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[981];
   ((void (APIENTRY *)(GLuint index, GLuint x, GLuint y, GLuint z)) _func)(index, x, y, z);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI3ui)(GLuint index, GLuint x, GLuint y, GLuint z)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[981];
   ((void (APIENTRY *)(GLuint index, GLuint x, GLuint y, GLuint z)) _func)(index, x, y, z);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI3uivEXT)(GLuint index, const GLuint *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[982];
   ((void (APIENTRY *)(GLuint index, const GLuint *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI3uiv)(GLuint index, const GLuint *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[982];
   ((void (APIENTRY *)(GLuint index, const GLuint *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI4bvEXT)(GLuint index, const GLbyte *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[983];
   ((void (APIENTRY *)(GLuint index, const GLbyte *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI4bv)(GLuint index, const GLbyte *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[983];
   ((void (APIENTRY *)(GLuint index, const GLbyte *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI4iEXT)(GLuint index, GLint x, GLint y, GLint z, GLint w)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[984];
   ((void (APIENTRY *)(GLuint index, GLint x, GLint y, GLint z, GLint w)) _func)(index, x, y, z, w);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI4i)(GLuint index, GLint x, GLint y, GLint z, GLint w)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[984];
   ((void (APIENTRY *)(GLuint index, GLint x, GLint y, GLint z, GLint w)) _func)(index, x, y, z, w);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI4ivEXT)(GLuint index, const GLint *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[985];
   ((void (APIENTRY *)(GLuint index, const GLint *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI4iv)(GLuint index, const GLint *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[985];
   ((void (APIENTRY *)(GLuint index, const GLint *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI4svEXT)(GLuint index, const GLshort *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[986];
   ((void (APIENTRY *)(GLuint index, const GLshort *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI4sv)(GLuint index, const GLshort *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[986];
   ((void (APIENTRY *)(GLuint index, const GLshort *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI4ubvEXT)(GLuint index, const GLubyte *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[987];
   ((void (APIENTRY *)(GLuint index, const GLubyte *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI4ubv)(GLuint index, const GLubyte *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[987];
   ((void (APIENTRY *)(GLuint index, const GLubyte *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI4uiEXT)(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[988];
   ((void (APIENTRY *)(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w)) _func)(index, x, y, z, w);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI4ui)(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[988];
   ((void (APIENTRY *)(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w)) _func)(index, x, y, z, w);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI4uivEXT)(GLuint index, const GLuint *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[989];
   ((void (APIENTRY *)(GLuint index, const GLuint *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI4uiv)(GLuint index, const GLuint *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[989];
   ((void (APIENTRY *)(GLuint index, const GLuint *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI4usvEXT)(GLuint index, const GLushort *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[990];
   ((void (APIENTRY *)(GLuint index, const GLushort *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI4usv)(GLuint index, const GLushort *v)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[990];
   ((void (APIENTRY *)(GLuint index, const GLushort *v)) _func)(index, v);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribIPointerEXT)(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[991];
   ((void (APIENTRY *)(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer)) _func)(index, size, type, stride, pointer);
}

GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribIPointer)(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[991];
   ((void (APIENTRY *)(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer)) _func)(index, size, type, stride, pointer);
}

GLAPI void APIENTRY GLAPI_PREFIX(FramebufferTextureLayerEXT)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[992];
   ((void (APIENTRY *)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer)) _func)(target, attachment, texture, level, layer);
}

GLAPI void APIENTRY GLAPI_PREFIX(FramebufferTextureLayer)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[992];
   ((void (APIENTRY *)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer)) _func)(target, attachment, texture, level, layer);
}

GLAPI void APIENTRY GLAPI_PREFIX(FramebufferTextureLayerARB)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[992];
   ((void (APIENTRY *)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer)) _func)(target, attachment, texture, level, layer);
}

GLAPI void APIENTRY GLAPI_PREFIX(ColorMaskIndexedEXT)(GLuint buf, GLboolean r, GLboolean g, GLboolean b, GLboolean a)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[993];
   ((void (APIENTRY *)(GLuint buf, GLboolean r, GLboolean g, GLboolean b, GLboolean a)) _func)(buf, r, g, b, a);
}

GLAPI void APIENTRY GLAPI_PREFIX(ColorMaski)(GLuint buf, GLboolean r, GLboolean g, GLboolean b, GLboolean a)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[993];
   ((void (APIENTRY *)(GLuint buf, GLboolean r, GLboolean g, GLboolean b, GLboolean a)) _func)(buf, r, g, b, a);
}

GLAPI void APIENTRY GLAPI_PREFIX(DisableIndexedEXT)(GLenum target, GLuint index)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[994];
   ((void (APIENTRY *)(GLenum target, GLuint index)) _func)(target, index);
}

GLAPI void APIENTRY GLAPI_PREFIX(Disablei)(GLenum target, GLuint index)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[994];
   ((void (APIENTRY *)(GLenum target, GLuint index)) _func)(target, index);
}

GLAPI void APIENTRY GLAPI_PREFIX(EnableIndexedEXT)(GLenum target, GLuint index)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[995];
   ((void (APIENTRY *)(GLenum target, GLuint index)) _func)(target, index);
}

GLAPI void APIENTRY GLAPI_PREFIX(Enablei)(GLenum target, GLuint index)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[995];
   ((void (APIENTRY *)(GLenum target, GLuint index)) _func)(target, index);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetBooleanIndexedvEXT)(GLenum value, GLuint index, GLboolean *data)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[996];
   ((void (APIENTRY *)(GLenum value, GLuint index, GLboolean *data)) _func)(value, index, data);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetBooleani_v)(GLenum value, GLuint index, GLboolean *data)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[996];
   ((void (APIENTRY *)(GLenum value, GLuint index, GLboolean *data)) _func)(value, index, data);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetIntegerIndexedvEXT)(GLenum value, GLuint index, GLint *data)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[997];
   ((void (APIENTRY *)(GLenum value, GLuint index, GLint *data)) _func)(value, index, data);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetIntegeri_v)(GLenum value, GLuint index, GLint *data)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[997];
   ((void (APIENTRY *)(GLenum value, GLuint index, GLint *data)) _func)(value, index, data);
}

GLAPI GLboolean APIENTRY GLAPI_PREFIX(IsEnabledIndexedEXT)(GLenum target, GLuint index)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[998];
   return ((GLboolean (APIENTRY *)(GLenum target, GLuint index)) _func)(target, index);
}

GLAPI GLboolean APIENTRY GLAPI_PREFIX(IsEnabledi)(GLenum target, GLuint index)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[998];
   return ((GLboolean (APIENTRY *)(GLenum target, GLuint index)) _func)(target, index);
}

GLAPI void APIENTRY GLAPI_PREFIX(ClearColorIiEXT)(GLint r, GLint g, GLint b, GLint a)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[999];
   ((void (APIENTRY *)(GLint r, GLint g, GLint b, GLint a)) _func)(r, g, b, a);
}

GLAPI void APIENTRY GLAPI_PREFIX(ClearColorIuiEXT)(GLuint r, GLuint g, GLuint b, GLuint a)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[1000];
   ((void (APIENTRY *)(GLuint r, GLuint g, GLuint b, GLuint a)) _func)(r, g, b, a);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetTexParameterIivEXT)(GLenum target, GLenum pname, GLint *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[1001];
   ((void (APIENTRY *)(GLenum target, GLenum pname, GLint *params)) _func)(target, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetTexParameterIiv)(GLenum target, GLenum pname, GLint *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[1001];
   ((void (APIENTRY *)(GLenum target, GLenum pname, GLint *params)) _func)(target, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetTexParameterIuivEXT)(GLenum target, GLenum pname, GLuint *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[1002];
   ((void (APIENTRY *)(GLenum target, GLenum pname, GLuint *params)) _func)(target, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetTexParameterIuiv)(GLenum target, GLenum pname, GLuint *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[1002];
   ((void (APIENTRY *)(GLenum target, GLenum pname, GLuint *params)) _func)(target, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexParameterIivEXT)(GLenum target, GLenum pname, const GLint *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[1003];
   ((void (APIENTRY *)(GLenum target, GLenum pname, const GLint *params)) _func)(target, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexParameterIiv)(GLenum target, GLenum pname, const GLint *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[1003];
   ((void (APIENTRY *)(GLenum target, GLenum pname, const GLint *params)) _func)(target, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexParameterIuivEXT)(GLenum target, GLenum pname, const GLuint *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[1004];
   ((void (APIENTRY *)(GLenum target, GLenum pname, const GLuint *params)) _func)(target, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(TexParameterIuiv)(GLenum target, GLenum pname, const GLuint *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[1004];
   ((void (APIENTRY *)(GLenum target, GLenum pname, const GLuint *params)) _func)(target, pname, params);
}

GLAPI void APIENTRY GLAPI_PREFIX(BeginConditionalRenderNV)(GLuint query, GLenum mode)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[1005];
   ((void (APIENTRY *)(GLuint query, GLenum mode)) _func)(query, mode);
}

GLAPI void APIENTRY GLAPI_PREFIX(BeginConditionalRender)(GLuint query, GLenum mode)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[1005];
   ((void (APIENTRY *)(GLuint query, GLenum mode)) _func)(query, mode);
}

GLAPI void APIENTRY GLAPI_PREFIX(EndConditionalRenderNV)(void)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[1006];
   ((void (APIENTRY *)(void)) _func)();
}

GLAPI void APIENTRY GLAPI_PREFIX(EndConditionalRender)(void)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[1006];
   ((void (APIENTRY *)(void)) _func)();
}

GLAPI void APIENTRY GLAPI_PREFIX(BeginTransformFeedbackEXT)(GLenum mode)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[1007];
   ((void (APIENTRY *)(GLenum mode)) _func)(mode);
}

GLAPI void APIENTRY GLAPI_PREFIX(BeginTransformFeedback)(GLenum mode)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[1007];
   ((void (APIENTRY *)(GLenum mode)) _func)(mode);
}

GLAPI void APIENTRY GLAPI_PREFIX(BindBufferBaseEXT)(GLenum target, GLuint index, GLuint buffer)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[1008];
   ((void (APIENTRY *)(GLenum target, GLuint index, GLuint buffer)) _func)(target, index, buffer);
}

GLAPI void APIENTRY GLAPI_PREFIX(BindBufferBase)(GLenum target, GLuint index, GLuint buffer)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[1008];
   ((void (APIENTRY *)(GLenum target, GLuint index, GLuint buffer)) _func)(target, index, buffer);
}

GLAPI void APIENTRY GLAPI_PREFIX(BindBufferOffsetEXT)(GLenum target, GLuint index, GLuint buffer, GLintptr offset)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[1009];
   ((void (APIENTRY *)(GLenum target, GLuint index, GLuint buffer, GLintptr offset)) _func)(target, index, buffer, offset);
}

GLAPI void APIENTRY GLAPI_PREFIX(BindBufferRangeEXT)(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[1010];
   ((void (APIENTRY *)(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size)) _func)(target, index, buffer, offset, size);
}

GLAPI void APIENTRY GLAPI_PREFIX(BindBufferRange)(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[1010];
   ((void (APIENTRY *)(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size)) _func)(target, index, buffer, offset, size);
}

GLAPI void APIENTRY GLAPI_PREFIX(EndTransformFeedbackEXT)(void)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[1011];
   ((void (APIENTRY *)(void)) _func)();
}

GLAPI void APIENTRY GLAPI_PREFIX(EndTransformFeedback)(void)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[1011];
   ((void (APIENTRY *)(void)) _func)();
}

GLAPI void APIENTRY GLAPI_PREFIX(GetTransformFeedbackVaryingEXT)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[1012];
   ((void (APIENTRY *)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name)) _func)(program, index, bufSize, length, size, type, name);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetTransformFeedbackVarying)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[1012];
   ((void (APIENTRY *)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name)) _func)(program, index, bufSize, length, size, type, name);
}

GLAPI void APIENTRY GLAPI_PREFIX(TransformFeedbackVaryingsEXT)(GLuint program, GLsizei count, const char **varyings, GLenum bufferMode)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[1013];
   ((void (APIENTRY *)(GLuint program, GLsizei count, const char **varyings, GLenum bufferMode)) _func)(program, count, varyings, bufferMode);
}

GLAPI void APIENTRY GLAPI_PREFIX(TransformFeedbackVaryings)(GLuint program, GLsizei count, const GLchar * const *varyings, GLenum bufferMode)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[1013];
   ((void (APIENTRY *)(GLuint program, GLsizei count, const GLchar * const *varyings, GLenum bufferMode)) _func)(program, count, varyings, bufferMode);
}

GLAPI void APIENTRY GLAPI_PREFIX(ProvokingVertexEXT)(GLenum mode)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[1014];
   ((void (APIENTRY *)(GLenum mode)) _func)(mode);
}

GLAPI void APIENTRY GLAPI_PREFIX(ProvokingVertex)(GLenum mode)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[1014];
   ((void (APIENTRY *)(GLenum mode)) _func)(mode);
}

GLAPI void APIENTRY GLAPI_PREFIX(GetObjectParameterivAPPLE)(GLenum objectType, GLuint name, GLenum pname, GLint *value)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[1015];
   ((void (APIENTRY *)(GLenum objectType, GLuint name, GLenum pname, GLint *value)) _func)(objectType, name, pname, value);
}

GLAPI GLenum APIENTRY GLAPI_PREFIX(ObjectPurgeableAPPLE)(GLenum objectType, GLuint name, GLenum option)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[1016];
   return ((GLenum (APIENTRY *)(GLenum objectType, GLuint name, GLenum option)) _func)(objectType, name, option);
}

GLAPI GLenum APIENTRY GLAPI_PREFIX(ObjectUnpurgeableAPPLE)(GLenum objectType, GLuint name, GLenum option)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[1017];
   return ((GLenum (APIENTRY *)(GLenum objectType, GLuint name, GLenum option)) _func)(objectType, name, option);
}

GLAPI void APIENTRY GLAPI_PREFIX(ActiveProgramEXT)(GLuint program)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[1018];
   ((void (APIENTRY *)(GLuint program)) _func)(program);
}

GLAPI GLuint APIENTRY GLAPI_PREFIX(CreateShaderProgramEXT)(GLenum type, const GLchar *string)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[1019];
   return ((GLuint (APIENTRY *)(GLenum type, const GLchar *string)) _func)(type, string);
}

GLAPI void APIENTRY GLAPI_PREFIX(UseShaderProgramEXT)(GLenum type, GLuint program)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[1020];
   ((void (APIENTRY *)(GLenum type, GLuint program)) _func)(type, program);
}

GLAPI void APIENTRY GLAPI_PREFIX(TextureBarrierNV)(void)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[1021];
   ((void (APIENTRY *)(void)) _func)();
}

GLAPI void APIENTRY GLAPI_PREFIX(EGLImageTargetRenderbufferStorageOES)(GLenum target, GLvoid *writeOffset)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[1027];
   ((void (APIENTRY *)(GLenum target, GLvoid *writeOffset)) _func)(target, writeOffset);
}

GLAPI void APIENTRY GLAPI_PREFIX(EGLImageTargetTexture2DOES)(GLenum target, GLvoid *writeOffset)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[1028];
   ((void (APIENTRY *)(GLenum target, GLvoid *writeOffset)) _func)(target, writeOffset);
}

/* does not need public_entries */
#undef MAPI_TMP_PUBLIC_ENTRIES_NO_HIDDEN
#endif /* MAPI_TMP_PUBLIC_ENTRIES_NO_HIDDEN */

#ifdef MAPI_TMP_STUB_ASM_GCC_NO_HIDDEN
__asm__(
STUB_ASM_ENTRY(GLAPI_PREFIX_STR(NewList))"\n"
"\t"STUB_ASM_CODE("0")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(EndList))"\n"
"\t"STUB_ASM_CODE("1")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(CallList))"\n"
"\t"STUB_ASM_CODE("2")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(CallLists))"\n"
"\t"STUB_ASM_CODE("3")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(DeleteLists))"\n"
"\t"STUB_ASM_CODE("4")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GenLists))"\n"
"\t"STUB_ASM_CODE("5")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ListBase))"\n"
"\t"STUB_ASM_CODE("6")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Begin))"\n"
"\t"STUB_ASM_CODE("7")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Bitmap))"\n"
"\t"STUB_ASM_CODE("8")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Color3b))"\n"
"\t"STUB_ASM_CODE("9")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Color3bv))"\n"
"\t"STUB_ASM_CODE("10")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Color3d))"\n"
"\t"STUB_ASM_CODE("11")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Color3dv))"\n"
"\t"STUB_ASM_CODE("12")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Color3f))"\n"
"\t"STUB_ASM_CODE("13")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Color3fv))"\n"
"\t"STUB_ASM_CODE("14")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Color3i))"\n"
"\t"STUB_ASM_CODE("15")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Color3iv))"\n"
"\t"STUB_ASM_CODE("16")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Color3s))"\n"
"\t"STUB_ASM_CODE("17")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Color3sv))"\n"
"\t"STUB_ASM_CODE("18")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Color3ub))"\n"
"\t"STUB_ASM_CODE("19")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Color3ubv))"\n"
"\t"STUB_ASM_CODE("20")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Color3ui))"\n"
"\t"STUB_ASM_CODE("21")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Color3uiv))"\n"
"\t"STUB_ASM_CODE("22")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Color3us))"\n"
"\t"STUB_ASM_CODE("23")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Color3usv))"\n"
"\t"STUB_ASM_CODE("24")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Color4b))"\n"
"\t"STUB_ASM_CODE("25")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Color4bv))"\n"
"\t"STUB_ASM_CODE("26")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Color4d))"\n"
"\t"STUB_ASM_CODE("27")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Color4dv))"\n"
"\t"STUB_ASM_CODE("28")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Color4f))"\n"
"\t"STUB_ASM_CODE("29")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Color4fv))"\n"
"\t"STUB_ASM_CODE("30")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Color4i))"\n"
"\t"STUB_ASM_CODE("31")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Color4iv))"\n"
"\t"STUB_ASM_CODE("32")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Color4s))"\n"
"\t"STUB_ASM_CODE("33")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Color4sv))"\n"
"\t"STUB_ASM_CODE("34")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Color4ub))"\n"
"\t"STUB_ASM_CODE("35")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Color4ubv))"\n"
"\t"STUB_ASM_CODE("36")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Color4ui))"\n"
"\t"STUB_ASM_CODE("37")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Color4uiv))"\n"
"\t"STUB_ASM_CODE("38")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Color4us))"\n"
"\t"STUB_ASM_CODE("39")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Color4usv))"\n"
"\t"STUB_ASM_CODE("40")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(EdgeFlag))"\n"
"\t"STUB_ASM_CODE("41")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(EdgeFlagv))"\n"
"\t"STUB_ASM_CODE("42")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(End))"\n"
"\t"STUB_ASM_CODE("43")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Indexd))"\n"
"\t"STUB_ASM_CODE("44")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Indexdv))"\n"
"\t"STUB_ASM_CODE("45")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Indexf))"\n"
"\t"STUB_ASM_CODE("46")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Indexfv))"\n"
"\t"STUB_ASM_CODE("47")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Indexi))"\n"
"\t"STUB_ASM_CODE("48")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Indexiv))"\n"
"\t"STUB_ASM_CODE("49")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Indexs))"\n"
"\t"STUB_ASM_CODE("50")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Indexsv))"\n"
"\t"STUB_ASM_CODE("51")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Normal3b))"\n"
"\t"STUB_ASM_CODE("52")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Normal3bv))"\n"
"\t"STUB_ASM_CODE("53")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Normal3d))"\n"
"\t"STUB_ASM_CODE("54")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Normal3dv))"\n"
"\t"STUB_ASM_CODE("55")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Normal3f))"\n"
"\t"STUB_ASM_CODE("56")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Normal3fv))"\n"
"\t"STUB_ASM_CODE("57")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Normal3i))"\n"
"\t"STUB_ASM_CODE("58")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Normal3iv))"\n"
"\t"STUB_ASM_CODE("59")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Normal3s))"\n"
"\t"STUB_ASM_CODE("60")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Normal3sv))"\n"
"\t"STUB_ASM_CODE("61")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(RasterPos2d))"\n"
"\t"STUB_ASM_CODE("62")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(RasterPos2dv))"\n"
"\t"STUB_ASM_CODE("63")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(RasterPos2f))"\n"
"\t"STUB_ASM_CODE("64")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(RasterPos2fv))"\n"
"\t"STUB_ASM_CODE("65")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(RasterPos2i))"\n"
"\t"STUB_ASM_CODE("66")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(RasterPos2iv))"\n"
"\t"STUB_ASM_CODE("67")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(RasterPos2s))"\n"
"\t"STUB_ASM_CODE("68")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(RasterPos2sv))"\n"
"\t"STUB_ASM_CODE("69")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(RasterPos3d))"\n"
"\t"STUB_ASM_CODE("70")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(RasterPos3dv))"\n"
"\t"STUB_ASM_CODE("71")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(RasterPos3f))"\n"
"\t"STUB_ASM_CODE("72")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(RasterPos3fv))"\n"
"\t"STUB_ASM_CODE("73")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(RasterPos3i))"\n"
"\t"STUB_ASM_CODE("74")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(RasterPos3iv))"\n"
"\t"STUB_ASM_CODE("75")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(RasterPos3s))"\n"
"\t"STUB_ASM_CODE("76")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(RasterPos3sv))"\n"
"\t"STUB_ASM_CODE("77")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(RasterPos4d))"\n"
"\t"STUB_ASM_CODE("78")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(RasterPos4dv))"\n"
"\t"STUB_ASM_CODE("79")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(RasterPos4f))"\n"
"\t"STUB_ASM_CODE("80")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(RasterPos4fv))"\n"
"\t"STUB_ASM_CODE("81")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(RasterPos4i))"\n"
"\t"STUB_ASM_CODE("82")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(RasterPos4iv))"\n"
"\t"STUB_ASM_CODE("83")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(RasterPos4s))"\n"
"\t"STUB_ASM_CODE("84")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(RasterPos4sv))"\n"
"\t"STUB_ASM_CODE("85")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Rectd))"\n"
"\t"STUB_ASM_CODE("86")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Rectdv))"\n"
"\t"STUB_ASM_CODE("87")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Rectf))"\n"
"\t"STUB_ASM_CODE("88")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Rectfv))"\n"
"\t"STUB_ASM_CODE("89")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Recti))"\n"
"\t"STUB_ASM_CODE("90")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Rectiv))"\n"
"\t"STUB_ASM_CODE("91")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Rects))"\n"
"\t"STUB_ASM_CODE("92")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Rectsv))"\n"
"\t"STUB_ASM_CODE("93")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexCoord1d))"\n"
"\t"STUB_ASM_CODE("94")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexCoord1dv))"\n"
"\t"STUB_ASM_CODE("95")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexCoord1f))"\n"
"\t"STUB_ASM_CODE("96")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexCoord1fv))"\n"
"\t"STUB_ASM_CODE("97")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexCoord1i))"\n"
"\t"STUB_ASM_CODE("98")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexCoord1iv))"\n"
"\t"STUB_ASM_CODE("99")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexCoord1s))"\n"
"\t"STUB_ASM_CODE("100")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexCoord1sv))"\n"
"\t"STUB_ASM_CODE("101")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexCoord2d))"\n"
"\t"STUB_ASM_CODE("102")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexCoord2dv))"\n"
"\t"STUB_ASM_CODE("103")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexCoord2f))"\n"
"\t"STUB_ASM_CODE("104")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexCoord2fv))"\n"
"\t"STUB_ASM_CODE("105")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexCoord2i))"\n"
"\t"STUB_ASM_CODE("106")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexCoord2iv))"\n"
"\t"STUB_ASM_CODE("107")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexCoord2s))"\n"
"\t"STUB_ASM_CODE("108")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexCoord2sv))"\n"
"\t"STUB_ASM_CODE("109")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexCoord3d))"\n"
"\t"STUB_ASM_CODE("110")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexCoord3dv))"\n"
"\t"STUB_ASM_CODE("111")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexCoord3f))"\n"
"\t"STUB_ASM_CODE("112")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexCoord3fv))"\n"
"\t"STUB_ASM_CODE("113")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexCoord3i))"\n"
"\t"STUB_ASM_CODE("114")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexCoord3iv))"\n"
"\t"STUB_ASM_CODE("115")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexCoord3s))"\n"
"\t"STUB_ASM_CODE("116")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexCoord3sv))"\n"
"\t"STUB_ASM_CODE("117")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexCoord4d))"\n"
"\t"STUB_ASM_CODE("118")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexCoord4dv))"\n"
"\t"STUB_ASM_CODE("119")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexCoord4f))"\n"
"\t"STUB_ASM_CODE("120")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexCoord4fv))"\n"
"\t"STUB_ASM_CODE("121")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexCoord4i))"\n"
"\t"STUB_ASM_CODE("122")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexCoord4iv))"\n"
"\t"STUB_ASM_CODE("123")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexCoord4s))"\n"
"\t"STUB_ASM_CODE("124")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexCoord4sv))"\n"
"\t"STUB_ASM_CODE("125")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Vertex2d))"\n"
"\t"STUB_ASM_CODE("126")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Vertex2dv))"\n"
"\t"STUB_ASM_CODE("127")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Vertex2f))"\n"
"\t"STUB_ASM_CODE("128")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Vertex2fv))"\n"
"\t"STUB_ASM_CODE("129")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Vertex2i))"\n"
"\t"STUB_ASM_CODE("130")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Vertex2iv))"\n"
"\t"STUB_ASM_CODE("131")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Vertex2s))"\n"
"\t"STUB_ASM_CODE("132")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Vertex2sv))"\n"
"\t"STUB_ASM_CODE("133")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Vertex3d))"\n"
"\t"STUB_ASM_CODE("134")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Vertex3dv))"\n"
"\t"STUB_ASM_CODE("135")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Vertex3f))"\n"
"\t"STUB_ASM_CODE("136")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Vertex3fv))"\n"
"\t"STUB_ASM_CODE("137")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Vertex3i))"\n"
"\t"STUB_ASM_CODE("138")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Vertex3iv))"\n"
"\t"STUB_ASM_CODE("139")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Vertex3s))"\n"
"\t"STUB_ASM_CODE("140")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Vertex3sv))"\n"
"\t"STUB_ASM_CODE("141")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Vertex4d))"\n"
"\t"STUB_ASM_CODE("142")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Vertex4dv))"\n"
"\t"STUB_ASM_CODE("143")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Vertex4f))"\n"
"\t"STUB_ASM_CODE("144")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Vertex4fv))"\n"
"\t"STUB_ASM_CODE("145")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Vertex4i))"\n"
"\t"STUB_ASM_CODE("146")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Vertex4iv))"\n"
"\t"STUB_ASM_CODE("147")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Vertex4s))"\n"
"\t"STUB_ASM_CODE("148")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Vertex4sv))"\n"
"\t"STUB_ASM_CODE("149")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ClipPlane))"\n"
"\t"STUB_ASM_CODE("150")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ColorMaterial))"\n"
"\t"STUB_ASM_CODE("151")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(CullFace))"\n"
"\t"STUB_ASM_CODE("152")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Fogf))"\n"
"\t"STUB_ASM_CODE("153")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Fogfv))"\n"
"\t"STUB_ASM_CODE("154")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Fogi))"\n"
"\t"STUB_ASM_CODE("155")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Fogiv))"\n"
"\t"STUB_ASM_CODE("156")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(FrontFace))"\n"
"\t"STUB_ASM_CODE("157")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Hint))"\n"
"\t"STUB_ASM_CODE("158")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Lightf))"\n"
"\t"STUB_ASM_CODE("159")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Lightfv))"\n"
"\t"STUB_ASM_CODE("160")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Lighti))"\n"
"\t"STUB_ASM_CODE("161")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Lightiv))"\n"
"\t"STUB_ASM_CODE("162")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(LightModelf))"\n"
"\t"STUB_ASM_CODE("163")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(LightModelfv))"\n"
"\t"STUB_ASM_CODE("164")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(LightModeli))"\n"
"\t"STUB_ASM_CODE("165")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(LightModeliv))"\n"
"\t"STUB_ASM_CODE("166")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(LineStipple))"\n"
"\t"STUB_ASM_CODE("167")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(LineWidth))"\n"
"\t"STUB_ASM_CODE("168")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Materialf))"\n"
"\t"STUB_ASM_CODE("169")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Materialfv))"\n"
"\t"STUB_ASM_CODE("170")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Materiali))"\n"
"\t"STUB_ASM_CODE("171")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Materialiv))"\n"
"\t"STUB_ASM_CODE("172")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(PointSize))"\n"
"\t"STUB_ASM_CODE("173")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(PolygonMode))"\n"
"\t"STUB_ASM_CODE("174")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(PolygonStipple))"\n"
"\t"STUB_ASM_CODE("175")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Scissor))"\n"
"\t"STUB_ASM_CODE("176")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ShadeModel))"\n"
"\t"STUB_ASM_CODE("177")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexParameterf))"\n"
"\t"STUB_ASM_CODE("178")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexParameterfv))"\n"
"\t"STUB_ASM_CODE("179")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexParameteri))"\n"
"\t"STUB_ASM_CODE("180")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexParameteriv))"\n"
"\t"STUB_ASM_CODE("181")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexImage1D))"\n"
"\t"STUB_ASM_CODE("182")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexImage2D))"\n"
"\t"STUB_ASM_CODE("183")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexEnvf))"\n"
"\t"STUB_ASM_CODE("184")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexEnvfv))"\n"
"\t"STUB_ASM_CODE("185")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexEnvi))"\n"
"\t"STUB_ASM_CODE("186")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexEnviv))"\n"
"\t"STUB_ASM_CODE("187")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexGend))"\n"
"\t"STUB_ASM_CODE("188")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexGendv))"\n"
"\t"STUB_ASM_CODE("189")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexGenf))"\n"
"\t"STUB_ASM_CODE("190")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexGenfv))"\n"
"\t"STUB_ASM_CODE("191")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexGeni))"\n"
"\t"STUB_ASM_CODE("192")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexGeniv))"\n"
"\t"STUB_ASM_CODE("193")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(FeedbackBuffer))"\n"
"\t"STUB_ASM_CODE("194")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(SelectBuffer))"\n"
"\t"STUB_ASM_CODE("195")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(RenderMode))"\n"
"\t"STUB_ASM_CODE("196")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(InitNames))"\n"
"\t"STUB_ASM_CODE("197")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(LoadName))"\n"
"\t"STUB_ASM_CODE("198")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(PassThrough))"\n"
"\t"STUB_ASM_CODE("199")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(PopName))"\n"
"\t"STUB_ASM_CODE("200")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(PushName))"\n"
"\t"STUB_ASM_CODE("201")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(DrawBuffer))"\n"
"\t"STUB_ASM_CODE("202")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Clear))"\n"
"\t"STUB_ASM_CODE("203")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ClearAccum))"\n"
"\t"STUB_ASM_CODE("204")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ClearIndex))"\n"
"\t"STUB_ASM_CODE("205")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ClearColor))"\n"
"\t"STUB_ASM_CODE("206")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ClearStencil))"\n"
"\t"STUB_ASM_CODE("207")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ClearDepth))"\n"
"\t"STUB_ASM_CODE("208")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(StencilMask))"\n"
"\t"STUB_ASM_CODE("209")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ColorMask))"\n"
"\t"STUB_ASM_CODE("210")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(DepthMask))"\n"
"\t"STUB_ASM_CODE("211")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(IndexMask))"\n"
"\t"STUB_ASM_CODE("212")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Accum))"\n"
"\t"STUB_ASM_CODE("213")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Disable))"\n"
"\t"STUB_ASM_CODE("214")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Enable))"\n"
"\t"STUB_ASM_CODE("215")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Finish))"\n"
"\t"STUB_ASM_CODE("216")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Flush))"\n"
"\t"STUB_ASM_CODE("217")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(PopAttrib))"\n"
"\t"STUB_ASM_CODE("218")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(PushAttrib))"\n"
"\t"STUB_ASM_CODE("219")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Map1d))"\n"
"\t"STUB_ASM_CODE("220")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Map1f))"\n"
"\t"STUB_ASM_CODE("221")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Map2d))"\n"
"\t"STUB_ASM_CODE("222")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Map2f))"\n"
"\t"STUB_ASM_CODE("223")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(MapGrid1d))"\n"
"\t"STUB_ASM_CODE("224")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(MapGrid1f))"\n"
"\t"STUB_ASM_CODE("225")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(MapGrid2d))"\n"
"\t"STUB_ASM_CODE("226")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(MapGrid2f))"\n"
"\t"STUB_ASM_CODE("227")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(EvalCoord1d))"\n"
"\t"STUB_ASM_CODE("228")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(EvalCoord1dv))"\n"
"\t"STUB_ASM_CODE("229")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(EvalCoord1f))"\n"
"\t"STUB_ASM_CODE("230")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(EvalCoord1fv))"\n"
"\t"STUB_ASM_CODE("231")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(EvalCoord2d))"\n"
"\t"STUB_ASM_CODE("232")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(EvalCoord2dv))"\n"
"\t"STUB_ASM_CODE("233")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(EvalCoord2f))"\n"
"\t"STUB_ASM_CODE("234")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(EvalCoord2fv))"\n"
"\t"STUB_ASM_CODE("235")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(EvalMesh1))"\n"
"\t"STUB_ASM_CODE("236")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(EvalPoint1))"\n"
"\t"STUB_ASM_CODE("237")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(EvalMesh2))"\n"
"\t"STUB_ASM_CODE("238")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(EvalPoint2))"\n"
"\t"STUB_ASM_CODE("239")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(AlphaFunc))"\n"
"\t"STUB_ASM_CODE("240")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(BlendFunc))"\n"
"\t"STUB_ASM_CODE("241")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(LogicOp))"\n"
"\t"STUB_ASM_CODE("242")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(StencilFunc))"\n"
"\t"STUB_ASM_CODE("243")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(StencilOp))"\n"
"\t"STUB_ASM_CODE("244")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(DepthFunc))"\n"
"\t"STUB_ASM_CODE("245")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(PixelZoom))"\n"
"\t"STUB_ASM_CODE("246")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(PixelTransferf))"\n"
"\t"STUB_ASM_CODE("247")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(PixelTransferi))"\n"
"\t"STUB_ASM_CODE("248")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(PixelStoref))"\n"
"\t"STUB_ASM_CODE("249")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(PixelStorei))"\n"
"\t"STUB_ASM_CODE("250")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(PixelMapfv))"\n"
"\t"STUB_ASM_CODE("251")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(PixelMapuiv))"\n"
"\t"STUB_ASM_CODE("252")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(PixelMapusv))"\n"
"\t"STUB_ASM_CODE("253")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ReadBuffer))"\n"
"\t"STUB_ASM_CODE("254")"\n"

".globl "GLAPI_PREFIX_STR(ReadBufferNV)"\n"
".set "GLAPI_PREFIX_STR(ReadBufferNV)", "GLAPI_PREFIX_STR(ReadBuffer)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(CopyPixels))"\n"
"\t"STUB_ASM_CODE("255")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ReadPixels))"\n"
"\t"STUB_ASM_CODE("256")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(DrawPixels))"\n"
"\t"STUB_ASM_CODE("257")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetBooleanv))"\n"
"\t"STUB_ASM_CODE("258")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetClipPlane))"\n"
"\t"STUB_ASM_CODE("259")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetDoublev))"\n"
"\t"STUB_ASM_CODE("260")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetError))"\n"
"\t"STUB_ASM_CODE("261")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetFloatv))"\n"
"\t"STUB_ASM_CODE("262")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetIntegerv))"\n"
"\t"STUB_ASM_CODE("263")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetLightfv))"\n"
"\t"STUB_ASM_CODE("264")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetLightiv))"\n"
"\t"STUB_ASM_CODE("265")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetMapdv))"\n"
"\t"STUB_ASM_CODE("266")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetMapfv))"\n"
"\t"STUB_ASM_CODE("267")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetMapiv))"\n"
"\t"STUB_ASM_CODE("268")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetMaterialfv))"\n"
"\t"STUB_ASM_CODE("269")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetMaterialiv))"\n"
"\t"STUB_ASM_CODE("270")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetPixelMapfv))"\n"
"\t"STUB_ASM_CODE("271")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetPixelMapuiv))"\n"
"\t"STUB_ASM_CODE("272")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetPixelMapusv))"\n"
"\t"STUB_ASM_CODE("273")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetPolygonStipple))"\n"
"\t"STUB_ASM_CODE("274")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetString))"\n"
"\t"STUB_ASM_CODE("275")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetTexEnvfv))"\n"
"\t"STUB_ASM_CODE("276")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetTexEnviv))"\n"
"\t"STUB_ASM_CODE("277")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetTexGendv))"\n"
"\t"STUB_ASM_CODE("278")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetTexGenfv))"\n"
"\t"STUB_ASM_CODE("279")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetTexGeniv))"\n"
"\t"STUB_ASM_CODE("280")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetTexImage))"\n"
"\t"STUB_ASM_CODE("281")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetTexParameterfv))"\n"
"\t"STUB_ASM_CODE("282")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetTexParameteriv))"\n"
"\t"STUB_ASM_CODE("283")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetTexLevelParameterfv))"\n"
"\t"STUB_ASM_CODE("284")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetTexLevelParameteriv))"\n"
"\t"STUB_ASM_CODE("285")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(IsEnabled))"\n"
"\t"STUB_ASM_CODE("286")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(IsList))"\n"
"\t"STUB_ASM_CODE("287")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(DepthRange))"\n"
"\t"STUB_ASM_CODE("288")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Frustum))"\n"
"\t"STUB_ASM_CODE("289")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(LoadIdentity))"\n"
"\t"STUB_ASM_CODE("290")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(LoadMatrixf))"\n"
"\t"STUB_ASM_CODE("291")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(LoadMatrixd))"\n"
"\t"STUB_ASM_CODE("292")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(MatrixMode))"\n"
"\t"STUB_ASM_CODE("293")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(MultMatrixf))"\n"
"\t"STUB_ASM_CODE("294")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(MultMatrixd))"\n"
"\t"STUB_ASM_CODE("295")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Ortho))"\n"
"\t"STUB_ASM_CODE("296")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(PopMatrix))"\n"
"\t"STUB_ASM_CODE("297")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(PushMatrix))"\n"
"\t"STUB_ASM_CODE("298")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Rotated))"\n"
"\t"STUB_ASM_CODE("299")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Rotatef))"\n"
"\t"STUB_ASM_CODE("300")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Scaled))"\n"
"\t"STUB_ASM_CODE("301")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Scalef))"\n"
"\t"STUB_ASM_CODE("302")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Translated))"\n"
"\t"STUB_ASM_CODE("303")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Translatef))"\n"
"\t"STUB_ASM_CODE("304")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Viewport))"\n"
"\t"STUB_ASM_CODE("305")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ArrayElement))"\n"
"\t"STUB_ASM_CODE("306")"\n"

".globl "GLAPI_PREFIX_STR(ArrayElementEXT)"\n"
".set "GLAPI_PREFIX_STR(ArrayElementEXT)", "GLAPI_PREFIX_STR(ArrayElement)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(BindTexture))"\n"
"\t"STUB_ASM_CODE("307")"\n"

".globl "GLAPI_PREFIX_STR(BindTextureEXT)"\n"
".set "GLAPI_PREFIX_STR(BindTextureEXT)", "GLAPI_PREFIX_STR(BindTexture)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ColorPointer))"\n"
"\t"STUB_ASM_CODE("308")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(DisableClientState))"\n"
"\t"STUB_ASM_CODE("309")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(DrawArrays))"\n"
"\t"STUB_ASM_CODE("310")"\n"

".globl "GLAPI_PREFIX_STR(DrawArraysEXT)"\n"
".set "GLAPI_PREFIX_STR(DrawArraysEXT)", "GLAPI_PREFIX_STR(DrawArrays)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(DrawElements))"\n"
"\t"STUB_ASM_CODE("311")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(EdgeFlagPointer))"\n"
"\t"STUB_ASM_CODE("312")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(EnableClientState))"\n"
"\t"STUB_ASM_CODE("313")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(IndexPointer))"\n"
"\t"STUB_ASM_CODE("314")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Indexub))"\n"
"\t"STUB_ASM_CODE("315")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Indexubv))"\n"
"\t"STUB_ASM_CODE("316")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(InterleavedArrays))"\n"
"\t"STUB_ASM_CODE("317")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(NormalPointer))"\n"
"\t"STUB_ASM_CODE("318")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(PolygonOffset))"\n"
"\t"STUB_ASM_CODE("319")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexCoordPointer))"\n"
"\t"STUB_ASM_CODE("320")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexPointer))"\n"
"\t"STUB_ASM_CODE("321")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(AreTexturesResident))"\n"
"\t"STUB_ASM_CODE("322")"\n"

#if 0
".globl "GLAPI_PREFIX_STR(AreTexturesResidentEXT)"\n"
".set "GLAPI_PREFIX_STR(AreTexturesResidentEXT)", "GLAPI_PREFIX_STR(AreTexturesResident)"\n"
#endif

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(CopyTexImage1D))"\n"
"\t"STUB_ASM_CODE("323")"\n"

".globl "GLAPI_PREFIX_STR(CopyTexImage1DEXT)"\n"
".set "GLAPI_PREFIX_STR(CopyTexImage1DEXT)", "GLAPI_PREFIX_STR(CopyTexImage1D)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(CopyTexImage2D))"\n"
"\t"STUB_ASM_CODE("324")"\n"

".globl "GLAPI_PREFIX_STR(CopyTexImage2DEXT)"\n"
".set "GLAPI_PREFIX_STR(CopyTexImage2DEXT)", "GLAPI_PREFIX_STR(CopyTexImage2D)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(CopyTexSubImage1D))"\n"
"\t"STUB_ASM_CODE("325")"\n"

".globl "GLAPI_PREFIX_STR(CopyTexSubImage1DEXT)"\n"
".set "GLAPI_PREFIX_STR(CopyTexSubImage1DEXT)", "GLAPI_PREFIX_STR(CopyTexSubImage1D)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(CopyTexSubImage2D))"\n"
"\t"STUB_ASM_CODE("326")"\n"

".globl "GLAPI_PREFIX_STR(CopyTexSubImage2DEXT)"\n"
".set "GLAPI_PREFIX_STR(CopyTexSubImage2DEXT)", "GLAPI_PREFIX_STR(CopyTexSubImage2D)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(DeleteTextures))"\n"
"\t"STUB_ASM_CODE("327")"\n"

#if 0
".globl "GLAPI_PREFIX_STR(DeleteTexturesEXT)"\n"
".set "GLAPI_PREFIX_STR(DeleteTexturesEXT)", "GLAPI_PREFIX_STR(DeleteTextures)"\n"
#endif

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GenTextures))"\n"
"\t"STUB_ASM_CODE("328")"\n"

#if 0
".globl "GLAPI_PREFIX_STR(GenTexturesEXT)"\n"
".set "GLAPI_PREFIX_STR(GenTexturesEXT)", "GLAPI_PREFIX_STR(GenTextures)"\n"
#endif

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetPointerv))"\n"
"\t"STUB_ASM_CODE("329")"\n"

".globl "GLAPI_PREFIX_STR(GetPointervEXT)"\n"
".set "GLAPI_PREFIX_STR(GetPointervEXT)", "GLAPI_PREFIX_STR(GetPointerv)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(IsTexture))"\n"
"\t"STUB_ASM_CODE("330")"\n"

#if 0
".globl "GLAPI_PREFIX_STR(IsTextureEXT)"\n"
".set "GLAPI_PREFIX_STR(IsTextureEXT)", "GLAPI_PREFIX_STR(IsTexture)"\n"
#endif

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(PrioritizeTextures))"\n"
"\t"STUB_ASM_CODE("331")"\n"

".globl "GLAPI_PREFIX_STR(PrioritizeTexturesEXT)"\n"
".set "GLAPI_PREFIX_STR(PrioritizeTexturesEXT)", "GLAPI_PREFIX_STR(PrioritizeTextures)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexSubImage1D))"\n"
"\t"STUB_ASM_CODE("332")"\n"

".globl "GLAPI_PREFIX_STR(TexSubImage1DEXT)"\n"
".set "GLAPI_PREFIX_STR(TexSubImage1DEXT)", "GLAPI_PREFIX_STR(TexSubImage1D)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexSubImage2D))"\n"
"\t"STUB_ASM_CODE("333")"\n"

".globl "GLAPI_PREFIX_STR(TexSubImage2DEXT)"\n"
".set "GLAPI_PREFIX_STR(TexSubImage2DEXT)", "GLAPI_PREFIX_STR(TexSubImage2D)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(PopClientAttrib))"\n"
"\t"STUB_ASM_CODE("334")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(PushClientAttrib))"\n"
"\t"STUB_ASM_CODE("335")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(BlendColor))"\n"
"\t"STUB_ASM_CODE("336")"\n"

".globl "GLAPI_PREFIX_STR(BlendColorEXT)"\n"
".set "GLAPI_PREFIX_STR(BlendColorEXT)", "GLAPI_PREFIX_STR(BlendColor)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(BlendEquation))"\n"
"\t"STUB_ASM_CODE("337")"\n"

".globl "GLAPI_PREFIX_STR(BlendEquationEXT)"\n"
".set "GLAPI_PREFIX_STR(BlendEquationEXT)", "GLAPI_PREFIX_STR(BlendEquation)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(DrawRangeElements))"\n"
"\t"STUB_ASM_CODE("338")"\n"

".globl "GLAPI_PREFIX_STR(DrawRangeElementsEXT)"\n"
".set "GLAPI_PREFIX_STR(DrawRangeElementsEXT)", "GLAPI_PREFIX_STR(DrawRangeElements)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ColorTable))"\n"
"\t"STUB_ASM_CODE("339")"\n"

".globl "GLAPI_PREFIX_STR(ColorTableEXT)"\n"
".set "GLAPI_PREFIX_STR(ColorTableEXT)", "GLAPI_PREFIX_STR(ColorTable)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ColorTableParameterfv))"\n"
"\t"STUB_ASM_CODE("340")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ColorTableParameteriv))"\n"
"\t"STUB_ASM_CODE("341")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(CopyColorTable))"\n"
"\t"STUB_ASM_CODE("342")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetColorTable))"\n"
"\t"STUB_ASM_CODE("343")"\n"

#if 0
".globl "GLAPI_PREFIX_STR(GetColorTableEXT)"\n"
".set "GLAPI_PREFIX_STR(GetColorTableEXT)", "GLAPI_PREFIX_STR(GetColorTable)"\n"
#endif

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetColorTableParameterfv))"\n"
"\t"STUB_ASM_CODE("344")"\n"

#if 0
".globl "GLAPI_PREFIX_STR(GetColorTableParameterfvEXT)"\n"
".set "GLAPI_PREFIX_STR(GetColorTableParameterfvEXT)", "GLAPI_PREFIX_STR(GetColorTableParameterfv)"\n"
#endif

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetColorTableParameteriv))"\n"
"\t"STUB_ASM_CODE("345")"\n"

#if 0
".globl "GLAPI_PREFIX_STR(GetColorTableParameterivEXT)"\n"
".set "GLAPI_PREFIX_STR(GetColorTableParameterivEXT)", "GLAPI_PREFIX_STR(GetColorTableParameteriv)"\n"
#endif

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ColorSubTable))"\n"
"\t"STUB_ASM_CODE("346")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(CopyColorSubTable))"\n"
"\t"STUB_ASM_CODE("347")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ConvolutionFilter1D))"\n"
"\t"STUB_ASM_CODE("348")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ConvolutionFilter2D))"\n"
"\t"STUB_ASM_CODE("349")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ConvolutionParameterf))"\n"
"\t"STUB_ASM_CODE("350")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ConvolutionParameterfv))"\n"
"\t"STUB_ASM_CODE("351")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ConvolutionParameteri))"\n"
"\t"STUB_ASM_CODE("352")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ConvolutionParameteriv))"\n"
"\t"STUB_ASM_CODE("353")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(CopyConvolutionFilter1D))"\n"
"\t"STUB_ASM_CODE("354")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(CopyConvolutionFilter2D))"\n"
"\t"STUB_ASM_CODE("355")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetConvolutionFilter))"\n"
"\t"STUB_ASM_CODE("356")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetConvolutionParameterfv))"\n"
"\t"STUB_ASM_CODE("357")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetConvolutionParameteriv))"\n"
"\t"STUB_ASM_CODE("358")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetSeparableFilter))"\n"
"\t"STUB_ASM_CODE("359")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(SeparableFilter2D))"\n"
"\t"STUB_ASM_CODE("360")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetHistogram))"\n"
"\t"STUB_ASM_CODE("361")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetHistogramParameterfv))"\n"
"\t"STUB_ASM_CODE("362")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetHistogramParameteriv))"\n"
"\t"STUB_ASM_CODE("363")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetMinmax))"\n"
"\t"STUB_ASM_CODE("364")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetMinmaxParameterfv))"\n"
"\t"STUB_ASM_CODE("365")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetMinmaxParameteriv))"\n"
"\t"STUB_ASM_CODE("366")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Histogram))"\n"
"\t"STUB_ASM_CODE("367")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Minmax))"\n"
"\t"STUB_ASM_CODE("368")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ResetHistogram))"\n"
"\t"STUB_ASM_CODE("369")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ResetMinmax))"\n"
"\t"STUB_ASM_CODE("370")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexImage3D))"\n"
"\t"STUB_ASM_CODE("371")"\n"

".globl "GLAPI_PREFIX_STR(TexImage3DEXT)"\n"
".set "GLAPI_PREFIX_STR(TexImage3DEXT)", "GLAPI_PREFIX_STR(TexImage3D)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexSubImage3D))"\n"
"\t"STUB_ASM_CODE("372")"\n"

".globl "GLAPI_PREFIX_STR(TexSubImage3DEXT)"\n"
".set "GLAPI_PREFIX_STR(TexSubImage3DEXT)", "GLAPI_PREFIX_STR(TexSubImage3D)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(CopyTexSubImage3D))"\n"
"\t"STUB_ASM_CODE("373")"\n"

".globl "GLAPI_PREFIX_STR(CopyTexSubImage3DEXT)"\n"
".set "GLAPI_PREFIX_STR(CopyTexSubImage3DEXT)", "GLAPI_PREFIX_STR(CopyTexSubImage3D)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ActiveTextureARB))"\n"
"\t"STUB_ASM_CODE("374")"\n"

".globl "GLAPI_PREFIX_STR(ActiveTexture)"\n"
".set "GLAPI_PREFIX_STR(ActiveTexture)", "GLAPI_PREFIX_STR(ActiveTextureARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ClientActiveTextureARB))"\n"
"\t"STUB_ASM_CODE("375")"\n"

".globl "GLAPI_PREFIX_STR(ClientActiveTexture)"\n"
".set "GLAPI_PREFIX_STR(ClientActiveTexture)", "GLAPI_PREFIX_STR(ClientActiveTextureARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(MultiTexCoord1dARB))"\n"
"\t"STUB_ASM_CODE("376")"\n"

".globl "GLAPI_PREFIX_STR(MultiTexCoord1d)"\n"
".set "GLAPI_PREFIX_STR(MultiTexCoord1d)", "GLAPI_PREFIX_STR(MultiTexCoord1dARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(MultiTexCoord1dvARB))"\n"
"\t"STUB_ASM_CODE("377")"\n"

".globl "GLAPI_PREFIX_STR(MultiTexCoord1dv)"\n"
".set "GLAPI_PREFIX_STR(MultiTexCoord1dv)", "GLAPI_PREFIX_STR(MultiTexCoord1dvARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(MultiTexCoord1fARB))"\n"
"\t"STUB_ASM_CODE("378")"\n"

".globl "GLAPI_PREFIX_STR(MultiTexCoord1f)"\n"
".set "GLAPI_PREFIX_STR(MultiTexCoord1f)", "GLAPI_PREFIX_STR(MultiTexCoord1fARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(MultiTexCoord1fvARB))"\n"
"\t"STUB_ASM_CODE("379")"\n"

".globl "GLAPI_PREFIX_STR(MultiTexCoord1fv)"\n"
".set "GLAPI_PREFIX_STR(MultiTexCoord1fv)", "GLAPI_PREFIX_STR(MultiTexCoord1fvARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(MultiTexCoord1iARB))"\n"
"\t"STUB_ASM_CODE("380")"\n"

".globl "GLAPI_PREFIX_STR(MultiTexCoord1i)"\n"
".set "GLAPI_PREFIX_STR(MultiTexCoord1i)", "GLAPI_PREFIX_STR(MultiTexCoord1iARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(MultiTexCoord1ivARB))"\n"
"\t"STUB_ASM_CODE("381")"\n"

".globl "GLAPI_PREFIX_STR(MultiTexCoord1iv)"\n"
".set "GLAPI_PREFIX_STR(MultiTexCoord1iv)", "GLAPI_PREFIX_STR(MultiTexCoord1ivARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(MultiTexCoord1sARB))"\n"
"\t"STUB_ASM_CODE("382")"\n"

".globl "GLAPI_PREFIX_STR(MultiTexCoord1s)"\n"
".set "GLAPI_PREFIX_STR(MultiTexCoord1s)", "GLAPI_PREFIX_STR(MultiTexCoord1sARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(MultiTexCoord1svARB))"\n"
"\t"STUB_ASM_CODE("383")"\n"

".globl "GLAPI_PREFIX_STR(MultiTexCoord1sv)"\n"
".set "GLAPI_PREFIX_STR(MultiTexCoord1sv)", "GLAPI_PREFIX_STR(MultiTexCoord1svARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(MultiTexCoord2dARB))"\n"
"\t"STUB_ASM_CODE("384")"\n"

".globl "GLAPI_PREFIX_STR(MultiTexCoord2d)"\n"
".set "GLAPI_PREFIX_STR(MultiTexCoord2d)", "GLAPI_PREFIX_STR(MultiTexCoord2dARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(MultiTexCoord2dvARB))"\n"
"\t"STUB_ASM_CODE("385")"\n"

".globl "GLAPI_PREFIX_STR(MultiTexCoord2dv)"\n"
".set "GLAPI_PREFIX_STR(MultiTexCoord2dv)", "GLAPI_PREFIX_STR(MultiTexCoord2dvARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(MultiTexCoord2fARB))"\n"
"\t"STUB_ASM_CODE("386")"\n"

".globl "GLAPI_PREFIX_STR(MultiTexCoord2f)"\n"
".set "GLAPI_PREFIX_STR(MultiTexCoord2f)", "GLAPI_PREFIX_STR(MultiTexCoord2fARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(MultiTexCoord2fvARB))"\n"
"\t"STUB_ASM_CODE("387")"\n"

".globl "GLAPI_PREFIX_STR(MultiTexCoord2fv)"\n"
".set "GLAPI_PREFIX_STR(MultiTexCoord2fv)", "GLAPI_PREFIX_STR(MultiTexCoord2fvARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(MultiTexCoord2iARB))"\n"
"\t"STUB_ASM_CODE("388")"\n"

".globl "GLAPI_PREFIX_STR(MultiTexCoord2i)"\n"
".set "GLAPI_PREFIX_STR(MultiTexCoord2i)", "GLAPI_PREFIX_STR(MultiTexCoord2iARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(MultiTexCoord2ivARB))"\n"
"\t"STUB_ASM_CODE("389")"\n"

".globl "GLAPI_PREFIX_STR(MultiTexCoord2iv)"\n"
".set "GLAPI_PREFIX_STR(MultiTexCoord2iv)", "GLAPI_PREFIX_STR(MultiTexCoord2ivARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(MultiTexCoord2sARB))"\n"
"\t"STUB_ASM_CODE("390")"\n"

".globl "GLAPI_PREFIX_STR(MultiTexCoord2s)"\n"
".set "GLAPI_PREFIX_STR(MultiTexCoord2s)", "GLAPI_PREFIX_STR(MultiTexCoord2sARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(MultiTexCoord2svARB))"\n"
"\t"STUB_ASM_CODE("391")"\n"

".globl "GLAPI_PREFIX_STR(MultiTexCoord2sv)"\n"
".set "GLAPI_PREFIX_STR(MultiTexCoord2sv)", "GLAPI_PREFIX_STR(MultiTexCoord2svARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(MultiTexCoord3dARB))"\n"
"\t"STUB_ASM_CODE("392")"\n"

".globl "GLAPI_PREFIX_STR(MultiTexCoord3d)"\n"
".set "GLAPI_PREFIX_STR(MultiTexCoord3d)", "GLAPI_PREFIX_STR(MultiTexCoord3dARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(MultiTexCoord3dvARB))"\n"
"\t"STUB_ASM_CODE("393")"\n"

".globl "GLAPI_PREFIX_STR(MultiTexCoord3dv)"\n"
".set "GLAPI_PREFIX_STR(MultiTexCoord3dv)", "GLAPI_PREFIX_STR(MultiTexCoord3dvARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(MultiTexCoord3fARB))"\n"
"\t"STUB_ASM_CODE("394")"\n"

".globl "GLAPI_PREFIX_STR(MultiTexCoord3f)"\n"
".set "GLAPI_PREFIX_STR(MultiTexCoord3f)", "GLAPI_PREFIX_STR(MultiTexCoord3fARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(MultiTexCoord3fvARB))"\n"
"\t"STUB_ASM_CODE("395")"\n"

".globl "GLAPI_PREFIX_STR(MultiTexCoord3fv)"\n"
".set "GLAPI_PREFIX_STR(MultiTexCoord3fv)", "GLAPI_PREFIX_STR(MultiTexCoord3fvARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(MultiTexCoord3iARB))"\n"
"\t"STUB_ASM_CODE("396")"\n"

".globl "GLAPI_PREFIX_STR(MultiTexCoord3i)"\n"
".set "GLAPI_PREFIX_STR(MultiTexCoord3i)", "GLAPI_PREFIX_STR(MultiTexCoord3iARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(MultiTexCoord3ivARB))"\n"
"\t"STUB_ASM_CODE("397")"\n"

".globl "GLAPI_PREFIX_STR(MultiTexCoord3iv)"\n"
".set "GLAPI_PREFIX_STR(MultiTexCoord3iv)", "GLAPI_PREFIX_STR(MultiTexCoord3ivARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(MultiTexCoord3sARB))"\n"
"\t"STUB_ASM_CODE("398")"\n"

".globl "GLAPI_PREFIX_STR(MultiTexCoord3s)"\n"
".set "GLAPI_PREFIX_STR(MultiTexCoord3s)", "GLAPI_PREFIX_STR(MultiTexCoord3sARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(MultiTexCoord3svARB))"\n"
"\t"STUB_ASM_CODE("399")"\n"

".globl "GLAPI_PREFIX_STR(MultiTexCoord3sv)"\n"
".set "GLAPI_PREFIX_STR(MultiTexCoord3sv)", "GLAPI_PREFIX_STR(MultiTexCoord3svARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(MultiTexCoord4dARB))"\n"
"\t"STUB_ASM_CODE("400")"\n"

".globl "GLAPI_PREFIX_STR(MultiTexCoord4d)"\n"
".set "GLAPI_PREFIX_STR(MultiTexCoord4d)", "GLAPI_PREFIX_STR(MultiTexCoord4dARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(MultiTexCoord4dvARB))"\n"
"\t"STUB_ASM_CODE("401")"\n"

".globl "GLAPI_PREFIX_STR(MultiTexCoord4dv)"\n"
".set "GLAPI_PREFIX_STR(MultiTexCoord4dv)", "GLAPI_PREFIX_STR(MultiTexCoord4dvARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(MultiTexCoord4fARB))"\n"
"\t"STUB_ASM_CODE("402")"\n"

".globl "GLAPI_PREFIX_STR(MultiTexCoord4f)"\n"
".set "GLAPI_PREFIX_STR(MultiTexCoord4f)", "GLAPI_PREFIX_STR(MultiTexCoord4fARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(MultiTexCoord4fvARB))"\n"
"\t"STUB_ASM_CODE("403")"\n"

".globl "GLAPI_PREFIX_STR(MultiTexCoord4fv)"\n"
".set "GLAPI_PREFIX_STR(MultiTexCoord4fv)", "GLAPI_PREFIX_STR(MultiTexCoord4fvARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(MultiTexCoord4iARB))"\n"
"\t"STUB_ASM_CODE("404")"\n"

".globl "GLAPI_PREFIX_STR(MultiTexCoord4i)"\n"
".set "GLAPI_PREFIX_STR(MultiTexCoord4i)", "GLAPI_PREFIX_STR(MultiTexCoord4iARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(MultiTexCoord4ivARB))"\n"
"\t"STUB_ASM_CODE("405")"\n"

".globl "GLAPI_PREFIX_STR(MultiTexCoord4iv)"\n"
".set "GLAPI_PREFIX_STR(MultiTexCoord4iv)", "GLAPI_PREFIX_STR(MultiTexCoord4ivARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(MultiTexCoord4sARB))"\n"
"\t"STUB_ASM_CODE("406")"\n"

".globl "GLAPI_PREFIX_STR(MultiTexCoord4s)"\n"
".set "GLAPI_PREFIX_STR(MultiTexCoord4s)", "GLAPI_PREFIX_STR(MultiTexCoord4sARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(MultiTexCoord4svARB))"\n"
"\t"STUB_ASM_CODE("407")"\n"

".globl "GLAPI_PREFIX_STR(MultiTexCoord4sv)"\n"
".set "GLAPI_PREFIX_STR(MultiTexCoord4sv)", "GLAPI_PREFIX_STR(MultiTexCoord4svARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(AttachShader))"\n"
"\t"STUB_ASM_CODE("408")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(CreateProgram))"\n"
"\t"STUB_ASM_CODE("409")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(CreateShader))"\n"
"\t"STUB_ASM_CODE("410")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(DeleteProgram))"\n"
"\t"STUB_ASM_CODE("411")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(DeleteShader))"\n"
"\t"STUB_ASM_CODE("412")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(DetachShader))"\n"
"\t"STUB_ASM_CODE("413")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetAttachedShaders))"\n"
"\t"STUB_ASM_CODE("414")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetProgramInfoLog))"\n"
"\t"STUB_ASM_CODE("415")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetProgramiv))"\n"
"\t"STUB_ASM_CODE("416")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetShaderInfoLog))"\n"
"\t"STUB_ASM_CODE("417")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetShaderiv))"\n"
"\t"STUB_ASM_CODE("418")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(IsProgram))"\n"
"\t"STUB_ASM_CODE("419")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(IsShader))"\n"
"\t"STUB_ASM_CODE("420")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(StencilFuncSeparate))"\n"
"\t"STUB_ASM_CODE("421")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(StencilMaskSeparate))"\n"
"\t"STUB_ASM_CODE("422")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(StencilOpSeparate))"\n"
"\t"STUB_ASM_CODE("423")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(UniformMatrix2x3fv))"\n"
"\t"STUB_ASM_CODE("424")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(UniformMatrix2x4fv))"\n"
"\t"STUB_ASM_CODE("425")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(UniformMatrix3x2fv))"\n"
"\t"STUB_ASM_CODE("426")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(UniformMatrix3x4fv))"\n"
"\t"STUB_ASM_CODE("427")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(UniformMatrix4x2fv))"\n"
"\t"STUB_ASM_CODE("428")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(UniformMatrix4x3fv))"\n"
"\t"STUB_ASM_CODE("429")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ClampColor))"\n"
"\t"STUB_ASM_CODE("430")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ClearBufferfi))"\n"
"\t"STUB_ASM_CODE("431")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ClearBufferfv))"\n"
"\t"STUB_ASM_CODE("432")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ClearBufferiv))"\n"
"\t"STUB_ASM_CODE("433")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ClearBufferuiv))"\n"
"\t"STUB_ASM_CODE("434")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetStringi))"\n"
"\t"STUB_ASM_CODE("435")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(FramebufferTexture))"\n"
"\t"STUB_ASM_CODE("436")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetBufferParameteri64v))"\n"
"\t"STUB_ASM_CODE("437")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetInteger64i_v))"\n"
"\t"STUB_ASM_CODE("438")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribDivisor))"\n"
"\t"STUB_ASM_CODE("439")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(LoadTransposeMatrixdARB))"\n"
"\t"STUB_ASM_CODE("440")"\n"

".globl "GLAPI_PREFIX_STR(LoadTransposeMatrixd)"\n"
".set "GLAPI_PREFIX_STR(LoadTransposeMatrixd)", "GLAPI_PREFIX_STR(LoadTransposeMatrixdARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(LoadTransposeMatrixfARB))"\n"
"\t"STUB_ASM_CODE("441")"\n"

".globl "GLAPI_PREFIX_STR(LoadTransposeMatrixf)"\n"
".set "GLAPI_PREFIX_STR(LoadTransposeMatrixf)", "GLAPI_PREFIX_STR(LoadTransposeMatrixfARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(MultTransposeMatrixdARB))"\n"
"\t"STUB_ASM_CODE("442")"\n"

".globl "GLAPI_PREFIX_STR(MultTransposeMatrixd)"\n"
".set "GLAPI_PREFIX_STR(MultTransposeMatrixd)", "GLAPI_PREFIX_STR(MultTransposeMatrixdARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(MultTransposeMatrixfARB))"\n"
"\t"STUB_ASM_CODE("443")"\n"

".globl "GLAPI_PREFIX_STR(MultTransposeMatrixf)"\n"
".set "GLAPI_PREFIX_STR(MultTransposeMatrixf)", "GLAPI_PREFIX_STR(MultTransposeMatrixfARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(SampleCoverageARB))"\n"
"\t"STUB_ASM_CODE("444")"\n"

".globl "GLAPI_PREFIX_STR(SampleCoverage)"\n"
".set "GLAPI_PREFIX_STR(SampleCoverage)", "GLAPI_PREFIX_STR(SampleCoverageARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(CompressedTexImage1DARB))"\n"
"\t"STUB_ASM_CODE("445")"\n"

".globl "GLAPI_PREFIX_STR(CompressedTexImage1D)"\n"
".set "GLAPI_PREFIX_STR(CompressedTexImage1D)", "GLAPI_PREFIX_STR(CompressedTexImage1DARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(CompressedTexImage2DARB))"\n"
"\t"STUB_ASM_CODE("446")"\n"

".globl "GLAPI_PREFIX_STR(CompressedTexImage2D)"\n"
".set "GLAPI_PREFIX_STR(CompressedTexImage2D)", "GLAPI_PREFIX_STR(CompressedTexImage2DARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(CompressedTexImage3DARB))"\n"
"\t"STUB_ASM_CODE("447")"\n"

".globl "GLAPI_PREFIX_STR(CompressedTexImage3D)"\n"
".set "GLAPI_PREFIX_STR(CompressedTexImage3D)", "GLAPI_PREFIX_STR(CompressedTexImage3DARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(CompressedTexSubImage1DARB))"\n"
"\t"STUB_ASM_CODE("448")"\n"

".globl "GLAPI_PREFIX_STR(CompressedTexSubImage1D)"\n"
".set "GLAPI_PREFIX_STR(CompressedTexSubImage1D)", "GLAPI_PREFIX_STR(CompressedTexSubImage1DARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(CompressedTexSubImage2DARB))"\n"
"\t"STUB_ASM_CODE("449")"\n"

".globl "GLAPI_PREFIX_STR(CompressedTexSubImage2D)"\n"
".set "GLAPI_PREFIX_STR(CompressedTexSubImage2D)", "GLAPI_PREFIX_STR(CompressedTexSubImage2DARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(CompressedTexSubImage3DARB))"\n"
"\t"STUB_ASM_CODE("450")"\n"

".globl "GLAPI_PREFIX_STR(CompressedTexSubImage3D)"\n"
".set "GLAPI_PREFIX_STR(CompressedTexSubImage3D)", "GLAPI_PREFIX_STR(CompressedTexSubImage3DARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetCompressedTexImageARB))"\n"
"\t"STUB_ASM_CODE("451")"\n"

".globl "GLAPI_PREFIX_STR(GetCompressedTexImage)"\n"
".set "GLAPI_PREFIX_STR(GetCompressedTexImage)", "GLAPI_PREFIX_STR(GetCompressedTexImageARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(DisableVertexAttribArrayARB))"\n"
"\t"STUB_ASM_CODE("452")"\n"

".globl "GLAPI_PREFIX_STR(DisableVertexAttribArray)"\n"
".set "GLAPI_PREFIX_STR(DisableVertexAttribArray)", "GLAPI_PREFIX_STR(DisableVertexAttribArrayARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(EnableVertexAttribArrayARB))"\n"
"\t"STUB_ASM_CODE("453")"\n"

".globl "GLAPI_PREFIX_STR(EnableVertexAttribArray)"\n"
".set "GLAPI_PREFIX_STR(EnableVertexAttribArray)", "GLAPI_PREFIX_STR(EnableVertexAttribArrayARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetProgramEnvParameterdvARB))"\n"
"\t"STUB_ASM_CODE("454")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetProgramEnvParameterfvARB))"\n"
"\t"STUB_ASM_CODE("455")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetProgramLocalParameterdvARB))"\n"
"\t"STUB_ASM_CODE("456")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetProgramLocalParameterfvARB))"\n"
"\t"STUB_ASM_CODE("457")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetProgramStringARB))"\n"
"\t"STUB_ASM_CODE("458")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetProgramivARB))"\n"
"\t"STUB_ASM_CODE("459")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetVertexAttribdvARB))"\n"
"\t"STUB_ASM_CODE("460")"\n"

".globl "GLAPI_PREFIX_STR(GetVertexAttribdv)"\n"
".set "GLAPI_PREFIX_STR(GetVertexAttribdv)", "GLAPI_PREFIX_STR(GetVertexAttribdvARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetVertexAttribfvARB))"\n"
"\t"STUB_ASM_CODE("461")"\n"

".globl "GLAPI_PREFIX_STR(GetVertexAttribfv)"\n"
".set "GLAPI_PREFIX_STR(GetVertexAttribfv)", "GLAPI_PREFIX_STR(GetVertexAttribfvARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetVertexAttribivARB))"\n"
"\t"STUB_ASM_CODE("462")"\n"

".globl "GLAPI_PREFIX_STR(GetVertexAttribiv)"\n"
".set "GLAPI_PREFIX_STR(GetVertexAttribiv)", "GLAPI_PREFIX_STR(GetVertexAttribivARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ProgramEnvParameter4dARB))"\n"
"\t"STUB_ASM_CODE("463")"\n"

".globl "GLAPI_PREFIX_STR(ProgramParameter4dNV)"\n"
".set "GLAPI_PREFIX_STR(ProgramParameter4dNV)", "GLAPI_PREFIX_STR(ProgramEnvParameter4dARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ProgramEnvParameter4dvARB))"\n"
"\t"STUB_ASM_CODE("464")"\n"

".globl "GLAPI_PREFIX_STR(ProgramParameter4dvNV)"\n"
".set "GLAPI_PREFIX_STR(ProgramParameter4dvNV)", "GLAPI_PREFIX_STR(ProgramEnvParameter4dvARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ProgramEnvParameter4fARB))"\n"
"\t"STUB_ASM_CODE("465")"\n"

".globl "GLAPI_PREFIX_STR(ProgramParameter4fNV)"\n"
".set "GLAPI_PREFIX_STR(ProgramParameter4fNV)", "GLAPI_PREFIX_STR(ProgramEnvParameter4fARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ProgramEnvParameter4fvARB))"\n"
"\t"STUB_ASM_CODE("466")"\n"

".globl "GLAPI_PREFIX_STR(ProgramParameter4fvNV)"\n"
".set "GLAPI_PREFIX_STR(ProgramParameter4fvNV)", "GLAPI_PREFIX_STR(ProgramEnvParameter4fvARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ProgramLocalParameter4dARB))"\n"
"\t"STUB_ASM_CODE("467")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ProgramLocalParameter4dvARB))"\n"
"\t"STUB_ASM_CODE("468")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ProgramLocalParameter4fARB))"\n"
"\t"STUB_ASM_CODE("469")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ProgramLocalParameter4fvARB))"\n"
"\t"STUB_ASM_CODE("470")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ProgramStringARB))"\n"
"\t"STUB_ASM_CODE("471")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib1dARB))"\n"
"\t"STUB_ASM_CODE("472")"\n"

".globl "GLAPI_PREFIX_STR(VertexAttrib1d)"\n"
".set "GLAPI_PREFIX_STR(VertexAttrib1d)", "GLAPI_PREFIX_STR(VertexAttrib1dARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib1dvARB))"\n"
"\t"STUB_ASM_CODE("473")"\n"

".globl "GLAPI_PREFIX_STR(VertexAttrib1dv)"\n"
".set "GLAPI_PREFIX_STR(VertexAttrib1dv)", "GLAPI_PREFIX_STR(VertexAttrib1dvARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib1fARB))"\n"
"\t"STUB_ASM_CODE("474")"\n"

".globl "GLAPI_PREFIX_STR(VertexAttrib1f)"\n"
".set "GLAPI_PREFIX_STR(VertexAttrib1f)", "GLAPI_PREFIX_STR(VertexAttrib1fARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib1fvARB))"\n"
"\t"STUB_ASM_CODE("475")"\n"

".globl "GLAPI_PREFIX_STR(VertexAttrib1fv)"\n"
".set "GLAPI_PREFIX_STR(VertexAttrib1fv)", "GLAPI_PREFIX_STR(VertexAttrib1fvARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib1sARB))"\n"
"\t"STUB_ASM_CODE("476")"\n"

".globl "GLAPI_PREFIX_STR(VertexAttrib1s)"\n"
".set "GLAPI_PREFIX_STR(VertexAttrib1s)", "GLAPI_PREFIX_STR(VertexAttrib1sARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib1svARB))"\n"
"\t"STUB_ASM_CODE("477")"\n"

".globl "GLAPI_PREFIX_STR(VertexAttrib1sv)"\n"
".set "GLAPI_PREFIX_STR(VertexAttrib1sv)", "GLAPI_PREFIX_STR(VertexAttrib1svARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib2dARB))"\n"
"\t"STUB_ASM_CODE("478")"\n"

".globl "GLAPI_PREFIX_STR(VertexAttrib2d)"\n"
".set "GLAPI_PREFIX_STR(VertexAttrib2d)", "GLAPI_PREFIX_STR(VertexAttrib2dARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib2dvARB))"\n"
"\t"STUB_ASM_CODE("479")"\n"

".globl "GLAPI_PREFIX_STR(VertexAttrib2dv)"\n"
".set "GLAPI_PREFIX_STR(VertexAttrib2dv)", "GLAPI_PREFIX_STR(VertexAttrib2dvARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib2fARB))"\n"
"\t"STUB_ASM_CODE("480")"\n"

".globl "GLAPI_PREFIX_STR(VertexAttrib2f)"\n"
".set "GLAPI_PREFIX_STR(VertexAttrib2f)", "GLAPI_PREFIX_STR(VertexAttrib2fARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib2fvARB))"\n"
"\t"STUB_ASM_CODE("481")"\n"

".globl "GLAPI_PREFIX_STR(VertexAttrib2fv)"\n"
".set "GLAPI_PREFIX_STR(VertexAttrib2fv)", "GLAPI_PREFIX_STR(VertexAttrib2fvARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib2sARB))"\n"
"\t"STUB_ASM_CODE("482")"\n"

".globl "GLAPI_PREFIX_STR(VertexAttrib2s)"\n"
".set "GLAPI_PREFIX_STR(VertexAttrib2s)", "GLAPI_PREFIX_STR(VertexAttrib2sARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib2svARB))"\n"
"\t"STUB_ASM_CODE("483")"\n"

".globl "GLAPI_PREFIX_STR(VertexAttrib2sv)"\n"
".set "GLAPI_PREFIX_STR(VertexAttrib2sv)", "GLAPI_PREFIX_STR(VertexAttrib2svARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib3dARB))"\n"
"\t"STUB_ASM_CODE("484")"\n"

".globl "GLAPI_PREFIX_STR(VertexAttrib3d)"\n"
".set "GLAPI_PREFIX_STR(VertexAttrib3d)", "GLAPI_PREFIX_STR(VertexAttrib3dARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib3dvARB))"\n"
"\t"STUB_ASM_CODE("485")"\n"

".globl "GLAPI_PREFIX_STR(VertexAttrib3dv)"\n"
".set "GLAPI_PREFIX_STR(VertexAttrib3dv)", "GLAPI_PREFIX_STR(VertexAttrib3dvARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib3fARB))"\n"
"\t"STUB_ASM_CODE("486")"\n"

".globl "GLAPI_PREFIX_STR(VertexAttrib3f)"\n"
".set "GLAPI_PREFIX_STR(VertexAttrib3f)", "GLAPI_PREFIX_STR(VertexAttrib3fARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib3fvARB))"\n"
"\t"STUB_ASM_CODE("487")"\n"

".globl "GLAPI_PREFIX_STR(VertexAttrib3fv)"\n"
".set "GLAPI_PREFIX_STR(VertexAttrib3fv)", "GLAPI_PREFIX_STR(VertexAttrib3fvARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib3sARB))"\n"
"\t"STUB_ASM_CODE("488")"\n"

".globl "GLAPI_PREFIX_STR(VertexAttrib3s)"\n"
".set "GLAPI_PREFIX_STR(VertexAttrib3s)", "GLAPI_PREFIX_STR(VertexAttrib3sARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib3svARB))"\n"
"\t"STUB_ASM_CODE("489")"\n"

".globl "GLAPI_PREFIX_STR(VertexAttrib3sv)"\n"
".set "GLAPI_PREFIX_STR(VertexAttrib3sv)", "GLAPI_PREFIX_STR(VertexAttrib3svARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib4NbvARB))"\n"
"\t"STUB_ASM_CODE("490")"\n"

".globl "GLAPI_PREFIX_STR(VertexAttrib4Nbv)"\n"
".set "GLAPI_PREFIX_STR(VertexAttrib4Nbv)", "GLAPI_PREFIX_STR(VertexAttrib4NbvARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib4NivARB))"\n"
"\t"STUB_ASM_CODE("491")"\n"

".globl "GLAPI_PREFIX_STR(VertexAttrib4Niv)"\n"
".set "GLAPI_PREFIX_STR(VertexAttrib4Niv)", "GLAPI_PREFIX_STR(VertexAttrib4NivARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib4NsvARB))"\n"
"\t"STUB_ASM_CODE("492")"\n"

".globl "GLAPI_PREFIX_STR(VertexAttrib4Nsv)"\n"
".set "GLAPI_PREFIX_STR(VertexAttrib4Nsv)", "GLAPI_PREFIX_STR(VertexAttrib4NsvARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib4NubARB))"\n"
"\t"STUB_ASM_CODE("493")"\n"

".globl "GLAPI_PREFIX_STR(VertexAttrib4Nub)"\n"
".set "GLAPI_PREFIX_STR(VertexAttrib4Nub)", "GLAPI_PREFIX_STR(VertexAttrib4NubARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib4NubvARB))"\n"
"\t"STUB_ASM_CODE("494")"\n"

".globl "GLAPI_PREFIX_STR(VertexAttrib4Nubv)"\n"
".set "GLAPI_PREFIX_STR(VertexAttrib4Nubv)", "GLAPI_PREFIX_STR(VertexAttrib4NubvARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib4NuivARB))"\n"
"\t"STUB_ASM_CODE("495")"\n"

".globl "GLAPI_PREFIX_STR(VertexAttrib4Nuiv)"\n"
".set "GLAPI_PREFIX_STR(VertexAttrib4Nuiv)", "GLAPI_PREFIX_STR(VertexAttrib4NuivARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib4NusvARB))"\n"
"\t"STUB_ASM_CODE("496")"\n"

".globl "GLAPI_PREFIX_STR(VertexAttrib4Nusv)"\n"
".set "GLAPI_PREFIX_STR(VertexAttrib4Nusv)", "GLAPI_PREFIX_STR(VertexAttrib4NusvARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib4bvARB))"\n"
"\t"STUB_ASM_CODE("497")"\n"

".globl "GLAPI_PREFIX_STR(VertexAttrib4bv)"\n"
".set "GLAPI_PREFIX_STR(VertexAttrib4bv)", "GLAPI_PREFIX_STR(VertexAttrib4bvARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib4dARB))"\n"
"\t"STUB_ASM_CODE("498")"\n"

".globl "GLAPI_PREFIX_STR(VertexAttrib4d)"\n"
".set "GLAPI_PREFIX_STR(VertexAttrib4d)", "GLAPI_PREFIX_STR(VertexAttrib4dARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib4dvARB))"\n"
"\t"STUB_ASM_CODE("499")"\n"

".globl "GLAPI_PREFIX_STR(VertexAttrib4dv)"\n"
".set "GLAPI_PREFIX_STR(VertexAttrib4dv)", "GLAPI_PREFIX_STR(VertexAttrib4dvARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib4fARB))"\n"
"\t"STUB_ASM_CODE("500")"\n"

".globl "GLAPI_PREFIX_STR(VertexAttrib4f)"\n"
".set "GLAPI_PREFIX_STR(VertexAttrib4f)", "GLAPI_PREFIX_STR(VertexAttrib4fARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib4fvARB))"\n"
"\t"STUB_ASM_CODE("501")"\n"

".globl "GLAPI_PREFIX_STR(VertexAttrib4fv)"\n"
".set "GLAPI_PREFIX_STR(VertexAttrib4fv)", "GLAPI_PREFIX_STR(VertexAttrib4fvARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib4ivARB))"\n"
"\t"STUB_ASM_CODE("502")"\n"

".globl "GLAPI_PREFIX_STR(VertexAttrib4iv)"\n"
".set "GLAPI_PREFIX_STR(VertexAttrib4iv)", "GLAPI_PREFIX_STR(VertexAttrib4ivARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib4sARB))"\n"
"\t"STUB_ASM_CODE("503")"\n"

".globl "GLAPI_PREFIX_STR(VertexAttrib4s)"\n"
".set "GLAPI_PREFIX_STR(VertexAttrib4s)", "GLAPI_PREFIX_STR(VertexAttrib4sARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib4svARB))"\n"
"\t"STUB_ASM_CODE("504")"\n"

".globl "GLAPI_PREFIX_STR(VertexAttrib4sv)"\n"
".set "GLAPI_PREFIX_STR(VertexAttrib4sv)", "GLAPI_PREFIX_STR(VertexAttrib4svARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib4ubvARB))"\n"
"\t"STUB_ASM_CODE("505")"\n"

".globl "GLAPI_PREFIX_STR(VertexAttrib4ubv)"\n"
".set "GLAPI_PREFIX_STR(VertexAttrib4ubv)", "GLAPI_PREFIX_STR(VertexAttrib4ubvARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib4uivARB))"\n"
"\t"STUB_ASM_CODE("506")"\n"

".globl "GLAPI_PREFIX_STR(VertexAttrib4uiv)"\n"
".set "GLAPI_PREFIX_STR(VertexAttrib4uiv)", "GLAPI_PREFIX_STR(VertexAttrib4uivARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib4usvARB))"\n"
"\t"STUB_ASM_CODE("507")"\n"

".globl "GLAPI_PREFIX_STR(VertexAttrib4usv)"\n"
".set "GLAPI_PREFIX_STR(VertexAttrib4usv)", "GLAPI_PREFIX_STR(VertexAttrib4usvARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribPointerARB))"\n"
"\t"STUB_ASM_CODE("508")"\n"

".globl "GLAPI_PREFIX_STR(VertexAttribPointer)"\n"
".set "GLAPI_PREFIX_STR(VertexAttribPointer)", "GLAPI_PREFIX_STR(VertexAttribPointerARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(BindBufferARB))"\n"
"\t"STUB_ASM_CODE("509")"\n"

".globl "GLAPI_PREFIX_STR(BindBuffer)"\n"
".set "GLAPI_PREFIX_STR(BindBuffer)", "GLAPI_PREFIX_STR(BindBufferARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(BufferDataARB))"\n"
"\t"STUB_ASM_CODE("510")"\n"

".globl "GLAPI_PREFIX_STR(BufferData)"\n"
".set "GLAPI_PREFIX_STR(BufferData)", "GLAPI_PREFIX_STR(BufferDataARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(BufferSubDataARB))"\n"
"\t"STUB_ASM_CODE("511")"\n"

".globl "GLAPI_PREFIX_STR(BufferSubData)"\n"
".set "GLAPI_PREFIX_STR(BufferSubData)", "GLAPI_PREFIX_STR(BufferSubDataARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(DeleteBuffersARB))"\n"
"\t"STUB_ASM_CODE("512")"\n"

".globl "GLAPI_PREFIX_STR(DeleteBuffers)"\n"
".set "GLAPI_PREFIX_STR(DeleteBuffers)", "GLAPI_PREFIX_STR(DeleteBuffersARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GenBuffersARB))"\n"
"\t"STUB_ASM_CODE("513")"\n"

".globl "GLAPI_PREFIX_STR(GenBuffers)"\n"
".set "GLAPI_PREFIX_STR(GenBuffers)", "GLAPI_PREFIX_STR(GenBuffersARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetBufferParameterivARB))"\n"
"\t"STUB_ASM_CODE("514")"\n"

".globl "GLAPI_PREFIX_STR(GetBufferParameteriv)"\n"
".set "GLAPI_PREFIX_STR(GetBufferParameteriv)", "GLAPI_PREFIX_STR(GetBufferParameterivARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetBufferPointervARB))"\n"
"\t"STUB_ASM_CODE("515")"\n"

".globl "GLAPI_PREFIX_STR(GetBufferPointerv)"\n"
".set "GLAPI_PREFIX_STR(GetBufferPointerv)", "GLAPI_PREFIX_STR(GetBufferPointervARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetBufferSubDataARB))"\n"
"\t"STUB_ASM_CODE("516")"\n"

".globl "GLAPI_PREFIX_STR(GetBufferSubData)"\n"
".set "GLAPI_PREFIX_STR(GetBufferSubData)", "GLAPI_PREFIX_STR(GetBufferSubDataARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(IsBufferARB))"\n"
"\t"STUB_ASM_CODE("517")"\n"

".globl "GLAPI_PREFIX_STR(IsBuffer)"\n"
".set "GLAPI_PREFIX_STR(IsBuffer)", "GLAPI_PREFIX_STR(IsBufferARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(MapBufferARB))"\n"
"\t"STUB_ASM_CODE("518")"\n"

".globl "GLAPI_PREFIX_STR(MapBuffer)"\n"
".set "GLAPI_PREFIX_STR(MapBuffer)", "GLAPI_PREFIX_STR(MapBufferARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(UnmapBufferARB))"\n"
"\t"STUB_ASM_CODE("519")"\n"

".globl "GLAPI_PREFIX_STR(UnmapBuffer)"\n"
".set "GLAPI_PREFIX_STR(UnmapBuffer)", "GLAPI_PREFIX_STR(UnmapBufferARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(BeginQueryARB))"\n"
"\t"STUB_ASM_CODE("520")"\n"

".globl "GLAPI_PREFIX_STR(BeginQuery)"\n"
".set "GLAPI_PREFIX_STR(BeginQuery)", "GLAPI_PREFIX_STR(BeginQueryARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(DeleteQueriesARB))"\n"
"\t"STUB_ASM_CODE("521")"\n"

".globl "GLAPI_PREFIX_STR(DeleteQueries)"\n"
".set "GLAPI_PREFIX_STR(DeleteQueries)", "GLAPI_PREFIX_STR(DeleteQueriesARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(EndQueryARB))"\n"
"\t"STUB_ASM_CODE("522")"\n"

".globl "GLAPI_PREFIX_STR(EndQuery)"\n"
".set "GLAPI_PREFIX_STR(EndQuery)", "GLAPI_PREFIX_STR(EndQueryARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GenQueriesARB))"\n"
"\t"STUB_ASM_CODE("523")"\n"

".globl "GLAPI_PREFIX_STR(GenQueries)"\n"
".set "GLAPI_PREFIX_STR(GenQueries)", "GLAPI_PREFIX_STR(GenQueriesARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetQueryObjectivARB))"\n"
"\t"STUB_ASM_CODE("524")"\n"

".globl "GLAPI_PREFIX_STR(GetQueryObjectiv)"\n"
".set "GLAPI_PREFIX_STR(GetQueryObjectiv)", "GLAPI_PREFIX_STR(GetQueryObjectivARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetQueryObjectuivARB))"\n"
"\t"STUB_ASM_CODE("525")"\n"

".globl "GLAPI_PREFIX_STR(GetQueryObjectuiv)"\n"
".set "GLAPI_PREFIX_STR(GetQueryObjectuiv)", "GLAPI_PREFIX_STR(GetQueryObjectuivARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetQueryivARB))"\n"
"\t"STUB_ASM_CODE("526")"\n"

".globl "GLAPI_PREFIX_STR(GetQueryiv)"\n"
".set "GLAPI_PREFIX_STR(GetQueryiv)", "GLAPI_PREFIX_STR(GetQueryivARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(IsQueryARB))"\n"
"\t"STUB_ASM_CODE("527")"\n"

".globl "GLAPI_PREFIX_STR(IsQuery)"\n"
".set "GLAPI_PREFIX_STR(IsQuery)", "GLAPI_PREFIX_STR(IsQueryARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(AttachObjectARB))"\n"
"\t"STUB_ASM_CODE("528")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(CompileShaderARB))"\n"
"\t"STUB_ASM_CODE("529")"\n"

".globl "GLAPI_PREFIX_STR(CompileShader)"\n"
".set "GLAPI_PREFIX_STR(CompileShader)", "GLAPI_PREFIX_STR(CompileShaderARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(CreateProgramObjectARB))"\n"
"\t"STUB_ASM_CODE("530")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(CreateShaderObjectARB))"\n"
"\t"STUB_ASM_CODE("531")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(DeleteObjectARB))"\n"
"\t"STUB_ASM_CODE("532")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(DetachObjectARB))"\n"
"\t"STUB_ASM_CODE("533")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetActiveUniformARB))"\n"
"\t"STUB_ASM_CODE("534")"\n"

".globl "GLAPI_PREFIX_STR(GetActiveUniform)"\n"
".set "GLAPI_PREFIX_STR(GetActiveUniform)", "GLAPI_PREFIX_STR(GetActiveUniformARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetAttachedObjectsARB))"\n"
"\t"STUB_ASM_CODE("535")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetHandleARB))"\n"
"\t"STUB_ASM_CODE("536")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetInfoLogARB))"\n"
"\t"STUB_ASM_CODE("537")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetObjectParameterfvARB))"\n"
"\t"STUB_ASM_CODE("538")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetObjectParameterivARB))"\n"
"\t"STUB_ASM_CODE("539")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetShaderSourceARB))"\n"
"\t"STUB_ASM_CODE("540")"\n"

".globl "GLAPI_PREFIX_STR(GetShaderSource)"\n"
".set "GLAPI_PREFIX_STR(GetShaderSource)", "GLAPI_PREFIX_STR(GetShaderSourceARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetUniformLocationARB))"\n"
"\t"STUB_ASM_CODE("541")"\n"

".globl "GLAPI_PREFIX_STR(GetUniformLocation)"\n"
".set "GLAPI_PREFIX_STR(GetUniformLocation)", "GLAPI_PREFIX_STR(GetUniformLocationARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetUniformfvARB))"\n"
"\t"STUB_ASM_CODE("542")"\n"

".globl "GLAPI_PREFIX_STR(GetUniformfv)"\n"
".set "GLAPI_PREFIX_STR(GetUniformfv)", "GLAPI_PREFIX_STR(GetUniformfvARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetUniformivARB))"\n"
"\t"STUB_ASM_CODE("543")"\n"

".globl "GLAPI_PREFIX_STR(GetUniformiv)"\n"
".set "GLAPI_PREFIX_STR(GetUniformiv)", "GLAPI_PREFIX_STR(GetUniformivARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(LinkProgramARB))"\n"
"\t"STUB_ASM_CODE("544")"\n"

".globl "GLAPI_PREFIX_STR(LinkProgram)"\n"
".set "GLAPI_PREFIX_STR(LinkProgram)", "GLAPI_PREFIX_STR(LinkProgramARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ShaderSourceARB))"\n"
"\t"STUB_ASM_CODE("545")"\n"

".globl "GLAPI_PREFIX_STR(ShaderSource)"\n"
".set "GLAPI_PREFIX_STR(ShaderSource)", "GLAPI_PREFIX_STR(ShaderSourceARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Uniform1fARB))"\n"
"\t"STUB_ASM_CODE("546")"\n"

".globl "GLAPI_PREFIX_STR(Uniform1f)"\n"
".set "GLAPI_PREFIX_STR(Uniform1f)", "GLAPI_PREFIX_STR(Uniform1fARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Uniform1fvARB))"\n"
"\t"STUB_ASM_CODE("547")"\n"

".globl "GLAPI_PREFIX_STR(Uniform1fv)"\n"
".set "GLAPI_PREFIX_STR(Uniform1fv)", "GLAPI_PREFIX_STR(Uniform1fvARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Uniform1iARB))"\n"
"\t"STUB_ASM_CODE("548")"\n"

".globl "GLAPI_PREFIX_STR(Uniform1i)"\n"
".set "GLAPI_PREFIX_STR(Uniform1i)", "GLAPI_PREFIX_STR(Uniform1iARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Uniform1ivARB))"\n"
"\t"STUB_ASM_CODE("549")"\n"

".globl "GLAPI_PREFIX_STR(Uniform1iv)"\n"
".set "GLAPI_PREFIX_STR(Uniform1iv)", "GLAPI_PREFIX_STR(Uniform1ivARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Uniform2fARB))"\n"
"\t"STUB_ASM_CODE("550")"\n"

".globl "GLAPI_PREFIX_STR(Uniform2f)"\n"
".set "GLAPI_PREFIX_STR(Uniform2f)", "GLAPI_PREFIX_STR(Uniform2fARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Uniform2fvARB))"\n"
"\t"STUB_ASM_CODE("551")"\n"

".globl "GLAPI_PREFIX_STR(Uniform2fv)"\n"
".set "GLAPI_PREFIX_STR(Uniform2fv)", "GLAPI_PREFIX_STR(Uniform2fvARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Uniform2iARB))"\n"
"\t"STUB_ASM_CODE("552")"\n"

".globl "GLAPI_PREFIX_STR(Uniform2i)"\n"
".set "GLAPI_PREFIX_STR(Uniform2i)", "GLAPI_PREFIX_STR(Uniform2iARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Uniform2ivARB))"\n"
"\t"STUB_ASM_CODE("553")"\n"

".globl "GLAPI_PREFIX_STR(Uniform2iv)"\n"
".set "GLAPI_PREFIX_STR(Uniform2iv)", "GLAPI_PREFIX_STR(Uniform2ivARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Uniform3fARB))"\n"
"\t"STUB_ASM_CODE("554")"\n"

".globl "GLAPI_PREFIX_STR(Uniform3f)"\n"
".set "GLAPI_PREFIX_STR(Uniform3f)", "GLAPI_PREFIX_STR(Uniform3fARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Uniform3fvARB))"\n"
"\t"STUB_ASM_CODE("555")"\n"

".globl "GLAPI_PREFIX_STR(Uniform3fv)"\n"
".set "GLAPI_PREFIX_STR(Uniform3fv)", "GLAPI_PREFIX_STR(Uniform3fvARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Uniform3iARB))"\n"
"\t"STUB_ASM_CODE("556")"\n"

".globl "GLAPI_PREFIX_STR(Uniform3i)"\n"
".set "GLAPI_PREFIX_STR(Uniform3i)", "GLAPI_PREFIX_STR(Uniform3iARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Uniform3ivARB))"\n"
"\t"STUB_ASM_CODE("557")"\n"

".globl "GLAPI_PREFIX_STR(Uniform3iv)"\n"
".set "GLAPI_PREFIX_STR(Uniform3iv)", "GLAPI_PREFIX_STR(Uniform3ivARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Uniform4fARB))"\n"
"\t"STUB_ASM_CODE("558")"\n"

".globl "GLAPI_PREFIX_STR(Uniform4f)"\n"
".set "GLAPI_PREFIX_STR(Uniform4f)", "GLAPI_PREFIX_STR(Uniform4fARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Uniform4fvARB))"\n"
"\t"STUB_ASM_CODE("559")"\n"

".globl "GLAPI_PREFIX_STR(Uniform4fv)"\n"
".set "GLAPI_PREFIX_STR(Uniform4fv)", "GLAPI_PREFIX_STR(Uniform4fvARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Uniform4iARB))"\n"
"\t"STUB_ASM_CODE("560")"\n"

".globl "GLAPI_PREFIX_STR(Uniform4i)"\n"
".set "GLAPI_PREFIX_STR(Uniform4i)", "GLAPI_PREFIX_STR(Uniform4iARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Uniform4ivARB))"\n"
"\t"STUB_ASM_CODE("561")"\n"

".globl "GLAPI_PREFIX_STR(Uniform4iv)"\n"
".set "GLAPI_PREFIX_STR(Uniform4iv)", "GLAPI_PREFIX_STR(Uniform4ivARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(UniformMatrix2fvARB))"\n"
"\t"STUB_ASM_CODE("562")"\n"

".globl "GLAPI_PREFIX_STR(UniformMatrix2fv)"\n"
".set "GLAPI_PREFIX_STR(UniformMatrix2fv)", "GLAPI_PREFIX_STR(UniformMatrix2fvARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(UniformMatrix3fvARB))"\n"
"\t"STUB_ASM_CODE("563")"\n"

".globl "GLAPI_PREFIX_STR(UniformMatrix3fv)"\n"
".set "GLAPI_PREFIX_STR(UniformMatrix3fv)", "GLAPI_PREFIX_STR(UniformMatrix3fvARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(UniformMatrix4fvARB))"\n"
"\t"STUB_ASM_CODE("564")"\n"

".globl "GLAPI_PREFIX_STR(UniformMatrix4fv)"\n"
".set "GLAPI_PREFIX_STR(UniformMatrix4fv)", "GLAPI_PREFIX_STR(UniformMatrix4fvARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(UseProgramObjectARB))"\n"
"\t"STUB_ASM_CODE("565")"\n"

".globl "GLAPI_PREFIX_STR(UseProgram)"\n"
".set "GLAPI_PREFIX_STR(UseProgram)", "GLAPI_PREFIX_STR(UseProgramObjectARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ValidateProgramARB))"\n"
"\t"STUB_ASM_CODE("566")"\n"

".globl "GLAPI_PREFIX_STR(ValidateProgram)"\n"
".set "GLAPI_PREFIX_STR(ValidateProgram)", "GLAPI_PREFIX_STR(ValidateProgramARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(BindAttribLocationARB))"\n"
"\t"STUB_ASM_CODE("567")"\n"

".globl "GLAPI_PREFIX_STR(BindAttribLocation)"\n"
".set "GLAPI_PREFIX_STR(BindAttribLocation)", "GLAPI_PREFIX_STR(BindAttribLocationARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetActiveAttribARB))"\n"
"\t"STUB_ASM_CODE("568")"\n"

".globl "GLAPI_PREFIX_STR(GetActiveAttrib)"\n"
".set "GLAPI_PREFIX_STR(GetActiveAttrib)", "GLAPI_PREFIX_STR(GetActiveAttribARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetAttribLocationARB))"\n"
"\t"STUB_ASM_CODE("569")"\n"

".globl "GLAPI_PREFIX_STR(GetAttribLocation)"\n"
".set "GLAPI_PREFIX_STR(GetAttribLocation)", "GLAPI_PREFIX_STR(GetAttribLocationARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(DrawBuffersARB))"\n"
"\t"STUB_ASM_CODE("570")"\n"

".globl "GLAPI_PREFIX_STR(DrawBuffers)"\n"
".set "GLAPI_PREFIX_STR(DrawBuffers)", "GLAPI_PREFIX_STR(DrawBuffersARB)"\n"

".globl "GLAPI_PREFIX_STR(DrawBuffersATI)"\n"
".set "GLAPI_PREFIX_STR(DrawBuffersATI)", "GLAPI_PREFIX_STR(DrawBuffersARB)"\n"

".globl "GLAPI_PREFIX_STR(DrawBuffersNV)"\n"
".set "GLAPI_PREFIX_STR(DrawBuffersNV)", "GLAPI_PREFIX_STR(DrawBuffersARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ClampColorARB))"\n"
"\t"STUB_ASM_CODE("571")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(DrawArraysInstancedARB))"\n"
"\t"STUB_ASM_CODE("572")"\n"

".globl "GLAPI_PREFIX_STR(DrawArraysInstanced)"\n"
".set "GLAPI_PREFIX_STR(DrawArraysInstanced)", "GLAPI_PREFIX_STR(DrawArraysInstancedARB)"\n"

".globl "GLAPI_PREFIX_STR(DrawArraysInstancedEXT)"\n"
".set "GLAPI_PREFIX_STR(DrawArraysInstancedEXT)", "GLAPI_PREFIX_STR(DrawArraysInstancedARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(DrawElementsInstancedARB))"\n"
"\t"STUB_ASM_CODE("573")"\n"

".globl "GLAPI_PREFIX_STR(DrawElementsInstanced)"\n"
".set "GLAPI_PREFIX_STR(DrawElementsInstanced)", "GLAPI_PREFIX_STR(DrawElementsInstancedARB)"\n"

".globl "GLAPI_PREFIX_STR(DrawElementsInstancedEXT)"\n"
".set "GLAPI_PREFIX_STR(DrawElementsInstancedEXT)", "GLAPI_PREFIX_STR(DrawElementsInstancedARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(RenderbufferStorageMultisample))"\n"
"\t"STUB_ASM_CODE("574")"\n"

".globl "GLAPI_PREFIX_STR(RenderbufferStorageMultisampleEXT)"\n"
".set "GLAPI_PREFIX_STR(RenderbufferStorageMultisampleEXT)", "GLAPI_PREFIX_STR(RenderbufferStorageMultisample)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(FramebufferTextureARB))"\n"
"\t"STUB_ASM_CODE("575")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(FramebufferTextureFaceARB))"\n"
"\t"STUB_ASM_CODE("576")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ProgramParameteriARB))"\n"
"\t"STUB_ASM_CODE("577")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribDivisorARB))"\n"
"\t"STUB_ASM_CODE("578")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(FlushMappedBufferRange))"\n"
"\t"STUB_ASM_CODE("579")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(MapBufferRange))"\n"
"\t"STUB_ASM_CODE("580")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexBufferARB))"\n"
"\t"STUB_ASM_CODE("581")"\n"

".globl "GLAPI_PREFIX_STR(TexBuffer)"\n"
".set "GLAPI_PREFIX_STR(TexBuffer)", "GLAPI_PREFIX_STR(TexBufferARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(BindVertexArray))"\n"
"\t"STUB_ASM_CODE("582")"\n"

".globl "GLAPI_PREFIX_STR(BindVertexArrayOES)"\n"
".set "GLAPI_PREFIX_STR(BindVertexArrayOES)", "GLAPI_PREFIX_STR(BindVertexArray)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GenVertexArrays))"\n"
"\t"STUB_ASM_CODE("583")"\n"

".globl "GLAPI_PREFIX_STR(GenVertexArraysOES)"\n"
".set "GLAPI_PREFIX_STR(GenVertexArraysOES)", "GLAPI_PREFIX_STR(GenVertexArrays)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetActiveUniformBlockName))"\n"
"\t"STUB_ASM_CODE("584")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetActiveUniformBlockiv))"\n"
"\t"STUB_ASM_CODE("585")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetActiveUniformName))"\n"
"\t"STUB_ASM_CODE("586")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetActiveUniformsiv))"\n"
"\t"STUB_ASM_CODE("587")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetUniformBlockIndex))"\n"
"\t"STUB_ASM_CODE("588")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetUniformIndices))"\n"
"\t"STUB_ASM_CODE("589")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(UniformBlockBinding))"\n"
"\t"STUB_ASM_CODE("590")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(CopyBufferSubData))"\n"
"\t"STUB_ASM_CODE("591")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ClientWaitSync))"\n"
"\t"STUB_ASM_CODE("592")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(DeleteSync))"\n"
"\t"STUB_ASM_CODE("593")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(FenceSync))"\n"
"\t"STUB_ASM_CODE("594")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetInteger64v))"\n"
"\t"STUB_ASM_CODE("595")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetSynciv))"\n"
"\t"STUB_ASM_CODE("596")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(IsSync))"\n"
"\t"STUB_ASM_CODE("597")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(WaitSync))"\n"
"\t"STUB_ASM_CODE("598")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(DrawElementsBaseVertex))"\n"
"\t"STUB_ASM_CODE("599")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(DrawElementsInstancedBaseVertex))"\n"
"\t"STUB_ASM_CODE("600")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(DrawRangeElementsBaseVertex))"\n"
"\t"STUB_ASM_CODE("601")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(MultiDrawElementsBaseVertex))"\n"
"\t"STUB_ASM_CODE("602")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(BlendEquationSeparateiARB))"\n"
"\t"STUB_ASM_CODE("603")"\n"

".globl "GLAPI_PREFIX_STR(BlendEquationSeparateIndexedAMD)"\n"
".set "GLAPI_PREFIX_STR(BlendEquationSeparateIndexedAMD)", "GLAPI_PREFIX_STR(BlendEquationSeparateiARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(BlendEquationiARB))"\n"
"\t"STUB_ASM_CODE("604")"\n"

".globl "GLAPI_PREFIX_STR(BlendEquationIndexedAMD)"\n"
".set "GLAPI_PREFIX_STR(BlendEquationIndexedAMD)", "GLAPI_PREFIX_STR(BlendEquationiARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(BlendFuncSeparateiARB))"\n"
"\t"STUB_ASM_CODE("605")"\n"

".globl "GLAPI_PREFIX_STR(BlendFuncSeparateIndexedAMD)"\n"
".set "GLAPI_PREFIX_STR(BlendFuncSeparateIndexedAMD)", "GLAPI_PREFIX_STR(BlendFuncSeparateiARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(BlendFunciARB))"\n"
"\t"STUB_ASM_CODE("606")"\n"

".globl "GLAPI_PREFIX_STR(BlendFuncIndexedAMD)"\n"
".set "GLAPI_PREFIX_STR(BlendFuncIndexedAMD)", "GLAPI_PREFIX_STR(BlendFunciARB)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(BindFragDataLocationIndexed))"\n"
"\t"STUB_ASM_CODE("607")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetFragDataIndex))"\n"
"\t"STUB_ASM_CODE("608")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(BindSampler))"\n"
"\t"STUB_ASM_CODE("609")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(DeleteSamplers))"\n"
"\t"STUB_ASM_CODE("610")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GenSamplers))"\n"
"\t"STUB_ASM_CODE("611")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetSamplerParameterIiv))"\n"
"\t"STUB_ASM_CODE("612")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetSamplerParameterIuiv))"\n"
"\t"STUB_ASM_CODE("613")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetSamplerParameterfv))"\n"
"\t"STUB_ASM_CODE("614")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetSamplerParameteriv))"\n"
"\t"STUB_ASM_CODE("615")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(IsSampler))"\n"
"\t"STUB_ASM_CODE("616")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(SamplerParameterIiv))"\n"
"\t"STUB_ASM_CODE("617")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(SamplerParameterIuiv))"\n"
"\t"STUB_ASM_CODE("618")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(SamplerParameterf))"\n"
"\t"STUB_ASM_CODE("619")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(SamplerParameterfv))"\n"
"\t"STUB_ASM_CODE("620")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(SamplerParameteri))"\n"
"\t"STUB_ASM_CODE("621")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(SamplerParameteriv))"\n"
"\t"STUB_ASM_CODE("622")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ColorP3ui))"\n"
"\t"STUB_ASM_CODE("624")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ColorP3uiv))"\n"
"\t"STUB_ASM_CODE("625")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ColorP4ui))"\n"
"\t"STUB_ASM_CODE("626")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ColorP4uiv))"\n"
"\t"STUB_ASM_CODE("627")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(MultiTexCoordP1ui))"\n"
"\t"STUB_ASM_CODE("628")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(MultiTexCoordP1uiv))"\n"
"\t"STUB_ASM_CODE("629")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(MultiTexCoordP2ui))"\n"
"\t"STUB_ASM_CODE("630")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(MultiTexCoordP2uiv))"\n"
"\t"STUB_ASM_CODE("631")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(MultiTexCoordP3ui))"\n"
"\t"STUB_ASM_CODE("632")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(MultiTexCoordP3uiv))"\n"
"\t"STUB_ASM_CODE("633")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(MultiTexCoordP4ui))"\n"
"\t"STUB_ASM_CODE("634")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(MultiTexCoordP4uiv))"\n"
"\t"STUB_ASM_CODE("635")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(NormalP3ui))"\n"
"\t"STUB_ASM_CODE("636")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(NormalP3uiv))"\n"
"\t"STUB_ASM_CODE("637")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(SecondaryColorP3ui))"\n"
"\t"STUB_ASM_CODE("638")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(SecondaryColorP3uiv))"\n"
"\t"STUB_ASM_CODE("639")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexCoordP1ui))"\n"
"\t"STUB_ASM_CODE("640")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexCoordP1uiv))"\n"
"\t"STUB_ASM_CODE("641")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexCoordP2ui))"\n"
"\t"STUB_ASM_CODE("642")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexCoordP2uiv))"\n"
"\t"STUB_ASM_CODE("643")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexCoordP3ui))"\n"
"\t"STUB_ASM_CODE("644")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexCoordP3uiv))"\n"
"\t"STUB_ASM_CODE("645")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexCoordP4ui))"\n"
"\t"STUB_ASM_CODE("646")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexCoordP4uiv))"\n"
"\t"STUB_ASM_CODE("647")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribP1ui))"\n"
"\t"STUB_ASM_CODE("648")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribP1uiv))"\n"
"\t"STUB_ASM_CODE("649")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribP2ui))"\n"
"\t"STUB_ASM_CODE("650")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribP2uiv))"\n"
"\t"STUB_ASM_CODE("651")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribP3ui))"\n"
"\t"STUB_ASM_CODE("652")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribP3uiv))"\n"
"\t"STUB_ASM_CODE("653")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribP4ui))"\n"
"\t"STUB_ASM_CODE("654")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribP4uiv))"\n"
"\t"STUB_ASM_CODE("655")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexP2ui))"\n"
"\t"STUB_ASM_CODE("656")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexP2uiv))"\n"
"\t"STUB_ASM_CODE("657")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexP3ui))"\n"
"\t"STUB_ASM_CODE("658")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexP3uiv))"\n"
"\t"STUB_ASM_CODE("659")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexP4ui))"\n"
"\t"STUB_ASM_CODE("660")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexP4uiv))"\n"
"\t"STUB_ASM_CODE("661")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(BindTransformFeedback))"\n"
"\t"STUB_ASM_CODE("662")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(DeleteTransformFeedbacks))"\n"
"\t"STUB_ASM_CODE("663")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(DrawTransformFeedback))"\n"
"\t"STUB_ASM_CODE("664")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GenTransformFeedbacks))"\n"
"\t"STUB_ASM_CODE("665")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(IsTransformFeedback))"\n"
"\t"STUB_ASM_CODE("666")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(PauseTransformFeedback))"\n"
"\t"STUB_ASM_CODE("667")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ResumeTransformFeedback))"\n"
"\t"STUB_ASM_CODE("668")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(BeginQueryIndexed))"\n"
"\t"STUB_ASM_CODE("669")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(DrawTransformFeedbackStream))"\n"
"\t"STUB_ASM_CODE("670")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(EndQueryIndexed))"\n"
"\t"STUB_ASM_CODE("671")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetQueryIndexediv))"\n"
"\t"STUB_ASM_CODE("672")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ClearDepthf))"\n"
"\t"STUB_ASM_CODE("673")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(DepthRangef))"\n"
"\t"STUB_ASM_CODE("674")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetShaderPrecisionFormat))"\n"
"\t"STUB_ASM_CODE("675")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ReleaseShaderCompiler))"\n"
"\t"STUB_ASM_CODE("676")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ShaderBinary))"\n"
"\t"STUB_ASM_CODE("677")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(DebugMessageCallbackARB))"\n"
"\t"STUB_ASM_CODE("681")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(DebugMessageControlARB))"\n"
"\t"STUB_ASM_CODE("682")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(DebugMessageInsertARB))"\n"
"\t"STUB_ASM_CODE("683")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetDebugMessageLogARB))"\n"
"\t"STUB_ASM_CODE("684")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetGraphicsResetStatusARB))"\n"
"\t"STUB_ASM_CODE("685")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetnColorTableARB))"\n"
"\t"STUB_ASM_CODE("686")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetnCompressedTexImageARB))"\n"
"\t"STUB_ASM_CODE("687")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetnConvolutionFilterARB))"\n"
"\t"STUB_ASM_CODE("688")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetnHistogramARB))"\n"
"\t"STUB_ASM_CODE("689")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetnMapdvARB))"\n"
"\t"STUB_ASM_CODE("690")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetnMapfvARB))"\n"
"\t"STUB_ASM_CODE("691")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetnMapivARB))"\n"
"\t"STUB_ASM_CODE("692")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetnMinmaxARB))"\n"
"\t"STUB_ASM_CODE("693")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetnPixelMapfvARB))"\n"
"\t"STUB_ASM_CODE("694")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetnPixelMapuivARB))"\n"
"\t"STUB_ASM_CODE("695")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetnPixelMapusvARB))"\n"
"\t"STUB_ASM_CODE("696")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetnPolygonStippleARB))"\n"
"\t"STUB_ASM_CODE("697")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetnSeparableFilterARB))"\n"
"\t"STUB_ASM_CODE("698")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetnTexImageARB))"\n"
"\t"STUB_ASM_CODE("699")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetnUniformdvARB))"\n"
"\t"STUB_ASM_CODE("700")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetnUniformfvARB))"\n"
"\t"STUB_ASM_CODE("701")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetnUniformivARB))"\n"
"\t"STUB_ASM_CODE("702")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetnUniformuivARB))"\n"
"\t"STUB_ASM_CODE("703")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ReadnPixelsARB))"\n"
"\t"STUB_ASM_CODE("704")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(DrawArraysInstancedBaseInstance))"\n"
"\t"STUB_ASM_CODE("705")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(DrawElementsInstancedBaseInstance))"\n"
"\t"STUB_ASM_CODE("706")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(DrawElementsInstancedBaseVertexBaseInstance))"\n"
"\t"STUB_ASM_CODE("707")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(DrawTransformFeedbackInstanced))"\n"
"\t"STUB_ASM_CODE("708")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(DrawTransformFeedbackStreamInstanced))"\n"
"\t"STUB_ASM_CODE("709")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexStorage1D))"\n"
"\t"STUB_ASM_CODE("710")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexStorage2D))"\n"
"\t"STUB_ASM_CODE("711")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexStorage3D))"\n"
"\t"STUB_ASM_CODE("712")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TextureStorage1DEXT))"\n"
"\t"STUB_ASM_CODE("713")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TextureStorage2DEXT))"\n"
"\t"STUB_ASM_CODE("714")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TextureStorage3DEXT))"\n"
"\t"STUB_ASM_CODE("715")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(InvalidateBufferData))"\n"
"\t"STUB_ASM_CODE("716")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(InvalidateBufferSubData))"\n"
"\t"STUB_ASM_CODE("717")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(InvalidateFramebuffer))"\n"
"\t"STUB_ASM_CODE("718")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(InvalidateSubFramebuffer))"\n"
"\t"STUB_ASM_CODE("719")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(InvalidateTexImage))"\n"
"\t"STUB_ASM_CODE("720")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(InvalidateTexSubImage))"\n"
"\t"STUB_ASM_CODE("721")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(PolygonOffsetEXT))"\n"
"\t"STUB_ASM_CODE("722")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ColorPointerEXT))"\n"
"\t"STUB_ASM_CODE("735")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(EdgeFlagPointerEXT))"\n"
"\t"STUB_ASM_CODE("736")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(IndexPointerEXT))"\n"
"\t"STUB_ASM_CODE("737")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(NormalPointerEXT))"\n"
"\t"STUB_ASM_CODE("738")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexCoordPointerEXT))"\n"
"\t"STUB_ASM_CODE("739")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexPointerEXT))"\n"
"\t"STUB_ASM_CODE("740")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(PointParameterfEXT))"\n"
"\t"STUB_ASM_CODE("741")"\n"

".globl "GLAPI_PREFIX_STR(PointParameterf)"\n"
".set "GLAPI_PREFIX_STR(PointParameterf)", "GLAPI_PREFIX_STR(PointParameterfEXT)"\n"

".globl "GLAPI_PREFIX_STR(PointParameterfARB)"\n"
".set "GLAPI_PREFIX_STR(PointParameterfARB)", "GLAPI_PREFIX_STR(PointParameterfEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(PointParameterfvEXT))"\n"
"\t"STUB_ASM_CODE("742")"\n"

".globl "GLAPI_PREFIX_STR(PointParameterfv)"\n"
".set "GLAPI_PREFIX_STR(PointParameterfv)", "GLAPI_PREFIX_STR(PointParameterfvEXT)"\n"

".globl "GLAPI_PREFIX_STR(PointParameterfvARB)"\n"
".set "GLAPI_PREFIX_STR(PointParameterfvARB)", "GLAPI_PREFIX_STR(PointParameterfvEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(LockArraysEXT))"\n"
"\t"STUB_ASM_CODE("743")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(UnlockArraysEXT))"\n"
"\t"STUB_ASM_CODE("744")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(SecondaryColor3bEXT))"\n"
"\t"STUB_ASM_CODE("745")"\n"

".globl "GLAPI_PREFIX_STR(SecondaryColor3b)"\n"
".set "GLAPI_PREFIX_STR(SecondaryColor3b)", "GLAPI_PREFIX_STR(SecondaryColor3bEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(SecondaryColor3bvEXT))"\n"
"\t"STUB_ASM_CODE("746")"\n"

".globl "GLAPI_PREFIX_STR(SecondaryColor3bv)"\n"
".set "GLAPI_PREFIX_STR(SecondaryColor3bv)", "GLAPI_PREFIX_STR(SecondaryColor3bvEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(SecondaryColor3dEXT))"\n"
"\t"STUB_ASM_CODE("747")"\n"

".globl "GLAPI_PREFIX_STR(SecondaryColor3d)"\n"
".set "GLAPI_PREFIX_STR(SecondaryColor3d)", "GLAPI_PREFIX_STR(SecondaryColor3dEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(SecondaryColor3dvEXT))"\n"
"\t"STUB_ASM_CODE("748")"\n"

".globl "GLAPI_PREFIX_STR(SecondaryColor3dv)"\n"
".set "GLAPI_PREFIX_STR(SecondaryColor3dv)", "GLAPI_PREFIX_STR(SecondaryColor3dvEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(SecondaryColor3fEXT))"\n"
"\t"STUB_ASM_CODE("749")"\n"

".globl "GLAPI_PREFIX_STR(SecondaryColor3f)"\n"
".set "GLAPI_PREFIX_STR(SecondaryColor3f)", "GLAPI_PREFIX_STR(SecondaryColor3fEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(SecondaryColor3fvEXT))"\n"
"\t"STUB_ASM_CODE("750")"\n"

".globl "GLAPI_PREFIX_STR(SecondaryColor3fv)"\n"
".set "GLAPI_PREFIX_STR(SecondaryColor3fv)", "GLAPI_PREFIX_STR(SecondaryColor3fvEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(SecondaryColor3iEXT))"\n"
"\t"STUB_ASM_CODE("751")"\n"

".globl "GLAPI_PREFIX_STR(SecondaryColor3i)"\n"
".set "GLAPI_PREFIX_STR(SecondaryColor3i)", "GLAPI_PREFIX_STR(SecondaryColor3iEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(SecondaryColor3ivEXT))"\n"
"\t"STUB_ASM_CODE("752")"\n"

".globl "GLAPI_PREFIX_STR(SecondaryColor3iv)"\n"
".set "GLAPI_PREFIX_STR(SecondaryColor3iv)", "GLAPI_PREFIX_STR(SecondaryColor3ivEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(SecondaryColor3sEXT))"\n"
"\t"STUB_ASM_CODE("753")"\n"

".globl "GLAPI_PREFIX_STR(SecondaryColor3s)"\n"
".set "GLAPI_PREFIX_STR(SecondaryColor3s)", "GLAPI_PREFIX_STR(SecondaryColor3sEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(SecondaryColor3svEXT))"\n"
"\t"STUB_ASM_CODE("754")"\n"

".globl "GLAPI_PREFIX_STR(SecondaryColor3sv)"\n"
".set "GLAPI_PREFIX_STR(SecondaryColor3sv)", "GLAPI_PREFIX_STR(SecondaryColor3svEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(SecondaryColor3ubEXT))"\n"
"\t"STUB_ASM_CODE("755")"\n"

".globl "GLAPI_PREFIX_STR(SecondaryColor3ub)"\n"
".set "GLAPI_PREFIX_STR(SecondaryColor3ub)", "GLAPI_PREFIX_STR(SecondaryColor3ubEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(SecondaryColor3ubvEXT))"\n"
"\t"STUB_ASM_CODE("756")"\n"

".globl "GLAPI_PREFIX_STR(SecondaryColor3ubv)"\n"
".set "GLAPI_PREFIX_STR(SecondaryColor3ubv)", "GLAPI_PREFIX_STR(SecondaryColor3ubvEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(SecondaryColor3uiEXT))"\n"
"\t"STUB_ASM_CODE("757")"\n"

".globl "GLAPI_PREFIX_STR(SecondaryColor3ui)"\n"
".set "GLAPI_PREFIX_STR(SecondaryColor3ui)", "GLAPI_PREFIX_STR(SecondaryColor3uiEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(SecondaryColor3uivEXT))"\n"
"\t"STUB_ASM_CODE("758")"\n"

".globl "GLAPI_PREFIX_STR(SecondaryColor3uiv)"\n"
".set "GLAPI_PREFIX_STR(SecondaryColor3uiv)", "GLAPI_PREFIX_STR(SecondaryColor3uivEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(SecondaryColor3usEXT))"\n"
"\t"STUB_ASM_CODE("759")"\n"

".globl "GLAPI_PREFIX_STR(SecondaryColor3us)"\n"
".set "GLAPI_PREFIX_STR(SecondaryColor3us)", "GLAPI_PREFIX_STR(SecondaryColor3usEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(SecondaryColor3usvEXT))"\n"
"\t"STUB_ASM_CODE("760")"\n"

".globl "GLAPI_PREFIX_STR(SecondaryColor3usv)"\n"
".set "GLAPI_PREFIX_STR(SecondaryColor3usv)", "GLAPI_PREFIX_STR(SecondaryColor3usvEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(SecondaryColorPointerEXT))"\n"
"\t"STUB_ASM_CODE("761")"\n"

".globl "GLAPI_PREFIX_STR(SecondaryColorPointer)"\n"
".set "GLAPI_PREFIX_STR(SecondaryColorPointer)", "GLAPI_PREFIX_STR(SecondaryColorPointerEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(MultiDrawArraysEXT))"\n"
"\t"STUB_ASM_CODE("762")"\n"

".globl "GLAPI_PREFIX_STR(MultiDrawArrays)"\n"
".set "GLAPI_PREFIX_STR(MultiDrawArrays)", "GLAPI_PREFIX_STR(MultiDrawArraysEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(MultiDrawElementsEXT))"\n"
"\t"STUB_ASM_CODE("763")"\n"

".globl "GLAPI_PREFIX_STR(MultiDrawElements)"\n"
".set "GLAPI_PREFIX_STR(MultiDrawElements)", "GLAPI_PREFIX_STR(MultiDrawElementsEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(FogCoordPointerEXT))"\n"
"\t"STUB_ASM_CODE("764")"\n"

".globl "GLAPI_PREFIX_STR(FogCoordPointer)"\n"
".set "GLAPI_PREFIX_STR(FogCoordPointer)", "GLAPI_PREFIX_STR(FogCoordPointerEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(FogCoorddEXT))"\n"
"\t"STUB_ASM_CODE("765")"\n"

".globl "GLAPI_PREFIX_STR(FogCoordd)"\n"
".set "GLAPI_PREFIX_STR(FogCoordd)", "GLAPI_PREFIX_STR(FogCoorddEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(FogCoorddvEXT))"\n"
"\t"STUB_ASM_CODE("766")"\n"

".globl "GLAPI_PREFIX_STR(FogCoorddv)"\n"
".set "GLAPI_PREFIX_STR(FogCoorddv)", "GLAPI_PREFIX_STR(FogCoorddvEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(FogCoordfEXT))"\n"
"\t"STUB_ASM_CODE("767")"\n"

".globl "GLAPI_PREFIX_STR(FogCoordf)"\n"
".set "GLAPI_PREFIX_STR(FogCoordf)", "GLAPI_PREFIX_STR(FogCoordfEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(FogCoordfvEXT))"\n"
"\t"STUB_ASM_CODE("768")"\n"

".globl "GLAPI_PREFIX_STR(FogCoordfv)"\n"
".set "GLAPI_PREFIX_STR(FogCoordfv)", "GLAPI_PREFIX_STR(FogCoordfvEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(BlendFuncSeparateEXT))"\n"
"\t"STUB_ASM_CODE("769")"\n"

".globl "GLAPI_PREFIX_STR(BlendFuncSeparate)"\n"
".set "GLAPI_PREFIX_STR(BlendFuncSeparate)", "GLAPI_PREFIX_STR(BlendFuncSeparateEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ResizeBuffersMESA))"\n"
"\t"STUB_ASM_CODE("770")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(WindowPos2dMESA))"\n"
"\t"STUB_ASM_CODE("771")"\n"

".globl "GLAPI_PREFIX_STR(WindowPos2d)"\n"
".set "GLAPI_PREFIX_STR(WindowPos2d)", "GLAPI_PREFIX_STR(WindowPos2dMESA)"\n"

".globl "GLAPI_PREFIX_STR(WindowPos2dARB)"\n"
".set "GLAPI_PREFIX_STR(WindowPos2dARB)", "GLAPI_PREFIX_STR(WindowPos2dMESA)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(WindowPos2dvMESA))"\n"
"\t"STUB_ASM_CODE("772")"\n"

".globl "GLAPI_PREFIX_STR(WindowPos2dv)"\n"
".set "GLAPI_PREFIX_STR(WindowPos2dv)", "GLAPI_PREFIX_STR(WindowPos2dvMESA)"\n"

".globl "GLAPI_PREFIX_STR(WindowPos2dvARB)"\n"
".set "GLAPI_PREFIX_STR(WindowPos2dvARB)", "GLAPI_PREFIX_STR(WindowPos2dvMESA)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(WindowPos2fMESA))"\n"
"\t"STUB_ASM_CODE("773")"\n"

".globl "GLAPI_PREFIX_STR(WindowPos2f)"\n"
".set "GLAPI_PREFIX_STR(WindowPos2f)", "GLAPI_PREFIX_STR(WindowPos2fMESA)"\n"

".globl "GLAPI_PREFIX_STR(WindowPos2fARB)"\n"
".set "GLAPI_PREFIX_STR(WindowPos2fARB)", "GLAPI_PREFIX_STR(WindowPos2fMESA)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(WindowPos2fvMESA))"\n"
"\t"STUB_ASM_CODE("774")"\n"

".globl "GLAPI_PREFIX_STR(WindowPos2fv)"\n"
".set "GLAPI_PREFIX_STR(WindowPos2fv)", "GLAPI_PREFIX_STR(WindowPos2fvMESA)"\n"

".globl "GLAPI_PREFIX_STR(WindowPos2fvARB)"\n"
".set "GLAPI_PREFIX_STR(WindowPos2fvARB)", "GLAPI_PREFIX_STR(WindowPos2fvMESA)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(WindowPos2iMESA))"\n"
"\t"STUB_ASM_CODE("775")"\n"

".globl "GLAPI_PREFIX_STR(WindowPos2i)"\n"
".set "GLAPI_PREFIX_STR(WindowPos2i)", "GLAPI_PREFIX_STR(WindowPos2iMESA)"\n"

".globl "GLAPI_PREFIX_STR(WindowPos2iARB)"\n"
".set "GLAPI_PREFIX_STR(WindowPos2iARB)", "GLAPI_PREFIX_STR(WindowPos2iMESA)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(WindowPos2ivMESA))"\n"
"\t"STUB_ASM_CODE("776")"\n"

".globl "GLAPI_PREFIX_STR(WindowPos2iv)"\n"
".set "GLAPI_PREFIX_STR(WindowPos2iv)", "GLAPI_PREFIX_STR(WindowPos2ivMESA)"\n"

".globl "GLAPI_PREFIX_STR(WindowPos2ivARB)"\n"
".set "GLAPI_PREFIX_STR(WindowPos2ivARB)", "GLAPI_PREFIX_STR(WindowPos2ivMESA)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(WindowPos2sMESA))"\n"
"\t"STUB_ASM_CODE("777")"\n"

".globl "GLAPI_PREFIX_STR(WindowPos2s)"\n"
".set "GLAPI_PREFIX_STR(WindowPos2s)", "GLAPI_PREFIX_STR(WindowPos2sMESA)"\n"

".globl "GLAPI_PREFIX_STR(WindowPos2sARB)"\n"
".set "GLAPI_PREFIX_STR(WindowPos2sARB)", "GLAPI_PREFIX_STR(WindowPos2sMESA)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(WindowPos2svMESA))"\n"
"\t"STUB_ASM_CODE("778")"\n"

".globl "GLAPI_PREFIX_STR(WindowPos2sv)"\n"
".set "GLAPI_PREFIX_STR(WindowPos2sv)", "GLAPI_PREFIX_STR(WindowPos2svMESA)"\n"

".globl "GLAPI_PREFIX_STR(WindowPos2svARB)"\n"
".set "GLAPI_PREFIX_STR(WindowPos2svARB)", "GLAPI_PREFIX_STR(WindowPos2svMESA)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(WindowPos3dMESA))"\n"
"\t"STUB_ASM_CODE("779")"\n"

".globl "GLAPI_PREFIX_STR(WindowPos3d)"\n"
".set "GLAPI_PREFIX_STR(WindowPos3d)", "GLAPI_PREFIX_STR(WindowPos3dMESA)"\n"

".globl "GLAPI_PREFIX_STR(WindowPos3dARB)"\n"
".set "GLAPI_PREFIX_STR(WindowPos3dARB)", "GLAPI_PREFIX_STR(WindowPos3dMESA)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(WindowPos3dvMESA))"\n"
"\t"STUB_ASM_CODE("780")"\n"

".globl "GLAPI_PREFIX_STR(WindowPos3dv)"\n"
".set "GLAPI_PREFIX_STR(WindowPos3dv)", "GLAPI_PREFIX_STR(WindowPos3dvMESA)"\n"

".globl "GLAPI_PREFIX_STR(WindowPos3dvARB)"\n"
".set "GLAPI_PREFIX_STR(WindowPos3dvARB)", "GLAPI_PREFIX_STR(WindowPos3dvMESA)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(WindowPos3fMESA))"\n"
"\t"STUB_ASM_CODE("781")"\n"

".globl "GLAPI_PREFIX_STR(WindowPos3f)"\n"
".set "GLAPI_PREFIX_STR(WindowPos3f)", "GLAPI_PREFIX_STR(WindowPos3fMESA)"\n"

".globl "GLAPI_PREFIX_STR(WindowPos3fARB)"\n"
".set "GLAPI_PREFIX_STR(WindowPos3fARB)", "GLAPI_PREFIX_STR(WindowPos3fMESA)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(WindowPos3fvMESA))"\n"
"\t"STUB_ASM_CODE("782")"\n"

".globl "GLAPI_PREFIX_STR(WindowPos3fv)"\n"
".set "GLAPI_PREFIX_STR(WindowPos3fv)", "GLAPI_PREFIX_STR(WindowPos3fvMESA)"\n"

".globl "GLAPI_PREFIX_STR(WindowPos3fvARB)"\n"
".set "GLAPI_PREFIX_STR(WindowPos3fvARB)", "GLAPI_PREFIX_STR(WindowPos3fvMESA)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(WindowPos3iMESA))"\n"
"\t"STUB_ASM_CODE("783")"\n"

".globl "GLAPI_PREFIX_STR(WindowPos3i)"\n"
".set "GLAPI_PREFIX_STR(WindowPos3i)", "GLAPI_PREFIX_STR(WindowPos3iMESA)"\n"

".globl "GLAPI_PREFIX_STR(WindowPos3iARB)"\n"
".set "GLAPI_PREFIX_STR(WindowPos3iARB)", "GLAPI_PREFIX_STR(WindowPos3iMESA)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(WindowPos3ivMESA))"\n"
"\t"STUB_ASM_CODE("784")"\n"

".globl "GLAPI_PREFIX_STR(WindowPos3iv)"\n"
".set "GLAPI_PREFIX_STR(WindowPos3iv)", "GLAPI_PREFIX_STR(WindowPos3ivMESA)"\n"

".globl "GLAPI_PREFIX_STR(WindowPos3ivARB)"\n"
".set "GLAPI_PREFIX_STR(WindowPos3ivARB)", "GLAPI_PREFIX_STR(WindowPos3ivMESA)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(WindowPos3sMESA))"\n"
"\t"STUB_ASM_CODE("785")"\n"

".globl "GLAPI_PREFIX_STR(WindowPos3s)"\n"
".set "GLAPI_PREFIX_STR(WindowPos3s)", "GLAPI_PREFIX_STR(WindowPos3sMESA)"\n"

".globl "GLAPI_PREFIX_STR(WindowPos3sARB)"\n"
".set "GLAPI_PREFIX_STR(WindowPos3sARB)", "GLAPI_PREFIX_STR(WindowPos3sMESA)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(WindowPos3svMESA))"\n"
"\t"STUB_ASM_CODE("786")"\n"

".globl "GLAPI_PREFIX_STR(WindowPos3sv)"\n"
".set "GLAPI_PREFIX_STR(WindowPos3sv)", "GLAPI_PREFIX_STR(WindowPos3svMESA)"\n"

".globl "GLAPI_PREFIX_STR(WindowPos3svARB)"\n"
".set "GLAPI_PREFIX_STR(WindowPos3svARB)", "GLAPI_PREFIX_STR(WindowPos3svMESA)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(WindowPos4dMESA))"\n"
"\t"STUB_ASM_CODE("787")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(WindowPos4dvMESA))"\n"
"\t"STUB_ASM_CODE("788")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(WindowPos4fMESA))"\n"
"\t"STUB_ASM_CODE("789")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(WindowPos4fvMESA))"\n"
"\t"STUB_ASM_CODE("790")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(WindowPos4iMESA))"\n"
"\t"STUB_ASM_CODE("791")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(WindowPos4ivMESA))"\n"
"\t"STUB_ASM_CODE("792")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(WindowPos4sMESA))"\n"
"\t"STUB_ASM_CODE("793")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(WindowPos4svMESA))"\n"
"\t"STUB_ASM_CODE("794")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(AreProgramsResidentNV))"\n"
"\t"STUB_ASM_CODE("797")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(BindProgramNV))"\n"
"\t"STUB_ASM_CODE("798")"\n"

".globl "GLAPI_PREFIX_STR(BindProgramARB)"\n"
".set "GLAPI_PREFIX_STR(BindProgramARB)", "GLAPI_PREFIX_STR(BindProgramNV)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(DeleteProgramsNV))"\n"
"\t"STUB_ASM_CODE("799")"\n"

".globl "GLAPI_PREFIX_STR(DeleteProgramsARB)"\n"
".set "GLAPI_PREFIX_STR(DeleteProgramsARB)", "GLAPI_PREFIX_STR(DeleteProgramsNV)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ExecuteProgramNV))"\n"
"\t"STUB_ASM_CODE("800")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GenProgramsNV))"\n"
"\t"STUB_ASM_CODE("801")"\n"

".globl "GLAPI_PREFIX_STR(GenProgramsARB)"\n"
".set "GLAPI_PREFIX_STR(GenProgramsARB)", "GLAPI_PREFIX_STR(GenProgramsNV)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetProgramParameterdvNV))"\n"
"\t"STUB_ASM_CODE("802")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetProgramParameterfvNV))"\n"
"\t"STUB_ASM_CODE("803")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetProgramStringNV))"\n"
"\t"STUB_ASM_CODE("804")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetProgramivNV))"\n"
"\t"STUB_ASM_CODE("805")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetTrackMatrixivNV))"\n"
"\t"STUB_ASM_CODE("806")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetVertexAttribPointervNV))"\n"
"\t"STUB_ASM_CODE("807")"\n"

".globl "GLAPI_PREFIX_STR(GetVertexAttribPointerv)"\n"
".set "GLAPI_PREFIX_STR(GetVertexAttribPointerv)", "GLAPI_PREFIX_STR(GetVertexAttribPointervNV)"\n"

".globl "GLAPI_PREFIX_STR(GetVertexAttribPointervARB)"\n"
".set "GLAPI_PREFIX_STR(GetVertexAttribPointervARB)", "GLAPI_PREFIX_STR(GetVertexAttribPointervNV)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetVertexAttribdvNV))"\n"
"\t"STUB_ASM_CODE("808")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetVertexAttribfvNV))"\n"
"\t"STUB_ASM_CODE("809")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetVertexAttribivNV))"\n"
"\t"STUB_ASM_CODE("810")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(IsProgramNV))"\n"
"\t"STUB_ASM_CODE("811")"\n"

".globl "GLAPI_PREFIX_STR(IsProgramARB)"\n"
".set "GLAPI_PREFIX_STR(IsProgramARB)", "GLAPI_PREFIX_STR(IsProgramNV)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(LoadProgramNV))"\n"
"\t"STUB_ASM_CODE("812")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ProgramParameters4dvNV))"\n"
"\t"STUB_ASM_CODE("813")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ProgramParameters4fvNV))"\n"
"\t"STUB_ASM_CODE("814")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(RequestResidentProgramsNV))"\n"
"\t"STUB_ASM_CODE("815")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TrackMatrixNV))"\n"
"\t"STUB_ASM_CODE("816")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib1dNV))"\n"
"\t"STUB_ASM_CODE("817")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib1dvNV))"\n"
"\t"STUB_ASM_CODE("818")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib1fNV))"\n"
"\t"STUB_ASM_CODE("819")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib1fvNV))"\n"
"\t"STUB_ASM_CODE("820")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib1sNV))"\n"
"\t"STUB_ASM_CODE("821")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib1svNV))"\n"
"\t"STUB_ASM_CODE("822")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib2dNV))"\n"
"\t"STUB_ASM_CODE("823")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib2dvNV))"\n"
"\t"STUB_ASM_CODE("824")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib2fNV))"\n"
"\t"STUB_ASM_CODE("825")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib2fvNV))"\n"
"\t"STUB_ASM_CODE("826")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib2sNV))"\n"
"\t"STUB_ASM_CODE("827")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib2svNV))"\n"
"\t"STUB_ASM_CODE("828")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib3dNV))"\n"
"\t"STUB_ASM_CODE("829")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib3dvNV))"\n"
"\t"STUB_ASM_CODE("830")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib3fNV))"\n"
"\t"STUB_ASM_CODE("831")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib3fvNV))"\n"
"\t"STUB_ASM_CODE("832")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib3sNV))"\n"
"\t"STUB_ASM_CODE("833")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib3svNV))"\n"
"\t"STUB_ASM_CODE("834")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib4dNV))"\n"
"\t"STUB_ASM_CODE("835")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib4dvNV))"\n"
"\t"STUB_ASM_CODE("836")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib4fNV))"\n"
"\t"STUB_ASM_CODE("837")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib4fvNV))"\n"
"\t"STUB_ASM_CODE("838")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib4sNV))"\n"
"\t"STUB_ASM_CODE("839")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib4svNV))"\n"
"\t"STUB_ASM_CODE("840")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib4ubNV))"\n"
"\t"STUB_ASM_CODE("841")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib4ubvNV))"\n"
"\t"STUB_ASM_CODE("842")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribPointerNV))"\n"
"\t"STUB_ASM_CODE("843")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribs1dvNV))"\n"
"\t"STUB_ASM_CODE("844")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribs1fvNV))"\n"
"\t"STUB_ASM_CODE("845")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribs1svNV))"\n"
"\t"STUB_ASM_CODE("846")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribs2dvNV))"\n"
"\t"STUB_ASM_CODE("847")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribs2fvNV))"\n"
"\t"STUB_ASM_CODE("848")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribs2svNV))"\n"
"\t"STUB_ASM_CODE("849")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribs3dvNV))"\n"
"\t"STUB_ASM_CODE("850")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribs3fvNV))"\n"
"\t"STUB_ASM_CODE("851")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribs3svNV))"\n"
"\t"STUB_ASM_CODE("852")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribs4dvNV))"\n"
"\t"STUB_ASM_CODE("853")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribs4fvNV))"\n"
"\t"STUB_ASM_CODE("854")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribs4svNV))"\n"
"\t"STUB_ASM_CODE("855")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribs4ubvNV))"\n"
"\t"STUB_ASM_CODE("856")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetTexBumpParameterfvATI))"\n"
"\t"STUB_ASM_CODE("857")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetTexBumpParameterivATI))"\n"
"\t"STUB_ASM_CODE("858")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexBumpParameterfvATI))"\n"
"\t"STUB_ASM_CODE("859")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexBumpParameterivATI))"\n"
"\t"STUB_ASM_CODE("860")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(AlphaFragmentOp1ATI))"\n"
"\t"STUB_ASM_CODE("861")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(AlphaFragmentOp2ATI))"\n"
"\t"STUB_ASM_CODE("862")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(AlphaFragmentOp3ATI))"\n"
"\t"STUB_ASM_CODE("863")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(BeginFragmentShaderATI))"\n"
"\t"STUB_ASM_CODE("864")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(BindFragmentShaderATI))"\n"
"\t"STUB_ASM_CODE("865")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ColorFragmentOp1ATI))"\n"
"\t"STUB_ASM_CODE("866")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ColorFragmentOp2ATI))"\n"
"\t"STUB_ASM_CODE("867")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ColorFragmentOp3ATI))"\n"
"\t"STUB_ASM_CODE("868")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(DeleteFragmentShaderATI))"\n"
"\t"STUB_ASM_CODE("869")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(EndFragmentShaderATI))"\n"
"\t"STUB_ASM_CODE("870")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GenFragmentShadersATI))"\n"
"\t"STUB_ASM_CODE("871")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(PassTexCoordATI))"\n"
"\t"STUB_ASM_CODE("872")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(SampleMapATI))"\n"
"\t"STUB_ASM_CODE("873")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(SetFragmentShaderConstantATI))"\n"
"\t"STUB_ASM_CODE("874")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(PointParameteriNV))"\n"
"\t"STUB_ASM_CODE("875")"\n"

".globl "GLAPI_PREFIX_STR(PointParameteri)"\n"
".set "GLAPI_PREFIX_STR(PointParameteri)", "GLAPI_PREFIX_STR(PointParameteriNV)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(PointParameterivNV))"\n"
"\t"STUB_ASM_CODE("876")"\n"

".globl "GLAPI_PREFIX_STR(PointParameteriv)"\n"
".set "GLAPI_PREFIX_STR(PointParameteriv)", "GLAPI_PREFIX_STR(PointParameterivNV)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(DeleteVertexArrays))"\n"
"\t"STUB_ASM_CODE("879")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(DeleteVertexArraysOES))"\n"
"\t"STUB_ASM_CODE("879")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(IsVertexArray))"\n"
"\t"STUB_ASM_CODE("881")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(IsVertexArrayOES))"\n"
"\t"STUB_ASM_CODE("881")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetProgramNamedParameterdvNV))"\n"
"\t"STUB_ASM_CODE("882")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetProgramNamedParameterfvNV))"\n"
"\t"STUB_ASM_CODE("883")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ProgramNamedParameter4dNV))"\n"
"\t"STUB_ASM_CODE("884")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ProgramNamedParameter4dvNV))"\n"
"\t"STUB_ASM_CODE("885")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ProgramNamedParameter4fNV))"\n"
"\t"STUB_ASM_CODE("886")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ProgramNamedParameter4fvNV))"\n"
"\t"STUB_ASM_CODE("887")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(PrimitiveRestartIndexNV))"\n"
"\t"STUB_ASM_CODE("888")"\n"

".globl "GLAPI_PREFIX_STR(PrimitiveRestartIndex)"\n"
".set "GLAPI_PREFIX_STR(PrimitiveRestartIndex)", "GLAPI_PREFIX_STR(PrimitiveRestartIndexNV)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(PrimitiveRestartNV))"\n"
"\t"STUB_ASM_CODE("889")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(BlendEquationSeparate))"\n"
"\t"STUB_ASM_CODE("937")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(BindFramebufferEXT))"\n"
"\t"STUB_ASM_CODE("938")"\n"

".globl "GLAPI_PREFIX_STR(BindFramebuffer)"\n"
".set "GLAPI_PREFIX_STR(BindFramebuffer)", "GLAPI_PREFIX_STR(BindFramebufferEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(BindRenderbufferEXT))"\n"
"\t"STUB_ASM_CODE("939")"\n"

".globl "GLAPI_PREFIX_STR(BindRenderbuffer)"\n"
".set "GLAPI_PREFIX_STR(BindRenderbuffer)", "GLAPI_PREFIX_STR(BindRenderbufferEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(CheckFramebufferStatusEXT))"\n"
"\t"STUB_ASM_CODE("940")"\n"

".globl "GLAPI_PREFIX_STR(CheckFramebufferStatus)"\n"
".set "GLAPI_PREFIX_STR(CheckFramebufferStatus)", "GLAPI_PREFIX_STR(CheckFramebufferStatusEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(DeleteFramebuffersEXT))"\n"
"\t"STUB_ASM_CODE("941")"\n"

".globl "GLAPI_PREFIX_STR(DeleteFramebuffers)"\n"
".set "GLAPI_PREFIX_STR(DeleteFramebuffers)", "GLAPI_PREFIX_STR(DeleteFramebuffersEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(DeleteRenderbuffersEXT))"\n"
"\t"STUB_ASM_CODE("942")"\n"

".globl "GLAPI_PREFIX_STR(DeleteRenderbuffers)"\n"
".set "GLAPI_PREFIX_STR(DeleteRenderbuffers)", "GLAPI_PREFIX_STR(DeleteRenderbuffersEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(FramebufferRenderbufferEXT))"\n"
"\t"STUB_ASM_CODE("943")"\n"

".globl "GLAPI_PREFIX_STR(FramebufferRenderbuffer)"\n"
".set "GLAPI_PREFIX_STR(FramebufferRenderbuffer)", "GLAPI_PREFIX_STR(FramebufferRenderbufferEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(FramebufferTexture1DEXT))"\n"
"\t"STUB_ASM_CODE("944")"\n"

".globl "GLAPI_PREFIX_STR(FramebufferTexture1D)"\n"
".set "GLAPI_PREFIX_STR(FramebufferTexture1D)", "GLAPI_PREFIX_STR(FramebufferTexture1DEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(FramebufferTexture2DEXT))"\n"
"\t"STUB_ASM_CODE("945")"\n"

".globl "GLAPI_PREFIX_STR(FramebufferTexture2D)"\n"
".set "GLAPI_PREFIX_STR(FramebufferTexture2D)", "GLAPI_PREFIX_STR(FramebufferTexture2DEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(FramebufferTexture3DEXT))"\n"
"\t"STUB_ASM_CODE("946")"\n"

".globl "GLAPI_PREFIX_STR(FramebufferTexture3D)"\n"
".set "GLAPI_PREFIX_STR(FramebufferTexture3D)", "GLAPI_PREFIX_STR(FramebufferTexture3DEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GenFramebuffersEXT))"\n"
"\t"STUB_ASM_CODE("947")"\n"

".globl "GLAPI_PREFIX_STR(GenFramebuffers)"\n"
".set "GLAPI_PREFIX_STR(GenFramebuffers)", "GLAPI_PREFIX_STR(GenFramebuffersEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GenRenderbuffersEXT))"\n"
"\t"STUB_ASM_CODE("948")"\n"

".globl "GLAPI_PREFIX_STR(GenRenderbuffers)"\n"
".set "GLAPI_PREFIX_STR(GenRenderbuffers)", "GLAPI_PREFIX_STR(GenRenderbuffersEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GenerateMipmapEXT))"\n"
"\t"STUB_ASM_CODE("949")"\n"

".globl "GLAPI_PREFIX_STR(GenerateMipmap)"\n"
".set "GLAPI_PREFIX_STR(GenerateMipmap)", "GLAPI_PREFIX_STR(GenerateMipmapEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetFramebufferAttachmentParameterivEXT))"\n"
"\t"STUB_ASM_CODE("950")"\n"

".globl "GLAPI_PREFIX_STR(GetFramebufferAttachmentParameteriv)"\n"
".set "GLAPI_PREFIX_STR(GetFramebufferAttachmentParameteriv)", "GLAPI_PREFIX_STR(GetFramebufferAttachmentParameterivEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetRenderbufferParameterivEXT))"\n"
"\t"STUB_ASM_CODE("951")"\n"

".globl "GLAPI_PREFIX_STR(GetRenderbufferParameteriv)"\n"
".set "GLAPI_PREFIX_STR(GetRenderbufferParameteriv)", "GLAPI_PREFIX_STR(GetRenderbufferParameterivEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(IsFramebufferEXT))"\n"
"\t"STUB_ASM_CODE("952")"\n"

".globl "GLAPI_PREFIX_STR(IsFramebuffer)"\n"
".set "GLAPI_PREFIX_STR(IsFramebuffer)", "GLAPI_PREFIX_STR(IsFramebufferEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(IsRenderbufferEXT))"\n"
"\t"STUB_ASM_CODE("953")"\n"

".globl "GLAPI_PREFIX_STR(IsRenderbuffer)"\n"
".set "GLAPI_PREFIX_STR(IsRenderbuffer)", "GLAPI_PREFIX_STR(IsRenderbufferEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(RenderbufferStorageEXT))"\n"
"\t"STUB_ASM_CODE("954")"\n"

".globl "GLAPI_PREFIX_STR(RenderbufferStorage)"\n"
".set "GLAPI_PREFIX_STR(RenderbufferStorage)", "GLAPI_PREFIX_STR(RenderbufferStorageEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(BlitFramebuffer))"\n"
"\t"STUB_ASM_CODE("955")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(BindFragDataLocationEXT))"\n"
"\t"STUB_ASM_CODE("958")"\n"

".globl "GLAPI_PREFIX_STR(BindFragDataLocation)"\n"
".set "GLAPI_PREFIX_STR(BindFragDataLocation)", "GLAPI_PREFIX_STR(BindFragDataLocationEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetFragDataLocationEXT))"\n"
"\t"STUB_ASM_CODE("959")"\n"

".globl "GLAPI_PREFIX_STR(GetFragDataLocation)"\n"
".set "GLAPI_PREFIX_STR(GetFragDataLocation)", "GLAPI_PREFIX_STR(GetFragDataLocationEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetUniformuivEXT))"\n"
"\t"STUB_ASM_CODE("960")"\n"

".globl "GLAPI_PREFIX_STR(GetUniformuiv)"\n"
".set "GLAPI_PREFIX_STR(GetUniformuiv)", "GLAPI_PREFIX_STR(GetUniformuivEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetVertexAttribIivEXT))"\n"
"\t"STUB_ASM_CODE("961")"\n"

".globl "GLAPI_PREFIX_STR(GetVertexAttribIiv)"\n"
".set "GLAPI_PREFIX_STR(GetVertexAttribIiv)", "GLAPI_PREFIX_STR(GetVertexAttribIivEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetVertexAttribIuivEXT))"\n"
"\t"STUB_ASM_CODE("962")"\n"

".globl "GLAPI_PREFIX_STR(GetVertexAttribIuiv)"\n"
".set "GLAPI_PREFIX_STR(GetVertexAttribIuiv)", "GLAPI_PREFIX_STR(GetVertexAttribIuivEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Uniform1uiEXT))"\n"
"\t"STUB_ASM_CODE("963")"\n"

".globl "GLAPI_PREFIX_STR(Uniform1ui)"\n"
".set "GLAPI_PREFIX_STR(Uniform1ui)", "GLAPI_PREFIX_STR(Uniform1uiEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Uniform1uivEXT))"\n"
"\t"STUB_ASM_CODE("964")"\n"

".globl "GLAPI_PREFIX_STR(Uniform1uiv)"\n"
".set "GLAPI_PREFIX_STR(Uniform1uiv)", "GLAPI_PREFIX_STR(Uniform1uivEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Uniform2uiEXT))"\n"
"\t"STUB_ASM_CODE("965")"\n"

".globl "GLAPI_PREFIX_STR(Uniform2ui)"\n"
".set "GLAPI_PREFIX_STR(Uniform2ui)", "GLAPI_PREFIX_STR(Uniform2uiEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Uniform2uivEXT))"\n"
"\t"STUB_ASM_CODE("966")"\n"

".globl "GLAPI_PREFIX_STR(Uniform2uiv)"\n"
".set "GLAPI_PREFIX_STR(Uniform2uiv)", "GLAPI_PREFIX_STR(Uniform2uivEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Uniform3uiEXT))"\n"
"\t"STUB_ASM_CODE("967")"\n"

".globl "GLAPI_PREFIX_STR(Uniform3ui)"\n"
".set "GLAPI_PREFIX_STR(Uniform3ui)", "GLAPI_PREFIX_STR(Uniform3uiEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Uniform3uivEXT))"\n"
"\t"STUB_ASM_CODE("968")"\n"

".globl "GLAPI_PREFIX_STR(Uniform3uiv)"\n"
".set "GLAPI_PREFIX_STR(Uniform3uiv)", "GLAPI_PREFIX_STR(Uniform3uivEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Uniform4uiEXT))"\n"
"\t"STUB_ASM_CODE("969")"\n"

".globl "GLAPI_PREFIX_STR(Uniform4ui)"\n"
".set "GLAPI_PREFIX_STR(Uniform4ui)", "GLAPI_PREFIX_STR(Uniform4uiEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Uniform4uivEXT))"\n"
"\t"STUB_ASM_CODE("970")"\n"

".globl "GLAPI_PREFIX_STR(Uniform4uiv)"\n"
".set "GLAPI_PREFIX_STR(Uniform4uiv)", "GLAPI_PREFIX_STR(Uniform4uivEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribI1iEXT))"\n"
"\t"STUB_ASM_CODE("971")"\n"

".globl "GLAPI_PREFIX_STR(VertexAttribI1i)"\n"
".set "GLAPI_PREFIX_STR(VertexAttribI1i)", "GLAPI_PREFIX_STR(VertexAttribI1iEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribI1ivEXT))"\n"
"\t"STUB_ASM_CODE("972")"\n"

".globl "GLAPI_PREFIX_STR(VertexAttribI1iv)"\n"
".set "GLAPI_PREFIX_STR(VertexAttribI1iv)", "GLAPI_PREFIX_STR(VertexAttribI1ivEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribI1uiEXT))"\n"
"\t"STUB_ASM_CODE("973")"\n"

".globl "GLAPI_PREFIX_STR(VertexAttribI1ui)"\n"
".set "GLAPI_PREFIX_STR(VertexAttribI1ui)", "GLAPI_PREFIX_STR(VertexAttribI1uiEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribI1uivEXT))"\n"
"\t"STUB_ASM_CODE("974")"\n"

".globl "GLAPI_PREFIX_STR(VertexAttribI1uiv)"\n"
".set "GLAPI_PREFIX_STR(VertexAttribI1uiv)", "GLAPI_PREFIX_STR(VertexAttribI1uivEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribI2iEXT))"\n"
"\t"STUB_ASM_CODE("975")"\n"

".globl "GLAPI_PREFIX_STR(VertexAttribI2i)"\n"
".set "GLAPI_PREFIX_STR(VertexAttribI2i)", "GLAPI_PREFIX_STR(VertexAttribI2iEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribI2ivEXT))"\n"
"\t"STUB_ASM_CODE("976")"\n"

".globl "GLAPI_PREFIX_STR(VertexAttribI2iv)"\n"
".set "GLAPI_PREFIX_STR(VertexAttribI2iv)", "GLAPI_PREFIX_STR(VertexAttribI2ivEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribI2uiEXT))"\n"
"\t"STUB_ASM_CODE("977")"\n"

".globl "GLAPI_PREFIX_STR(VertexAttribI2ui)"\n"
".set "GLAPI_PREFIX_STR(VertexAttribI2ui)", "GLAPI_PREFIX_STR(VertexAttribI2uiEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribI2uivEXT))"\n"
"\t"STUB_ASM_CODE("978")"\n"

".globl "GLAPI_PREFIX_STR(VertexAttribI2uiv)"\n"
".set "GLAPI_PREFIX_STR(VertexAttribI2uiv)", "GLAPI_PREFIX_STR(VertexAttribI2uivEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribI3iEXT))"\n"
"\t"STUB_ASM_CODE("979")"\n"

".globl "GLAPI_PREFIX_STR(VertexAttribI3i)"\n"
".set "GLAPI_PREFIX_STR(VertexAttribI3i)", "GLAPI_PREFIX_STR(VertexAttribI3iEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribI3ivEXT))"\n"
"\t"STUB_ASM_CODE("980")"\n"

".globl "GLAPI_PREFIX_STR(VertexAttribI3iv)"\n"
".set "GLAPI_PREFIX_STR(VertexAttribI3iv)", "GLAPI_PREFIX_STR(VertexAttribI3ivEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribI3uiEXT))"\n"
"\t"STUB_ASM_CODE("981")"\n"

".globl "GLAPI_PREFIX_STR(VertexAttribI3ui)"\n"
".set "GLAPI_PREFIX_STR(VertexAttribI3ui)", "GLAPI_PREFIX_STR(VertexAttribI3uiEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribI3uivEXT))"\n"
"\t"STUB_ASM_CODE("982")"\n"

".globl "GLAPI_PREFIX_STR(VertexAttribI3uiv)"\n"
".set "GLAPI_PREFIX_STR(VertexAttribI3uiv)", "GLAPI_PREFIX_STR(VertexAttribI3uivEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribI4bvEXT))"\n"
"\t"STUB_ASM_CODE("983")"\n"

".globl "GLAPI_PREFIX_STR(VertexAttribI4bv)"\n"
".set "GLAPI_PREFIX_STR(VertexAttribI4bv)", "GLAPI_PREFIX_STR(VertexAttribI4bvEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribI4iEXT))"\n"
"\t"STUB_ASM_CODE("984")"\n"

".globl "GLAPI_PREFIX_STR(VertexAttribI4i)"\n"
".set "GLAPI_PREFIX_STR(VertexAttribI4i)", "GLAPI_PREFIX_STR(VertexAttribI4iEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribI4ivEXT))"\n"
"\t"STUB_ASM_CODE("985")"\n"

".globl "GLAPI_PREFIX_STR(VertexAttribI4iv)"\n"
".set "GLAPI_PREFIX_STR(VertexAttribI4iv)", "GLAPI_PREFIX_STR(VertexAttribI4ivEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribI4svEXT))"\n"
"\t"STUB_ASM_CODE("986")"\n"

".globl "GLAPI_PREFIX_STR(VertexAttribI4sv)"\n"
".set "GLAPI_PREFIX_STR(VertexAttribI4sv)", "GLAPI_PREFIX_STR(VertexAttribI4svEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribI4ubvEXT))"\n"
"\t"STUB_ASM_CODE("987")"\n"

".globl "GLAPI_PREFIX_STR(VertexAttribI4ubv)"\n"
".set "GLAPI_PREFIX_STR(VertexAttribI4ubv)", "GLAPI_PREFIX_STR(VertexAttribI4ubvEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribI4uiEXT))"\n"
"\t"STUB_ASM_CODE("988")"\n"

".globl "GLAPI_PREFIX_STR(VertexAttribI4ui)"\n"
".set "GLAPI_PREFIX_STR(VertexAttribI4ui)", "GLAPI_PREFIX_STR(VertexAttribI4uiEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribI4uivEXT))"\n"
"\t"STUB_ASM_CODE("989")"\n"

".globl "GLAPI_PREFIX_STR(VertexAttribI4uiv)"\n"
".set "GLAPI_PREFIX_STR(VertexAttribI4uiv)", "GLAPI_PREFIX_STR(VertexAttribI4uivEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribI4usvEXT))"\n"
"\t"STUB_ASM_CODE("990")"\n"

".globl "GLAPI_PREFIX_STR(VertexAttribI4usv)"\n"
".set "GLAPI_PREFIX_STR(VertexAttribI4usv)", "GLAPI_PREFIX_STR(VertexAttribI4usvEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribIPointerEXT))"\n"
"\t"STUB_ASM_CODE("991")"\n"

".globl "GLAPI_PREFIX_STR(VertexAttribIPointer)"\n"
".set "GLAPI_PREFIX_STR(VertexAttribIPointer)", "GLAPI_PREFIX_STR(VertexAttribIPointerEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(FramebufferTextureLayerEXT))"\n"
"\t"STUB_ASM_CODE("992")"\n"

".globl "GLAPI_PREFIX_STR(FramebufferTextureLayer)"\n"
".set "GLAPI_PREFIX_STR(FramebufferTextureLayer)", "GLAPI_PREFIX_STR(FramebufferTextureLayerEXT)"\n"

".globl "GLAPI_PREFIX_STR(FramebufferTextureLayerARB)"\n"
".set "GLAPI_PREFIX_STR(FramebufferTextureLayerARB)", "GLAPI_PREFIX_STR(FramebufferTextureLayerEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ColorMaskIndexedEXT))"\n"
"\t"STUB_ASM_CODE("993")"\n"

".globl "GLAPI_PREFIX_STR(ColorMaski)"\n"
".set "GLAPI_PREFIX_STR(ColorMaski)", "GLAPI_PREFIX_STR(ColorMaskIndexedEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(DisableIndexedEXT))"\n"
"\t"STUB_ASM_CODE("994")"\n"

".globl "GLAPI_PREFIX_STR(Disablei)"\n"
".set "GLAPI_PREFIX_STR(Disablei)", "GLAPI_PREFIX_STR(DisableIndexedEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(EnableIndexedEXT))"\n"
"\t"STUB_ASM_CODE("995")"\n"

".globl "GLAPI_PREFIX_STR(Enablei)"\n"
".set "GLAPI_PREFIX_STR(Enablei)", "GLAPI_PREFIX_STR(EnableIndexedEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetBooleanIndexedvEXT))"\n"
"\t"STUB_ASM_CODE("996")"\n"

".globl "GLAPI_PREFIX_STR(GetBooleani_v)"\n"
".set "GLAPI_PREFIX_STR(GetBooleani_v)", "GLAPI_PREFIX_STR(GetBooleanIndexedvEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetIntegerIndexedvEXT))"\n"
"\t"STUB_ASM_CODE("997")"\n"

".globl "GLAPI_PREFIX_STR(GetIntegeri_v)"\n"
".set "GLAPI_PREFIX_STR(GetIntegeri_v)", "GLAPI_PREFIX_STR(GetIntegerIndexedvEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(IsEnabledIndexedEXT))"\n"
"\t"STUB_ASM_CODE("998")"\n"

".globl "GLAPI_PREFIX_STR(IsEnabledi)"\n"
".set "GLAPI_PREFIX_STR(IsEnabledi)", "GLAPI_PREFIX_STR(IsEnabledIndexedEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ClearColorIiEXT))"\n"
"\t"STUB_ASM_CODE("999")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ClearColorIuiEXT))"\n"
"\t"STUB_ASM_CODE("1000")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetTexParameterIivEXT))"\n"
"\t"STUB_ASM_CODE("1001")"\n"

".globl "GLAPI_PREFIX_STR(GetTexParameterIiv)"\n"
".set "GLAPI_PREFIX_STR(GetTexParameterIiv)", "GLAPI_PREFIX_STR(GetTexParameterIivEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetTexParameterIuivEXT))"\n"
"\t"STUB_ASM_CODE("1002")"\n"

".globl "GLAPI_PREFIX_STR(GetTexParameterIuiv)"\n"
".set "GLAPI_PREFIX_STR(GetTexParameterIuiv)", "GLAPI_PREFIX_STR(GetTexParameterIuivEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexParameterIivEXT))"\n"
"\t"STUB_ASM_CODE("1003")"\n"

".globl "GLAPI_PREFIX_STR(TexParameterIiv)"\n"
".set "GLAPI_PREFIX_STR(TexParameterIiv)", "GLAPI_PREFIX_STR(TexParameterIivEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexParameterIuivEXT))"\n"
"\t"STUB_ASM_CODE("1004")"\n"

".globl "GLAPI_PREFIX_STR(TexParameterIuiv)"\n"
".set "GLAPI_PREFIX_STR(TexParameterIuiv)", "GLAPI_PREFIX_STR(TexParameterIuivEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(BeginConditionalRenderNV))"\n"
"\t"STUB_ASM_CODE("1005")"\n"

".globl "GLAPI_PREFIX_STR(BeginConditionalRender)"\n"
".set "GLAPI_PREFIX_STR(BeginConditionalRender)", "GLAPI_PREFIX_STR(BeginConditionalRenderNV)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(EndConditionalRenderNV))"\n"
"\t"STUB_ASM_CODE("1006")"\n"

".globl "GLAPI_PREFIX_STR(EndConditionalRender)"\n"
".set "GLAPI_PREFIX_STR(EndConditionalRender)", "GLAPI_PREFIX_STR(EndConditionalRenderNV)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(BeginTransformFeedbackEXT))"\n"
"\t"STUB_ASM_CODE("1007")"\n"

".globl "GLAPI_PREFIX_STR(BeginTransformFeedback)"\n"
".set "GLAPI_PREFIX_STR(BeginTransformFeedback)", "GLAPI_PREFIX_STR(BeginTransformFeedbackEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(BindBufferBaseEXT))"\n"
"\t"STUB_ASM_CODE("1008")"\n"

".globl "GLAPI_PREFIX_STR(BindBufferBase)"\n"
".set "GLAPI_PREFIX_STR(BindBufferBase)", "GLAPI_PREFIX_STR(BindBufferBaseEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(BindBufferOffsetEXT))"\n"
"\t"STUB_ASM_CODE("1009")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(BindBufferRangeEXT))"\n"
"\t"STUB_ASM_CODE("1010")"\n"

".globl "GLAPI_PREFIX_STR(BindBufferRange)"\n"
".set "GLAPI_PREFIX_STR(BindBufferRange)", "GLAPI_PREFIX_STR(BindBufferRangeEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(EndTransformFeedbackEXT))"\n"
"\t"STUB_ASM_CODE("1011")"\n"

".globl "GLAPI_PREFIX_STR(EndTransformFeedback)"\n"
".set "GLAPI_PREFIX_STR(EndTransformFeedback)", "GLAPI_PREFIX_STR(EndTransformFeedbackEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetTransformFeedbackVaryingEXT))"\n"
"\t"STUB_ASM_CODE("1012")"\n"

".globl "GLAPI_PREFIX_STR(GetTransformFeedbackVarying)"\n"
".set "GLAPI_PREFIX_STR(GetTransformFeedbackVarying)", "GLAPI_PREFIX_STR(GetTransformFeedbackVaryingEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TransformFeedbackVaryingsEXT))"\n"
"\t"STUB_ASM_CODE("1013")"\n"

".globl "GLAPI_PREFIX_STR(TransformFeedbackVaryings)"\n"
".set "GLAPI_PREFIX_STR(TransformFeedbackVaryings)", "GLAPI_PREFIX_STR(TransformFeedbackVaryingsEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ProvokingVertexEXT))"\n"
"\t"STUB_ASM_CODE("1014")"\n"

".globl "GLAPI_PREFIX_STR(ProvokingVertex)"\n"
".set "GLAPI_PREFIX_STR(ProvokingVertex)", "GLAPI_PREFIX_STR(ProvokingVertexEXT)"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetObjectParameterivAPPLE))"\n"
"\t"STUB_ASM_CODE("1015")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ObjectPurgeableAPPLE))"\n"
"\t"STUB_ASM_CODE("1016")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ObjectUnpurgeableAPPLE))"\n"
"\t"STUB_ASM_CODE("1017")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ActiveProgramEXT))"\n"
"\t"STUB_ASM_CODE("1018")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(CreateShaderProgramEXT))"\n"
"\t"STUB_ASM_CODE("1019")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(UseShaderProgramEXT))"\n"
"\t"STUB_ASM_CODE("1020")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TextureBarrierNV))"\n"
"\t"STUB_ASM_CODE("1021")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(EGLImageTargetRenderbufferStorageOES))"\n"
"\t"STUB_ASM_CODE("1027")"\n"

STUB_ASM_ENTRY(GLAPI_PREFIX_STR(EGLImageTargetTexture2DOES))"\n"
"\t"STUB_ASM_CODE("1028")"\n"

);
#undef MAPI_TMP_STUB_ASM_GCC_NO_HIDDEN
#endif /* MAPI_TMP_STUB_ASM_GCC_NO_HIDDEN */
